From 9a0dd7c1b3a8bf5c320ecfc2627af4321437c911 Mon Sep 17 00:00:00 2001 From: Robert Schmidt <robert.schmidt@openairinterface.org> Date: Fri, 13 Jan 2023 13:42:13 +0100 Subject: [PATCH] Update for webserver; cleanup in CMakeLists.txt - Add oai header to typescript and html sources, add support to commands requiring two parameters, add more helpfiles - Fix help bug (html comments not removed from tooltips) - Fix backend build problem and 2 warnings - Correctly initialize variables in nr_phy_scope.c - Use add_subdirectory for websrv cmake build - correctly link to asn1_lte_rrc and asn1_nr_rrc - fix bug: correctly recognize npm packet - only configure targets if explicitly asked for by users - use add_subdirectory - Use add_subdirectory for telnet cmake build - Minor cleanup in build_oai - Move softscope build in dedicated CMakeLists, and comment out DEBUG_MAC_INTERFACE option (not found in code) - Make DEBUG_ASN1 a cmake only option ( no C macro) as it's not used as a C macro in the code, and develop align --- CMakeLists.txt | 120 +- cmake_targets/build_oai | 51 +- cmake_targets/macros.cmake | 6 +- common/utils/CMakeLists.txt | 9 + common/utils/telnetsrv/CMakeLists.txt | 61 + .../utils/telnetsrv/telnetsrv_CMakeLists.txt | 37 - common/utils/websrv/CMakeLists.txt | 93 + common/utils/websrv/DOC/logscfg.png | Bin 0 -> 71969 bytes common/utils/websrv/DOC/main.png | Bin 0 -> 70222 bytes common/utils/websrv/DOC/scope.png | Bin 0 -> 158034 bytes common/utils/websrv/DOC/websrvuse.md | 156 +- .../utils/websrv/frontend/package-lock.json | 5451 ++++++++++------- common/utils/websrv/frontend/package.json | 5 +- .../frontend/src/app/api/commands.api.ts | 60 +- .../websrv/frontend/src/app/api/help.api.ts | 38 +- .../websrv/frontend/src/app/api/info.api.ts | 47 + .../websrv/frontend/src/app/api/scope.api.ts | 39 +- .../frontend/src/app/app-routing.module.ts | 31 + .../frontend/src/app/app.component.html | 39 +- .../websrv/frontend/src/app/app.module.ts | 39 +- .../commands/commands.component.html | 66 +- .../components/commands/commands.component.ts | 77 +- .../app/components/info/info.component.html | 58 + .../app/components/info/info.component.scss | 15 + .../src/app/components/info/info.component.ts | 76 + .../question/question.component.html | 53 +- .../components/question/question.component.ts | 39 +- .../app/components/scope/scope.component.html | 34 + .../app/components/scope/scope.component.ts | 32 + .../frontend/src/app/controls/cmd.control.ts | 65 +- .../frontend/src/app/controls/info.control.ts | 35 +- .../src/app/controls/module.control.ts | 32 + .../src/app/controls/param.control.ts | 35 +- .../frontend/src/app/controls/row.control.ts | 35 +- .../frontend/src/app/controls/var.control.ts | 35 +- .../src/app/interceptors/error.interceptor.ts | 34 +- .../src/app/services/download.service.ts | 34 +- .../src/app/services/websocket.service.ts | 31 + .../utils/websrv/frontend/src/commondefs.ts | 51 + common/utils/websrv/frontend/src/main.ts | 32 + .../cmd_channelmod_show_channelid.html | 33 + .../cmd_channelmod_show_current.html | 33 + .../helpfiles/cmd_channelmod_show_predef.html | 33 + .../helpfiles/question_setdistance_input.html | 37 + .../question_show_channelid_input.html | 34 + .../rfsimu_show_models_algorithm.html | 33 + .../rfsimu_show_models_model_index.html | 33 + .../rfsimu_show_models_model_name.html | 33 + .../rfsimu_show_models_module_owner.html | 33 + .../helpfiles/scope_control_dataack.html | 33 + .../softmodem_show_threadsched_nice.html | 33 + ...ftmodem_show_threadsched_oai_priority.html | 33 + .../softmodem_show_threadsched_priority.html | 33 + ...ftmodem_show_threadsched_sched_policy.html | 33 + common/utils/websrv/websrv.c | 97 +- common/utils/websrv/websrv_CMakeLists.txt | 90 - common/utils/websrv/websrv_noforms.h | 2 +- doc/CMakeLists.txt | 2 +- openair1/CMakeLists.txt | 1 + openair1/PHY/CMakeLists.txt | 6 + openair1/PHY/TOOLS/CMakeLists.txt | 50 + openair1/PHY/TOOLS/nr_phy_scope.c | 16 +- openair1/SIMULATION/TOOLS/random_channel.c | 2 +- radio/rfsimulator/simulator.c | 2 +- 64 files changed, 5158 insertions(+), 2728 deletions(-) create mode 100644 common/utils/telnetsrv/CMakeLists.txt delete mode 100644 common/utils/telnetsrv/telnetsrv_CMakeLists.txt create mode 100644 common/utils/websrv/CMakeLists.txt create mode 100644 common/utils/websrv/DOC/logscfg.png create mode 100644 common/utils/websrv/DOC/main.png create mode 100644 common/utils/websrv/DOC/scope.png create mode 100644 common/utils/websrv/frontend/src/app/api/info.api.ts create mode 100644 common/utils/websrv/frontend/src/app/components/info/info.component.html create mode 100644 common/utils/websrv/frontend/src/app/components/info/info.component.scss create mode 100644 common/utils/websrv/frontend/src/app/components/info/info.component.ts create mode 100644 common/utils/websrv/frontend/src/commondefs.ts create mode 100644 common/utils/websrv/helpfiles/question_setdistance_input.html create mode 100644 common/utils/websrv/helpfiles/question_show_channelid_input.html delete mode 100644 common/utils/websrv/websrv_CMakeLists.txt create mode 100644 openair1/CMakeLists.txt create mode 100644 openair1/PHY/CMakeLists.txt create mode 100644 openair1/PHY/TOOLS/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 7da5bbc5e54..4dea0a0d549 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -163,10 +163,10 @@ else() endif() eval_boolean(AUTODETECT_AVX512 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx512") -add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor") +add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor" ON) eval_boolean(AUTODETECT_AVX2 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx2") -add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor") +add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor" ON) if(${CPUARCH} STREQUAL "x86_64" AND DEFINED CPUFLAGS) # The following intrinsics are assumed to be available on any x86 system @@ -208,7 +208,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} ${commonOpts} -std=c++11") -add_boolean_option(SANITIZE_ADDRESS False "enable the address sanitizer (ASan)") +add_boolean_option(SANITIZE_ADDRESS False "enable the address sanitizer (ASan)" ON) if (SANITIZE_ADDRESS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common") @@ -230,7 +230,7 @@ if (SANITIZE_ADDRESS) # wrong in the pthread library, or something subtly wrong in this CMakeLists.txt. Use Ubuntu 20.04 instead. endif () -add_boolean_option(SANITIZE_UNDEFINED False "enable the undefined behavior sanitizer (UBSan)") +add_boolean_option(SANITIZE_UNDEFINED False "enable the undefined behavior sanitizer (UBSan)" ON) if (SANITIZE_UNDEFINED) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined -fno-sanitize-recover=all") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fno-sanitize-recover=all") @@ -292,12 +292,12 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"") # Debug related options ######################################### -add_boolean_option(DEBUG_ASN1 False "ASN1 coder/decoder Debug") -add_boolean_option(DEBUG_MAC_INTERFACE False "print MAC-RLC PDU exchange to stdout") # if true, make sure that global and PDCP log levels are trace -add_boolean_option(T_TRACER True "Activate the T tracer, a debugging/monitoring framework" ) -add_boolean_option(UE_AUTOTEST_TRACE False "Activate UE autotest specific logs") -add_boolean_option(UE_DEBUG_TRACE False "Activate UE debug trace") -add_boolean_option(UE_TIMING_TRACE False "Activate UE timing trace") +add_boolean_option(DEBUG_ASN1 False "ASN1 coder/decoder Debug" OFF) +#add_boolean_option(DEBUG_MAC_INTERFACE False "print MAC-RLC PDU exchange to stdout") # if true, make sure that global and PDCP log levels are trace, not found in code, commented out, to be removed +add_boolean_option(T_TRACER True "Activate the T tracer, a debugging/monitoring framework" ON) +add_boolean_option(UE_AUTOTEST_TRACE False "Activate UE autotest specific logs" ON) +add_boolean_option(UE_DEBUG_TRACE False "Activate UE debug trace" ON) +add_boolean_option(UE_TIMING_TRACE False "Activate UE timing trace" ON) set (OCP_ITTI ${OPENAIR_DIR}/common/utils/ocp_itti) add_library(ITTI @@ -595,7 +595,7 @@ target_link_libraries(benetel_5g PRIVATE asn1_nr_rrc asn1_lte_rrc) # LDPC offload library ########################################################## -add_boolean_option(ENABLE_LDPC_T1 OFF "Build support for LDPC Offload to T1 library") +add_boolean_option(ENABLE_LDPC_T1 OFF "Build support for LDPC Offload to T1 library" OFF) if (ENABLE_LDPC_T1) pkg_check_modules(LIBDPDK_T1 REQUIRED libdpdk=20.05.0) find_library(T1 NAMES rte_pmd_hpac_sdfec_pmd REQUIRED) @@ -616,53 +616,52 @@ include_directories ("${OPENAIR_DIR}/radio/COMMON") # ???!!! TO BE DOCUMENTED OPTIONS !!!??? ############################################################## -add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????") -add_boolean_option(NAS_NETLINK False "useless ??? Must be True to compile nasmesh driver without rtai ????") -add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????") +add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????" ON) +add_boolean_option(NAS_NETLINK False "useless ??? Must be True to compile nasmesh driver without rtai ????" ON) +add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????" ON) -add_boolean_option(UE_EXPANSION False "enable UE_EXPANSION with max 256 UE") -add_boolean_option(PHY_TX_THREAD False "enable UE_EXPANSION with max 256 UE") -add_boolean_option(PRE_SCD_THREAD False "enable UE_EXPANSION with max 256 UE") -add_boolean_option(UESIM_EXPANSION False "enable UESIM_EXPANSION with max 256 UE") +add_boolean_option(UE_EXPANSION False "enable UE_EXPANSION with max 256 UE" ON) +add_boolean_option(PHY_TX_THREAD False "enable UE_EXPANSION with max 256 UE" ON) +add_boolean_option(PRE_SCD_THREAD False "enable UE_EXPANSION with max 256 UE" ON) +add_boolean_option(UESIM_EXPANSION False "enable UESIM_EXPANSION with max 256 UE" ON) ######################## # Include order ########################## -add_boolean_option(ENB_MODE True "Swap the include directories between openair2 and openair3" ) +add_boolean_option(ENB_MODE True "Swap the include directories between openair2 and openair3" ON) ########################## # SCHEDULING/REAL-TIME/PERF options ########################## -add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME False "Add data in vcd traces: disable it if perf issues") -add_boolean_option(ENABLE_VCD False "always true now, time measurements of proc calls and var displays") -add_boolean_option(ENABLE_VCD_FIFO False "time measurements of proc calls and var displays sent to FIFO (one more thread)") -add_boolean_option(LINUX False "used in weird memcpy() in pdcp.c ???") -add_boolean_option(LINUX_LIST False "used only in lists.c: either use OAI implementation of lists or Linux one (should be True, but it is False") +add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME False "Add data in vcd traces: disable it if perf issues" ON) +add_boolean_option(ENABLE_VCD False "always true now, time measurements of proc calls and var displays" ON) +add_boolean_option(ENABLE_VCD_FIFO False "time measurements of proc calls and var displays sent to FIFO (one more thread)" ON) +add_boolean_option(LINUX False "used in weird memcpy() in pdcp.c ???" ON) +add_boolean_option(LINUX_LIST False "used only in lists.c: either use OAI implementation of lists or Linux one (should be ON, but it is False" ON) ########################## # PHY options ########################## -add_boolean_option(LOCALIZATION False "???") -add_integer_option(MAX_NUM_CCs 1 "????") -add_boolean_option(SMBV False "Rohde&Schwarz SMBV100A vector signal generator") -add_boolean_option(DEBUG_PHY False "Enable PHY layer debugging options") -add_boolean_option(DEBUG_PHY_PROC False "Enable debugging of PHY layer procedures") -add_boolean_option(DEBUG_DLSCH False "Enable debugging of DLSCH physical layer channel") -add_boolean_option(MEX False "Enabling compilation with mex") +add_boolean_option(LOCALIZATION False "???" ON) +add_integer_option(MAX_NUM_CCs 1 "????" ON) +add_boolean_option(SMBV False "Rohde&Schwarz SMBV100A vector signal generator" ON) +add_boolean_option(DEBUG_PHY False "Enable PHY layer debugging options" ON) +add_boolean_option(DEBUG_PHY_PROC False "Enable debugging of PHY layer procedures" ON) +add_boolean_option(DEBUG_DLSCH False "Enable debugging of DLSCH physical layer channel" ON) +add_boolean_option(MEX False "Enabling compilation with mex" ON) ########################## # NAS LAYER OPTIONS ########################## -add_boolean_option(ENABLE_NAS_UE_LOGGING True "????") -add_boolean_option(NAS_BUILT_IN_UE True "UE NAS layer present in this executable") -add_boolean_option(NAS_UE True "NAS UE INSTANCE (<> NAS_MME)") +add_boolean_option(ENABLE_NAS_UE_LOGGING True "????" ON) +add_boolean_option(NAS_BUILT_IN_UE True "UE NAS layer present in this executable" ON) +add_boolean_option(NAS_UE True "NAS UE INSTANCE (<> NAS_MME)" ON) ########################## # ACCESS STRATUM LAYER2 OPTIONS ########################## -add_boolean_option(JUMBO_FRAME True "ENABLE LARGE SDU in ACCESS STRATUM (larger than common MTU)") - +add_boolean_option(JUMBO_FRAME True "ENABLE LARGE SDU in ACCESS STRATUM (larger than common MTU)" ON) ########################## # PDCP LAYER OPTIONS @@ -673,7 +672,7 @@ add_boolean_option(JUMBO_FRAME True "ENABLE LARGE SDU in ACCESS STR ########################## # RRC LAYER OPTIONS ########################## -add_boolean_option(RRC_DEFAULT_RAB_IS_AM True "set the RLC mode to AM for the default bearer, otherwise it is UM.") +add_boolean_option(RRC_DEFAULT_RAB_IS_AM True "set the RLC mode to AM for the default bearer, otherwise it is UM." ON) ########################## @@ -1008,7 +1007,7 @@ add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL) # Base CUDA setting ############################################## -add_boolean_option(BUILD_CUDA False "Build support for CUDA") +add_boolean_option(BUILD_CUDA False "Build support for CUDA" OFF) if (ENABLE_LDPC_CUDA) find_package(CUDA REQUIRED) SET(CUDA_NVCC_FLAG "${CUDA_NVCC_FLAGS};-arch=sm_60;") @@ -2060,38 +2059,6 @@ include_directories("${NFAPI_DIR}/pnf_sim/inc") list(APPEND ATLAS_LIBRARIES lapack lapacke) -include_directories ("/usr/include/X11") -set(XFORMS_SOURCE - ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope.c - ) -set(XFORMS_ENB_SOURCE - ${OPENAIR1_DIR}/PHY/TOOLS/lte_enb_scope.c - ) -set(XFORMS_UE_SOURCE - ${OPENAIR1_DIR}/PHY/TOOLS/lte_ue_scope.c - ) -set(XFORMS_SOURCE_NR - ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_scope.c - ) -set(XFORMS_SOURCE_SOFTMODEM - ${OPENAIR_DIR}/executables/stats.c - ) -set(XFORMSINTERFACE_SOURCE - ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c - ) -set(XFORMS_LIBRARIES "forms") - -add_library(enbscope MODULE ${XFORMS_SOURCE} ${XFORMS_SOURCE_SOFTMODEM} ${XFORMS_ENB_SOURCE}) -add_library(uescope MODULE ${XFORMS_SOURCE} ${XFORMS_SOURCE_SOFTMODEM} ${XFORMS_UE_SOURCE}) -target_link_libraries(enbscope PRIVATE ${XFORMS_LIBRARIES}) -target_link_libraries(enbscope PRIVATE asn1_nr_rrc asn1_lte_rrc) -target_link_libraries(uescope PRIVATE ${XFORMS_LIBRARIES}) -target_link_libraries(uescope PRIVATE asn1_nr_rrc asn1_lte_rrc) - -add_library(nrscope MODULE ${XFORMS_SOURCE_NR}) -target_link_libraries(nrscope PRIVATE ${XFORMS_LIBRARIES}) -target_link_libraries(nrscope PRIVATE asn1_nr_rrc asn1_lte_rrc) - add_library(rfsimulator MODULE ${OPENAIR_DIR}/radio/rfsimulator/simulator.c @@ -2201,7 +2168,7 @@ add_executable(lte-softmodem ${PHY_INTERFACE_DIR}/queue_t.c ${OPENAIR_DIR}/common/utils/lte/ue_power.c ${OPENAIR_DIR}/common/utils/lte/prach_utils.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2240,7 +2207,7 @@ add_executable(ocp-enb ${OPENAIR_DIR}/common/utils/lte/ue_power.c ${OPENAIR_DIR}/common/utils/lte/prach_utils.c ${PHY_INTERFACE_DIR}/queue_t.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2298,7 +2265,7 @@ add_executable(lte-uesoftmodem ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c ${OPENAIR_DIR}/common/utils/lte/ue_power.c ${OPENAIR_DIR}/common/utils/lte/prach_utils.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2345,7 +2312,7 @@ add_executable(nr-softmodem ${OPENAIR_DIR}/common/utils/lte/prach_utils.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c ${PHY_INTERFACE_DIR}/queue_t.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2411,7 +2378,7 @@ add_executable(nr-uesoftmodem ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2775,11 +2742,10 @@ if(OAI_NW_DRIVER_USE_NETLINK) endif() make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src}) -include (common/utils/telnetsrv/telnetsrv_CMakeLists.txt) include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt) -include (${OPENAIR_DIR}/common/utils/websrv/websrv_CMakeLists.txt) add_subdirectory(common) add_subdirectory(doc) +add_subdirectory(openair1) add_subdirectory(openair2) add_subdirectory(openair3) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index f27a0cb315d..578eaed570b 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -55,14 +55,7 @@ CMAKE_BUILD_TYPE="RelWithDebInfo" CMAKE_CMD="$CMAKE" BUILD_ECLIPSE=0 NR="False" -OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope ldpc_cuda ldpc_t1" -ulfiusdep=$(basename ./`find /usr/lib* -name libulfius.so`) -jssondep=$(basename ./`find /usr/lib* -name libjansson.so`) -if [ "$ulfiusdep" == "libulfius.so" -a "$jssondep" == "libjansson.so" ] ; then - OPTIONAL_LIBRARIES+=" websrv" -else - echo_warning " websrv optional build not included in build-lib option as dependencies requirements not met " -fi +OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope ldpc_cuda ldpc_t1 websrv" RU=0 CMAKE_C_FLAGS=() CMAKE_CXX_FLAGS=() @@ -85,7 +78,7 @@ Options: -d | --build-dir Sets build directory (will be <oai-root>/cmake_targets/<build-dir>/build) -I | --install-external-packages - Installs required packages such as LibXML, asn1.1 compiler, freediameter, ... + Installs required packages such as LibXML, asn1.1 compiler, ... This option will require root password --install-optional-packages Install useful but not mandatory packages such as valgrind @@ -392,16 +385,16 @@ function main() { if [ "$alib" = "$oklib" ] ; then BUILD_OPTLIB="$BUILD_OPTLIB $alib" echo_info "Enabling build of lib${alib}.so" - fi - done - done - if [ "${BUILD_OPTLIB## }" != "$2" ] ; then + fi + done + done + if [ "${BUILD_OPTLIB## }" != "$2" ] ; then echo_fatal "Unknown optional library in $2, valid libraries are $OPTIONAL_LIBRARIES" fi fi - for oklib in $BUILD_OPTLIB ; do - CMAKE_CMD="$CMAKE_CMD -DENABLE_${oklib^^}=ON" - done + for oklib in $BUILD_OPTLIB ; do + CMAKE_CMD="$CMAKE_CMD -DENABLE_${oklib^^}=ON" + done shift 2;; --noavx512) CMAKE_CMD="$CMAKE_CMD -DAVX512=OFF" @@ -476,8 +469,6 @@ function main() { # Setting and printing OAI envs, we should check here # ####################################################### - echo_info "2. Setting the OAI PATHS ..." - cecho "OPENAIR_DIR = $OPENAIR_DIR" $green # for conf files copy in this bash script @@ -554,8 +545,6 @@ function main() { SKIP_SHARED_LIB_FLAG="True" fi - echo_info "3. building the compilation directives ..." - DIR=$OPENAIR_DIR/cmake_targets [ "$CLEAN" = "1" ] && rm -rf $DIR/$BUILD_DIR/build @@ -658,27 +647,9 @@ function main() { if [ ! -z "$BUILD_OPTLIB" ] ; then for oklib in $BUILD_OPTLIB ; do compilations $BUILD_DIR $oklib - if [ "$oklib" == "websrv" ] ; then - BUILD_WEBSRVFRONT=1 - echo_info "Build of websrv frontend enabled" - fi done fi - - ############################################ - # Optional targets (others than libraries) # - ############################################ - if [ "$BUILD_WEBSRVFRONT" = "1" ] ; then - npmv=`command npm -v` - npms=$? - nodev=`command node -v` - nodes=$? - if [ "$npms" == "0" -a "$nodes" == "0" ] ; then - compilations $BUILD_DIR websrvfront - else - echo_warning "build of websrv front-end skipped, dependencies not met : " $npmv " " $nodev - fi - fi + #################################################### # Build RF device and transport protocol libraries # #################################################### @@ -767,7 +738,6 @@ function main() { # Auto-tests # ############## if [ "$OAI_TEST" = "1" ] ; then - echo_info "10. Running OAI pre commit tests (pre-ci) ..." echo_error "These scripts ASSUME that user is in /etc/sudoers and can execute commands without PASSWORD prompt" echo_error "Add the following lines in /etc/sudoers file to make your __user_name__ sudo without password prompt" echo_error " __your_user_name__ ALL = (ALL:ALL) NOPASSWD: ALL" @@ -787,7 +757,6 @@ function main() { fi wait else - echo_info "10. Bypassing the Tests ..." echo_success "BUILD SHOULD BE SUCCESSFUL" fi diff --git a/cmake_targets/macros.cmake b/cmake_targets/macros.cmake index cbdd2216232..0a2dbab1821 100644 --- a/cmake_targets/macros.cmake +++ b/cmake_targets/macros.cmake @@ -11,7 +11,7 @@ macro(add_option name val helpstr) add_definitions("-D${name}=${value}") endmacro(add_option) -macro(add_boolean_option name val helpstr) +macro(add_boolean_option name val helpstr adddef) if(DEFINED ${name}) set(value ${${name}}) else(DEFINED ${name}) @@ -19,9 +19,9 @@ macro(add_boolean_option name val helpstr) endif() set(${name} ${value} CACHE STRING "${helpstr}") set_property(CACHE ${name} PROPERTY TYPE BOOL) - if (${value}) + if (${value} AND ${adddef}) add_definitions("-D${name}") - endif (${value}) + endif (${value} AND ${adddef}) endmacro(add_boolean_option) macro(add_integer_option name val helpstr) diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt index eb6a1199688..2acf78c9c24 100644 --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -1 +1,10 @@ add_subdirectory(ds) +add_boolean_option(ENABLE_TELNETSRV OFF "Whether to build telnet support in modems" OFF) +if(ENABLE_TELNETSRV) + add_subdirectory(telnetsrv) +endif() +add_boolean_option(ENABLE_WEBSRV OFF "Whether to build the webserver" OFF) +if(ENABLE_WEBSRV) + add_subdirectory(websrv) +endif() + diff --git a/common/utils/telnetsrv/CMakeLists.txt b/common/utils/telnetsrv/CMakeLists.txt new file mode 100644 index 00000000000..f87a65b5099 --- /dev/null +++ b/common/utils/telnetsrv/CMakeLists.txt @@ -0,0 +1,61 @@ +#/* +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#! \file common/utils/telnetsrv/CMakelists.txt +#* \brief: build rules and checks for web server shared libraries +#* \author Francois TABURET +#* \date 2023 +#* \version 1.0 +#* \company NOKIA BellLabs France +#* \email: francois.taburet@nokia-bell-labs.com +#* \note +#* \warning +#*/ +add_library(telnetsrv MODULE + telnetsrv.c + telnetsrv_proccmd.c + telnetsrv_loader.c + telnetsrv_measurements.c +) +target_link_libraries(telnetsrv PRIVATE history) +target_link_libraries(telnetsrv PRIVATE asn1_nr_rrc asn1_lte_rrc) + +message(STATUS "Add enb specific telnet functions in libtelnetsrv_enb.so") +add_library(telnetsrv_enb MODULE + telnetsrv_enb_measurements.c + telnetsrv_enb_phycmd.c +) +add_dependencies(telnetsrv telnetsrv_enb) +target_link_libraries(telnetsrv_enb PRIVATE asn1_nr_rrc asn1_lte_rrc) + +message(STATUS "No specific telnet functions for gnb") + +message(STATUS "No specific telnet functions for 4Gue") + +message(STATUS "Add 5Gue specific telnet functions in libtelnetsrv_5Gue.so") +add_library(telnetsrv_5Gue MODULE telnetsrv_5Gue_measurements.c) +add_dependencies(telnetsrv telnetsrv_5Gue) +target_link_libraries(telnetsrv_5Gue PRIVATE asn1_nr_rrc asn1_lte_rrc) + +# all libraries should be written to root build dir +set_target_properties(telnetsrv telnetsrv_enb telnetsrv_5Gue + PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../../.. +) + diff --git a/common/utils/telnetsrv/telnetsrv_CMakeLists.txt b/common/utils/telnetsrv/telnetsrv_CMakeLists.txt deleted file mode 100644 index e8da916339f..00000000000 --- a/common/utils/telnetsrv/telnetsrv_CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -set(TELNETROOT ${OPENAIR_DIR}/common/utils/telnetsrv ) - -set(TELNETSRV_SOURCE - ${TELNETROOT}/telnetsrv.c - ${TELNETROOT}/telnetsrv_proccmd.c - ${TELNETROOT}/telnetsrv_loader.c - ${TELNETROOT}/telnetsrv_measurements.c - ) - -add_library(telnetsrv MODULE ${TELNETSRV_SOURCE} ) -target_link_libraries(telnetsrv PRIVATE history ncurses form ) -target_link_libraries(telnetsrv PRIVATE asn1_nr_rrc asn1_lte_rrc) - -foreach(TELNETLIB enb gnb 4Gue 5Gue) - set(TELNETLIB_SRCS "") - foreach(TELNETLIB_ASRC measurements phycmd) - set(TELNETLIB_SRC ${OPENAIR_DIR}/common/utils/telnetsrv/telnetsrv_${TELNETLIB}_${TELNETLIB_ASRC}.c) - if (EXISTS ${TELNETLIB_SRC}) - set( TELNETLIB_SRCS "${TELNETLIB_SRC};${TELNETLIB_SRCS}") - endif() - endforeach() - if(NOT "${TELNETLIB_SRCS}" STREQUAL "") - message("Add ${TELNETLIB} specific telnet functions in libtelnetsrv_${TELNETLIB}.so") - add_library(telnetsrv_${TELNETLIB} MODULE ${TELNETLIB_SRCS} ) - add_dependencies(telnetsrv telnetsrv_${TELNETLIB}) - target_link_libraries(telnetsrv_${TELNETLIB} PRIVATE asn1_nr_rrc asn1_lte_rrc) - install(TARGETS telnetsrv_${TELNETLIB} DESTINATION bin) - else() - message("No specific telnet functions for ${TELNETLIB}") - endif() -endforeach() - -install(TARGETS telnetsrv DESTINATION bin) - -if (EXISTS "${OPENAIR_CMAKE}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_CMAKE}/ran_build/build") - install(TARGETS telnetsrv DESTINATION ${OPENAIR_CMAKE}/ran_build/build) -endif (EXISTS "${OPENAIR_CMAKE}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_CMAKE}/ran_build/build") diff --git a/common/utils/websrv/CMakeLists.txt b/common/utils/websrv/CMakeLists.txt new file mode 100644 index 00000000000..dd5576ae796 --- /dev/null +++ b/common/utils/websrv/CMakeLists.txt @@ -0,0 +1,93 @@ +#/* +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#! \file common/utils/websrv/CMakelists.txt +#* \brief: build rules and checks for web server shared libraries +#* \author Francois TABURET +#* \date 2023 +#* \version 1.0 +#* \company NOKIA BellLabs France +#* \email: francois.taburet@nokia-bell-labs.com +#* \note +#* \warning +#*/ +find_library(ULFIUS NAMES "libulfius.so" REQUIRED) +if (NOT ULFIUS) + message(FATAL_ERROR "ulfius library (https://github.com/babelouest/ulfius) not found, install libulfius-dev (ubuntu) if you need to build websrv back-end") +else() + message(STATUS "found libulfius for websrv") +endif() + +find_library(JSON NAMES "libjansson.so" REQUIRED) +if (NOT JSON) + message(FATAL_ERROR "libjansson not found, install libjansson-dev for ubuntu, jansson-devel for fedora if you need to build websrv back-end") +else() + message(STATUS "found libjansson for websrv") +endif() + +find_program(NPM NAMES npm REQUIRED) +if (NOT NPM) + message(FATAL_ERROR "npm is not installed, frontend can't be built. Possibly install npm, package is available for ubuntu and fedora") +else() + message(STATUS "found npm for websrv") +endif() + + +# build the backend ( the embedded web server) + +message(STATUS "Configuring webserver backend") +add_library(websrv MODULE + websrv.c + websrv_websockets.c + websrv_scope.c + websrv_noforms.c + websrv_scope.c + websrv_utils.c + ../../../openair1/PHY/TOOLS/nr_phy_scope.c +) +target_link_libraries(websrv PRIVATE asn1_lte_rrc asn1_nr_rrc) +target_link_libraries(websrv PRIVATE ulfius jansson) +target_compile_definitions(websrv PUBLIC WEBSRVSCOPE) +# put websrv into build root and not under build/common/utils/websrv/ +set_target_properties(websrv PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../../..) + +# build the frontend ( loaded from web server by browsers) + +add_custom_target( + websrvfront_installjsdep + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/frontend + COMMAND npm install + DEPENDS frontend/package-lock.json +) + +message(STATUS "Configuring webserver frontend") +add_custom_target( + websrvfront + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/frontend + COMMAND npm run build + #COMMAND npm run builddev + DEPENDS websrvfront_installjsdep +) +add_dependencies(websrv websrvfront) +# copy frontend files to a websrv subdirectory of where oai copy all built files +add_custom_command(TARGET websrvfront + POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/frontend/dist/softmodem-ngx ${OPENAIR_BIN_DIR}/../websrv + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/helpfiles ${OPENAIR_BIN_DIR}/../websrv/helpfiles + COMMENT "Moving frontend files to:\n ${OPENAIR_BIN_DIR}/../websrv \n " ) diff --git a/common/utils/websrv/DOC/logscfg.png b/common/utils/websrv/DOC/logscfg.png new file mode 100644 index 0000000000000000000000000000000000000000..4345bc3eabcf2734bc10293fbbee33c0cbd5ee96 GIT binary patch literal 71969 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 M4W;WD*YuwJ7Xr?fr2qf` literal 0 HcmV?d00001 diff --git a/common/utils/websrv/DOC/main.png b/common/utils/websrv/DOC/main.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee62dd0db882cf8e034f9510d6d06a432275a72 GIT binary patch literal 70222 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 literal 0 HcmV?d00001 diff --git a/common/utils/websrv/DOC/scope.png b/common/utils/websrv/DOC/scope.png new file mode 100644 index 0000000000000000000000000000000000000000..67b6c246400c3c04fe78a9246a7540253c1765e0 GIT binary patch literal 158034 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�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 Q7GGl<OZ$tJ=2vh37rVEMI{*Lx literal 0 HcmV?d00001 diff --git a/common/utils/websrv/DOC/websrvuse.md b/common/utils/websrv/DOC/websrvuse.md index 9ba2c8ade10..05738259808 100644 --- a/common/utils/websrv/DOC/websrvuse.md +++ b/common/utils/websrv/DOC/websrvuse.md @@ -1,20 +1,19 @@ +back-end and front-end are both built when the build of the `websrv` optional library is requested. When cmake configuration has been completed, with websrv enabled,font-end and back-end can be built separatly, using respectively `make frontend` or `make websrv` from the build repository. +When all dependencies are met, you can build the web server interface components using the build_oai script with the `--build-lib all` option . As the web interface is an optional component, if it's dependencies are not found it won't stop the build. Web interface components (back-end or front-end) which cannot be built are just skipped. If you specifically ask for the webserver build ( `--build-lib websrv`) the build will fail if dependencies check failed. -When all dependencies are met, you can build the all the web server interface components using the build_oai script with the `--build-lib all` option . As the web interface is an optional component, if it's dependencies are not found it won't stop the build. Web interface components (back-end or front-end) which cannot be built are just skipped. - -###### build example when missing back-end dependencies +###### build example when missing dependencies ``` -./build_oai --build-lib all --nrUE - websrv optional build not included in build-lib option as dependencies requirements not met -Enabling build of all optional shared libraries (telnetsrv enbscope uescope nrscope) -Will compile NR UE +./build_oai --build-lib all +Enabling build of all optional shared libraries (telnetsrv enbscope uescope nrscope websrv websrvfront) RF HW set to None -2. Setting the OAI PATHS ... -OPENAIR_DIR = /usr/local/oai/oai-develop/openairinterface5g +OPENAIR_DIR = /usr/local/oai/websrv3/openairinterface5g FreeDiameter prefix not found, install freeDiameter if EPC, HSS -3. building the compilation directives ... -running cmake ../../.. +running cmake -DENABLE_WEBSRV=ON -DENABLE_TELNETSRV=ON ../../.. +NETTLE VERSION_INSTALLED = 3.5.1 +NETTLE_VERSION_MAJOR = 3 +NETTLE_VERSION_MINOR = 5 cuda include /usr/include cuda library -- CMAKE_BUILD_TYPE is RelWithDebInfo @@ -22,86 +21,80 @@ cuda library -- AVX512 intrinsics are OFF -- AVX2 intrinsics are ON -- No T1 Offload support detected -calling protoc_call=/usr/local/oai/oai-develop/openairinterface5g/cmake_targets/tools/generate_protobuf FSPT_C_DIR=/usr/local/oai/oai-develop/openairinterface5g/cmake_targets/ran_build/build/CMakeFiles/FSPT_V2 FSPT_MSG_DIR=/usr/local/oai/oai-develop/openairinterface5g/targets/COMMON/MESSAGES/V2 FSPT_MSG_FILES=/usr/local/oai/oai-develop/openairinterface5g/targets/COMMON/MESSAGES/V2/flexsplit.proto -[libprotobuf WARNING google/protobuf/compiler/parser.cc:546] No syntax specified for the proto file: flexsplit.proto. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.) -fspt c dir is : /usr/local/oai/oai-develop/openairinterface5g/cmake_targets/ran_build/build/CMakeFiles/FSPT_V2 gcc -Wall -I. -I.. -I../itti -I../../../openair2/COMMON -Itracer -o _check_vcd check_vcd.c tracer/database.c tracer/utils.c -lm -pthread ./_check_vcd || (rm -f ./_check_vcd ./T_IDs.h ./T_messages.txt.h && false) rm -f ./_check_vcd -Add enb specific telnet functions in libtelnetsrv_enb.so -No specific telnet functions for gnb -No specific telnet functions for 4Gue -Add 5Gue specific telnet functions in libtelnetsrv_5Gue.so -CMake Warning at common/utils/websrv/websrv_CMakeLists.txt:12 (message): +-- Add enb specific telnet functions in libtelnetsrv_enb.so +-- No specific telnet functions for gnb +-- No specific telnet functions for 4Gue +-- Add 5Gue specific telnet functions in libtelnetsrv_5Gue.so +CMake Error at common/utils/websrv/CMakeLists.txt:3 (message): ulfius library (https://github.com/babelouest/ulfius) not found, install libulfius-dev (ubuntu) if you need to build websrv back-end -Call Stack (most recent call first): - CMakeLists.txt:3189 (include) - --- websrv backend build skipped, dependencies not found -.......... -............. +-- Configuring incomplete, errors occurred! +See also "/usr/local/oai/websrv3/openairinterface5g/cmake_targets/ran_build/build/CMakeFiles/CMakeOutput.log". +See also "/usr/local/oai/websrv3/openairinterface5g/cmake_targets/ran_build/build/CMakeFiles/CMakeError.log". +build have failed ``` -###### build example when missing back-end dependencies - -``` - ./build_oai --build-lib all --nrUE - Enabling build of all optional shared libraries (telnetsrv enbscope uescope nrscope websrv) - Will compile NR UE - RF HW set to None - - 2. Setting the OAI PATHS ... - OPENAIR_DIR = /usr/local/oai/oai-develop/openairinterface5g - FreeDiameter prefix not found, install freeDiameter if EPC, HSS - 3. building the compilation directives ... - running cmake ../../.. - cuda include /usr/include - cuda library - -- CMAKE_BUILD_TYPE is RelWithDebInfo - -- CPUARCH x86_64 - -- AVX512 intrinsics are OFF - -- AVX2 intrinsics are ON - -- No T1 Offload support detected - calling protoc_call=/usr/local/oai/oai-develop/openairinterface5g/cmake_targets/tools/generate_protobuf FSPT_C_DIR=/usr/local/oai/oai-develop/openairinterface5g/cmake_targets/ran_build/build/CMakeFiles/FSPT_V2 FSPT_MSG_DIR=/usr/local/oai/oai-develop/openairinterface5g/targets/COMMON/MESSAGES/V2 FSPT_MSG_FILES=/usr/local/oai/oai-develop/openairinterface5g/targets/COMMON/MESSAGES/V2/flexsplit.proto - [libprotobuf WARNING google/protobuf/compiler/parser.cc:546] No syntax specified for the proto file: flexsplit.proto. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.) - fspt c dir is : /usr/local/oai/oai-develop/openairinterface5g/cmake_targets/ran_build/build/CMakeFiles/FSPT_V2 - gcc -Wall -I. -I.. -I../itti -I../../../openair2/COMMON -Itracer -o _check_vcd check_vcd.c tracer/database.c tracer/utils.c -lm -pthread - ./_check_vcd || (rm -f ./_check_vcd ./T_IDs.h ./T_messages.txt.h && false) - rm -f ./_check_vcd - Add enb specific telnet functions in libtelnetsrv_enb.so - No specific telnet functions for gnb - No specific telnet functions for 4Gue - Add 5Gue specific telnet functions in libtelnetsrv_5Gue.so - -- websrv backend can be built - -- websrv frontend can be built - -- Configuring done - -- Generating done - -- Build files have been written to: /usr/local/oai/oai-develop/openairinterface5g/cmake_targets/ran_build/build -............ -............. -Log file for compilation is being written to: /usr/local/oai/oai-develop/openairinterface5g/cmake_targets/log/websrv.txt +###### build example (build-lib all) when dependencies are met +``` + ./build_oai --build-lib all +Enabling build of all optional shared libraries (telnetsrv enbscope uescope nrscope websrv websrvfront) +RF HW set to None +OPENAIR_DIR = /usr/local/oai/websrv3/openairinterface5g +FreeDiameter prefix not found, install freeDiameter if EPC, HSS +running cmake -DENABLE_WEBSRV=ON -DENABLE_TELNETSRV=ON ../../.. +NETTLE VERSION_INSTALLED = 3.5.1 +NETTLE_VERSION_MAJOR = 3 +NETTLE_VERSION_MINOR = 5 +cuda include /usr/include +cuda library +-- CMAKE_BUILD_TYPE is RelWithDebInfo +-- CPUARCH x86_64 +-- AVX512 intrinsics are OFF +-- AVX2 intrinsics are ON +-- No T1 Offload support detected +gcc -Wall -I. -I.. -I../itti -I../../../openair2/COMMON -Itracer -o _check_vcd check_vcd.c tracer/database.c tracer/utils.c -lm -pthread +./_check_vcd || (rm -f ./_check_vcd ./T_IDs.h ./T_messages.txt.h && false) +rm -f ./_check_vcd +-- Add enb specific telnet functions in libtelnetsrv_enb.so +-- No specific telnet functions for gnb +-- No specific telnet functions for 4Gue +-- Add 5Gue specific telnet functions in libtelnetsrv_5Gue.so +-- found libulfius for websrv +-- found libjansson for websrv +-- found npm for websrv +-- Configuring webserver backend +-- Configuring webserver frontend +-- No Doxygen documentation requested +-- Configuring done +-- Generating done +-- Build files have been written to: /usr/local/oai/websrv3/openairinterface5g/cmake_targets/ran_build/build +Log file for compilation is being written to: /usr/local/oai/websrv3/openairinterface5g/cmake_targets/log/telnetsrv.txt +telnetsrv compiled +Log file for compilation is being written to: /usr/local/oai/websrv3/openairinterface5g/cmake_targets/log/enbscope.txt +enbscope compiled +Log file for compilation is being written to: /usr/local/oai/websrv3/openairinterface5g/cmake_targets/log/uescope.txt +uescope compiled +Log file for compilation is being written to: /usr/local/oai/websrv3/openairinterface5g/cmake_targets/log/nrscope.txt +nrscope compiled +Log file for compilation is being written to: /usr/local/oai/websrv3/openairinterface5g/cmake_targets/log/websrv.txt websrv compiled -Build of websrv frontend enabled -Log file for compilation is being written to: /usr/local/oai/oai-develop/openairinterface5g/cmake_targets/log/websrvfront.txt +Log file for compilation is being written to: /usr/local/oai/websrv3/openairinterface5g/cmake_targets/log/websrvfront.txt websrvfront compiled -Compiling rfsimulator -Log file for compilation is being written to: /usr/local/oai/oai-develop/openairinterface5g/cmake_targets/log/rfsimulator.txt -............. -.............. +BUILD SHOULD BE SUCCESSFUL ``` - +# building and installing the front-end after cmake has been configured -# building and installing the front-end - -Before building the front-end you need to install the npm node.js installer: +Before building the front-end you need to install the npm node.js installer, otherwise the make target won't exist: `apt-get install npm` for ubuntu or `dnf install npm`for fedora -then to build and install the frontend: +then configure cmake to be able to build and install the frontend without using the build_oai script: ``` bash cd \<oai repository\>/openairinterface5g/cmake_targets/ran_build/build @@ -143,7 +136,8 @@ Built target websrvfront -# Building and installing the web server back-end +# Building and installing the web server back-end after cmake has been configured + The back-end has two dependencies: 1. the [ulfius library](https://github.com/babelouest/ulfius) and the corresponding include files which are provided by the ubuntu libulfius-dev package: `sudo apt-get install -y libulfius-dev` @@ -151,7 +145,7 @@ The back-end has two dependencies: Dependencies can also be installed on fedora distribution, the jansson package is `jansson-devel`, ulfius has to be installed as explained [here](https://github.com/babelouest/ulfius/blob/master/INSTALL.md#pre-compiled-packages). -By default the embedded web server back-end , which is implemented in a shared library, is not built. It can be built after compiling the softmodem executable using the `build_oai` script: +The websrv targets won't be available till cmake has been successfully configured with the websrv option enabled ```bash cd \<oai repository\>/openairinterface5g @@ -159,7 +153,11 @@ By default the embedded web server back-end , which is implemented in a shared l cd cmake_targets ./build_oai --build-lib websrv ``` - +or, without the help of the `build_oai` script: +```bash + cd \<oai repository\>/openairinterface5g/cmake_targets/ran_build/build + make websrv +``` This will create the `libwebsrv.so` file in the `targets/bin` and `cmake_targets/ran_build/build` sub directories of the oai repository. When starting the softmodem, you must specify the **_\-\-websrv_** option to load and start the web server. The web server is loaded via the [oai shared library loader](loader). @@ -203,4 +201,8 @@ The interface should be intuitive enough, keeping in mind the following restrict Some front-end objects, which usage are less intuitive provide a tooltip to help interface usage. +## some webserver screenshots + + + [oai web serverinterface home](websrv.md) diff --git a/common/utils/websrv/frontend/package-lock.json b/common/utils/websrv/frontend/package-lock.json index c44e437efc2..0e2b61cf709 100644 --- a/common/utils/websrv/frontend/package-lock.json +++ b/common/utils/websrv/frontend/package-lock.json @@ -21,9 +21,12 @@ "@angular/platform-browser-dynamic": "^14.1.0", "@angular/router": "^14.1.0", "chart.js": "^3.8.2", + "json5": "^2.2.2", + "loader-utils": "^3.2.1", "moment": "^2.29.3", "ng2-charts": "^4.0.0", "rxjs": "^6.6.6", + "tsconfig-paths": "^4.0.0", "tslib": "^2.0.0", "zone.js": "^0.11.4" }, @@ -56,6 +59,12 @@ "typescript": "~4.6.4" } }, + "node_modules/@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -70,12 +79,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", + "version": "0.1401.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.3.tgz", + "integrity": "sha512-DQvKfl8Q9c02jpGqZX1nOL4mAnRBU6BSqPlhi1q17ZrB8sQpYtDBb8Epn2DDq48l7SQVFnRg6Zgje9L1LObURg==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.1.0", + "@angular-devkit/core": "14.1.3", "rxjs": "6.6.7" }, "engines": { @@ -85,35 +94,35 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.0.tgz", - "integrity": "sha512-AtecSuDEPLYd3p7uFVKpoA0XNcq+NvVYFJK8h90BG+IRZtzEm7ZJeYdohXVeVfTO5GvpNFN1XoHxR5rxiXeBhg==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.10.tgz", + "integrity": "sha512-VCeZAyq4uPCJukKInaSiD4i/GgxgcU4jFlLFQtoYNmaBS4xbPOymL19forRIihiV0dwNEa2L694vRTAPMBxIfw==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/build-webpack": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@babel/core": "7.18.6", - "@babel/generator": "7.18.7", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/build-webpack": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.6", - "@babel/preset-env": "7.18.6", - "@babel/runtime": "7.18.6", - "@babel/template": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.1.0", + "@ngtools/webpack": "14.2.10", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.9.1", - "cacache": "16.1.1", + "cacache": "16.1.2", "copy-webpack-plugin": "11.0.0", "critters": "0.0.16", "css-loader": "6.7.1", - "esbuild-wasm": "0.14.49", + "esbuild-wasm": "0.15.5", "glob": "8.0.3", "https-proxy-agent": "5.0.1", "inquirer": "8.2.4", @@ -122,34 +131,34 @@ "less": "4.1.3", "less-loader": "11.0.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", + "loader-utils": "3.2.1", "mini-css-extract-plugin": "2.6.1", "minimatch": "5.1.0", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", "piscina": "3.2.0", - "postcss": "8.4.14", - "postcss-import": "14.1.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", "postcss-loader": "7.0.1", - "postcss-preset-env": "7.7.2", + "postcss-preset-env": "7.8.0", "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.53.0", + "sass": "1.54.4", "sass-loader": "13.0.2", "semver": "7.3.7", "source-map-loader": "4.0.0", "source-map-support": "0.5.21", - "stylus": "0.58.1", + "stylus": "0.59.0", "stylus-loader": "7.0.0", "terser": "5.14.2", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.4.0", - "webpack": "5.73.0", + "webpack": "5.74.0", "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.9.3", + "webpack-dev-server": "4.11.0", "webpack-merge": "5.8.0", "webpack-subresource-integrity": "5.1.0" }, @@ -159,7 +168,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.14.49" + "esbuild": "0.15.5" }, "peerDependencies": { "@angular/compiler-cli": "^14.0.0", @@ -169,7 +178,7 @@ "ng-packagr": "^14.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=4.6.2 <4.8" + "typescript": ">=4.6.2 <4.9" }, "peerDependenciesMeta": { "@angular/localize": { @@ -192,6 +201,47 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, "node_modules/@angular-devkit/build-angular/node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -328,9 +378,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/inquirer/node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -345,6 +395,12 @@ "node": ">=8" } }, + "node_modules/@angular-devkit/build-angular/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@angular-devkit/build-angular/node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -431,13 +487,19 @@ "node": ">=8" } }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.0.tgz", - "integrity": "sha512-jKfnHal09mVnEapmNrAHXL/00LfafmfEUtlOPzQMgGJL7MWCeMcFthsbcOnGuzUerbiiquRk/KmLTERYjH+ZrQ==", + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.10.tgz", + "integrity": "sha512-h+2MaSY7QSvoJ3R+Hvin21jVCfPGOTLdASIUk4Jmq6J3y5BSku3KSSaV8dWoBOBkFCwQyPQMRjiHoHKLpC1K7g==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1401.0", + "@angular-devkit/architect": "0.1402.10", "rxjs": "6.6.7" }, "engines": { @@ -450,10 +512,57 @@ "webpack-dev-server": "^4.0.0" } }, + "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", + "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -476,13 +585,19 @@ } } }, + "node_modules/@angular-devkit/core/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@angular-devkit/schematics": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.0.tgz", - "integrity": "sha512-5QC01k9eznuQSiqxijKhVkAEmA8sioYuLhBzyffaPszSySH8kPMNxhAc8zJhBTNLumbS6iDaGkSqTQl5Kv9fOw==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.10.tgz", + "integrity": "sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.1.0", + "@angular-devkit/core": "14.2.10", "jsonc-parser": "3.1.0", "magic-string": "0.26.2", "ora": "5.4.1", @@ -494,6 +609,38 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@angular-eslint/builder": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.2.tgz", @@ -609,9 +756,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@angular/animations": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.1.0.tgz", - "integrity": "sha512-OhEXi1u/M4QyltDCxSqo7YzF7ELgNDWNqbbM7vtWIcrc4c+Yiu1GXhW/GQRosF3WAuQVfdQzEI0VTeNoo98Kvw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.12.tgz", + "integrity": "sha512-gwdnFZkvVUr+enUNfhfCGRGGqNHn1+vTA81apLfHYhJxgjiLUtETc4KTOrQevtDm022pEd+LSrvr8r+7ag+jkw==", "dependencies": { "tslib": "^2.3.0" }, @@ -619,13 +766,13 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.1.0" + "@angular/core": "14.2.12" } }, "node_modules/@angular/cdk": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.1.0.tgz", - "integrity": "sha512-EOQZmlTgj5Tc6/s50kEQUYKWH0S748rzbymBYkvyJs864lP9A8khz83IINmm+PD2sMADKtBETD3aEa5yQRhVAA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", "dependencies": { "tslib": "^2.3.0" }, @@ -639,15 +786,15 @@ } }, "node_modules/@angular/cli": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.0.tgz", - "integrity": "sha512-W/t2PkGHu9r87po1ZXQRYU81VtjzNMuGsP5tmoW1pGuibK7Kj+25G+jrXK/WADTi+pjTMXHNXYn8PlMNAIrZ/w==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.10.tgz", + "integrity": "sha512-gX9sAKOwq4lKdPWeABB7TzKDHdjQXvkUU8NmPJA6mEAVXvm3lhQtFvHDalZstwK8au2LY0LaXTcEtcKYOt3AXQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@angular-devkit/schematics": "14.1.0", - "@schematics/angular": "14.1.0", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", + "@schematics/angular": "14.2.10", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "debug": "4.3.4", @@ -658,7 +805,7 @@ "npm-pick-manifest": "7.0.1", "open": "8.4.0", "ora": "5.4.1", - "pacote": "13.6.1", + "pacote": "13.6.2", "resolve": "1.22.1", "semver": "7.3.7", "symbol-observable": "4.0.0", @@ -674,6 +821,47 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, "node_modules/@angular/cli/node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -809,6 +997,15 @@ "node": ">=12.0.0" } }, + "node_modules/@angular/cli/node_modules/inquirer/node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@angular/cli/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -818,6 +1015,12 @@ "node": ">=8" } }, + "node_modules/@angular/cli/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@angular/cli/node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -878,15 +1081,6 @@ "node": ">=8" } }, - "node_modules/@angular/cli/node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular/cli/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -914,9 +1108,9 @@ } }, "node_modules/@angular/common": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.1.0.tgz", - "integrity": "sha512-leethDtLbA3qySaOEBUto602DF0qH1maK9u2zHncrUFOpnHAYUEd7N9MFMdIYASurTnwOSglEoIDCML94qzImQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.12.tgz", + "integrity": "sha512-oZunh9wfInFWhNO1P8uoEs/o4u8kerKMhw8GruywKm1TV7gHDP2Fi5WHGjFqq3XYptgBTPCTSEfyLX6Cwq1PUw==", "dependencies": { "tslib": "^2.3.0" }, @@ -924,14 +1118,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.1.0", + "@angular/core": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.1.0.tgz", - "integrity": "sha512-aLbtpFDF3fp/DOEsWSdpszmoNZAb0To/zoKhHVmEReuUKkMtlPNd3+e6wkR2vrvR/cWgbKwdb7RQ1IQtGDu74A==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.12.tgz", + "integrity": "sha512-u2MH9+NRwbbFDRNiPWPexed9CnCq9+pGHLuyACSP2uR6Ik68cE6cayeZbIeoEV5vWpda/XsLmJgPJysw7dAZLQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -939,7 +1133,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.1.0" + "@angular/core": "14.2.12" }, "peerDependenciesMeta": { "@angular/core": { @@ -948,9 +1142,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.1.0.tgz", - "integrity": "sha512-llJkDnv0+riTdRPdOJv/FToz4X9ZO1URnalW+tIe2RyfOzkEqM+VLD/x+3cVgnsaFKuoPxIjZEkMoppGwVB4kg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.12.tgz", + "integrity": "sha512-9Gkb9KFkaQPz8XaS8ZwwTioRZ4ywykdAWyceICEi78/Y9ConYrTX2SbFogzI2dPUZU8a04tMlbqTSmHjVbJftQ==", "dev": true, "dependencies": { "@babel/core": "^7.17.2", @@ -973,14 +1167,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.1.0", - "typescript": ">=4.6.2 <4.8" + "@angular/compiler": "14.2.12", + "typescript": ">=4.6.2 <4.9" } }, "node_modules/@angular/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.1.0.tgz", - "integrity": "sha512-3quEsHmQifJOQ2oij5K+cjGjmhsKsyZI1+OTHWNZ6IXeuYviZv4U/Cui9fUJ1RN3CZxH3NzWB3gB/5qYFQfOgg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.12.tgz", + "integrity": "sha512-sGQxU5u4uawwvJa6jOTmGoisJiQ5HIN/RoBw99CmoqZIVyUSg9IRJJC1KVdH8gbpWBNLkElZv21lwJTL/msWyg==", "dependencies": { "tslib": "^2.3.0" }, @@ -989,13 +1183,14 @@ }, "peerDependencies": { "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.11.4" + "zone.js": "~0.11.4 || ~0.12.0" } }, "node_modules/@angular/flex-layout": { - "version": "14.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.40.tgz", - "integrity": "sha512-lYi2BKovNk5u2wmj/AMIMqfUzCBEt99Wu/Gfa+1mUIlw3voKCmIsV2XYBhX4adRdD+dRagY3Opger43JR7PXEw==", + "version": "14.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.41.tgz", + "integrity": "sha512-x1YcxqkdFlcbVXEy9ebCgW/F+7n/MXkEkwEcVEIPf5v5qn7HZsjQxgIj35Lf0amvMyF7h35prpoxO1uX5+ntFg==", + "deprecated": "This package has been deprecated. Please see https://blog.angular.io/modern-css-in-angular-layouts-4a259dca9127", "dependencies": { "tslib": "^2.3.0" }, @@ -1008,9 +1203,9 @@ } }, "node_modules/@angular/forms": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.1.0.tgz", - "integrity": "sha512-y7VQ2t+/ASEjzt8zXg4y5b03lMSPHmnhy4XzjDT14ZFrALaSxyhkSqoBfAksPkTeKmsFMnP/VgLboRsE8TLs0Q==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.12.tgz", + "integrity": "sha512-7abYlGIT2JnAtutQUlH3fQS6QEpbfftgvsVcZJCyvX0rXL3u2w2vUQkDHJH4YJJp3AHFVCH4/l7R4VcaPnrwvA==", "dependencies": { "tslib": "^2.3.0" }, @@ -1018,31 +1213,31 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.1.0", - "@angular/core": "14.1.0", - "@angular/platform-browser": "14.1.0", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.1.0.tgz", - "integrity": "sha512-ldL4xMDjXYZ93FCEIBVGipx9Qfgr7NuBNO+e25d+nWikXrUOnLfvF4UOL/TSUwSwqN4jxDI2KMNQIF6SecZfvQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.12.tgz", + "integrity": "sha512-YmW6simyEVmpDmbYVUhZ2IxSP6pmsWrV120rB9Y21/BeM39WIXA4NCNirVWlAd/KAKY9O7Sbn1nXI6rSDfhopQ==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0" } }, "node_modules/@angular/material": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.1.0.tgz", - "integrity": "sha512-0UXfMqP5+Nzd6gbLplQpUX3E0rRRwhVEnAo8Z1hllGdJIY0meunMnTZCWsvYQ7SU/W+VbqnmtBmg5EOfYsjpiQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", + "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^14.0.0 || ^15.0.0", - "@angular/cdk": "14.1.0", + "@angular/cdk": "14.2.7", "@angular/common": "^14.0.0 || ^15.0.0", "@angular/core": "^14.0.0 || ^15.0.0", "@angular/forms": "^14.0.0 || ^15.0.0", @@ -1051,9 +1246,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.0.tgz", - "integrity": "sha512-axNXUSqxsP0QSdNskd1pFo2uMo1UNoFaSAB02eDWwLkWQ1pWel+T78HiQY2bNeI3elgzjwPTT4vCCDQKNVTNig==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.12.tgz", + "integrity": "sha512-vOarWym8ucl1gjYWCzdwyBha+MTvL381mvTTUu8aUx6nVhHFjv4bvpjlZnZgojecqUPyxOwmPLLHvCZPJVHZYg==", "dependencies": { "tslib": "^2.3.0" }, @@ -1061,9 +1256,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.1.0", - "@angular/common": "14.1.0", - "@angular/core": "14.1.0" + "@angular/animations": "14.2.12", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1072,9 +1267,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.1.0.tgz", - "integrity": "sha512-0Lxz3HJ9qTOyMTp5Qud2tycP7wqe+tnHOSUqDywrbNRozTKGX0z3i+l0KMku3BtUbuMi3tJomqV914/dtbCvIw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.12.tgz", + "integrity": "sha512-oZhNJeaBmgw8+KBSYpKz2RYqEDyETC+HJXH8dwIFcP6BqqwL2NE70FdSR7EnOa5c41MEtTmMCGhrJSFR60x5/w==", "dependencies": { "tslib": "^2.3.0" }, @@ -1082,16 +1277,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.1.0", - "@angular/compiler": "14.1.0", - "@angular/core": "14.1.0", - "@angular/platform-browser": "14.1.0" + "@angular/common": "14.2.12", + "@angular/compiler": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12" } }, "node_modules/@angular/router": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.1.0.tgz", - "integrity": "sha512-WBC1E+d9RS8vy57zJ6LVtWT3AM12mEHY7SCMBRJNBcrmBYJwojxeV8IVkUoW4Ds910gG/w3LjIN0eNHg5qRtNA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.12.tgz", + "integrity": "sha512-r5tVus5RJDNc4U2v0jMtjPiAS1xDsVsJ70lS313DgZmBDHIVZP1cWIehdxwgNlGwQQtAA36eG7toBwqUU3gb/A==", "dependencies": { "tslib": "^2.3.0" }, @@ -1099,9 +1294,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.1.0", - "@angular/core": "14.1.0", - "@angular/platform-browser": "14.1.0", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1124,30 +1319,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1172,12 +1367,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.10", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -1225,14 +1420,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -1252,17 +1448,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -1273,13 +1469,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.2.1" }, "engines": { "node": ">=6.9.0" @@ -1289,9 +1485,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", @@ -1336,13 +1532,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1361,12 +1557,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1385,19 +1581,33 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1416,9 +1626,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1443,40 +1653,55 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -1494,10 +1719,19 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1513,29 +1747,43 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1556,9 +1804,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1583,14 +1831,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1600,14 +1848,14 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1634,13 +1882,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1699,12 +1947,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1747,16 +1995,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1782,13 +2030,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1815,14 +2063,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1912,12 +2160,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -2041,12 +2289,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2088,12 +2336,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2103,17 +2351,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -2125,12 +2374,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -2139,13 +2389,27 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2264,14 +2528,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2281,15 +2544,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2299,16 +2561,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { "node": ">=6.9.0" @@ -2334,13 +2595,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2381,12 +2642,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2411,13 +2672,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" }, "engines": { "node": ">=6.9.0" @@ -2442,16 +2703,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", - "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "semver": "^6.3.0" }, "engines": { @@ -2486,13 +2747,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -2547,12 +2808,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2578,29 +2839,29 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.6", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-proposal-private-property-in-object": "^7.18.6", "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", @@ -2622,40 +2883,40 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, @@ -2692,9 +2953,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" @@ -2704,33 +2965,33 @@ } }, "node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2739,12 +3000,12 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -2767,12 +3028,13 @@ } }, "node_modules/@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2780,9 +3042,9 @@ } }, "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", - "integrity": "sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", "dev": true, "dependencies": { "@csstools/selector-specificity": "^2.0.2", @@ -2883,8 +3145,27 @@ "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", "dev": true, "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^12 || ^14 || >=16" @@ -2970,6 +3251,25 @@ "postcss": "^8.2" } }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, "node_modules/@csstools/postcss-trigonometric-functions": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", @@ -3031,16 +3331,32 @@ "node": ">=10.0.0" } }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.4.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -3049,6 +3365,9 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { @@ -3084,9 +3403,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3147,14 +3466,14 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" @@ -3182,6 +3501,19 @@ "node": "*" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -3275,13 +3607,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -3291,9 +3623,9 @@ "dev": true }, "node_modules/@ngtools/webpack": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", - "integrity": "sha512-d4U6ymDCXckVgfjYEv1Wjzd78ZSm0NKgq8mN6FdlrCupg02LPIODjeKyNr4c4zwMAOJeHkVNEZ+USoDEK3XSsw==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.10.tgz", + "integrity": "sha512-sLHapZLVub6mEz5b19tf1VfIV1w3tYfg7FNPLeni79aldxu1FbP1v2WmiFAnMzrswqyK0bhTtxrl+Z/CLKqyoQ==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0", @@ -3302,7 +3634,7 @@ }, "peerDependencies": { "@angular/compiler-cli": "^14.0.0", - "typescript": ">=4.6.2 <4.8", + "typescript": ">=4.6.2 <4.9", "webpack": "^5.54.0" } }, @@ -3342,9 +3674,9 @@ } }, "node_modules/@npmcli/fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.1.tgz", - "integrity": "sha512-1Q0uzx6c/NVNGszePbr5Gc2riSU1zLpNlo/1YWntH+eaPmMgBssAW0qXofCVkpdj3ce4swZtlDYQu+NKiYcptg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "dependencies": { "@gar/promisify": "^1.1.3", @@ -3355,9 +3687,9 @@ } }, "node_modules/@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, "dependencies": { "@npmcli/promise-spawn": "^3.0.0", @@ -3374,6 +3706,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", @@ -3391,9 +3732,10 @@ } }, "node_modules/@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, "dependencies": { "mkdirp": "^1.0.4", @@ -3425,9 +3767,9 @@ } }, "node_modules/@npmcli/run-script": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", - "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, "dependencies": { "@npmcli/node-gyp": "^2.0.0", @@ -3441,64 +3783,36 @@ } }, "node_modules/@nrwl/cli": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.3.tgz", - "integrity": "sha512-9WzOOXgdf9YJxqte5e8KNkM3NWOuBgM7hz9jEOyw53Ht1Y2H8xLDPVkqDTS9kROgcyMQxHIjIcw80wZNaZL8Mw==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.6.tgz", + "integrity": "sha512-R4udxekMd4jhoRPEksJu+224DocOIrAqenFo0D2R36epE5FaCnZQX7xg+b3TjRbdS10e426i4D9LuXdQmP5jJg==", "dev": true, "dependencies": { - "nx": "14.4.3" + "nx": "14.8.6" } }, "node_modules/@nrwl/devkit": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.4.3.tgz", - "integrity": "sha512-CFGWQyzrqs4q7YUk37E5Ca+HDj9qbhfw6oI/Omf42MitEpoEnWxVKy/h1pua6ykHn8ZDVvS7sp6nrmg+r6OmDA==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.6.tgz", + "integrity": "sha512-+3KqohOKeUuyS176jrwY0yeB3E2IFQ3jMkS0KizzsHGsZWdZbQ2WQ46hZ0/bvRh9Efl8CAg6n4fUWR0BXUePMA==", "dev": true, "dependencies": { + "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", "ignore": "^5.0.4", - "rxjs": "^6.5.4", - "semver": "7.3.4", "tslib": "^2.3.0" }, "peerDependencies": { "nx": ">= 13.10 <= 15" } }, - "node_modules/@nrwl/devkit/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nrwl/devkit/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@nrwl/tao": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.3.tgz", - "integrity": "sha512-sHlnqTlJ/XEc/lv0MIKYI1R643CWFvYL6QyZD7f38FvP1RblZ6eVqvOJcrkpwcvRWcZNEY+GrQpb1Io1ZvMEmQ==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.6.tgz", + "integrity": "sha512-CByqrsfSJeonOd7TLAHP8bRYNWgDksxA7j+yncSzgQnFLEbZdJGG/AqqIovx8g6g2v0JS+nRgGC+w5UPf04UrQ==", "dev": true, "dependencies": { - "nx": "14.4.3" + "nx": "14.8.6" }, "bin": { "tao": "index.js" @@ -3522,14 +3836,26 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@phenomnomnominal/tsquery": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", + "dev": true, + "dependencies": { + "esquery": "^1.0.1" + }, + "peerDependencies": { + "typescript": "^3 || ^4" + } + }, "node_modules/@schematics/angular": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.0.tgz", - "integrity": "sha512-lhqNZzA+iT3XwlwRU757mhYmd5WE9XB2OKFhosvvszou2zuNUJMDPR9P01ZVNCOa2fScOeCMg2q3ZDgGTBl96Q==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.10.tgz", + "integrity": "sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.1.0", - "@angular-devkit/schematics": "14.1.0", + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", "jsonc-parser": "3.1.0" }, "engines": { @@ -3538,6 +3864,38 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@schematics/angular/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -3586,9 +3944,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -3612,21 +3970,21 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", + "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.31", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", "dev": true, "dependencies": { "@types/node": "*", @@ -3656,9 +4014,9 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "node_modules/@types/node": { @@ -3691,6 +4049,12 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -3701,12 +4065,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "dependencies": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -3720,26 +4084,26 @@ } }, "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz", - "integrity": "sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/type-utils": "5.31.0", - "@typescript-eslint/utils": "5.31.0", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/type-utils": "5.48.0", + "@typescript-eslint/utils": "5.48.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" @@ -3762,17 +4126,19 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", - "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3786,14 +4152,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz", - "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "debug": "^4.3.4" }, "engines": { @@ -3813,13 +4179,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", - "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0" + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3830,12 +4196,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz", - "integrity": "sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.31.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/utils": "5.48.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3856,17 +4223,19 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", - "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3880,9 +4249,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", - "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3893,13 +4262,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", - "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4018,12 +4387,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", - "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/types": "5.48.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4198,6 +4567,37 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.34", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.34.tgz", + "integrity": "sha512-NhEA0BusInyk7EiJ7i7qF1Mkrb6gGjZcQQ/W1xxGazxapubEmGO7v5WSll6hWxFXE2ngtLj8lflq1Ff5VtqEww==", + "dev": true, + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@zkochan/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -4224,9 +4624,9 @@ } }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4267,9 +4667,9 @@ } }, "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -4416,9 +4816,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -4445,16 +4845,16 @@ "dev": true }, "node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/arg": { @@ -4475,7 +4875,7 @@ "node_modules/argparse/node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/aria-query": { @@ -4515,22 +4915,16 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", "dev": true, "funding": [ { @@ -4543,8 +4937,8 @@ } ], "dependencies": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -4560,6 +4954,17 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/axobject-query": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", @@ -4589,9 +4994,9 @@ } }, "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -4602,15 +5007,6 @@ "node": ">=8.9.0" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -4628,13 +5024,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "peerDependencies": { @@ -4664,12 +5060,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "@babel/helper-define-polyfill-provider": "^0.3.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -4737,9 +5133,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -4750,7 +5146,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -4794,9 +5190,9 @@ "dev": true }, "node_modules/bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", "dev": true, "dependencies": { "array-flatten": "^2.1.2", @@ -4833,9 +5229,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "funding": [ { @@ -4848,10 +5244,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" @@ -4919,9 +5315,9 @@ } }, "node_modules/cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", "dev": true, "dependencies": { "@npmcli/fs": "^2.1.0", @@ -4947,6 +5343,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4979,9 +5384,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001370", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", - "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", + "version": "1.0.30001441", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", "dev": true, "funding": [ { @@ -5015,9 +5420,9 @@ "dev": true }, "node_modules/chart.js": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.2.tgz", - "integrity": "sha512-7rqSlHWMUKFyBDOJvmFGW2lxULtcwaPLegDjX/Nu5j6QybY+GCiQkEY+6cqHw62S5tcwXMD8Y+H5OBGoR7d+ZQ==" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" }, "node_modules/chokidar": { "version": "3.5.3", @@ -5076,7 +5481,7 @@ "node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "dependencies": { "restore-cursor": "^2.0.0" @@ -5294,6 +5699,18 @@ "node": ">=0.1.90" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -5351,6 +5768,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5384,26 +5807,6 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -5414,13 +5817,10 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/cookie": { "version": "0.5.0", @@ -5486,9 +5886,9 @@ } }, "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", @@ -5536,28 +5936,18 @@ } }, "node_modules/core-js-compat": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.0.tgz", - "integrity": "sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", + "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", "dev": true, "dependencies": { - "browserslist": "^4.21.2", - "semver": "7.0.0" + "browserslist": "^4.21.4" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -5565,9 +5955,9 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", @@ -5684,17 +6074,6 @@ "node": ">= 8" } }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, "node_modules/css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -5811,15 +6190,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cssauron": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", @@ -5831,9 +6201,9 @@ } }, "node_modules/cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", + "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", "dev": true, "funding": { "type": "opencollective", @@ -5876,15 +6246,6 @@ } } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5904,12 +6265,15 @@ } }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-lazy-prop": { @@ -5921,20 +6285,13 @@ "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.4.0" } }, "node_modules/delegates": { @@ -5946,7 +6303,7 @@ "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -6105,6 +6462,12 @@ "node": ">=10" } }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -6127,9 +6490,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.200", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.200.tgz", - "integrity": "sha512-nPyI7oHc8T64oSqRXrAt99gNMpk0SAgPHw/o+hkNKyb5+bcdnFtZcSO9FUJES5cVkVZvo8u4qiZ1gQILl8UXsA==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "node_modules/emoji-regex": { @@ -6189,9 +6552,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -6266,9 +6629,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", - "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", "dev": true, "hasInstallScript": true, "optional": true, @@ -6279,32 +6642,33 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.49", - "esbuild-android-arm64": "0.14.49", - "esbuild-darwin-64": "0.14.49", - "esbuild-darwin-arm64": "0.14.49", - "esbuild-freebsd-64": "0.14.49", - "esbuild-freebsd-arm64": "0.14.49", - "esbuild-linux-32": "0.14.49", - "esbuild-linux-64": "0.14.49", - "esbuild-linux-arm": "0.14.49", - "esbuild-linux-arm64": "0.14.49", - "esbuild-linux-mips64le": "0.14.49", - "esbuild-linux-ppc64le": "0.14.49", - "esbuild-linux-riscv64": "0.14.49", - "esbuild-linux-s390x": "0.14.49", - "esbuild-netbsd-64": "0.14.49", - "esbuild-openbsd-64": "0.14.49", - "esbuild-sunos-64": "0.14.49", - "esbuild-windows-32": "0.14.49", - "esbuild-windows-64": "0.14.49", - "esbuild-windows-arm64": "0.14.49" + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" } }, "node_modules/esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", "cpu": [ "x64" ], @@ -6318,9 +6682,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", "cpu": [ "arm64" ], @@ -6334,9 +6698,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", "cpu": [ "x64" ], @@ -6350,9 +6714,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", "cpu": [ "arm64" ], @@ -6366,9 +6730,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", "cpu": [ "x64" ], @@ -6382,9 +6746,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", "cpu": [ "arm64" ], @@ -6398,9 +6762,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", "cpu": [ "ia32" ], @@ -6414,9 +6778,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", "cpu": [ "x64" ], @@ -6430,9 +6794,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", "cpu": [ "arm" ], @@ -6446,9 +6810,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", "cpu": [ "arm64" ], @@ -6462,9 +6826,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", "cpu": [ "mips64el" ], @@ -6478,9 +6842,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", "cpu": [ "ppc64" ], @@ -6494,9 +6858,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", "cpu": [ "riscv64" ], @@ -6510,9 +6874,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", "cpu": [ "s390x" ], @@ -6526,9 +6890,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", "cpu": [ "x64" ], @@ -6542,9 +6906,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", "cpu": [ "x64" ], @@ -6558,9 +6922,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", "cpu": [ "x64" ], @@ -6574,9 +6938,9 @@ } }, "node_modules/esbuild-wasm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", - "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", "dev": true, "bin": { "esbuild": "bin/esbuild" @@ -6586,9 +6950,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", "cpu": [ "ia32" ], @@ -6602,9 +6966,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", - "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", "cpu": [ "x64" ], @@ -6618,9 +6982,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", - "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", "cpu": [ "arm64" ], @@ -6658,13 +7022,15 @@ } }, "node_modules/eslint": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", - "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -6674,18 +7040,21 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -6696,8 +7065,7 @@ "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -6873,6 +7241,22 @@ "node": ">=4.0" } }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -6886,9 +7270,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -6927,6 +7311,21 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -6939,6 +7338,36 @@ "node": "*" } }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6964,17 +7393,20 @@ } }, "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "dependencies": { - "acorn": "^8.7.1", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -7128,14 +7560,14 @@ } }, "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -7154,7 +7586,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -7199,26 +7631,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -7252,9 +7664,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -7287,9 +7699,9 @@ "peer": true }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -7310,7 +7722,7 @@ "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" @@ -7438,15 +7850,15 @@ } }, "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -7463,6 +7875,20 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -7558,12 +7984,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/fuzzy": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", @@ -7634,9 +8054,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -7740,6 +8160,12 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -7767,18 +8193,6 @@ "node": ">=4" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -7815,15 +8229,24 @@ "dev": true }, "node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { "lru-cache": "^7.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/hpack.js": { @@ -7853,6 +8276,12 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -8095,9 +8524,9 @@ } }, "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz", + "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==", "dev": true }, "node_modules/import-fresh": { @@ -8372,9 +8801,9 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -8410,7 +8839,7 @@ "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "engines": { "node": ">=4" @@ -8452,6 +8881,15 @@ "node": ">=0.12.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -8549,9 +8987,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -8736,6 +9174,16 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8786,10 +9234,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -8798,9 +9245,9 @@ } }, "node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, "node_modules/jsonfile": { @@ -8987,10 +9434,9 @@ } }, "node_modules/loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true, + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "engines": { "node": ">= 12.13.0" } @@ -9117,12 +9563,12 @@ } }, "node_modules/lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "yallist": "^3.0.2" } }, "node_modules/magic-string": { @@ -9168,9 +9614,9 @@ "dev": true }, "node_modules/make-fetch-happen": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.0.tgz", - "integrity": "sha512-OnEfCLofQVJ5zgKwGk55GaqosqKjaR6khQlJY3dBAA+hM25Bc5CmX5rKUfVut+rYA3uidA7zb7AvcglU87rPRg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", @@ -9194,6 +9640,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -9204,9 +9659,9 @@ } }, "node_modules/memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", + "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", "dev": true, "dependencies": { "fs-monkey": "^1.0.3" @@ -9357,15 +9812,17 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -9387,9 +9844,9 @@ } }, "node_modules/minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "dependencies": { "minipass": "^3.1.6", @@ -9449,6 +9906,12 @@ "node": ">=8" } }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -9462,6 +9925,12 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -9504,7 +9973,7 @@ "node_modules/mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, "node_modules/nanoid": { @@ -9525,10 +9994,16 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, "optional": true, "dependencies": { @@ -9582,17 +10057,18 @@ "dev": true }, "node_modules/ng2-charts": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.0.0.tgz", - "integrity": "sha512-1COLMs1UH8XIurk9C3pBQW3zH4RM3ggPtaC5vGjEmRGZ2cK/j8DqpzN4xMqyk0KB4D2vw/ZejgXmxxZ4Ie58Rw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.1.1.tgz", + "integrity": "sha512-iHwXDbmX86lfeH8VRcsaW2tJATsuAZo4kvvC/Yk2l35zOHjevja1qBvO6BAibiDazi9r9aS6ZRJOqWPsz1pP2w==", "dependencies": { "lodash-es": "^4.17.15", "tslib": "^2.3.0" }, "peerDependencies": { + "@angular/cdk": ">=14.0.0", "@angular/common": ">=14.0.0", "@angular/core": ">=14.0.0", - "chart.js": "^3.4.0", + "chart.js": "^3.4.0 || ^4.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -9627,16 +10103,16 @@ } }, "node_modules/node-gyp": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", - "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", "dev": true, "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", + "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -9647,7 +10123,7 @@ "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": "^12.13 || ^14.13 || >=16" } }, "node_modules/node-gyp-build": { @@ -9704,30 +10180,30 @@ } }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "dependencies": { - "abbrev": "1" + "abbrev": "^1.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, "dependencies": { "hosted-git-info": "^5.0.0", @@ -9736,7 +10212,7 @@ "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/normalize-path": { @@ -9800,15 +10276,15 @@ } }, "node_modules/npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" }, "bin": { "npm-packlist": "bin/index.js" @@ -9817,6 +10293,27 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm-pick-manifest": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", @@ -9833,9 +10330,9 @@ } }, "node_modules/npm-registry-fetch": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz", - "integrity": "sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, "dependencies": { "make-fetch-happen": "^10.0.6", @@ -9890,15 +10387,19 @@ } }, "node_modules/nx": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.3.tgz", - "integrity": "sha512-XPaoEAfJI9056qdwTvkutQSwwA3iihqNDwhvk3dmgpT35j8Uzm/y67goACaCUBCjP2dIQqXfNfJVWQIpcG3MTw==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.6.tgz", + "integrity": "sha512-QLU3sip/g3JdNO8n5Nw2esN+0G26Jsy3u1LlrB9Giu4zf/+KsfN8CcXMbEVqOnPR1FkCS52xliaq7IBQfvvMQA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@nrwl/cli": "14.4.3", - "@nrwl/tao": "14.4.3", + "@nrwl/cli": "14.8.6", + "@nrwl/tao": "14.8.6", "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "^3.0.0-rc.18", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.0.0", "chalk": "4.1.0", "chokidar": "^3.5.1", "cli-cursor": "3.1.0", @@ -9913,12 +10414,13 @@ "glob": "7.1.4", "ignore": "^5.0.4", "js-yaml": "4.1.0", - "jsonc-parser": "3.0.0", + "jsonc-parser": "3.2.0", "minimatch": "3.0.5", "npm-run-path": "^4.0.1", "open": "^8.4.0", "semver": "7.3.4", "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", "tar-stream": "~2.2.0", "tmp": "~0.2.1", "tsconfig-paths": "^3.9.0", @@ -10098,11 +10600,17 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/nx/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true + "node_modules/nx/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } }, "node_modules/nx/node_modules/lru-cache": { "version": "6.0.0", @@ -10223,38 +10731,29 @@ "node": ">=8" } }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "node_modules/nx/node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } + "node_modules/nx/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10298,7 +10797,7 @@ "node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "dependencies": { "mimic-fn": "^1.0.0" @@ -10565,9 +11064,9 @@ } }, "node_modules/pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, "dependencies": { "@npmcli/git": "^3.0.0", @@ -10774,7 +11273,7 @@ "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -10807,9 +11306,9 @@ } }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "dev": true, "funding": [ { @@ -10941,9 +11440,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -10956,7 +11455,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-custom-selectors": { @@ -11107,9 +11606,9 @@ } }, "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", @@ -11117,7 +11616,7 @@ "resolve": "^1.1.7" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.0.0" }, "peerDependencies": { "postcss": "^8.0.0" @@ -11258,9 +11757,9 @@ } }, "node_modules/postcss-nesting": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, "dependencies": { "@csstools/selector-specificity": "^2.0.0", @@ -11278,9 +11777,9 @@ } }, "node_modules/postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "dev": true, "funding": [ { @@ -11294,6 +11793,9 @@ ], "engines": { "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" } }, "node_modules/postcss-overflow-shorthand": { @@ -11344,57 +11846,59 @@ } }, "node_modules/postcss-preset-env": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", - "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", - "dev": true, - "dependencies": { - "@csstools/postcss-cascade-layers": "^1.0.4", - "@csstools/postcss-color-function": "^1.1.0", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.1", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.6", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.1.0", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", + "dev": true, + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.1", - "@csstools/postcss-unset-value": "^1.0.1", - "autoprefixer": "^10.4.7", - "browserslist": "^4.21.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.6.3", - "postcss-attribute-case-insensitive": "^5.0.1", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.3", + "postcss-color-functional-notation": "^4.2.4", "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.0", + "postcss-color-rebeccapurple": "^7.1.1", "postcss-custom-media": "^8.0.2", "postcss-custom-properties": "^12.1.8", "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", "postcss-env-function": "^4.0.6", "postcss-focus-visible": "^6.0.4", "postcss-focus-within": "^5.0.4", "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.3", - "postcss-image-set-function": "^4.0.6", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.0", + "postcss-lab-function": "^4.2.1", "postcss-logical": "^5.0.4", "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.9", + "postcss-nesting": "^10.1.10", "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", + "postcss-overflow-shorthand": "^3.0.4", "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.5", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.0", + "postcss-selector-not": "^6.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -11456,9 +11960,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -11551,6 +12055,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -11568,9 +12078,9 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -11654,15 +12164,15 @@ } }, "node_modules/read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", "dev": true, "dependencies": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "npm-normalize-package-bin": "^2.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" @@ -11681,6 +12191,15 @@ "node": ">=10" } }, + "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -11720,9 +12239,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -11738,9 +12257,9 @@ "dev": true }, "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -11765,32 +12284,32 @@ } }, "node_modules/regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", "dev": true, "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" } }, "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -11875,9 +12394,9 @@ } }, "node_modules/resolve-url-loader/node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -11900,7 +12419,7 @@ "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "dependencies": { "onetime": "^2.0.0", @@ -12035,10 +12554,24 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -12047,9 +12580,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -12163,9 +12696,9 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "dependencies": { "node-forge": "^1" @@ -12221,6 +12754,12 @@ "node": ">=10" } }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -12464,9 +13003,9 @@ } }, "node_modules/socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "dependencies": { "ip": "^2.0.0", @@ -12542,17 +13081,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -12576,6 +13104,7 @@ "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", "dev": true }, "node_modules/spdx-correct": { @@ -12605,9 +13134,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "node_modules/spdy": { @@ -12677,26 +13206,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -12722,7 +13231,7 @@ "node_modules/string-width/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -12747,7 +13256,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, "engines": { "node": ">=4" } @@ -12773,13 +13281,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/stylus": { - "version": "0.58.1", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", - "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", "dev": true, "dependencies": { - "css": "^3.0.0", + "@adobe/css-tools": "^4.0.1", "debug": "^4.3.2", "glob": "^7.1.6", "sax": "~1.2.4", @@ -12790,6 +13315,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" } }, "node_modules/stylus-loader": { @@ -12899,20 +13427,20 @@ } }, "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" } }, "node_modules/tar-stream": { @@ -12931,6 +13459,24 @@ "node": ">=6" } }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/terser": { "version": "5.14.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", @@ -12950,16 +13496,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "engines": { "node": ">= 10.13.0" @@ -13183,33 +13729,22 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", + "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=6" } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "node_modules/tslint": { "version": "6.1.3", @@ -13441,18 +13976,18 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "engines": { "node": ">=4" @@ -13495,9 +14030,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "funding": [ { @@ -13622,9 +14157,9 @@ } }, "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -13632,11 +14167,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -13649,7 +14184,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -13711,9 +14246,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -14035,9 +14570,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -14065,9 +14600,9 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/yaml": { @@ -14138,16 +14673,34 @@ "node": ">=6" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zone.js": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.7.tgz", - "integrity": "sha512-e39K2EdK5JfA3FDuUTVRvPlYV4aBfnOOcGuILhQAT7nzeV12uSrLBzImUM9CDVoncDSX4brR/gwqu0heQ3BQ0g==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "dependencies": { "tslib": "^2.3.0" } } }, "dependencies": { + "@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -14159,46 +14712,46 @@ } }, "@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", + "version": "0.1401.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.3.tgz", + "integrity": "sha512-DQvKfl8Q9c02jpGqZX1nOL4mAnRBU6BSqPlhi1q17ZrB8sQpYtDBb8Epn2DDq48l7SQVFnRg6Zgje9L1LObURg==", "dev": true, "requires": { - "@angular-devkit/core": "14.1.0", + "@angular-devkit/core": "14.1.3", "rxjs": "6.6.7" } }, "@angular-devkit/build-angular": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.0.tgz", - "integrity": "sha512-AtecSuDEPLYd3p7uFVKpoA0XNcq+NvVYFJK8h90BG+IRZtzEm7ZJeYdohXVeVfTO5GvpNFN1XoHxR5rxiXeBhg==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.10.tgz", + "integrity": "sha512-VCeZAyq4uPCJukKInaSiD4i/GgxgcU4jFlLFQtoYNmaBS4xbPOymL19forRIihiV0dwNEa2L694vRTAPMBxIfw==", "dev": true, "requires": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/build-webpack": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@babel/core": "7.18.6", - "@babel/generator": "7.18.7", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/build-webpack": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.6", - "@babel/preset-env": "7.18.6", - "@babel/runtime": "7.18.6", - "@babel/template": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.1.0", + "@ngtools/webpack": "14.2.10", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.9.1", - "cacache": "16.1.1", + "cacache": "16.1.2", "copy-webpack-plugin": "11.0.0", "critters": "0.0.16", "css-loader": "6.7.1", - "esbuild": "0.14.49", - "esbuild-wasm": "0.14.49", + "esbuild": "0.15.5", + "esbuild-wasm": "0.15.5", "glob": "8.0.3", "https-proxy-agent": "5.0.1", "inquirer": "8.2.4", @@ -14207,38 +14760,61 @@ "less": "4.1.3", "less-loader": "11.0.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", + "loader-utils": "3.2.1", "mini-css-extract-plugin": "2.6.1", "minimatch": "5.1.0", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", "piscina": "3.2.0", - "postcss": "8.4.14", - "postcss-import": "14.1.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", "postcss-loader": "7.0.1", - "postcss-preset-env": "7.7.2", + "postcss-preset-env": "7.8.0", "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.53.0", + "sass": "1.54.4", "sass-loader": "13.0.2", "semver": "7.3.7", "source-map-loader": "4.0.0", "source-map-support": "0.5.21", - "stylus": "0.58.1", + "stylus": "0.59.0", "stylus-loader": "7.0.0", "terser": "5.14.2", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.4.0", - "webpack": "5.73.0", + "webpack": "5.74.0", "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.9.3", + "webpack-dev-server": "4.11.0", "webpack-merge": "5.8.0", "webpack-subresource-integrity": "5.1.0" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -14336,9 +14912,9 @@ }, "dependencies": { "rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "requires": { "tslib": "^2.1.0" @@ -14352,6 +14928,12 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -14413,23 +14995,60 @@ "requires": { "has-flag": "^4.0.0" } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.0.tgz", - "integrity": "sha512-jKfnHal09mVnEapmNrAHXL/00LfafmfEUtlOPzQMgGJL7MWCeMcFthsbcOnGuzUerbiiquRk/KmLTERYjH+ZrQ==", + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.10.tgz", + "integrity": "sha512-h+2MaSY7QSvoJ3R+Hvin21jVCfPGOTLdASIUk4Jmq6J3y5BSku3KSSaV8dWoBOBkFCwQyPQMRjiHoHKLpC1K7g==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1401.0", + "@angular-devkit/architect": "0.1402.10", "rxjs": "6.6.7" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + } } }, "@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", + "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", "dev": true, "requires": { "ajv": "8.11.0", @@ -14437,19 +15056,48 @@ "jsonc-parser": "3.1.0", "rxjs": "6.6.7", "source-map": "0.7.4" + }, + "dependencies": { + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + } } }, "@angular-devkit/schematics": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.0.tgz", - "integrity": "sha512-5QC01k9eznuQSiqxijKhVkAEmA8sioYuLhBzyffaPszSySH8kPMNxhAc8zJhBTNLumbS6iDaGkSqTQl5Kv9fOw==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.10.tgz", + "integrity": "sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA==", "dev": true, "requires": { - "@angular-devkit/core": "14.1.0", + "@angular-devkit/core": "14.2.10", "jsonc-parser": "3.1.0", "magic-string": "0.26.2", "ora": "5.4.1", "rxjs": "6.6.7" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + } } }, "@angular-eslint/builder": { @@ -14541,32 +15189,32 @@ } }, "@angular/animations": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.1.0.tgz", - "integrity": "sha512-OhEXi1u/M4QyltDCxSqo7YzF7ELgNDWNqbbM7vtWIcrc4c+Yiu1GXhW/GQRosF3WAuQVfdQzEI0VTeNoo98Kvw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.12.tgz", + "integrity": "sha512-gwdnFZkvVUr+enUNfhfCGRGGqNHn1+vTA81apLfHYhJxgjiLUtETc4KTOrQevtDm022pEd+LSrvr8r+7ag+jkw==", "requires": { "tslib": "^2.3.0" } }, "@angular/cdk": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.1.0.tgz", - "integrity": "sha512-EOQZmlTgj5Tc6/s50kEQUYKWH0S748rzbymBYkvyJs864lP9A8khz83IINmm+PD2sMADKtBETD3aEa5yQRhVAA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", "requires": { "parse5": "^5.0.0", "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.0.tgz", - "integrity": "sha512-W/t2PkGHu9r87po1ZXQRYU81VtjzNMuGsP5tmoW1pGuibK7Kj+25G+jrXK/WADTi+pjTMXHNXYn8PlMNAIrZ/w==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.10.tgz", + "integrity": "sha512-gX9sAKOwq4lKdPWeABB7TzKDHdjQXvkUU8NmPJA6mEAVXvm3lhQtFvHDalZstwK8au2LY0LaXTcEtcKYOt3AXQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@angular-devkit/schematics": "14.1.0", - "@schematics/angular": "14.1.0", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", + "@schematics/angular": "14.2.10", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "debug": "4.3.4", @@ -14577,7 +15225,7 @@ "npm-pick-manifest": "7.0.1", "open": "8.4.0", "ora": "5.4.1", - "pacote": "13.6.1", + "pacote": "13.6.2", "resolve": "1.22.1", "semver": "7.3.7", "symbol-observable": "4.0.0", @@ -14585,6 +15233,29 @@ "yargs": "17.5.1" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -14679,6 +15350,17 @@ "strip-ansi": "^6.0.0", "through": "^2.3.6", "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + } } }, "is-fullwidth-code-point": { @@ -14687,6 +15369,12 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -14729,15 +15417,6 @@ "signal-exit": "^3.0.2" } }, - "rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -14761,25 +15440,25 @@ } }, "@angular/common": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.1.0.tgz", - "integrity": "sha512-leethDtLbA3qySaOEBUto602DF0qH1maK9u2zHncrUFOpnHAYUEd7N9MFMdIYASurTnwOSglEoIDCML94qzImQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.12.tgz", + "integrity": "sha512-oZunh9wfInFWhNO1P8uoEs/o4u8kerKMhw8GruywKm1TV7gHDP2Fi5WHGjFqq3XYptgBTPCTSEfyLX6Cwq1PUw==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.1.0.tgz", - "integrity": "sha512-aLbtpFDF3fp/DOEsWSdpszmoNZAb0To/zoKhHVmEReuUKkMtlPNd3+e6wkR2vrvR/cWgbKwdb7RQ1IQtGDu74A==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.12.tgz", + "integrity": "sha512-u2MH9+NRwbbFDRNiPWPexed9CnCq9+pGHLuyACSP2uR6Ik68cE6cayeZbIeoEV5vWpda/XsLmJgPJysw7dAZLQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.1.0.tgz", - "integrity": "sha512-llJkDnv0+riTdRPdOJv/FToz4X9ZO1URnalW+tIe2RyfOzkEqM+VLD/x+3cVgnsaFKuoPxIjZEkMoppGwVB4kg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.12.tgz", + "integrity": "sha512-9Gkb9KFkaQPz8XaS8ZwwTioRZ4ywykdAWyceICEi78/Y9ConYrTX2SbFogzI2dPUZU8a04tMlbqTSmHjVbJftQ==", "dev": true, "requires": { "@babel/core": "^7.17.2", @@ -14795,63 +15474,63 @@ } }, "@angular/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.1.0.tgz", - "integrity": "sha512-3quEsHmQifJOQ2oij5K+cjGjmhsKsyZI1+OTHWNZ6IXeuYviZv4U/Cui9fUJ1RN3CZxH3NzWB3gB/5qYFQfOgg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.12.tgz", + "integrity": "sha512-sGQxU5u4uawwvJa6jOTmGoisJiQ5HIN/RoBw99CmoqZIVyUSg9IRJJC1KVdH8gbpWBNLkElZv21lwJTL/msWyg==", "requires": { "tslib": "^2.3.0" } }, "@angular/flex-layout": { - "version": "14.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.40.tgz", - "integrity": "sha512-lYi2BKovNk5u2wmj/AMIMqfUzCBEt99Wu/Gfa+1mUIlw3voKCmIsV2XYBhX4adRdD+dRagY3Opger43JR7PXEw==", + "version": "14.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.41.tgz", + "integrity": "sha512-x1YcxqkdFlcbVXEy9ebCgW/F+7n/MXkEkwEcVEIPf5v5qn7HZsjQxgIj35Lf0amvMyF7h35prpoxO1uX5+ntFg==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.1.0.tgz", - "integrity": "sha512-y7VQ2t+/ASEjzt8zXg4y5b03lMSPHmnhy4XzjDT14ZFrALaSxyhkSqoBfAksPkTeKmsFMnP/VgLboRsE8TLs0Q==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.12.tgz", + "integrity": "sha512-7abYlGIT2JnAtutQUlH3fQS6QEpbfftgvsVcZJCyvX0rXL3u2w2vUQkDHJH4YJJp3AHFVCH4/l7R4VcaPnrwvA==", "requires": { "tslib": "^2.3.0" } }, "@angular/language-service": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.1.0.tgz", - "integrity": "sha512-ldL4xMDjXYZ93FCEIBVGipx9Qfgr7NuBNO+e25d+nWikXrUOnLfvF4UOL/TSUwSwqN4jxDI2KMNQIF6SecZfvQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.12.tgz", + "integrity": "sha512-YmW6simyEVmpDmbYVUhZ2IxSP6pmsWrV120rB9Y21/BeM39WIXA4NCNirVWlAd/KAKY9O7Sbn1nXI6rSDfhopQ==", "dev": true }, "@angular/material": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.1.0.tgz", - "integrity": "sha512-0UXfMqP5+Nzd6gbLplQpUX3E0rRRwhVEnAo8Z1hllGdJIY0meunMnTZCWsvYQ7SU/W+VbqnmtBmg5EOfYsjpiQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", + "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.0.tgz", - "integrity": "sha512-axNXUSqxsP0QSdNskd1pFo2uMo1UNoFaSAB02eDWwLkWQ1pWel+T78HiQY2bNeI3elgzjwPTT4vCCDQKNVTNig==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.12.tgz", + "integrity": "sha512-vOarWym8ucl1gjYWCzdwyBha+MTvL381mvTTUu8aUx6nVhHFjv4bvpjlZnZgojecqUPyxOwmPLLHvCZPJVHZYg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.1.0.tgz", - "integrity": "sha512-0Lxz3HJ9qTOyMTp5Qud2tycP7wqe+tnHOSUqDywrbNRozTKGX0z3i+l0KMku3BtUbuMi3tJomqV914/dtbCvIw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.12.tgz", + "integrity": "sha512-oZhNJeaBmgw8+KBSYpKz2RYqEDyETC+HJXH8dwIFcP6BqqwL2NE70FdSR7EnOa5c41MEtTmMCGhrJSFR60x5/w==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.1.0.tgz", - "integrity": "sha512-WBC1E+d9RS8vy57zJ6LVtWT3AM12mEHY7SCMBRJNBcrmBYJwojxeV8IVkUoW4Ds910gG/w3LjIN0eNHg5qRtNA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.12.tgz", + "integrity": "sha512-r5tVus5RJDNc4U2v0jMtjPiAS1xDsVsJ70lS313DgZmBDHIVZP1cWIehdxwgNlGwQQtAA36eG7toBwqUU3gb/A==", "requires": { "tslib": "^2.3.0" } @@ -14872,27 +15551,27 @@ } }, "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "dev": true }, "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -14909,12 +15588,12 @@ } }, "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", "dev": true, "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.10", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -14952,14 +15631,15 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "dependencies": { @@ -14972,34 +15652,34 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.2.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.17.7", @@ -15034,13 +15714,13 @@ } }, "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { @@ -15053,12 +15733,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.7" } }, "@babel/helper-module-imports": { @@ -15071,19 +15751,32 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } } }, "@babel/helper-optimise-call-expression": { @@ -15096,9 +15789,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -15114,34 +15807,48 @@ } }, "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } } }, "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" } }, "@babel/helper-split-export-declaration": { @@ -15153,10 +15860,16 @@ "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { @@ -15166,26 +15879,39 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" } }, "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } } }, "@babel/highlight": { @@ -15200,9 +15926,9 @@ } }, "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -15215,25 +15941,25 @@ } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, @@ -15248,13 +15974,13 @@ } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, @@ -15289,12 +16015,12 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, @@ -15319,16 +16045,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.7" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -15342,13 +16068,13 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, @@ -15363,14 +16089,14 @@ } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, @@ -15430,12 +16156,12 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-syntax-json-strings": { @@ -15520,12 +16246,12 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-async-to-generator": { @@ -15549,46 +16275,61 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-dotall-regex": { @@ -15659,39 +16400,36 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" } }, "@babel/plugin-transform-modules-umd": { @@ -15705,13 +16443,13 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-new-target": { @@ -15734,12 +16472,12 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-property-literals": { @@ -15752,13 +16490,13 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" } }, "@babel/plugin-transform-reserved-words": { @@ -15771,16 +16509,16 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", - "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "semver": "^6.3.0" }, "dependencies": { @@ -15802,13 +16540,13 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" } }, "@babel/plugin-transform-sticky-regex": { @@ -15839,12 +16577,12 @@ } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { @@ -15858,29 +16596,29 @@ } }, "@babel/preset-env": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.6", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-proposal-private-property-in-object": "^7.18.6", "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", @@ -15902,40 +16640,40 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, @@ -15962,50 +16700,50 @@ } }, "@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dev": true, "requires": { - "@babel/types": "^7.18.9", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -16024,19 +16762,20 @@ } }, "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, "@csstools/postcss-cascade-layers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", - "integrity": "sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.2", @@ -16091,6 +16830,15 @@ "postcss-selector-parser": "^6.0.10" } }, + "@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, "@csstools/postcss-normalize-display-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", @@ -16128,6 +16876,15 @@ "postcss-value-parser": "^4.2.0" } }, + "@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, "@csstools/postcss-trigonometric-functions": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", @@ -16157,16 +16914,23 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "dev": true, + "optional": true + }, "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.4.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -16203,9 +16967,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -16250,14 +17014,14 @@ "dev": true }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "dependencies": { "brace-expansion": { @@ -16281,6 +17045,12 @@ } } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -16358,13 +17128,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@leichtgewicht/ip-codec": { @@ -16374,9 +17144,9 @@ "dev": true }, "@ngtools/webpack": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", - "integrity": "sha512-d4U6ymDCXckVgfjYEv1Wjzd78ZSm0NKgq8mN6FdlrCupg02LPIODjeKyNr4c4zwMAOJeHkVNEZ+USoDEK3XSsw==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.10.tgz", + "integrity": "sha512-sLHapZLVub6mEz5b19tf1VfIV1w3tYfg7FNPLeni79aldxu1FbP1v2WmiFAnMzrswqyK0bhTtxrl+Z/CLKqyoQ==", "dev": true, "requires": {} }, @@ -16407,9 +17177,9 @@ } }, "@npmcli/fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.1.tgz", - "integrity": "sha512-1Q0uzx6c/NVNGszePbr5Gc2riSU1zLpNlo/1YWntH+eaPmMgBssAW0qXofCVkpdj3ce4swZtlDYQu+NKiYcptg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "requires": { "@gar/promisify": "^1.1.3", @@ -16417,9 +17187,9 @@ } }, "@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, "requires": { "@npmcli/promise-spawn": "^3.0.0", @@ -16431,6 +17201,14 @@ "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^2.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } } }, "@npmcli/installed-package-contents": { @@ -16444,9 +17222,9 @@ } }, "@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -16469,9 +17247,9 @@ } }, "@npmcli/run-script": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", - "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, "requires": { "@npmcli/node-gyp": "^2.0.0", @@ -16482,54 +17260,33 @@ } }, "@nrwl/cli": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.3.tgz", - "integrity": "sha512-9WzOOXgdf9YJxqte5e8KNkM3NWOuBgM7hz9jEOyw53Ht1Y2H8xLDPVkqDTS9kROgcyMQxHIjIcw80wZNaZL8Mw==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.6.tgz", + "integrity": "sha512-R4udxekMd4jhoRPEksJu+224DocOIrAqenFo0D2R36epE5FaCnZQX7xg+b3TjRbdS10e426i4D9LuXdQmP5jJg==", "dev": true, "requires": { - "nx": "14.4.3" + "nx": "14.8.6" } }, "@nrwl/devkit": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.4.3.tgz", - "integrity": "sha512-CFGWQyzrqs4q7YUk37E5Ca+HDj9qbhfw6oI/Omf42MitEpoEnWxVKy/h1pua6ykHn8ZDVvS7sp6nrmg+r6OmDA==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.6.tgz", + "integrity": "sha512-+3KqohOKeUuyS176jrwY0yeB3E2IFQ3jMkS0KizzsHGsZWdZbQ2WQ46hZ0/bvRh9Efl8CAg6n4fUWR0BXUePMA==", "dev": true, "requires": { + "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", "ignore": "^5.0.4", - "rxjs": "^6.5.4", - "semver": "7.3.4", "tslib": "^2.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@nrwl/tao": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.3.tgz", - "integrity": "sha512-sHlnqTlJ/XEc/lv0MIKYI1R643CWFvYL6QyZD7f38FvP1RblZ6eVqvOJcrkpwcvRWcZNEY+GrQpb1Io1ZvMEmQ==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.6.tgz", + "integrity": "sha512-CByqrsfSJeonOd7TLAHP8bRYNWgDksxA7j+yncSzgQnFLEbZdJGG/AqqIovx8g6g2v0JS+nRgGC+w5UPf04UrQ==", "dev": true, "requires": { - "nx": "14.4.3" + "nx": "14.8.6" } }, "@parcel/watcher": { @@ -16542,15 +17299,45 @@ "node-gyp-build": "^4.3.0" } }, + "@phenomnomnominal/tsquery": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", + "dev": true, + "requires": { + "esquery": "^1.0.1" + } + }, "@schematics/angular": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.0.tgz", - "integrity": "sha512-lhqNZzA+iT3XwlwRU757mhYmd5WE9XB2OKFhosvvszou2zuNUJMDPR9P01ZVNCOa2fScOeCMg2q3ZDgGTBl96Q==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.10.tgz", + "integrity": "sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ==", "dev": true, "requires": { - "@angular-devkit/core": "14.1.0", - "@angular-devkit/schematics": "14.1.0", + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", "jsonc-parser": "3.1.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + } } }, "@tootallnate/once": { @@ -16598,9 +17385,9 @@ } }, "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", "dev": true, "requires": { "@types/estree": "*", @@ -16624,21 +17411,21 @@ "dev": true }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", + "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.31", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", "dev": true, "requires": { "@types/node": "*", @@ -16668,9 +17455,9 @@ "dev": true }, "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "@types/node": { @@ -16703,6 +17490,12 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -16713,12 +17506,12 @@ } }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "requires": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -16732,110 +17525,115 @@ } }, "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", "dev": true, "requires": { "@types/node": "*" } }, "@typescript-eslint/eslint-plugin": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz", - "integrity": "sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/type-utils": "5.31.0", - "@typescript-eslint/utils": "5.31.0", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/type-utils": "5.48.0", + "@typescript-eslint/utils": "5.48.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", - "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" } } } }, "@typescript-eslint/parser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz", - "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", - "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0" + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0" } }, "@typescript-eslint/type-utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz", - "integrity": "sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.31.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/utils": "5.48.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", - "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" } } } }, "@typescript-eslint/types": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", - "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", - "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -16901,12 +17699,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", - "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/types": "5.48.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -17074,6 +17872,33 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, + "@yarnpkg/parsers": { + "version": "3.0.0-rc.34", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.34.tgz", + "integrity": "sha512-NhEA0BusInyk7EiJ7i7qF1Mkrb6gGjZcQQ/W1xxGazxapubEmGO7v5WSll6hWxFXE2ngtLj8lflq1Ff5VtqEww==", + "dev": true, + "requires": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + } + }, + "@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + } + } + }, "abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -17097,9 +17922,9 @@ } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true }, "acorn-import-assertions": { @@ -17127,9 +17952,9 @@ }, "dependencies": { "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -17233,9 +18058,9 @@ } }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -17256,9 +18081,9 @@ "dev": true }, "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "requires": { "delegates": "^1.0.0", @@ -17283,7 +18108,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true } } @@ -17319,26 +18144,37 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", "dev": true, "requires": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" } }, + "axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "axobject-query": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", @@ -17358,9 +18194,9 @@ }, "dependencies": { "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -17370,15 +18206,6 @@ } } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, "babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -17393,13 +18220,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "requires": { "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "dependencies": { @@ -17422,12 +18249,12 @@ } }, "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "@babel/helper-define-polyfill-provider": "^0.3.3" } }, "balanced-match": { @@ -17472,9 +18299,9 @@ } }, "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { "bytes": "3.1.2", @@ -17485,7 +18312,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -17521,9 +18348,9 @@ } }, "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", "dev": true, "requires": { "array-flatten": "^2.1.2", @@ -17557,15 +18384,15 @@ } }, "browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.9" } }, "buffer": { @@ -17607,9 +18434,9 @@ "dev": true }, "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", "dev": true, "requires": { "@npmcli/fs": "^2.1.0", @@ -17630,6 +18457,14 @@ "ssri": "^9.0.0", "tar": "^6.1.11", "unique-filename": "^1.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } } }, "call-bind": { @@ -17655,9 +18490,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001370", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", - "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", + "version": "1.0.30001441", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", "dev": true }, "chalk": { @@ -17678,9 +18513,9 @@ "dev": true }, "chart.js": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.2.tgz", - "integrity": "sha512-7rqSlHWMUKFyBDOJvmFGW2lxULtcwaPLegDjX/Nu5j6QybY+GCiQkEY+6cqHw62S5tcwXMD8Y+H5OBGoR7d+ZQ==" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" }, "chokidar": { "version": "3.5.3", @@ -17719,7 +18554,7 @@ "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "requires": { "restore-cursor": "^2.0.0" @@ -17900,6 +18735,15 @@ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -17950,6 +18794,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -17978,14 +18828,6 @@ "dev": true, "requires": { "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "content-type": { @@ -17995,13 +18837,10 @@ "dev": true }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "cookie": { "version": "0.5.0", @@ -18048,9 +18887,9 @@ } }, "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "requires": { "dir-glob": "^3.0.1", @@ -18081,21 +18920,12 @@ } }, "core-js-compat": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.0.tgz", - "integrity": "sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", + "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", "dev": true, "requires": { - "browserslist": "^4.21.2", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.4" } }, "core-util-is": { @@ -18105,9 +18935,9 @@ "dev": true }, "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -18199,25 +19029,6 @@ "which": "^2.0.1" } }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -18300,9 +19111,9 @@ } }, "cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", + "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", "dev": true }, "cssesc": { @@ -18327,12 +19138,6 @@ "ms": "2.1.2" } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -18349,9 +19154,9 @@ } }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -18363,15 +19168,11 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true }, "delegates": { "version": "1.0.0", @@ -18382,7 +19183,7 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "dependency-graph": { @@ -18498,6 +19299,12 @@ "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -18514,9 +19321,9 @@ } }, "electron-to-chromium": { - "version": "1.4.200", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.200.tgz", - "integrity": "sha512-nPyI7oHc8T64oSqRXrAt99gNMpk0SAgPHw/o+hkNKyb5+bcdnFtZcSO9FUJES5cVkVZvo8u4qiZ1gQILl8UXsA==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "emoji-regex": { @@ -18569,9 +19376,9 @@ } }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -18631,177 +19438,178 @@ "dev": true }, "esbuild": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", - "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", "dev": true, "optional": true, "requires": { - "esbuild-android-64": "0.14.49", - "esbuild-android-arm64": "0.14.49", - "esbuild-darwin-64": "0.14.49", - "esbuild-darwin-arm64": "0.14.49", - "esbuild-freebsd-64": "0.14.49", - "esbuild-freebsd-arm64": "0.14.49", - "esbuild-linux-32": "0.14.49", - "esbuild-linux-64": "0.14.49", - "esbuild-linux-arm": "0.14.49", - "esbuild-linux-arm64": "0.14.49", - "esbuild-linux-mips64le": "0.14.49", - "esbuild-linux-ppc64le": "0.14.49", - "esbuild-linux-riscv64": "0.14.49", - "esbuild-linux-s390x": "0.14.49", - "esbuild-netbsd-64": "0.14.49", - "esbuild-openbsd-64": "0.14.49", - "esbuild-sunos-64": "0.14.49", - "esbuild-windows-32": "0.14.49", - "esbuild-windows-64": "0.14.49", - "esbuild-windows-arm64": "0.14.49" + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" } }, "esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", "dev": true, "optional": true }, "esbuild-wasm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", - "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", "dev": true }, "esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", - "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", - "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", "dev": true, "optional": true }, @@ -18824,13 +19632,15 @@ "dev": true }, "eslint": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", - "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -18840,18 +19650,21 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -18862,8 +19675,7 @@ "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "ajv": { @@ -18950,6 +19762,16 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -18960,9 +19782,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -18989,6 +19811,15 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -18998,6 +19829,24 @@ "brace-expansion": "^1.1.7" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -19049,12 +19898,12 @@ "dev": true }, "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "requires": { - "acorn": "^8.7.1", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } @@ -19170,14 +20019,14 @@ } }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -19196,7 +20045,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -19234,12 +20083,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true } } }, @@ -19272,9 +20115,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -19304,9 +20147,9 @@ "peer": true }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -19324,7 +20167,7 @@ "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -19427,17 +20270,28 @@ } }, "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -19507,12 +20361,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "fuzzy": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", @@ -19567,9 +20415,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -19643,6 +20491,12 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -19664,15 +20518,6 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -19703,12 +20548,20 @@ "dev": true }, "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "requires": { "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } } }, "hpack.js": { @@ -19738,6 +20591,12 @@ "util-deprecate": "~1.0.1" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -19905,9 +20764,9 @@ "optional": true }, "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz", + "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==", "dev": true }, "import-fresh": { @@ -20116,9 +20975,9 @@ } }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -20139,7 +20998,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true }, "is-glob": { @@ -20169,6 +21028,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -20236,9 +21101,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -20381,6 +21246,12 @@ } } }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -20422,15 +21293,14 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, "jsonfile": { @@ -20563,10 +21433,9 @@ "dev": true }, "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" }, "locate-path": { "version": "5.0.0", @@ -20662,10 +21531,13 @@ } }, "lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", - "dev": true + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } }, "magic-string": { "version": "0.26.2", @@ -20700,9 +21572,9 @@ "dev": true }, "make-fetch-happen": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.0.tgz", - "integrity": "sha512-OnEfCLofQVJ5zgKwGk55GaqosqKjaR6khQlJY3dBAA+hM25Bc5CmX5rKUfVut+rYA3uidA7zb7AvcglU87rPRg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -20721,6 +21593,14 @@ "promise-retry": "^2.0.1", "socks-proxy-agent": "^7.0.0", "ssri": "^9.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } } }, "media-typer": { @@ -20730,9 +21610,9 @@ "dev": true }, "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", + "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", "dev": true, "requires": { "fs-monkey": "^1.0.3" @@ -20838,18 +21718,25 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "requires": { "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "minipass-collect": { @@ -20862,9 +21749,9 @@ } }, "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "requires": { "encoding": "^0.1.13", @@ -20918,6 +21805,14 @@ "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "mkdirp": { @@ -20950,7 +21845,7 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, "nanoid": { @@ -20965,10 +21860,16 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, "optional": true, "requires": { @@ -21012,9 +21913,9 @@ "dev": true }, "ng2-charts": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.0.0.tgz", - "integrity": "sha512-1COLMs1UH8XIurk9C3pBQW3zH4RM3ggPtaC5vGjEmRGZ2cK/j8DqpzN4xMqyk0KB4D2vw/ZejgXmxxZ4Ie58Rw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.1.1.tgz", + "integrity": "sha512-iHwXDbmX86lfeH8VRcsaW2tJATsuAZo4kvvC/Yk2l35zOHjevja1qBvO6BAibiDazi9r9aS6ZRJOqWPsz1pP2w==", "requires": { "lodash-es": "^4.17.15", "tslib": "^2.3.0" @@ -21044,16 +21945,16 @@ "dev": true }, "node-gyp": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", - "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", "dev": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", + "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -21103,24 +22004,24 @@ "dev": true }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "^1.0.0" } }, "normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, "requires": { "hosted-git-info": "^5.0.0", @@ -21178,15 +22079,32 @@ } }, "npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, "requires": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^2.0.0" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } } }, "npm-pick-manifest": { @@ -21202,9 +22120,9 @@ } }, "npm-registry-fetch": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz", - "integrity": "sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, "requires": { "make-fetch-happen": "^10.0.6", @@ -21247,14 +22165,18 @@ } }, "nx": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.3.tgz", - "integrity": "sha512-XPaoEAfJI9056qdwTvkutQSwwA3iihqNDwhvk3dmgpT35j8Uzm/y67goACaCUBCjP2dIQqXfNfJVWQIpcG3MTw==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.6.tgz", + "integrity": "sha512-QLU3sip/g3JdNO8n5Nw2esN+0G26Jsy3u1LlrB9Giu4zf/+KsfN8CcXMbEVqOnPR1FkCS52xliaq7IBQfvvMQA==", "dev": true, "requires": { - "@nrwl/cli": "14.4.3", - "@nrwl/tao": "14.4.3", + "@nrwl/cli": "14.8.6", + "@nrwl/tao": "14.8.6", "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "^3.0.0-rc.18", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.0.0", "chalk": "4.1.0", "chokidar": "^3.5.1", "cli-cursor": "3.1.0", @@ -21269,12 +22191,13 @@ "glob": "7.1.4", "ignore": "^5.0.4", "js-yaml": "4.1.0", - "jsonc-parser": "3.0.0", + "jsonc-parser": "3.2.0", "minimatch": "3.0.5", "npm-run-path": "^4.0.1", "open": "^8.4.0", "semver": "7.3.4", "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", "tar-stream": "~2.2.0", "tmp": "~0.2.1", "tsconfig-paths": "^3.9.0", @@ -21400,11 +22323,14 @@ "argparse": "^2.0.1" } }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } }, "lru-cache": { "version": "6.0.0", @@ -21488,6 +22414,24 @@ "requires": { "has-flag": "^4.0.0" } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -21497,24 +22441,6 @@ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -21548,7 +22474,7 @@ "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -21738,9 +22664,9 @@ "dev": true }, "pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, "requires": { "@npmcli/git": "^3.0.0", @@ -21914,7 +22840,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "piscina": { @@ -21939,9 +22865,9 @@ } }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -22004,9 +22930,9 @@ } }, "postcss-custom-properties": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -22091,9 +23017,9 @@ } }, "postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", "dev": true, "requires": { "postcss-value-parser": "^4.0.0", @@ -22180,9 +23106,9 @@ } }, "postcss-nesting": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -22190,10 +23116,11 @@ } }, "postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "dev": true, + "requires": {} }, "postcss-overflow-shorthand": { "version": "3.0.4", @@ -22221,57 +23148,59 @@ } }, "postcss-preset-env": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", - "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", - "dev": true, - "requires": { - "@csstools/postcss-cascade-layers": "^1.0.4", - "@csstools/postcss-color-function": "^1.1.0", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.1", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.6", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.1.0", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", + "dev": true, + "requires": { + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.1", - "@csstools/postcss-unset-value": "^1.0.1", - "autoprefixer": "^10.4.7", - "browserslist": "^4.21.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.6.3", - "postcss-attribute-case-insensitive": "^5.0.1", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.3", + "postcss-color-functional-notation": "^4.2.4", "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.0", + "postcss-color-rebeccapurple": "^7.1.1", "postcss-custom-media": "^8.0.2", "postcss-custom-properties": "^12.1.8", "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", "postcss-env-function": "^4.0.6", "postcss-focus-visible": "^6.0.4", "postcss-focus-within": "^5.0.4", "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.3", - "postcss-image-set-function": "^4.0.6", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.0", + "postcss-lab-function": "^4.2.1", "postcss-logical": "^5.0.4", "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.9", + "postcss-nesting": "^10.1.10", "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", + "postcss-overflow-shorthand": "^3.0.4", "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.5", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.0", + "postcss-selector-not": "^6.0.1", "postcss-value-parser": "^4.2.0" } }, @@ -22301,9 +23230,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -22374,6 +23303,12 @@ } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -22388,9 +23323,9 @@ "dev": true }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -22447,15 +23382,23 @@ } }, "read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", "dev": true, "requires": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } } }, "read-package-json-fast": { @@ -22501,9 +23444,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -22516,9 +23459,9 @@ "dev": true }, "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -22537,29 +23480,29 @@ "dev": true }, "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", "dev": true, "requires": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" } }, "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -22622,9 +23565,9 @@ }, "dependencies": { "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -22643,7 +23586,7 @@ "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "requires": { "onetime": "^2.0.0", @@ -22737,9 +23680,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "safer-buffer": { @@ -22749,9 +23692,9 @@ "dev": true }, "sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -22820,9 +23763,9 @@ "dev": true }, "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" @@ -22845,6 +23788,12 @@ "requires": { "yallist": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -23079,9 +24028,9 @@ } }, "socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "requires": { "ip": "^2.0.0", @@ -23133,16 +24082,6 @@ } } }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -23194,9 +24133,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "spdy": { @@ -23255,14 +24194,6 @@ "dev": true, "requires": { "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "string-width": { @@ -23284,7 +24215,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -23304,8 +24235,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" }, "strip-final-newline": { "version": "2.0.0", @@ -23319,13 +24249,24 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + } + }, "stylus": { - "version": "0.58.1", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", - "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", "dev": true, "requires": { - "css": "^3.0.0", + "@adobe/css-tools": "^4.0.1", "debug": "^4.3.2", "glob": "^7.1.6", "sax": "~1.2.4", @@ -23406,17 +24347,34 @@ "dev": true }, "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "tar-stream": { @@ -23445,16 +24403,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "dependencies": { "ajv": { @@ -23609,32 +24567,19 @@ } }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", + "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "tslint": { "version": "6.1.3", @@ -23808,15 +24753,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "unique-filename": { @@ -23850,9 +24795,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -23946,9 +24891,9 @@ } }, "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -23956,11 +24901,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -23973,7 +24918,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { @@ -24043,9 +24988,9 @@ } }, "webpack-dev-server": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -24237,9 +25182,9 @@ "dev": true }, "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "requires": {} }, @@ -24250,9 +25195,9 @@ "dev": true }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yaml": { @@ -24307,10 +25252,16 @@ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zone.js": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.7.tgz", - "integrity": "sha512-e39K2EdK5JfA3FDuUTVRvPlYV4aBfnOOcGuILhQAT7nzeV12uSrLBzImUM9CDVoncDSX4brR/gwqu0heQ3BQ0g==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "requires": { "tslib": "^2.3.0" } diff --git a/common/utils/websrv/frontend/package.json b/common/utils/websrv/frontend/package.json index b93872c2c6a..7285043f4c1 100644 --- a/common/utils/websrv/frontend/package.json +++ b/common/utils/websrv/frontend/package.json @@ -22,11 +22,14 @@ "@angular/platform-browser-dynamic": "^14.1.0", "@angular/router": "^14.1.0", "chart.js": "^3.8.2", + "loader-utils": "^3.2.1", "moment": "^2.29.3", "ng2-charts": "^4.0.0", "rxjs": "^6.6.6", "tslib": "^2.0.0", - "zone.js": "^0.11.4" + "zone.js": "^0.11.4", + "json5": "^2.2.2", + "tsconfig-paths": "^4.0.0" }, "devDependencies": { "@angular-devkit/architect": "^0.1401.0", diff --git a/common/utils/websrv/frontend/src/app/api/commands.api.ts b/common/utils/websrv/frontend/src/app/api/commands.api.ts index 7ebb20dd9c9..64d08abe80b 100644 --- a/common/utils/websrv/frontend/src/app/api/commands.api.ts +++ b/common/utils/websrv/frontend/src/app/api/commands.api.ts @@ -1,13 +1,39 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/api/commands.api.ts + * \brief: implementation of web interface frontend for oai + * \api's definitions for the commands module, which provides web interface to telnet server commands + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpClient} from "@angular/common/http"; import {Injectable} from "@angular/core"; import {environment} from "src/environments/environment"; -export interface IInfo { - name: string; - value: string; - type: IArgType; - modifiable: boolean; // set command ? -} - +import {route, IArgType, IInfo} from "src/commondefs"; export interface IModule { name: string; } @@ -28,17 +54,6 @@ export enum ILogOutput { file = "/tmp/<component>.log", } -export enum IArgType { - boolean = "boolean", - list = "list", - loglvl = "loglvl", - range = "range", - number = "number", - string = "string", - configfile = "configfile", - simuTypes = "simuTypes", -} - export enum ICommandOptions { update = "update", // result can be updated, triggers update button on result page when set help = "help" // help tooltip available on command buttons @@ -54,8 +69,8 @@ export interface IVariable { export interface ICommand { name: string; confirm?: string; - question?: IQuestion; - param?: IVariable; + question?: IQuestion[]; + param?: IVariable[]; options?: ICommandOptions[]; } export interface ITable { @@ -86,7 +101,6 @@ export interface IRow { param?: IVariable // to transmit the initial command parameter, ex: the channel model index when modify a channel model } -export const route = "oaisoftmodem/"; @Injectable({ providedIn : "root", @@ -96,10 +110,6 @@ export class CommandsApi { { } - public readInfos$ = () => this.httpClient.get<IInfo[]>(environment.backend + route + "variables/"); - - public setInfo$ = (info: IInfo) => this.httpClient.post<IResp>(environment.backend + route + "variables/", info); - public readModules$ = () => this.httpClient.get<IModule[]>(environment.backend + route + "commands/"); public readVariables$ = (moduleName: string) => this.httpClient.get<IInfo[]>(environment.backend + route + moduleName + "/variables/"); diff --git a/common/utils/websrv/frontend/src/app/api/help.api.ts b/common/utils/websrv/frontend/src/app/api/help.api.ts index 78b44785326..165ff9efdc5 100644 --- a/common/utils/websrv/frontend/src/app/api/help.api.ts +++ b/common/utils/websrv/frontend/src/app/api/help.api.ts @@ -1,8 +1,41 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/api/help.api.ts + * \brief: implementation of web interface frontend for oai + * \api's definitions for the help module, which can be used to provides help text via tooltips + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpClient} from "@angular/common/http"; import {Injectable} from "@angular/core"; import {Observable} from "rxjs"; import {map} from "rxjs/operators"; import {environment} from "src/environments/environment"; +import {route} from "src/commondefs"; export interface HelpRequest { module: string; @@ -13,7 +46,7 @@ export interface HelpRequest { export interface HelpResp { text: string; } -const hlproute = "oaisoftmodem/helpfiles/"; +const hlproute = route + "/helpfiles/"; @Injectable({ providedIn : "root", @@ -28,9 +61,10 @@ export class HelpApi { public getHelpText(module: string, command: string, object: string): Observable<string> { + return this.getHelp$({module : module, command : command.replace(" ", "_"), object : object.replace(" ", "_")}) .pipe(map( - (response => { return (response.status == 201) ? response.body!.text : ""; }), + (response => { return (response.status == 201) ? response.body!.text.replace(/<!--(?:.|\n)*?-->/gm, '') : ""; }), )); // pipe } } diff --git a/common/utils/websrv/frontend/src/app/api/info.api.ts b/common/utils/websrv/frontend/src/app/api/info.api.ts new file mode 100644 index 00000000000..3b01ae8a541 --- /dev/null +++ b/common/utils/websrv/frontend/src/app/api/info.api.ts @@ -0,0 +1,47 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/api/info.api.ts + * \brief: implementation of web interface frontend for oai + * \api's definitions for the info module, which provides global info about the connected oai modem + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +import {HttpClient} from "@angular/common/http"; +import {Injectable} from "@angular/core"; +import {environment} from "src/environments/environment"; +import {route, IInfo} from "src/commondefs"; + +@Injectable({ + providedIn : "root", +}) +export class InfoApi { + constructor(private httpClient: HttpClient) + { + } + + public readInfos$ = () => this.httpClient.get<IInfo[]>(environment.backend + route + "info/"); +} diff --git a/common/utils/websrv/frontend/src/app/api/scope.api.ts b/common/utils/websrv/frontend/src/app/api/scope.api.ts index 856c7f0e6b9..b019804dea9 100644 --- a/common/utils/websrv/frontend/src/app/api/scope.api.ts +++ b/common/utils/websrv/frontend/src/app/api/scope.api.ts @@ -1,6 +1,39 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/scope/scope.api.ts + * \brief: implementation of web interface frontend for oai + * \api's definitions for the scope module, which provides a web interface to the oai soft scope + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpClient} from "@angular/common/http"; import {Injectable} from "@angular/core"; import {environment} from "src/environments/environment"; +import {route} from "src/commondefs"; export enum IScopeGraphType { IQs = "IQs", @@ -33,7 +66,7 @@ export interface ISigDesc { antenna_id: number; } -const route = "oaisoftmodem/scopectrl/"; +const scoperoute = route + "/scopectrl/"; @Injectable({ providedIn : "root", @@ -43,7 +76,7 @@ export class ScopeApi { { } - public getScopeInfos$ = () => this.httpClient.get<IScopeDesc>(environment.backend + route); + public getScopeInfos$ = () => this.httpClient.get<IScopeDesc>(environment.backend + scoperoute); - public setScopeParams$ = (cmd: IScopeCmd) => this.httpClient.post(environment.backend + route, cmd, {observe : "response"}); + public setScopeParams$ = (cmd: IScopeCmd) => this.httpClient.post(environment.backend + scoperoute, cmd, {observe : "response"}); } diff --git a/common/utils/websrv/frontend/src/app/app-routing.module.ts b/common/utils/websrv/frontend/src/app/app-routing.module.ts index 14396aaf2d7..f47c12a5dcf 100644 --- a/common/utils/websrv/frontend/src/app/app-routing.module.ts +++ b/common/utils/websrv/frontend/src/app/app-routing.module.ts @@ -1,3 +1,34 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/app-routing-module.ts + * \brief: implementation of web interface frontend for oai + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {NgModule} from "@angular/core"; import {RouterModule, Routes} from "@angular/router"; diff --git a/common/utils/websrv/frontend/src/app/app.component.html b/common/utils/websrv/frontend/src/app/app.component.html index 0e7d64ae5e0..f95891c809a 100644 --- a/common/utils/websrv/frontend/src/app/app.component.html +++ b/common/utils/websrv/frontend/src/app/app.component.html @@ -1,8 +1,45 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/app.component.html + * \brief: implementation of web interface frontend for oai + * \this is the frontend initial web page source code + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +--> <mat-tab-group backgroundColor="primary" color="accent"> + <mat-tab label="Info"> + <app-info></app-info> + </mat-tab> <mat-tab label="Commands"> <app-commands></app-commands> </mat-tab> <mat-tab label={{scopelabel}} disabled={{!isscopeavailable}}> <app-scope (ScopeEnabled)="onScopeEnabled($event)"></app-scope> </mat-tab> -</mat-tab-group> \ No newline at end of file +</mat-tab-group> diff --git a/common/utils/websrv/frontend/src/app/app.module.ts b/common/utils/websrv/frontend/src/app/app.module.ts index d750c191c71..b4ca9fab681 100644 --- a/common/utils/websrv/frontend/src/app/app.module.ts +++ b/common/utils/websrv/frontend/src/app/app.module.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/app.module.ts + * \brief: implementation of web interface frontend for oai + * \all components, (externals or devlopped for oai) used by the application are imported from here + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {DragDropModule} from "@angular/cdk/drag-drop"; import {HttpClientModule} from "@angular/common/http"; import {NgModule} from "@angular/core"; @@ -25,19 +57,20 @@ import {BrowserAnimationsModule} from "@angular/platform-browser/animations"; import {NgChartsModule} from "ng2-charts"; import {CommandsApi} from "./api/commands.api"; import {ScopeApi} from "./api/scope.api"; +import {InfoApi} from "./api/info.api"; import {AppRoutingModule} from "./app-routing.module"; import {AppComponent} from "./app.component"; +import {InfoComponent} from "./components/info/info.component"; import {CommandsComponent} from "./components/commands/commands.component"; import {ConfirmDialogComponent} from "./components/confirm/confirm.component"; import {DialogComponent} from "./components/dialog/dialog.component"; import {QuestionDialogComponent} from "./components/question/question.component"; import {ScopeComponent} from "./components/scope/scope.component"; import {InterceptorProviders} from "./interceptors/interceptors"; -import {LoadingService} from "./services/loading.service"; import {WebSocketService} from "./services/websocket.service"; @NgModule({ - declarations : [ AppComponent, CommandsComponent, ConfirmDialogComponent, QuestionDialogComponent, DialogComponent, ScopeComponent ], + declarations : [ AppComponent, CommandsComponent, InfoComponent, ConfirmDialogComponent, QuestionDialogComponent, DialogComponent, ScopeComponent ], imports : [ BrowserModule, AppRoutingModule, FormsModule, ReactiveFormsModule, BrowserAnimationsModule, HttpClientModule, MatButtonModule, FlexLayoutModule, MatDialogModule, DragDropModule, MatSliderModule, MatFormFieldModule, MatInputModule, MatChipsModule, MatProgressSpinnerModule, MatToolbarModule, MatTableModule, MatListModule, MatSelectModule, MatSnackBarModule, @@ -45,10 +78,10 @@ import {WebSocketService} from "./services/websocket.service"; ], providers : [ // services - LoadingService, WebSocketService, // api CommandsApi, + InfoApi, ScopeApi, // interceptors InterceptorProviders, diff --git a/common/utils/websrv/frontend/src/app/components/commands/commands.component.html b/common/utils/websrv/frontend/src/app/components/commands/commands.component.html index cef8fbc4f55..e4aa2f3a130 100644 --- a/common/utils/websrv/frontend/src/app/components/commands/commands.component.html +++ b/common/utils/websrv/frontend/src/app/components/commands/commands.component.html @@ -1,28 +1,40 @@ -<div class="grid-container" > - <mat-grid-list cols="2" rowHeight="15vh" > - <mat-grid-tile [colspan]="1" [rowspan]="2" > - <mat-card class="dashboard-card"> - <mat-card-header > - <mat-card-title>Connection info</mat-card-title> - </mat-card-header> - <mat-card-content class="dashboard-card-content"> - <div *ngIf="infos$ | async as infos"> - <div class="spaceddiv" *ngFor="let info of infos"> - <mat-form-field class="scrollablefield" > - <mat-label>{{ info.nameFC.value }}</mat-label> - <input matInput [formControl]="info.valueFC" [readonly]="!info.modifiableFC.value" /> - </mat-form-field> - <button mat-raised-button color="primary" [disabled]="!info.modifiableFC.value" - (click)="onInfoSubmit(info)"> - {{ info.btnTxtFC }} - </button> - </div> - </div> - </mat-card-content> - </mat-card> - </mat-grid-tile> +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ - <mat-grid-tile [colspan]="1" [rowspan]="2"> +/*! \file common/utils/websrv/frontend/src/app/components/commands/commands.component.html + * \brief: implementation of web interface frontend for oai + * \commands web interface implementation (works with commands.component.ts) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +--> +<div class="grid-container" > + <mat-grid-list cols="2" rowHeight="12vh" > + <mat-grid-tile [colspan]="2" [rowspan]="2"> <mat-card class="dashboard-card"> <mat-card-header> <mat-card-title>Softmodem commands</mat-card-title> @@ -49,7 +61,7 @@ </mat-card> </mat-grid-tile> - <mat-grid-tile *ngIf="vars$ | async as vars" [colspan]="1" [rowspan]="4"> + <mat-grid-tile *ngIf="vars$ | async as vars" [colspan]="1" [rowspan]="8"> <mat-card *ngIf="vars.length" class="dashboard-card"> <mat-card-header> <mat-card-title>{{ selectedModule!.name }} variables</mat-card-title> @@ -69,10 +81,10 @@ </mat-card> </mat-grid-tile> - <mat-grid-tile *ngIf="(rows$ | async)?.length" [colspan]="1" [rowspan]="4"> + <mat-grid-tile *ngIf="(rows$ | async)?.length" [colspan]="1" [rowspan]="8"> <mat-card class="dashboard-card"> <mat-card-header> - <mat-card-title>{{ selectedModule!.name }} {{ selectedCmd!.name }} {{ selectedCmd!.param?.value}}</mat-card-title> + <mat-card-title>{{ selectedModule!.name }} {{ selectedCmd!.name }} {{ title_ptext }}</mat-card-title> </mat-card-header> <mat-card-content class="dashboard-card-content"> <div > diff --git a/common/utils/websrv/frontend/src/app/components/commands/commands.component.ts b/common/utils/websrv/frontend/src/app/components/commands/commands.component.ts index 843b78973ae..b11e6f446c0 100644 --- a/common/utils/websrv/frontend/src/app/components/commands/commands.component.ts +++ b/common/utils/websrv/frontend/src/app/components/commands/commands.component.ts @@ -1,12 +1,44 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/commands/commands.component.ts + * \brief: implementation of web interface frontend for oai + * \commands web interface implementation (works with commands.component.html) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {Component} from "@angular/core"; +import {route, IArgType, IInfo} from "src/commondefs"; import {ViewEncapsulation} from "@angular/core"; import {UntypedFormArray} from "@angular/forms"; import {BehaviorSubject, forkJoin, Observable, of, timer} from "rxjs"; import {filter, map, switchMap, tap} from "rxjs/operators"; -import {CommandsApi, IArgType, IColumn, ICommand, ICommandOptions, IInfo, ILogLvl, IParam, IRow} from "src/app/api/commands.api"; +import {CommandsApi, IColumn, ICommand, ICommandOptions, ILogLvl, IParam, IRow} from "src/app/api/commands.api"; import {HelpApi, HelpRequest, HelpResp} from "src/app/api/help.api"; import {CmdCtrl} from "src/app/controls/cmd.control"; -import {InfoCtrl} from "src/app/controls/info.control"; import {ModuleCtrl} from "src/app/controls/module.control"; import {RowCtrl} from "src/app/controls/row.control"; import {VarCtrl} from "src/app/controls/var.control"; @@ -29,7 +61,7 @@ const PREDEF_CMD = "show predef" logLvlValues = Object.values(ILogLvl); // softmodem - infos$: Observable<VarCtrl[]>; + modules$: Observable<ModuleCtrl[]>; // module @@ -42,7 +74,8 @@ const PREDEF_CMD = "show predef" displayedColumns: string[] = []; rows$: BehaviorSubject<RowCtrl[]> = new BehaviorSubject<RowCtrl[]>([]); columns: IColumn[] = []; - + title_ptext: string =""; //used for possibly add a riminder of command parameters in the result page + constructor( public commandsApi: CommandsApi, public helpApi: HelpApi, @@ -52,8 +85,6 @@ const PREDEF_CMD = "show predef" ) { - this.infos$ = this.commandsApi.readInfos$().pipe(map((infos) => infos.map(info => new InfoCtrl(info)))); - this.modules$ = this.commandsApi.readModules$().pipe( map(imodules => imodules.map(imodule => new ModuleCtrl(imodule))), filter(controls => controls.length > 0), tap(controls => this.onModuleSelect(controls[0]))); } @@ -71,22 +102,13 @@ const PREDEF_CMD = "show predef" // ); // } - onInfoSubmit(control: InfoCtrl) - { - let info: IInfo = control.api(); - - if (info.type === IArgType.configfile) { - this.downloadService.getFile(info.value) - } else { - this.commandsApi.setInfo$(info).subscribe(); - } - } onModuleSelect(module: ModuleCtrl) { this.selectedModule = module this.selectedCmd = undefined - + this.title_ptext=""; + this.cmds$ = this.commandsApi.readCommands$(module.name).pipe( map(icmds => icmds.map(icmd => new CmdCtrl(icmd))), map(cmds => { @@ -134,8 +156,14 @@ const PREDEF_CMD = "show predef" private execCmd$(control: CmdCtrl) { let cmd = control!.api(); - if (this.selectedCmd!.param) - this.selectedCmd!.param!.value = cmd.param!.value; + if (this.selectedCmd!.param) { + this.selectedCmd!.param![0].value = cmd.param![0].value; + this.title_ptext = cmd.param![0].value; + if( this.selectedCmd!.param!.length > 1) { + this.selectedCmd!.param![1].value = cmd.param![1].value; + this.title_ptext = this.title_ptext + " " + cmd.param![1].value; + } + } this.commandsApi.runCommand$(cmd, this.selectedModule!.name) .subscribe( resp => { @@ -153,14 +181,7 @@ const PREDEF_CMD = "show predef" // possibly load help.. for (let i = 0; i < this.columns.length; i = i + 1) { if (this.columns[i].help) { - this.helpApi.getHelp$({module : this.selectedModule!.name, command : control!.api().name.replace(" ", "_"), object : this.columns[i].name.replace(" ", "_")}) - .subscribe( - response => { - if (response.status == 201) - this.hlp_cc[i] = response.body!.text; - }, - err => { this.hlp_cc[i] = ""; }, - ); + this.helpApi.getHelpText(this.selectedModule!.name,control!.api().name,this.columns[i].name).subscribe(resp => { this.hlp_cc[i] = resp; }, err => { this.hlp_cc[i] = ""; }); } else { this.hlp_cc[i] = ""; } @@ -201,7 +222,7 @@ const PREDEF_CMD = "show predef" onParamSubmit(control: RowCtrl) { if (this.selectedCmd!.param) - control.set_cmdparam(this.selectedCmd!.param); + control.set_cmdparam(this.selectedCmd!.param[0]); this.commandsApi.setCmdParams$(control.api(), this.selectedModule!.name).subscribe(() => this.execCmd$(new CmdCtrl(this.selectedCmd!))); } } diff --git a/common/utils/websrv/frontend/src/app/components/info/info.component.html b/common/utils/websrv/frontend/src/app/components/info/info.component.html new file mode 100644 index 00000000000..f1d6a041f14 --- /dev/null +++ b/common/utils/websrv/frontend/src/app/components/info/info.component.html @@ -0,0 +1,58 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/info/info.component.html + * \brief: implementation of web interface frontend for oai + * \info component web interface implementation (works with info.component.ts) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +--> +<div class="grid-container" > + <mat-grid-list cols="1" rowHeight="15vh" > + <mat-grid-tile [colspan]="1" [rowspan]="6" > + <mat-card class="dashboard-card"> + <mat-card-header > + <mat-card-title>Connection info</mat-card-title> + </mat-card-header> + <mat-card-content class="dashboard-card-content"> + <div *ngIf="infos$ | async as infos"> + <div class="infodiv" *ngFor="let info of infos"> + <mat-form-field class="scrollablefield" > + <mat-label>{{ info.nameFC.value }}</mat-label> + <input matInput [formControl]="info.valueFC" [readonly]="!info.modifiableFC.value" /> + </mat-form-field> + <button mat-raised-button color="primary" (click)="onInfoSubmit(info)" *ngIf="info.modifiableFC.value" > + {{ info.btnTxtFC }} + </button> + </div> + </div> + </mat-card-content> + </mat-card> + </mat-grid-tile> + </mat-grid-list> +</div> diff --git a/common/utils/websrv/frontend/src/app/components/info/info.component.scss b/common/utils/websrv/frontend/src/app/components/info/info.component.scss new file mode 100644 index 00000000000..5c511449ef4 --- /dev/null +++ b/common/utils/websrv/frontend/src/app/components/info/info.component.scss @@ -0,0 +1,15 @@ +.infodiv { + height: 45px; + width: 80vw; + display: flex; + justify-content: space-between; + margin: 0 auto; + padding: 10px 0; +} + + +.mat-card { + height: 95%; + overflow-y: auto; + overflow-x: scroll; +} diff --git a/common/utils/websrv/frontend/src/app/components/info/info.component.ts b/common/utils/websrv/frontend/src/app/components/info/info.component.ts new file mode 100644 index 00000000000..bf607b76db5 --- /dev/null +++ b/common/utils/websrv/frontend/src/app/components/info/info.component.ts @@ -0,0 +1,76 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/info/info.component.ts + * \brief: implementation of web interface frontend for oai + * \info component web interface implementation (works with info.component.html) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +import {Component} from "@angular/core"; +import {IArgType, IInfo} from "src/commondefs"; +import {ViewEncapsulation} from "@angular/core"; +import {UntypedFormArray} from "@angular/forms"; +import {Observable} from "rxjs"; +import {filter, map, switchMap, tap} from "rxjs/operators"; +import {InfoApi} from "src/app/api/info.api"; +import {InfoCtrl} from "src/app/controls/info.control"; +import {ModuleCtrl} from "src/app/controls/module.control"; +import {VarCtrl} from "src/app/controls/var.control"; +import {DialogService} from "src/app/services/dialog.service"; +import {DownloadService} from "src/app/services/download.service"; + + @Component({ + selector : "app-info", + templateUrl : "./info.component.html", + styleUrls : [ "./info.component.scss" ], + encapsulation : ViewEncapsulation.None, + }) export class InfoComponent { + + infos$: Observable<VarCtrl[]>; + + + + constructor( + public infoApi: InfoApi, + public downloadService: DownloadService, + + ) + { + this.infos$ = this.infoApi.readInfos$().pipe(map((infos) => infos.map(info => new InfoCtrl(info)))); + } + + + onInfoSubmit(control: InfoCtrl) + { + let info: IInfo = control.api(); + + if (info.type === IArgType.configfile) { + this.downloadService.getFile(info.value) + } + } + +} diff --git a/common/utils/websrv/frontend/src/app/components/question/question.component.html b/common/utils/websrv/frontend/src/app/components/question/question.component.html index 8b8a5e73212..d01bfc1b69e 100644 --- a/common/utils/websrv/frontend/src/app/components/question/question.component.html +++ b/common/utils/websrv/frontend/src/app/components/question/question.component.html @@ -1,11 +1,56 @@ -<h3>{{ data.title }}</h3> +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/question/question.component.html + * \brief: implementation of web interface frontend for oai + * \utility component used to allow entering parameters before sending a request to the backend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +--> +<h3>{{ data.control.cmdname }} command parameters</h3> <div mat-dialog-content > - <mat-form-field appearance="fill"> - <label for="answer">{{data.control.question?.display}}</label> + <div> + <mat-form-field> + <label for="answer">{{data.control.question![0].display}}</label> <input id="answer" type="text" style="width:10vw" [formControl]="data.control.answerFC"> </mat-form-field> + </div> + <div *ngIf="data.control.question!.length > 1" > + <mat-form-field> + <label for="answerb">{{data.control.question![1].display}}</label> + <input id="answerb" type="text" style="width:10vw" [formControl]="data.control.answerbFC"> + </mat-form-field> + </div> </div> <div fxLayoutGap=" 10px" mat-dialog-actions fxLayout="row" fxLayoutAlign="center start"> - <button mat-button [mat-dialog-close]="true" cdkFocusInitial>Ok</button> + <font size="-1" color="#888888"><div [innerHTML]="hlp_question"></div></font> +</div> +<div fxLayoutGap=" 20px" mat-dialog-actions fxLayout="row" fxLayoutAlign="center start"> + <button mat-button [mat-dialog-close]="true" cdkFocusInitial >Ok</button> <button mat-button [mat-dialog-close]="false">Cancel</button> </div> diff --git a/common/utils/websrv/frontend/src/app/components/question/question.component.ts b/common/utils/websrv/frontend/src/app/components/question/question.component.ts index f98fc430cc1..7d50cc295a3 100644 --- a/common/utils/websrv/frontend/src/app/components/question/question.component.ts +++ b/common/utils/websrv/frontend/src/app/components/question/question.component.ts @@ -1,20 +1,57 @@ /* eslint-disable @typescript-eslint/naming-convention */ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/question/question.component.ts + * \brief: implementation of web interface frontend for oai + * \utility component used to allow entering parameters before sending a request to the backend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {Component, Inject} from "@angular/core"; import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; import {CmdCtrl} from "src/app/controls/cmd.control"; - +import {HelpApi, HelpRequest, HelpResp} from "src/app/api/help.api"; export interface QuestionDialogData { title: string; control: CmdCtrl; } @Component({selector : "app-question", templateUrl : "./question.component.html", styleUrls : [ "./question.component.css" ]}) export class QuestionDialogComponent { + hlp_question: string = ""; constructor( public dialogRef: MatDialogRef<QuestionDialogComponent>, + public helpApi: HelpApi, @Inject(MAT_DIALOG_DATA) public data: QuestionDialogData, ) { + this.helpApi.getHelpText("question", data.control.cmdname, "input").subscribe( response => { this.hlp_question = response;}) } + + onNoClick() { this.dialogRef.close(); diff --git a/common/utils/websrv/frontend/src/app/components/scope/scope.component.html b/common/utils/websrv/frontend/src/app/components/scope/scope.component.html index 5b0f2161400..2cfcdc770cc 100644 --- a/common/utils/websrv/frontend/src/app/components/scope/scope.component.html +++ b/common/utils/websrv/frontend/src/app/components/scope/scope.component.html @@ -1,3 +1,37 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/scope/scope.component.html + * \brief: implementation of web interface frontend for oai + * \scope component web interface implementation (works with scope.component.ts) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +--> <div class="grid-container"> <mat-grid-list cols="11" rowHeight="100px"> diff --git a/common/utils/websrv/frontend/src/app/components/scope/scope.component.ts b/common/utils/websrv/frontend/src/app/components/scope/scope.component.ts index 3e9d1c4e7ce..331e897bcd2 100644 --- a/common/utils/websrv/frontend/src/app/components/scope/scope.component.ts +++ b/common/utils/websrv/frontend/src/app/components/scope/scope.component.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/scope/scope.component.ts + * \brief: implementation of web interface frontend for oai + * \scope component web interface implementation (works with scope.component.html) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {Component, EventEmitter, OnDestroy, OnInit, Output, QueryList, ViewChildren} from "@angular/core"; import {Chart, ChartConfiguration} from "chart.js"; import {BaseChartDirective} from "ng2-charts"; diff --git a/common/utils/websrv/frontend/src/app/controls/cmd.control.ts b/common/utils/websrv/frontend/src/app/controls/cmd.control.ts index b14e02d6108..3d9b27cbfa7 100644 --- a/common/utils/websrv/frontend/src/app/controls/cmd.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/cmd.control.ts @@ -1,19 +1,53 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/cmd.control.ts + * \brief: implementation of web interface frontend for oai + * \implement a command for commands component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ + import {UntypedFormArray, UntypedFormControl, UntypedFormGroup} from "@angular/forms"; import {Subscription} from "rxjs"; import {Observable} from "rxjs/internal/Observable"; -import {ICommand, ICommandOptions, IQuestion} from "src/app/api/commands.api"; +import {ICommand, ICommandOptions, IQuestion, IVariable} from "src/app/api/commands.api"; import {HelpApi, HelpRequest, HelpResp} from "src/app/api/help.api"; const enum CmdFCN { name = "name", vars = "variables", confirm = "confirm", - answer = "answer" + answer = "answer", + answerb = "answerb" } export class CmdCtrl extends UntypedFormGroup { confirm?: string; - question?: IQuestion; + question?: IQuestion[]; cmdname: string; options?: ICommandOptions[]; public ResUpdTimer?: Observable<number>; @@ -27,26 +61,40 @@ export class CmdCtrl extends UntypedFormGroup { this.addControl(CmdFCN.name, new UntypedFormControl(cmd.name)); this.addControl(CmdFCN.answer, new UntypedFormControl("")); + this.addControl(CmdFCN.answerb, new UntypedFormControl("")); this.addControl(CmdFCN.vars, new UntypedFormArray([])); this.confirm = cmd.confirm; this.question = cmd.question; this.cmdname = cmd.name; this.options = cmd.options; - this.updbtnname = "Start update" + this.updbtnname = "Start update"; } api() { const doc: ICommand = { name : this.nameFC.value, - param : this.question ? {name : this.question!.pname, value : this.answerFC.value, type : this.question!.type, modifiable : false} : undefined, + param : this.question ? this.setParams() : undefined, +// param : this.question ? {name : this.question!.pname, value : this.answerFC.value, type : this.question!.type, modifiable : false} : undefined, options : this.options }; return doc; } - + + setParams () + { + var vars : IVariable[]=new Array(); + for (let i = 0; i < this.question!.length; i++) { + vars.push({name:this.question![i].pname, + value:(i==0)?this.answerFC.value:this.answerbFC.value, + type:this.question![i].type, + modifiable:false }) + } + return vars; + } + isResUpdatable(): boolean { if (this.options) { @@ -88,6 +136,11 @@ export class CmdCtrl extends UntypedFormGroup { { return this.get(CmdFCN.answer) as UntypedFormControl; } + + get answerbFC() + { + return this.get(CmdFCN.answerb) as UntypedFormControl; + } get varsFA() { diff --git a/common/utils/websrv/frontend/src/app/controls/info.control.ts b/common/utils/websrv/frontend/src/app/controls/info.control.ts index e5d372db7ed..c3c56bb297e 100644 --- a/common/utils/websrv/frontend/src/app/controls/info.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/info.control.ts @@ -1,6 +1,37 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/info.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one info item for info component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {UntypedFormControl, UntypedFormGroup} from "@angular/forms"; -import {IInfo} from "../api/commands.api"; -import {IArgType} from "../api/commands.api"; +import {IArgType, IInfo} from "src/commondefs"; const enum InfosFCN { name = "name", diff --git a/common/utils/websrv/frontend/src/app/controls/module.control.ts b/common/utils/websrv/frontend/src/app/controls/module.control.ts index 6ba4323553c..ef20025f866 100644 --- a/common/utils/websrv/frontend/src/app/controls/module.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/module.control.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/module.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one module item for commands component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {UntypedFormArray, UntypedFormGroup} from "@angular/forms"; import {IModule} from "../api/commands.api"; diff --git a/common/utils/websrv/frontend/src/app/controls/param.control.ts b/common/utils/websrv/frontend/src/app/controls/param.control.ts index 6c17acd240c..f091a7db991 100644 --- a/common/utils/websrv/frontend/src/app/controls/param.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/param.control.ts @@ -1,5 +1,38 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/param.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one parameter in a result row for commands component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {UntypedFormControl, UntypedFormGroup} from "@angular/forms"; -import {IArgType, IColumn, IParam} from "../api/commands.api"; +import {IArgType, IInfo} from "src/commondefs"; +import { IParam, IColumn,} from "../api/commands.api"; enum ParamFCN { value = "value", diff --git a/common/utils/websrv/frontend/src/app/controls/row.control.ts b/common/utils/websrv/frontend/src/app/controls/row.control.ts index fc288854010..0117981f3ec 100644 --- a/common/utils/websrv/frontend/src/app/controls/row.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/row.control.ts @@ -1,7 +1,38 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/frontend/src/app/controls/row.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one row results for commands component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {FormControl, UntypedFormArray, UntypedFormGroup} from "@angular/forms"; - -import {IArgType, IParam, IRow, IVariable} from "../api/commands.api"; +import {IArgType} from "src/commondefs"; +import {IParam, IRow, IVariable} from "../api/commands.api"; import {ParamCtrl} from "./param.control"; diff --git a/common/utils/websrv/frontend/src/app/controls/var.control.ts b/common/utils/websrv/frontend/src/app/controls/var.control.ts index b78fdb87a3b..75a35817193 100644 --- a/common/utils/websrv/frontend/src/app/controls/var.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/var.control.ts @@ -1,6 +1,37 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/var.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one variable item for commands componen + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {UntypedFormControl, UntypedFormGroup} from "@angular/forms"; -import {IInfo} from "../api/commands.api"; -import {IArgType} from "../api/commands.api"; +import {IArgType, IInfo} from "src/commondefs"; const enum VariablesFCN { name = "name", diff --git a/common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts b/common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts index 198a70be93a..cdb096c6ae0 100644 --- a/common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts +++ b/common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts + * \brief: implementation of web interface frontend for oai + * \utility to intercept error response from backend and possibly dispay an error to user + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from "@angular/common/http"; import {Injectable} from "@angular/core"; import {Observable, throwError} from "rxjs"; @@ -52,7 +84,7 @@ export class ErrorInterceptor implements HttpInterceptor { // The response body may contain clues as to what went wrong message = JSON.stringify(error.error); } - this.dialogService.openErrorDialog(prefix + " " + error.status, message); + this.dialogService.openErrorDialog(prefix + " " + request.url, "http status: " + error.status + " " + message); return throwError(error); }), ); diff --git a/common/utils/websrv/frontend/src/app/services/download.service.ts b/common/utils/websrv/frontend/src/app/services/download.service.ts index 6cb326daa86..be195497272 100644 --- a/common/utils/websrv/frontend/src/app/services/download.service.ts +++ b/common/utils/websrv/frontend/src/app/services/download.service.ts @@ -1,8 +1,40 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/services/download.service.ts + * \brief: implementation of web interface frontend for oai + * \utility to download a file from backend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpClient} from "@angular/common/http"; import {HttpHeaders} from "@angular/common/http"; import {HttpParams} from "@angular/common/http"; import {Injectable} from "@angular/core"; -import {route} from "src/app/api/commands.api"; +import {route} from "src/commondefs"; import {environment} from "src/environments/environment"; @Injectable({ diff --git a/common/utils/websrv/frontend/src/app/services/websocket.service.ts b/common/utils/websrv/frontend/src/app/services/websocket.service.ts index ea461602df6..afddab90887 100644 --- a/common/utils/websrv/frontend/src/app/services/websocket.service.ts +++ b/common/utils/websrv/frontend/src/app/services/websocket.service.ts @@ -1,4 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/frontend/src/app/services/websocket.service.ts + * \brief: implementation of web interface frontend for oai + * \utility implementing a web interface with the backend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {Injectable} from "@angular/core"; import {webSocket, WebSocketSubject} from "rxjs/webSocket"; import {environment} from "src/environments/environment"; diff --git a/common/utils/websrv/frontend/src/commondefs.ts b/common/utils/websrv/frontend/src/commondefs.ts new file mode 100644 index 00000000000..199c89e5423 --- /dev/null +++ b/common/utils/websrv/frontend/src/commondefs.ts @@ -0,0 +1,51 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/commondefs.ts + * \brief: implementation of web interface frontend for oai + * \definitions of constants, enums and interfaces common to the whole frontend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +export enum IArgType { + boolean = "boolean", + list = "list", + loglvl = "loglvl", + range = "range", + number = "number", + string = "string", + configfile = "configfile", + simuTypes = "simuTypes", +} + +export interface IInfo { + name: string; + value: string; + type: IArgType; + modifiable: boolean; // set command ? +} + +export const route = "oaisoftmodem/"; diff --git a/common/utils/websrv/frontend/src/main.ts b/common/utils/websrv/frontend/src/main.ts index a612aa1233d..4525b8d5b53 100644 --- a/common/utils/websrv/frontend/src/main.ts +++ b/common/utils/websrv/frontend/src/main.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/main.ts + * \brief: implementation of web interface frontend for oai + * \this is the frontend application main source but interesting things atarts in the app.module import + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {enableProdMode} from "@angular/core"; import {platformBrowserDynamic} from "@angular/platform-browser-dynamic"; diff --git a/common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html b/common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html index 8c70f28df65..674b3ee27f5 100644 --- a/common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html +++ b/common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> This option asks for a model id and lists the parameters of this model. Some parameters can be then modified diff --git a/common/utils/websrv/helpfiles/cmd_channelmod_show_current.html b/common/utils/websrv/helpfiles/cmd_channelmod_show_current.html index fd0677c44ff..a1f8bbdf081 100644 --- a/common/utils/websrv/helpfiles/cmd_channelmod_show_current.html +++ b/common/utils/websrv/helpfiles/cmd_channelmod_show_current.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/cmd_channelmod_show_current.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> When a oai component, as the rf simulator, instanciates a channel model, the instanciation is added in the list of current models. The id of the instanciation is used when using the "show channelid" option. diff --git a/common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html b/common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html index 8d6a349b4a2..63c67449e49 100644 --- a/common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html +++ b/common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> Predefined channel model are a set of modelisation algorithm's, identified by a name, available in oai code. diff --git a/common/utils/websrv/helpfiles/question_setdistance_input.html b/common/utils/websrv/helpfiles/question_setdistance_input.html new file mode 100644 index 00000000000..097987d7fa5 --- /dev/null +++ b/common/utils/websrv/helpfiles/question_setdistance_input.html @@ -0,0 +1,37 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/question_setdistance_input.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags can be used in this help files as it is rendered in a div (tooltips don't work well in dialogs) + * \warning + */ +--> +<ol> +<li><bold>model name:</bold> rfsimu_channel_<enB|ue>_<connection id>. For example model applied to the first UE connected to a gNB is "rfsimu_channel_ue0"</li> +<li><bold>distance:</bold> expressed in meters</li> +</ol> diff --git a/common/utils/websrv/helpfiles/question_show_channelid_input.html b/common/utils/websrv/helpfiles/question_show_channelid_input.html new file mode 100644 index 00000000000..2a1193d5186 --- /dev/null +++ b/common/utils/websrv/helpfiles/question_show_channelid_input.html @@ -0,0 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/question_show_channelid_input.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags can be used in this help files as it is rendered in a div (tooltips don't work well in dialogs) + * \warning + */ +--> +channel index: channel model index in the channel modelisation module, it is printed when listing all defined models using the "show current" button. diff --git a/common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html b/common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html index 5961be1b5d1..348399a8a74 100644 --- a/common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html +++ b/common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> Available channel modelisation algorithm's can be listed using the "channelmod"/"show predef" command. A more convenient mechanism to select this will be implemented in a next version. diff --git a/common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html b/common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html index 325a9e20426..24fa2b22515 100644 --- a/common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html +++ b/common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> The model index can be used to modify a model parameter, using the "channelmod"/"show channelid" commands diff --git a/common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html b/common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html index d21aa89a4a2..544e77c4f60 100644 --- a/common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html +++ b/common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> Models parameters are defined in the oai configuration file under the section "channelmod.<channel list>". <channel list> describes the parameters for each <model name>. Several <channel list> can be defined, the loaded list is defined by the "channelmod.modellist" parameter. Model names are defined by the channel modelisation "user": for example the model "rfsmu_channel_ue0" is applied by the gNB rfsimulator on the signal received from ue0, the first connecet UE. diff --git a/common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html b/common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html index fe5530d938b..79a65c07277 100644 --- a/common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html +++ b/common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> When the rfsimulator is effectively using a channel model to modify a received signal he becomes the owner of that model. diff --git a/common/utils/websrv/helpfiles/scope_control_dataack.html b/common/utils/websrv/helpfiles/scope_control_dataack.html index 20d966cf1d3..60533f1c030 100644 --- a/common/utils/websrv/helpfiles/scope_control_dataack.html +++ b/common/utils/websrv/helpfiles/scope_control_dataack.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/scope_control_dataack.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> when enabled, back-end will stop sending data when too much data have not been acknowledge by the frontend. Currently the back-end limits to 200 the number of data messages waitting for ack. diff --git a/common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html b/common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html index ef0473723bb..de9fac89ca8 100644 --- a/common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html +++ b/common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> Nice value, relevant for other and batch scheduling can be changed via the "oai priority" field diff --git a/common/utils/websrv/helpfiles/softmodem_show_threadsched_oai_priority.html b/common/utils/websrv/helpfiles/softmodem_show_threadsched_oai_priority.html index 19e73db91b9..991d1a24349 100644 --- a/common/utils/websrv/helpfiles/softmodem_show_threadsched_oai_priority.html +++ b/common/utils/websrv/helpfiles/softmodem_show_threadsched_oai_priority.html @@ -1,3 +1,36 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_oai_priority.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> the oai priority field is used to provide the linux scheduling mode, priority and nice value in a single field. Priority value is mapped to linux scheduling mode, priority and nice as listed below: -101 to -199: real time, Round-Robin 1 to 99 diff --git a/common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html b/common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html index c1cc51745da..751b894efdd 100644 --- a/common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html +++ b/common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> Linux priority field, relevant for real-time scheduling mode (Round-Robin or fifo) can be modified using the "oai priority" field diff --git a/common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html b/common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html index 362fe0109f4..3dfcd2633c7 100644 --- a/common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html +++ b/common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html @@ -1 +1,34 @@ +<!-- +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html + * \brief: implementation of web interface frontend for oai + * \help file loaded at run time using the help api's + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note: html tags cannot be used in this help files as it is rendered in a tooltips + * \warning + */ +--> scheduling policy can be modified using the "oai priority" field. diff --git a/common/utils/websrv/websrv.c b/common/utils/websrv/websrv.c index bcc1e87fcad..7e3d8fd5244 100644 --- a/common/utils/websrv/websrv.c +++ b/common/utils/websrv/websrv.c @@ -253,7 +253,7 @@ int websrv_callback_set_moduleparams(const struct _u_request *request, struct _u } // for *cmd } // json_unpack_ex(jsbody OK } // user_data - } // sbody + } // jsbody not null websrv_printf_end(httpstatus, websrvparams.dbglvl); return U_CALLBACK_COMPLETE; } @@ -432,40 +432,62 @@ int websrv_callback_set_softmodemvar(const struct _u_request *request, struct _u int websrv_processwebfunc(struct _u_response *response, cmdparser_t *modulestruct, telnetshell_cmddef_t *cmd, json_t *jparams) { LOG_I(UTIL, "[websrv] : executing command %s %s\n", modulestruct->module, cmd->cmdname); + if ((cmd->cmdflags & TELNETSRV_CMDFLAG_NEEDPARAM) && jparams == NULL) { + LOG_W(UTIL, "No parameters sent by frontend for %s %s\n", modulestruct->module, cmd->cmdname); + return 500; + } int http_status = 200; + char *pname[2], *pvalue[2]; + size_t np =0; + if (jparams != NULL) { + int b[2]; + char *ptype[2]; + json_error_t jerror; + np = json_array_size(jparams); + int jrt; + switch(np) { + case 1: + jrt=json_unpack_ex(jparams, &jerror, 0, "[{s:s,s:s,s:s,s,b}]", "name", &pname[0], "value", &pvalue[0], "type", &ptype[0], "modifiable", &b); + break; + case 2: + jrt=json_unpack_ex(jparams, &jerror, 0, "[{s:s,s:s,s:s,s,b},{s:s,s:s,s:s,s,b}]", + "name", &pname[0], "value", &pvalue[0], "type", &ptype[0], "modifiable", &b[0], + "name", &pname[1], "value", &pvalue[1], "type", &ptype[1], "modifiable", &b[1]); + break; + default: + http_status=500; + break; +// json_unpack_ex(jparams, &jerror, 0, "[{s:s,s:s,s:s,s,b}]", "name", &pname, "value", &pvalue, "type", &ptype, "modifiable", &b); + + } + if (jrt <0 || http_status != 200) { + LOG_I(UTIL, "[websrv], couldn't unpack jparams, module %s, command %s: %s\n", modulestruct->module, cmd->cmdname, jerror.text); + websrv_printjson((char *)__FUNCTION__, jparams, websrvparams.dbglvl); + return 500; + } + } + if (cmd->cmdflags & TELNETSRV_CMDFLAG_GETWEBTBLDATA) { webdatadef_t wdata; memset(&wdata, 0, sizeof(wdata)); - if (cmd->cmdflags & TELNETSRV_CMDFLAG_NEEDPARAM) { - if (jparams == NULL) { - LOG_W(UTIL, "No parameters sent by frontend for %s %s\n", modulestruct->module, cmd->cmdname); - } else { - int b; - char *pname, *pvalue, *ptype; - json_error_t jerror; - json_unpack_ex(jparams, &jerror, 0, "{s:s,s:s,s:s,s,b}", "name", &pname, "value", &pvalue, "type", &ptype, "modifiable", &b); - if (pvalue == NULL || pname == NULL || ptype == NULL) { - LOG_I(UTIL, "[websrv], couldn't unpack jparams, module %s, command %s: %s\n", modulestruct->module, cmd->cmdname, jerror.text); - websrv_printjson((char *)__FUNCTION__, jparams, websrvparams.dbglvl); - http_status = 500; - } else { - snprintf(wdata.columns[0].coltitle, sizeof(wdata.columns[0].coltitle) - 1, "%s", pname); - wdata.numcols = 1; - wdata.lines[0].val[0] = pvalue; - wdata.numlines = 1; - } - } + wdata.numlines = 1; + for (int i=0; i<np; i++) { + snprintf(wdata.columns[i].coltitle, sizeof(wdata.columns[i].coltitle) - 1, "%s", pname[i]); + wdata.numcols = np; + wdata.lines[0].val[i] = pvalue[i]; } cmd->webfunc_getdata(cmd->cmdname, websrvparams.dbglvl, (webdatadef_t *)&wdata, NULL); websrv_gettbldata_response(response, &wdata, modulestruct->module, cmd->cmdname); } else { char *sptr = index(cmd->cmdname, ' '); + char cmdbuff[TELNET_CMD_MAXSIZE*3]; //cmd + 2 parameters + snprintf(cmdbuff,sizeof(cmdbuff)-1, "%s%s%s %s",(sptr == NULL) ? "" : sptr,(sptr == NULL) ? "" : " ",(np>0) ? pvalue[0] : "",(np>1) ? pvalue[1] : ""); if (cmd->qptr != NULL) { websrv_printf_start(response, 16384, true); - telnet_pushcmd(cmd, (sptr == NULL) ? cmd->cmdname : sptr, websrv_async_printf); + telnet_pushcmd(cmd, cmdbuff, websrv_async_printf); } else { websrv_printf_start(response, 16384, false); - cmd->cmdfunc((sptr == NULL) ? cmd->cmdname : sptr, websrvparams.dbglvl, websrv_printf); + cmd->cmdfunc(cmdbuff, websrvparams.dbglvl, websrv_printf); } websrv_printf_end(http_status, websrvparams.dbglvl); } @@ -598,21 +620,35 @@ int websrv_callback_get_softmodemcmd(const struct _u_request *request, struct _u snprintf(confstr, sizeof(confstr), "Confirm %s ?", modulestruct->cmd[j].cmdname); acmd = json_pack("{s:s,s:s}", "name", modulestruct->cmd[j].cmdname, "confirm", confstr); } else if (modulestruct->cmd[j].cmdflags & TELNETSRV_CMDFLAG_NEEDPARAM) { - char *pname = NULL; - char *question = NULL; + char *question[] = {NULL,NULL}; char *helpcp = NULL; + json_t *jQ1=NULL, *jQ2=NULL; + json_t *jQs = json_array(); if (modulestruct->cmd[j].helpstr != NULL) { - char *tokptr; helpcp = strdup(modulestruct->cmd[j].helpstr); - question = strtok_r(helpcp, "<[", &tokptr); - pname = (question != NULL) ? strtok_r(helpcp, ">]", &tokptr) : NULL; + int ns=sscanf(helpcp,"<%m[^<>]> <%m[^<>]>",&question[0],&question[1]); + if (ns == 0) { + LOG_W(UTIL, "[websrv] Cannot find parameters for command %s %s\n", modulestruct->module, modulestruct->cmd[j].cmdname); + continue; + } + jQ1=json_pack("{s:s,s:s,s:s}", "display",question[0], "pname", "P0", "type", "string"); + json_array_append_new(jQs, jQ1); + if (ns >1) { + jQ2=json_pack("{s:s,s:s,s:s}","display", (question[1] == NULL) ? "" : question[1], "pname", "P1" , "type", "string"); + json_array_append_new(jQs, jQ2); + } } - acmd = json_pack( - "{s:s,s:{s:s,s:s,s:s}}", "name", modulestruct->cmd[j].cmdname, "question", "display", (question == NULL) ? "" : question, "pname", (pname == NULL) ? "Px" : pname, "type", "string"); + acmd = json_pack("{s:s,s:o}", "name", modulestruct->cmd[j].cmdname, "question", jQs); free(helpcp); + free(question[0]); + free(question[1]); } else { acmd = json_pack("{s:s}", "name", modulestruct->cmd[j].cmdname); } + if ( acmd == NULL) { + LOG_W(UTIL, "[websrv] interface for command %s %s cannot be built\n", modulestruct->module, modulestruct->cmd[j].cmdname); + continue; + } json_t *jopts = json_array(); if (modulestruct->cmd[j].cmdflags & TELNETSRV_CMDFLAG_AUTOUPDATE) { json_array_append_new(jopts, json_string("update")); @@ -806,7 +842,6 @@ void *websrv_autoinit() websrvparams.instance.max_post_body_size = 1024; // 1: build the first page, when receiving the "oaisoftmodem" url - // ulfius_add_endpoint_by_val(&(websrvparams.instance), "GET", "oaisoftmodem", "variables", 0, &websrv_callback_get_softmodemstatus, NULL); ulfius_add_endpoint_by_val(&(websrvparams.instance), "GET", "oaisoftmodem", "commands", 1, &websrv_callback_get_softmodemmodules, NULL); // 2 default_endpoint declaration, it tries to open the file with the url name as specified in the request.It looks for the file @@ -817,7 +852,7 @@ void *websrv_autoinit() websrv_callback_get_softmodemstatus, websrv_callback_okset_softmodem_cmdvar, websrv_callback_set_softmodemvar}; char *http_methods[3] = {"GET", "OPTIONS", "POST"}; - websrv_add_endpoint(http_methods, 3, "oaisoftmodem", "variables", callback_functions_var, NULL); + websrv_add_endpoint(http_methods, 3, "oaisoftmodem", "info", callback_functions_var, NULL); for (int i = 0; telnetparams->CmdParsers[i].cmd != NULL; i++) { register_module_endpoints(&(telnetparams->CmdParsers[i])); diff --git a/common/utils/websrv/websrv_CMakeLists.txt b/common/utils/websrv/websrv_CMakeLists.txt deleted file mode 100644 index 34b0fb5479e..00000000000 --- a/common/utils/websrv/websrv_CMakeLists.txt +++ /dev/null @@ -1,90 +0,0 @@ -if ( "${OPENAIR_CMAKE}" STREQUAL "") - message( FATAL_ERROR "oai Environment variables not set") -endif ( "${OPENAIR_CMAKE}" STREQUAL "") -set(WEBSRVROOT ${OPENAIR_DIR}/common/utils/websrv ) -set (WBACK TRUE) -set (WFRONT TRUE) -# websrv dependencies -unset(ULFIUS) -unset(ULFIUS CACHE) -find_library(ULFIUS NAMES "libulfius.so" NO_CACHE) -if ("${ULFIUS}" STREQUAL "ULFIUS-NOTFOUND") - message( WARNING "ulfius library (https://github.com/babelouest/ulfius) not found, install libulfius-dev (ubuntu) if you need to build websrv back-end") - set (WBACK FALSE) -endif("${ULFIUS}" STREQUAL "ULFIUS-NOTFOUND") - -unset(JSON) -unset(JSON CACHE) -find_library(JSON NAMES "libjansson.so" NO_CACHE ) -if ("${JSON}" STREQUAL "ULFIUS-NOTFOUND") - message( WARNING "libjansson not found, install libjansson-dev for ubuntu, jansson-devel for fedora if you need to build websrv back-end") - set (WBACK FALSE) -endif("${JSON}" STREQUAL "ULFIUS-NOTFOUND") - -unset(NPM) -unset(NPM CACHE) -find_program(NPM NAMES npm NO_CACHE) -if ("${NPM}" STREQUAL "ULFIUS-NOTFOUND") - message( WARNING " npm is not installed, frontend won't be built. Possibly install npm, package is available for ubuntu and fedora") -endif("${NPM}" STREQUAL "ULFIUS-NOTFOUND") - -if ( ${WBACK} ) - message (STATUS "websrv backend can be built") -else ( ${WBACK} ) - message (STATUS "websrv backend build skipped, dependencies not found") -endif ( ${WBACK} ) - -if ( ${WFRONT} ) - message (STATUS "websrv frontend can be built") -else( ${WFRONT} ) - message (STATUS "websrv frontend build skipped, dependencies not found") -endif ( ${WFRONT} ) - - -# build the backend ( the embedded web server) - -set(WEBSRV_SOURCE - ${WEBSRVROOT}/websrv.c ${WEBSRVROOT}/websrv_websockets.c - ${WEBSRVROOT}/websrv_scope.c ${WEBSRVROOT}/websrv_noforms.c - ${WEBSRVROOT}/websrv_scope.c ${WEBSRVROOT}/websrv_utils.c - ${OPENAIR_DIR}/openair1/PHY/TOOLS/nr_phy_scope.c - ) - - - add_library(websrv MODULE ${WEBSRV_SOURCE} ) - target_link_libraries(websrv PRIVATE ulfius jansson) - target_compile_definitions(websrv PUBLIC WEBSRVSCOPE) - -# build the frontend ( loaded from web server by browsers) - -add_custom_target ( - websrvfront_installjsdep - WORKING_DIRECTORY ${WEBSRVROOT}/frontend - COMMAND npm install - DEPENDS ${WEBSRVROOT}/frontend/package-lock.json -) - -add_custom_target ( - websrvfront - WORKING_DIRECTORY ${WEBSRVROOT}/frontend - COMMAND npm run build - #COMMAND npm run builddev - DEPENDS websrvfront_installjsdep -) - - -#install built files, required at exec time -if ( ${WBACK} ) - install(TARGETS websrv DESTINATION bin) -endif ( ${WBACK} ) - -if ( ${WFRONT} ) - if (EXISTS "${OPENAIR_CMAKE}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_CMAKE}/ran_build/build") - add_custom_command(TARGET websrvfront - POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${WEBSRVROOT}/frontend/dist/softmodem-ngx ${OPENAIR_CMAKE}/ran_build/build/websrv - COMMAND ${CMAKE_COMMAND} -E copy_directory ${WEBSRVROOT}/frontend/dist/softmodem-ngx ${OPENAIR_TARGETS}/bin/websrv - COMMAND ${CMAKE_COMMAND} -E copy_directory ${WEBSRVROOT}/helpfiles ${OPENAIR_CMAKE}/ran_build/build/websrv/helpfiles - COMMAND ${CMAKE_COMMAND} -E copy_directory ${WEBSRVROOT}/helpfiles ${OPENAIR_TARGETS}/bin/websrv/helpfiles - COMMENT "Moving frontend files to:\n ${OPENAIR_CMAKE}/ran_build/build/websrv\n ${OPENAIR_TARGETS}/bin/websrv" ) - endif (EXISTS "${OPENAIR_CMAKE}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_CMAKE}/ran_build/build") -endif ( ${WFRONT} ) diff --git a/common/utils/websrv/websrv_noforms.h b/common/utils/websrv/websrv_noforms.h index e250139c0cd..c3d3af78d6f 100644 --- a/common/utils/websrv/websrv_noforms.h +++ b/common/utils/websrv/websrv_noforms.h @@ -1609,7 +1609,7 @@ __attribute__((unused)) static int fl_vmode; #define fl_get_form_vclass(a) fl_vmode #define fl_get_gc() fl_state[fl_vmode].gc[0] -__attribute__((unused)) static FL_State fl_state[]; +//__attribute__((unused)) static FL_State fl_state[]; __attribute__((unused)) static char *fl_ul_magic_char; diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index acf78e4793b..2b6c1dd0bb3 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,4 +1,4 @@ -add_boolean_option(GENERATE_DOXYGEN False "Generate source code doc using doxygen") +add_boolean_option(GENERATE_DOXYGEN False "Generate source code doc using doxygen" OFF) if(GENERATE_DOXYGEN) find_package(Doxygen REQUIRED) diff --git a/openair1/CMakeLists.txt b/openair1/CMakeLists.txt new file mode 100644 index 00000000000..1ce6debaf19 --- /dev/null +++ b/openair1/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(PHY) diff --git a/openair1/PHY/CMakeLists.txt b/openair1/PHY/CMakeLists.txt new file mode 100644 index 00000000000..0a53c969a7c --- /dev/null +++ b/openair1/PHY/CMakeLists.txt @@ -0,0 +1,6 @@ +add_boolean_option(ENABLE_UESCOPE OFF "Whether to build the lte uescope" OFF) +add_boolean_option(ENABLE_ENBSCOPE OFF "Whether to build the lte enbcope" OFF) +add_boolean_option(ENABLE_NRSCOPE OFF "Whether to build the 5G scope" OFF) +if(ENABLE_UESCOPE OR ENABLE_ENBSCOPE OR ENABLE_NRSCOPE) + add_subdirectory(TOOLS) +endif() diff --git a/openair1/PHY/TOOLS/CMakeLists.txt b/openair1/PHY/TOOLS/CMakeLists.txt new file mode 100644 index 00000000000..0a6026fb257 --- /dev/null +++ b/openair1/PHY/TOOLS/CMakeLists.txt @@ -0,0 +1,50 @@ +#/* +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#! \file openair1/PHY/TOOLS/CMakelists.txt +#* \brief: build rules and checks for softscope shared libraries +#* \author Francois TABURET +#* \date 2023 +#* \version 1.0 +#* \company NOKIA BellLabs France +#* \email: francois.taburet@nokia-bell-labs.com +#* \note +#* \warning +#*/ + +include_directories ("/usr/include/X11") +add_library(xforms_common OBJECT + lte_phy_scope.c + ../../../executables/stats.c) +target_link_libraries(xforms_common PRIVATE asn1_nr_rrc PRIVATE asn1_lte_rrc) + +add_library(enbscope MODULE lte_enb_scope.c $<TARGET_OBJECTS:xforms_common>) +target_link_libraries(enbscope PUBLIC forms PRIVATE asn1_nr_rrc PRIVATE asn1_lte_rrc) + +add_library(uescope MODULE lte_ue_scope.c $<TARGET_OBJECTS:xforms_common>) +target_link_libraries(uescope PUBLIC forms PRIVATE asn1_nr_rrc PRIVATE asn1_lte_rrc) + +add_library(nrscope MODULE nr_phy_scope.c) +target_link_libraries(nrscope PUBLIC forms PRIVATE asn1_nr_rrc PRIVATE asn1_lte_rrc) + +# all libraries should be written to root build dir (default creates the same hierarchie under build as existing for sources) +set_target_properties(enbscope uescope nrscope + PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../../.. +) diff --git a/openair1/PHY/TOOLS/nr_phy_scope.c b/openair1/PHY/TOOLS/nr_phy_scope.c index 23f6f761818..7fd73a1b642 100644 --- a/openair1/PHY/TOOLS/nr_phy_scope.c +++ b/openair1/PHY/TOOLS/nr_phy_scope.c @@ -531,7 +531,7 @@ static void puschLLR (OAIgraph_t *graph, scopeData_t *p, int nb_UEs) { p->gNB->pusch_vars[ue] && p->gNB->pusch_vars[ue]->llr ) { int16_t *pusch_llr = (int16_t *)p->gNB->pusch_vars[ue]->llr; - float *llr, *bit; + float *llr=NULL, *bit=NULL; int nx = coded_bits_per_codeword; #ifdef WEBSRVSCOPE nx = websrv_cpllrbuff_tomsg(graph, pusch_llr, coded_bits_per_codeword, ue, 0, 0); @@ -562,7 +562,7 @@ static void puschIQ (OAIgraph_t *graph, scopeData_t *p, int nb_UEs) { p->gNB->pusch_vars[ue]->rxdataF_comp && p->gNB->pusch_vars[ue]->rxdataF_comp[0] ) { scopeSample_t *pusch_comp = (scopeSample_t *)p->gNB->pusch_vars[ue]->rxdataF_comp[0]; - float *I, *Q; + float *I=NULL, *Q=NULL; #ifdef WEBSRVSCOPE newsz = websrv_cpiqbuff_tomsg(graph, pusch_comp, sz, 0, 0); #else @@ -846,7 +846,7 @@ static void uePbchLLR (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_ //const int antennas=data[pbchLlr]->colSz; // We take the first antenna only for now int16_t *llrs = (int16_t *) (data[pbchLlr]+1); - float *llr_pbch, *bit_pbch; + float *llr_pbch=NULL, *bit_pbch=NULL; int nx = sz; #ifdef WEBSRVSCOPE nx = websrv_cpllrbuff_tomsg(graph, llrs, sz, UE_id, 0, 0); @@ -868,7 +868,7 @@ static void uePbchIQ (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_U scopeSample_t *pbch_comp = (scopeSample_t *) (data[pbchRxdataF_comp]+1); const int sz=data[pbchRxdataF_comp]->lineSz; int newsz = sz; - float *I, *Q; + float *I=NULL, *Q=NULL; #ifdef WEBSRVSCOPE newsz = websrv_cpiqbuff_tomsg(graph, pbch_comp, sz, 0, 0); #else @@ -891,7 +891,7 @@ static void uePcchLLR (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_ //int num_re = 4*273*12; // 12*frame_parms->N_RB_DL*num_pdcch_symbols //int Qm = 2; const int sz=data[pdcchLlr]->lineSz; - float *llr, *bit; + float *llr=NULL, *bit=NULL; int nx = sz; int16_t *pdcch_llr = (int16_t *)(data[pdcchLlr]+1); @@ -915,7 +915,7 @@ static void uePcchIQ (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_U int newsz = sz; //const int antennas=data[pdcchRxdataF_comp]->colSz; // We take the first antenna only for now - float *I, *Q; + float *I=NULL, *Q=NULL; scopeSample_t *pdcch_comp = (scopeSample_t *) (data[pdcchRxdataF_comp]+1); #ifdef WEBSRVSCOPE newsz = websrv_cpiqbuff_tomsg(graph, pdcch_comp, sz, 0, 0); @@ -935,7 +935,7 @@ static void uePdschLLR (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR return; const int sz = data[pdschLlr]->lineSz; - float *llr, *bit; + float *llr=NULL, *bit=NULL; int nx = sz; int16_t *pdsch_llr = (int16_t *)(data[pdschLlr]+1); @@ -959,7 +959,7 @@ static void uePdschIQ (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_ const int sz=data[pdschRxdataF_comp]->lineSz; int nz = sz; - float *I, *Q; + float *I=NULL, *Q=NULL; scopeSample_t *pdsch_comp = (scopeSample_t *) (data[pdschRxdataF_comp]+1); #ifdef WEBSRVSCOPE nz += websrv_cpiqbuff_tomsg(graph, pdsch_comp, sz, 0, 0); diff --git a/openair1/SIMULATION/TOOLS/random_channel.c b/openair1/SIMULATION/TOOLS/random_channel.c index 3aad57f015d..4fe1d8a84b1 100644 --- a/openair1/SIMULATION/TOOLS/random_channel.c +++ b/openair1/SIMULATION/TOOLS/random_channel.c @@ -54,7 +54,7 @@ int get_modchannel_index(char *buf, int debug, void *vdata, telnet_printfunc_t p int get_channel_params(char *buf, int debug, void *tdata, telnet_printfunc_t prnt); int get_currentchannels_type(char *buf, int debug, void *vdata, telnet_printfunc_t prnt); -#define HELP_WEBIF_MODIFCHAN_STRING "Current channel index? <chanidx>" +#define HELP_WEBIF_MODIFCHAN_STRING "<channel index>" static telnetshell_cmddef_t channelmod_cmdarray[] = { {"help", "", channelmod_print_help, {NULL}, 0, NULL}, {"show", "<predef,current>", channelmod_show_cmd, {NULL}, TELNETSRV_CMDFLAG_TELNETONLY, NULL}, diff --git a/radio/rfsimulator/simulator.c b/radio/rfsimulator/simulator.c index 96483d6f56d..1dac4e059ac 100644 --- a/radio/rfsimulator/simulator.c +++ b/radio/rfsimulator/simulator.c @@ -96,7 +96,7 @@ static int rfsimu_vtime_cmd(char *buff, int debug, telnet_printfunc_t prnt, void static telnetshell_cmddef_t rfsimu_cmdarray[] = { {"show models", "", (cmdfunc_t)rfsimu_setchanmod_cmd, {(webfunc_t)getset_currentchannels_type}, TELNETSRV_CMDFLAG_WEBSRVONLY | TELNETSRV_CMDFLAG_GETWEBTBLDATA, NULL}, {"setmodel", "<model name> <model type>", (cmdfunc_t)rfsimu_setchanmod_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ | TELNETSRV_CMDFLAG_TELNETONLY, NULL}, - {"setdistance", "<model name> <distance>", (cmdfunc_t)rfsimu_setdistance_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ}, + {"setdistance", "<model name> <distance>", (cmdfunc_t)rfsimu_setdistance_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ | TELNETSRV_CMDFLAG_NEEDPARAM }, {"getdistance", "<model name>", (cmdfunc_t)rfsimu_getdistance_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ}, {"vtime", "", (cmdfunc_t)rfsimu_vtime_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ | TELNETSRV_CMDFLAG_AUTOUPDATE}, {"", "", NULL}, -- GitLab