diff --git a/.gitignore b/.gitignore index d0ac22ead..75b752414 100644 --- a/.gitignore +++ b/.gitignore @@ -15,18 +15,19 @@ .env .creds -.vscode +.vscode/server +.vscode/server-insiders .cmake-js modules/*/include/napi.h modules/*/include/napi-inl.h modules/*/include/napi-inl.deprecated.h modules/*/include/node_api.h -modules/demo/**/*/data +modules/demo/**/*/data/* modules/**/.eslintrc.js -modules/**/notebooks/data +modules/**/notebooks/data/* internal/* diff --git a/modules/core/cmake/Modules/ConfigureArrow.cmake b/modules/core/cmake/Modules/ConfigureArrow.cmake index 97dc4cfba..5c8702a40 100644 --- a/modules/core/cmake/Modules/ConfigureArrow.cmake +++ b/modules/core/cmake/Modules/ConfigureArrow.cmake @@ -86,45 +86,49 @@ function(find_and_configure_arrow VERSION BUILD_STATIC ENABLE_S3 ENABLE_ORC ENAB set(BUILD_WARNING_LEVEL "PRODUCTION" PARENT_SCOPE) set(BUILD_WARNING_LEVEL "PRODUCTION" CACHE STRING "" FORCE) - rapids_cpm_find( - Arrow ${VERSION} + _get_update_disconnected_state(Arrow ${VERSION} UPDATE_DISCONNECTED) + + rapids_cpm_find( Arrow ${VERSION} GLOBAL_TARGETS arrow_shared arrow_static parquet_shared parquet_static arrow_cuda_shared arrow_cuda_static arrow_dataset_shared arrow_dataset_static CPM_ARGS - GIT_REPOSITORY https://github.com/apache/arrow.git - GIT_TAG apache-arrow-${VERSION} - GIT_SHALLOW TRUE SOURCE_SUBDIR cpp - OPTIONS "CMAKE_VERBOSE_MAKEFILE ON" - "CUDA_USE_STATIC_CUDA_RUNTIME OFF" - "ARROW_IPC ON" - "ARROW_CUDA ON" - "ARROW_DATASET ON" - "ARROW_WITH_BACKTRACE ON" - "ARROW_CXXFLAGS -w" - "ARROW_JEMALLOC OFF" - "ARROW_S3 ${ENABLE_S3}" - "ARROW_ORC ${ENABLE_ORC}" - # e.g. needed by blazingsql-io - ${ARROW_PARQUET_OPTIONS} - "ARROW_PARQUET ${ENABLE_PARQUET}" - ${ARROW_PYTHON_OPTIONS} - # Arrow modifies CMake's GLOBAL RULE_LAUNCH_COMPILE unless this is off - "ARROW_USE_CCACHE OFF" - "ARROW_POSITION_INDEPENDENT_CODE ON" - "ARROW_ARMV8_ARCH ${ARROW_ARMV8_ARCH}" - "ARROW_SIMD_LEVEL ${ARROW_SIMD_LEVEL}" - "ARROW_BUILD_STATIC ${ARROW_BUILD_STATIC}" - "ARROW_BUILD_SHARED ${ARROW_BUILD_SHARED}" - "ARROW_DEPENDENCY_USE_SHARED ${ARROW_BUILD_SHARED}" - "ARROW_BOOST_USE_SHARED ${ARROW_BUILD_SHARED}" - "ARROW_BROTLI_USE_SHARED ${ARROW_BUILD_SHARED}" - "ARROW_GFLAGS_USE_SHARED ${ARROW_BUILD_SHARED}" - "ARROW_GRPC_USE_SHARED ${ARROW_BUILD_SHARED}" - "ARROW_PROTOBUF_USE_SHARED ${ARROW_BUILD_SHARED}" - "ARROW_ZSTD_USE_SHARED ${ARROW_BUILD_SHARED}" - "xsimd_SOURCE AUTO" + ${UPDATE_DISCONNECTED} + # EXCLUDE_FROM_ALL TRUE + GIT_REPOSITORY https://github.com/apache/arrow.git + GIT_TAG apache-arrow-${VERSION} + GIT_SHALLOW TRUE + SOURCE_SUBDIR cpp + OPTIONS "CMAKE_VERBOSE_MAKEFILE ON" + "CUDA_USE_STATIC_CUDA_RUNTIME ON" + "ARROW_IPC ON" + "ARROW_CUDA ON" + "ARROW_DATASET ON" + "ARROW_WITH_BACKTRACE ON" + "ARROW_CXXFLAGS -w" + "ARROW_JEMALLOC OFF" + "ARROW_S3 ${ENABLE_S3}" + "ARROW_ORC ${ENABLE_ORC}" + # e.g. needed by blazingsql-io + ${ARROW_PARQUET_OPTIONS} + "ARROW_PARQUET ${ENABLE_PARQUET}" + ${ARROW_PYTHON_OPTIONS} + # Arrow modifies CMake's GLOBAL RULE_LAUNCH_COMPILE unless this is off + "ARROW_USE_CCACHE OFF" + "ARROW_POSITION_INDEPENDENT_CODE ON" + "ARROW_ARMV8_ARCH ${ARROW_ARMV8_ARCH}" + "ARROW_SIMD_LEVEL ${ARROW_SIMD_LEVEL}" + "ARROW_BUILD_STATIC ${ARROW_BUILD_STATIC}" + "ARROW_BUILD_SHARED ${ARROW_BUILD_SHARED}" + "ARROW_DEPENDENCY_USE_SHARED ${ARROW_BUILD_SHARED}" + "ARROW_BOOST_USE_SHARED ${ARROW_BUILD_SHARED}" + "ARROW_BROTLI_USE_SHARED ${ARROW_BUILD_SHARED}" + "ARROW_GFLAGS_USE_SHARED ${ARROW_BUILD_SHARED}" + "ARROW_GRPC_USE_SHARED ${ARROW_BUILD_SHARED}" + "ARROW_PROTOBUF_USE_SHARED ${ARROW_BUILD_SHARED}" + "ARROW_ZSTD_USE_SHARED ${ARROW_BUILD_SHARED}" + "xsimd_SOURCE AUTO" ) set(ARROW_FOUND TRUE) diff --git a/modules/core/cmake/Modules/ConfigureBlazingSQL.cmake b/modules/core/cmake/Modules/ConfigureBlazingSQL.cmake index 8c0e18d2a..29dd32b3f 100644 --- a/modules/core/cmake/Modules/ConfigureBlazingSQL.cmake +++ b/modules/core/cmake/Modules/ConfigureBlazingSQL.cmake @@ -39,21 +39,25 @@ function(find_and_configure_blazingsql) if(NOT TARGET blazingdb::blazingsql-io) _get_major_minor_version(${VERSION} MAJOR_AND_MINOR) - CPMFindPackage(NAME blazingsql-io - VERSION ${VERSION} - GIT_REPOSITORY https://github.com/trxcllnt/blazingsql.git - GIT_TAG fea/rapids-cmake-${MAJOR_AND_MINOR} - SOURCE_SUBDIR io - OPTIONS # "S3_SUPPORT ON" - "S3_SUPPORT OFF" - "GCS_SUPPORT OFF" - "BUILD_TESTS OFF" - "BUILD_BENCHMARKS OFF" - "BUILD_SHARED_LIBS OFF" - # "ARROW_DEPENDENCY_SOURCE AUTO" - "BLAZINGSQL_IO_BUILD_ARROW_ORC OFF" - "BLAZINGSQL_IO_USE_ARROW_STATIC ON" - "BLAZINGSQL_IO_BUILD_ARROW_PYTHON OFF" + _get_update_disconnected_state(blazingsql-io ${VERSION} UPDATE_DISCONNECTED) + CPMFindPackage(NAME blazingsql-io + VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE + GIT_REPOSITORY https://github.com/trxcllnt/blazingsql.git + GIT_TAG fea/rapids-cmake-${MAJOR_AND_MINOR} + GIT_SHALLOW TRUE + ${UPDATE_DISCONNECTED} + SOURCE_SUBDIR io + OPTIONS # "S3_SUPPORT ON" + "S3_SUPPORT OFF" + "GCS_SUPPORT OFF" + "BUILD_TESTS OFF" + "BUILD_BENCHMARKS OFF" + "BUILD_SHARED_LIBS OFF" + # "ARROW_DEPENDENCY_SOURCE AUTO" + "BLAZINGSQL_IO_BUILD_ARROW_ORC OFF" + "BLAZINGSQL_IO_USE_ARROW_STATIC ON" + "BLAZINGSQL_IO_BUILD_ARROW_PYTHON OFF" ) endif() @@ -66,31 +70,35 @@ function(find_and_configure_blazingsql) if(NOT TARGET blazingdb::blazingsql-engine) _get_major_minor_version(${VERSION} MAJOR_AND_MINOR) - CPMFindPackage(NAME blazingsql-engine - VERSION ${VERSION} - GIT_REPOSITORY https://github.com/trxcllnt/blazingsql.git - GIT_TAG fea/rapids-cmake-${MAJOR_AND_MINOR} - SOURCE_SUBDIR engine - OPTIONS "BUILD_TESTS OFF" - "BUILD_BENCHMARKS OFF" - "BUILD_SHARED_LIBS OFF" - # "S3_SUPPORT ON" - "S3_SUPPORT OFF" - "GCS_SUPPORT OFF" - "MYSQL_SUPPORT OFF" - "SQLITE_SUPPORT OFF" - "POSTGRESQL_SUPPORT OFF" - "CUDA_STATIC_RUNTIME ON" - # "ARROW_DEPENDENCY_SOURCE AUTO" - "BLAZINGSQL_ENGINE_USE_ARROW_STATIC ON" - "DISABLE_DEPRECATION_WARNING ON" - "BLAZINGSQL_IO_USE_ARROW_STATIC ON" - "BLAZINGSQL_IO_BUILD_ARROW_ORC OFF" - "BLAZINGSQL_IO_BUILD_ARROW_PYTHON OFF" - "BLAZINGSQL_ENGINE_ENABLE_DEBUG_UTILS OFF" - "BLAZINGSQL_ENGINE_BUILD_ARROW_ORC OFF" - "BLAZINGSQL_ENGINE_BUILD_ARROW_PYTHON OFF" - "BLAZINGSQL_ENGINE_WITH_PYTHON_ERRORS OFF" + _get_update_disconnected_state(blazingsql-engine ${VERSION} UPDATE_DISCONNECTED) + CPMFindPackage(NAME blazingsql-engine + VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE + GIT_REPOSITORY https://github.com/trxcllnt/blazingsql.git + GIT_TAG fea/rapids-cmake-${MAJOR_AND_MINOR} + GIT_SHALLOW TRUE + ${UPDATE_DISCONNECTED} + SOURCE_SUBDIR engine + OPTIONS "BUILD_TESTS OFF" + "BUILD_BENCHMARKS OFF" + "BUILD_SHARED_LIBS OFF" + # "S3_SUPPORT ON" + "S3_SUPPORT OFF" + "GCS_SUPPORT OFF" + "MYSQL_SUPPORT OFF" + "SQLITE_SUPPORT OFF" + "POSTGRESQL_SUPPORT OFF" + "CUDA_STATIC_RUNTIME ON" + # "ARROW_DEPENDENCY_SOURCE AUTO" + "BLAZINGSQL_ENGINE_USE_ARROW_STATIC ON" + "DISABLE_DEPRECATION_WARNING ON" + "BLAZINGSQL_IO_USE_ARROW_STATIC ON" + "BLAZINGSQL_IO_BUILD_ARROW_ORC OFF" + "BLAZINGSQL_IO_BUILD_ARROW_PYTHON OFF" + "BLAZINGSQL_ENGINE_ENABLE_DEBUG_UTILS OFF" + "BLAZINGSQL_ENGINE_BUILD_ARROW_ORC OFF" + "BLAZINGSQL_ENGINE_BUILD_ARROW_PYTHON OFF" + "BLAZINGSQL_ENGINE_WITH_PYTHON_ERRORS OFF" ) endif() diff --git a/modules/core/cmake/Modules/ConfigureCUDF.cmake b/modules/core/cmake/Modules/ConfigureCUDF.cmake index cb40d6859..81a815b61 100644 --- a/modules/core/cmake/Modules/ConfigureCUDF.cmake +++ b/modules/core/cmake/Modules/ConfigureCUDF.cmake @@ -43,6 +43,7 @@ function(find_and_configure_cudf) _get_update_disconnected_state(cudf ${VERSION} UPDATE_DISCONNECTED) CPMFindPackage(NAME cudf VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE GIT_REPOSITORY https://github.com/rapidsai/cudf.git GIT_TAG branch-${MAJOR_AND_MINOR} GIT_SHALLOW TRUE diff --git a/modules/core/cmake/Modules/ConfigureCUGRAPH.cmake b/modules/core/cmake/Modules/ConfigureCUGRAPH.cmake index bf2a1ef57..4c8531c94 100644 --- a/modules/core/cmake/Modules/ConfigureCUGRAPH.cmake +++ b/modules/core/cmake/Modules/ConfigureCUGRAPH.cmake @@ -36,18 +36,19 @@ function(find_and_configure_cugraph) if(NOT TARGET cugraph::cugraph) _get_major_minor_version(${VERSION} MAJOR_AND_MINOR) _get_update_disconnected_state(cugraph ${VERSION} UPDATE_DISCONNECTED) - CPMFindPackage(NAME cugraph - VERSION ${VERSION} - GIT_REPOSITORY https://github.com/rapidsai/cugraph.git - GIT_TAG branch-${MAJOR_AND_MINOR} - GIT_SHALLOW TRUE + CPMFindPackage(NAME cugraph + VERSION ${VERSION} + GIT_REPOSITORY https://github.com/rapidsai/cugraph.git + GIT_TAG branch-${MAJOR_AND_MINOR} + # EXCLUDE_FROM_ALL TRUE + GIT_SHALLOW TRUE ${UPDATE_DISCONNECTED} - SOURCE_SUBDIR cpp - OPTIONS "BUILD_TESTS OFF" - "BUILD_BENCHMARKS OFF" - "BUILD_SHARED_LIBS OFF" - "CUDA_STATIC_RUNTIME ON" - "BUILD_CUGRAPH_MG_TESTS OFF" + SOURCE_SUBDIR cpp + OPTIONS "BUILD_TESTS OFF" + "BUILD_BENCHMARKS OFF" + "BUILD_SHARED_LIBS OFF" + "CUDA_STATIC_RUNTIME ON" + "BUILD_CUGRAPH_MG_TESTS OFF" ) endif() # Make sure consumers of our libs can see cugraph::cugraph diff --git a/modules/core/cmake/Modules/ConfigureCUGRAPHOPS.cmake b/modules/core/cmake/Modules/ConfigureCUGRAPHOPS.cmake index 56102fffd..06a4ccb2a 100644 --- a/modules/core/cmake/Modules/ConfigureCUGRAPHOPS.cmake +++ b/modules/core/cmake/Modules/ConfigureCUGRAPHOPS.cmake @@ -32,17 +32,18 @@ function(find_and_configure_cugraph_ops) if(NOT TARGET cugraph-ops::cugraph-ops++) _get_major_minor_version(${VERSION} MAJOR_AND_MINOR) _get_update_disconnected_state(cugraph-ops ${VERSION} UPDATE_DISCONNECTED) - CPMFindPackage(NAME cugraph-ops - VERSION ${VERSION} - GIT_REPOSITORY "git@github.com:rapidsai/cugraph-ops.git" - GIT_TAG branch-${MAJOR_AND_MINOR} - GIT_SHALLOW TRUE + CPMFindPackage(NAME cugraph-ops + VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE + GIT_REPOSITORY "git@github.com:rapidsai/cugraph-ops.git" + GIT_TAG branch-${MAJOR_AND_MINOR} + GIT_SHALLOW TRUE ${UPDATE_DISCONNECTED} - SOURCE_SUBDIR cpp - OPTIONS "DETECT_CONDA_ENV OFF" - "BUILD_SHARED_LIBS OFF" - "CUDA_STATIC_RUNTIME ON" - "BUILD_CUGRAPH_OPS_CPP_TESTS OFF") + SOURCE_SUBDIR cpp + OPTIONS "DETECT_CONDA_ENV OFF" + "BUILD_SHARED_LIBS OFF" + "CUDA_STATIC_RUNTIME ON" + "BUILD_CUGRAPH_OPS_CPP_TESTS OFF") endif() # Make sure consumers of our libs can see cugraph-ops::Thrust _fix_cmake_global_defaults(cugraph-ops::Thrust) diff --git a/modules/core/cmake/Modules/ConfigureCUML.cmake b/modules/core/cmake/Modules/ConfigureCUML.cmake index 1cf36b265..e665f3969 100644 --- a/modules/core/cmake/Modules/ConfigureCUML.cmake +++ b/modules/core/cmake/Modules/ConfigureCUML.cmake @@ -36,36 +36,37 @@ function(find_and_configure_cuml) if(NOT TARGET cuml::cuml) _get_major_minor_version(${VERSION} MAJOR_AND_MINOR) _get_update_disconnected_state(cuml ${VERSION} UPDATE_DISCONNECTED) - CPMFindPackage(NAME cuml - VERSION ${VERSION} - GIT_REPOSITORY https://github.com/rapidsai/cuml.git - GIT_TAG branch-${MAJOR_AND_MINOR} - GIT_SHALLOW TRUE + CPMFindPackage(NAME cuml + VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE + GIT_REPOSITORY https://github.com/rapidsai/cuml.git + GIT_TAG branch-${MAJOR_AND_MINOR} + GIT_SHALLOW TRUE ${UPDATE_DISCONNECTED} - SOURCE_SUBDIR cpp - OPTIONS "SINGLEGPU ON" - "WITH_UCX OFF" - "CUDA_STATIC_RUNTIME ON" - "BUILD_TESTS OFF" - "BUILD_BENCHMARKS OFF" - "DISABLE_OPENMP OFF" - "DETECT_CONDA_ENV OFF" - "ENABLE_CUMLPRIMS_MG ON" - "BUILD_SHARED_LIBS OFF" - "BUILD_CUML_MG_TESTS OFF" - "BUILD_CUML_MG_BENCH OFF" - "BUILD_CUML_STD_COMMS OFF" - "BUILD_CUML_MPI_COMMS OFF" - "BUILD_CUML_TESTS OFF" - "BUILD_CUML_BENCH OFF" - "BUILD_PRIMS_TESTS OFF" - "BUILD_CUML_EXAMPLES OFF" - "BUILD_CUML_C_LIBRARY OFF" - "BUILD_CUML_CPP_LIBRARY ON" - "BUILD_CUML_PRIMS_BENCH OFF" - "RAFT_USE_FAISS_STATIC ON" - "CUML_USE_FAISS_STATIC ON" - "CUML_USE_TREELITE_STATIC ON" + SOURCE_SUBDIR cpp + OPTIONS "SINGLEGPU ON" + "WITH_UCX OFF" + "CUDA_STATIC_RUNTIME ON" + "BUILD_TESTS OFF" + "BUILD_BENCHMARKS OFF" + "DISABLE_OPENMP OFF" + "DETECT_CONDA_ENV OFF" + "ENABLE_CUMLPRIMS_MG ON" + "BUILD_SHARED_LIBS OFF" + "BUILD_CUML_MG_TESTS OFF" + "BUILD_CUML_MG_BENCH OFF" + "BUILD_CUML_STD_COMMS OFF" + "BUILD_CUML_MPI_COMMS OFF" + "BUILD_CUML_TESTS OFF" + "BUILD_CUML_BENCH OFF" + "BUILD_PRIMS_TESTS OFF" + "BUILD_CUML_EXAMPLES OFF" + "BUILD_CUML_C_LIBRARY OFF" + "BUILD_CUML_CPP_LIBRARY ON" + "BUILD_CUML_PRIMS_BENCH OFF" + "RAFT_USE_FAISS_STATIC ON" + "CUML_USE_FAISS_STATIC ON" + "CUML_USE_TREELITE_STATIC ON" ) endif() # Make sure consumers of our libs can see cuml::cuml++ diff --git a/modules/core/cmake/Modules/ConfigureCUMLPRIMS.cmake b/modules/core/cmake/Modules/ConfigureCUMLPRIMS.cmake index b1d4f7d0f..b3c8c4fb2 100644 --- a/modules/core/cmake/Modules/ConfigureCUMLPRIMS.cmake +++ b/modules/core/cmake/Modules/ConfigureCUMLPRIMS.cmake @@ -30,17 +30,18 @@ function(find_and_configure_cumlprims_mg) if(NOT TARGET cumlprims_mg::cumlprims_mg) _get_major_minor_version(${VERSION} MAJOR_AND_MINOR) _get_update_disconnected_state(cumlprims_mg ${VERSION} UPDATE_DISCONNECTED) - CPMFindPackage(NAME cumlprims_mg - VERSION ${VERSION} - GIT_REPOSITORY "git@github.com:rapidsai/cumlprims_mg.git" - GIT_TAG branch-${MAJOR_AND_MINOR} - GIT_SHALLOW TRUE + CPMFindPackage(NAME cumlprims_mg + VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE + GIT_REPOSITORY "git@github.com:rapidsai/cumlprims_mg.git" + GIT_TAG branch-${MAJOR_AND_MINOR} + GIT_SHALLOW TRUE ${UPDATE_DISCONNECTED} - SOURCE_SUBDIR cpp - OPTIONS "BUILD_TESTS OFF" - "BUILD_BENCHMARKS OFF" - "DETECT_CONDA_ENV OFF" - "BUILD_SHARED_LIBS OFF") + SOURCE_SUBDIR cpp + OPTIONS "BUILD_TESTS OFF" + "BUILD_BENCHMARKS OFF" + "DETECT_CONDA_ENV OFF" + "BUILD_SHARED_LIBS OFF") endif() # Make sure consumers of our libs can see cumlprims_mg::cumlprims_mg _fix_cmake_global_defaults(cumlprims_mg::cumlprims_mg) diff --git a/modules/core/cmake/Modules/ConfigureCUSPATIAL.cmake b/modules/core/cmake/Modules/ConfigureCUSPATIAL.cmake index 8997f629a..51bade459 100644 --- a/modules/core/cmake/Modules/ConfigureCUSPATIAL.cmake +++ b/modules/core/cmake/Modules/ConfigureCUSPATIAL.cmake @@ -36,19 +36,20 @@ function(find_and_configure_cuspatial) if(NOT TARGET cuspatial::cuspatial) _get_major_minor_version(${VERSION} MAJOR_AND_MINOR) _get_update_disconnected_state(cuspatial ${VERSION} UPDATE_DISCONNECTED) - CPMFindPackage(NAME cuspatial - VERSION ${VERSION} - GIT_REPOSITORY https://github.com/rapidsai/cuspatial.git - GIT_TAG branch-${MAJOR_AND_MINOR} - GIT_SHALLOW TRUE + CPMFindPackage(NAME cuspatial + VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE + GIT_REPOSITORY https://github.com/rapidsai/cuspatial.git + GIT_TAG branch-${MAJOR_AND_MINOR} + GIT_SHALLOW TRUE ${UPDATE_DISCONNECTED} - SOURCE_SUBDIR cpp - OPTIONS "BUILD_TESTS OFF" - "BUILD_BENCHMARKS OFF" - "BUILD_SHARED_LIBS OFF" - "CUDA_STATIC_RUNTIME ON" - "PER_THREAD_DEFAULT_STREAM ON" - "DISABLE_DEPRECATION_WARNING ON") + SOURCE_SUBDIR cpp + OPTIONS "BUILD_TESTS OFF" + "BUILD_BENCHMARKS OFF" + "BUILD_SHARED_LIBS OFF" + "CUDA_STATIC_RUNTIME ON" + "PER_THREAD_DEFAULT_STREAM ON" + "DISABLE_DEPRECATION_WARNING ON") endif() # Make sure consumers of our libs can see cuspatial::cuspatial _fix_cmake_global_defaults(cuspatial::cuspatial) diff --git a/modules/core/cmake/Modules/ConfigureRAFT.cmake b/modules/core/cmake/Modules/ConfigureRAFT.cmake index c37bb156c..62817e1c6 100644 --- a/modules/core/cmake/Modules/ConfigureRAFT.cmake +++ b/modules/core/cmake/Modules/ConfigureRAFT.cmake @@ -36,6 +36,7 @@ function(find_and_configure_raft) _get_update_disconnected_state(raft ${VERSION} UPDATE_DISCONNECTED) CPMFindPackage(NAME raft VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE GIT_REPOSITORY https://github.com/rapidsai/raft.git GIT_TAG branch-${MAJOR_AND_MINOR} GIT_SHALLOW TRUE diff --git a/modules/core/cmake/Modules/ConfigureRMM.cmake b/modules/core/cmake/Modules/ConfigureRMM.cmake index 9cd73af02..ebfe51ef5 100644 --- a/modules/core/cmake/Modules/ConfigureRMM.cmake +++ b/modules/core/cmake/Modules/ConfigureRMM.cmake @@ -30,15 +30,16 @@ function(find_and_configure_rmm) if(NOT TARGET rmm::rmm) _get_major_minor_version(${VERSION} MAJOR_AND_MINOR) _get_update_disconnected_state(rmm ${VERSION} UPDATE_DISCONNECTED) - CPMFindPackage(NAME rmm - VERSION ${VERSION} - GIT_REPOSITORY https://github.com/rapidsai/rmm.git - GIT_TAG branch-${MAJOR_AND_MINOR} - GIT_SHALLOW TRUE + CPMFindPackage(NAME rmm + # EXCLUDE_FROM_ALL TRUE + VERSION ${VERSION} + GIT_REPOSITORY https://github.com/rapidsai/rmm.git + GIT_TAG branch-${MAJOR_AND_MINOR} + GIT_SHALLOW TRUE ${UPDATE_DISCONNECTED} - OPTIONS "BUILD_TESTS OFF" - "BUILD_BENCHMARKS OFF" - "DISABLE_DEPRECATION_WARNING ${DISABLE_DEPRECATION_WARNINGS}") + OPTIONS "BUILD_TESTS OFF" + "BUILD_BENCHMARKS OFF" + "DISABLE_DEPRECATION_WARNING ${DISABLE_DEPRECATION_WARNINGS}") endif() # Make sure consumers of our libs can see rmm::rmm _fix_cmake_global_defaults(rmm::rmm) diff --git a/modules/core/cmake/Modules/ConfigureThrust.cmake b/modules/core/cmake/Modules/ConfigureThrust.cmake index 9c0963798..97a419114 100644 --- a/modules/core/cmake/Modules/ConfigureThrust.cmake +++ b/modules/core/cmake/Modules/ConfigureThrust.cmake @@ -21,13 +21,14 @@ function(find_and_configure_thrust VERSION) find_package(Thrust "${VERSION}.0" EXACT QUIET) if(NOT Thrust_FOUND) _get_update_disconnected_state(Thrust ${VERSION} UPDATE_DISCONNECTED) - CPMAddPackage(NAME Thrust - VERSION ${VERSION} - GIT_REPOSITORY https://github.com/NVIDIA/thrust.git - GIT_TAG ${VERSION} - GIT_SHALLOW TRUE + CPMAddPackage(NAME Thrust + VERSION ${VERSION} + # EXCLUDE_FROM_ALL TRUE + GIT_REPOSITORY https://github.com/NVIDIA/thrust.git + GIT_TAG ${VERSION} + GIT_SHALLOW TRUE ${UPDATE_DISCONNECTED} - PATCH_COMMAND patch --reject-file=- -p1 -N < ${CMAKE_CURRENT_LIST_DIR}/thrust.patch || true + PATCH_COMMAND patch --reject-file=- -p1 -N < ${CMAKE_CURRENT_LIST_DIR}/thrust.patch || true ) endif() set(CPM_THRUST_CURRENT_VERSION ${VERSION} CACHE STRING "version of thrust we checked out" FORCE) diff --git a/modules/core/cmake/Modules/link_utils.cmake b/modules/core/cmake/Modules/link_utils.cmake index 3c2516879..c7fe2f459 100644 --- a/modules/core/cmake/Modules/link_utils.cmake +++ b/modules/core/cmake/Modules/link_utils.cmake @@ -27,13 +27,17 @@ function(_statically_link_cuda_toolkit_libs target) get_target_property(_link_libs ${target} INTERFACE_LINK_LIBRARIES) - foreach(_lib IN ITEMS blas cublas cublasLt cudart cufft cufft cufftw cupti curand + foreach(_lib IN ITEMS blas cublas cublasLt cudart cufft cufftw cupti curand cusolver cusolver_lapack cusolver_metis cusparse lapack nppc nppial nppicc nppicom nppidei nppif nppig nppim nppist nppisu nppitc npps nvgraph) - string(REPLACE "CUDA::${_lib};" "CUDA::${_lib}_static;" _link_libs "${_link_libs}") - string(REPLACE "CUDA::${_lib}>" "CUDA::${_lib}_static>" _link_libs "${_link_libs}") - string(REPLACE "CUDA::${_lib}\"" "CUDA::${_lib}_static\"" _link_libs "${_link_libs}") + set(_suf "_static") + if(_lib STREQUAL "cufft") + set(_suf "_static_nocallback") + endif() + string(REPLACE "CUDA::${_lib};" "CUDA::${_lib}${_suf};" _link_libs "${_link_libs}") + string(REPLACE "CUDA::${_lib}>" "CUDA::${_lib}${_suf}>" _link_libs "${_link_libs}") + string(REPLACE "CUDA::${_lib}\"" "CUDA::${_lib}${_suf}\"" _link_libs "${_link_libs}") endforeach() set_target_properties(${target} PROPERTIES INTERFACE_LINK_LIBRARIES "${_link_libs}") diff --git a/modules/cuda/package.json b/modules/cuda/package.json index 3c65978c1..c993877dc 100644 --- a/modules/cuda/package.json +++ b/modules/cuda/package.json @@ -43,7 +43,7 @@ "tsc:clean": "rimraf build/js", "tsc:build": "yarn tsc:clean && tsc -p ./tsconfig.json", "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w", - "dev:cpack": "cd build/Release && cpack -G TGZ >/dev/null && echo \"$(realpath -m ./rapidsai_*-*-*.tar.gz)\"" + "dev:cpack:enabled": "echo $npm_package_name" }, "dependencies": { "@rapidsai/core": "~22.8.1" diff --git a/modules/cudf/package.json b/modules/cudf/package.json index d87f57d57..39319b806 100644 --- a/modules/cudf/package.json +++ b/modules/cudf/package.json @@ -43,12 +43,12 @@ "tsc:clean": "rimraf build/js", "tsc:build": "yarn tsc:clean && tsc -p ./tsconfig.json", "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w", - "dev:cpack": "cd build/Release && cpack -G TGZ >/dev/null && echo \"$(realpath -m ./rapidsai_*-*-*.tar.gz)\"" + "dev:cpack:enabled": "echo $npm_package_name" }, "dependencies": { "@rapidsai/cuda": "~22.8.1", "@rapidsai/rmm": "~22.8.1", - "apache-arrow": "^8.0.0" + "apache-arrow": "^9.0.0" }, "devDependencies": { "ix": "4.4.1" diff --git a/modules/cugraph/package.json b/modules/cugraph/package.json index 5fa8c652a..1be298b2d 100644 --- a/modules/cugraph/package.json +++ b/modules/cugraph/package.json @@ -43,7 +43,7 @@ "tsc:clean": "rimraf build/js", "tsc:build": "yarn tsc:clean && tsc -p ./tsconfig.json", "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w", - "dev:cpack": "cd build/Release && cpack -G TGZ >/dev/null && echo \"$(realpath -m ./rapidsai_*-*-*.tar.gz)\"" + "dev:cpack:enabled": "echo $npm_package_name" }, "dependencies": { "@rapidsai/cudf": "~22.8.1" diff --git a/modules/cuml/package.json b/modules/cuml/package.json index bad3b179f..8be52094a 100644 --- a/modules/cuml/package.json +++ b/modules/cuml/package.json @@ -43,7 +43,7 @@ "tsc:clean": "rimraf build/js", "tsc:build": "yarn tsc:clean && tsc -p ./tsconfig.json", "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w", - "dev:cpack": "cd build/Release && cpack -G TGZ >/dev/null && echo \"$(realpath -m ./rapidsai_*-*-*.tar.gz)\"" + "dev:cpack:enabled": "echo $npm_package_name" }, "dependencies": { "@rapidsai/cudf": "~22.8.1" diff --git a/modules/cuspatial/package.json b/modules/cuspatial/package.json index 72b38a290..22d0c1a45 100644 --- a/modules/cuspatial/package.json +++ b/modules/cuspatial/package.json @@ -43,7 +43,7 @@ "tsc:clean": "rimraf build/js", "tsc:build": "yarn tsc:clean && tsc -p ./tsconfig.json", "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w", - "dev:cpack": "cd build/Release && cpack -G TGZ >/dev/null && echo \"$(realpath -m ./rapidsai_*-*-*.tar.gz)\"" + "dev:cpack:enabled": "echo $npm_package_name" }, "dependencies": { "@rapidsai/cudf": "~22.8.1" diff --git a/modules/deck.gl/package.json b/modules/deck.gl/package.json index 61e23153e..3cd2f3f29 100644 --- a/modules/deck.gl/package.json +++ b/modules/deck.gl/package.json @@ -29,15 +29,15 @@ "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@luma.gl/core": "8.5.10", - "@luma.gl/engine": "8.5.10", - "@luma.gl/webgl": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@luma.gl/core": "8.5.16", + "@luma.gl/engine": "8.5.16", + "@luma.gl/webgl": "8.5.16", "@rapidsai/core": "~22.8.1", "@rapidsai/cuda": "~22.8.1", "@rapidsai/cudf": "~22.8.1", - "mjolnir.js": "2.6.0" + "mjolnir.js": "2.7.1" }, "files": [ "build", diff --git a/modules/demo/.vscode/launch.json b/modules/demo/.vscode/launch.json index f03ad6558..a432ea798 100644 --- a/modules/demo/.vscode/launch.json +++ b/modules/demo/.vscode/launch.json @@ -38,10 +38,12 @@ "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "skipFiles": [ + "**/.vscode/server/**", // "**/node_modules/**", - // "/**", + "/**", // "**/node_modules/esm/**", "**/node_modules/debug/**", + "**/node_modules/core-js/**", "**/node_modules/mjolnir.js/**", "/internal/buffer", "/internal/fs/utils", diff --git a/modules/demo/api-server/package.json b/modules/demo/api-server/package.json index 062670c87..2ceb95577 100644 --- a/modules/demo/api-server/package.json +++ b/modules/demo/api-server/package.json @@ -36,5 +36,14 @@ "devDependencies": { "path": "0.12.7", "tap": "^16.1.0" - } + }, + "files": [ + "util", + "routes", + "plugins", + "app.js", + "index.js", + "README.md", + "package.json" + ] } diff --git a/modules/demo/client-server/.gitignore b/modules/demo/client-server/.gitignore index 20fccdd4b..3a093f090 100644 --- a/modules/demo/client-server/.gitignore +++ b/modules/demo/client-server/.gitignore @@ -28,3 +28,5 @@ yarn-error.log* .env.development.local .env.test.local .env.production.local + +!public/data/SOURCES.md diff --git a/modules/demo/client-server/components/charts/deck.geo.js b/modules/demo/client-server/components/charts/deck.geo.jsx similarity index 55% rename from modules/demo/client-server/components/charts/deck.geo.js rename to modules/demo/client-server/components/charts/deck.geo.jsx index 5180cedfd..ad1529fc2 100644 --- a/modules/demo/client-server/components/charts/deck.geo.js +++ b/modules/demo/client-server/components/charts/deck.geo.jsx @@ -12,25 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. -import {BASEMAP} from '@deck.gl/carto'; -import {GeoJsonLayer} from '@deck.gl/layers'; +import { BASEMAP } from '@deck.gl/carto'; +import { GeoJsonLayer } from '@deck.gl/layers'; import DeckGL from '@deck.gl/react'; -import {tableFromIPC} from 'apache-arrow'; -import React from 'react'; -import {Button, Card} from 'react-bootstrap'; -import {StaticMap} from 'react-map-gl'; +import { tableFromIPC } from 'apache-arrow'; +import * as React from 'react'; +import { Button, Card } from 'react-bootstrap'; +import { Map } from 'react-map-gl'; -import {generateLegend} from '../../components/utils/legend'; +import { generateLegend } from '../../components/utils/legend'; export default class CustomChoropleth extends React.Component { constructor(props) { super(props); - this.state = {gjson: [], data: [], clicked: false, current_query: this.props.getquery()}; + this.state = { gjson: [], data: [], clicked: false, current_query: this.props.getquery() }; this._onHover = this._onHover.bind(this); this._onClick = this._onClick.bind(this); this._renderTooltip = this._renderTooltip.bind(this); - this._getFillColor = this._getFillColor.bind(this); - this._reset = this._reset.bind(this); + this._getFillColor = this._getFillColor.bind(this); + this._reset = this._reset.bind(this); } _fillColor() { @@ -44,14 +44,14 @@ export default class CustomChoropleth extends React.Component { } componentDidMount() { - const {geojsonurl = undefined} = this.props; + const { geojsonurl = undefined } = this.props; if (geojsonurl) { fetch(geojsonurl) .then(response => response.json()) - .then(({features}) => { this.setState({gjson: features}); }) + .then(({ features }) => { this.setState({ gjson: features }); }) .then(() => this._updateLayerData()) - .then((data) => this.setState({data: data})) + .then((data) => this.setState({ data: data })) .catch((e) => console.log(e)); } generateLegend( @@ -74,7 +74,7 @@ export default class CustomChoropleth extends React.Component { this.setState(updateState); // update data this._updateLayerData() - .then((data) => this.setState({data: data})) + .then((data) => this.setState({ data: data })) .catch((e) => console.log(e)); } } @@ -82,15 +82,14 @@ export default class CustomChoropleth extends React.Component { _generateApiUrl() { const { dataset = undefined, - by = undefined, - agg = undefined, + by = undefined, + agg = undefined, columns = undefined // return all columns } = this.props; if (!dataset || !by || !agg) { return null; } const query = JSON.stringify(this.props.getquery()); - return `http://localhost:3000/api/${dataset}/groupby/${by}/${agg}?columns=${ - columns}&query_dict=${query}`; + return `http://localhost:3000/api/${dataset}/groupby/${by}/${agg}?columns=${columns}&query_dict=${query}`; } /** @@ -126,14 +125,14 @@ export default class CustomChoropleth extends React.Component { * @returns geoJSON object consumable by DeckGL GeoJSONLayer */ _convertToGeoJSON(table, by, properties, geojsonProp) { - const data = this._transformData(table.toArray(), by, properties); + const data = this._transformData(table.toArray(), by, properties); let tempjson = []; this.state.gjson.forEach((val) => { if (val.properties[geojsonProp] in data) { tempjson.push({ type: val.type, geometry: val.geometry, - properties: {...val.properties, ...data[val.properties[geojsonProp]]} + properties: { ...val.properties, ...data[val.properties[geojsonProp]] } }) } }); @@ -144,12 +143,12 @@ export default class CustomChoropleth extends React.Component { const url = this._generateApiUrl(); // `/uber/tracts/groupby/sourceid/mean?columns=travel_time`; if (!url) { return null; } - const table = await tableFromIPC(fetch(url, {method: 'GET'})); + const table = await tableFromIPC(fetch(url, { method: 'GET' })); return this._convertToGeoJSON(table, this.props.by, this.props.columns, this.props.geojsonprop); } _getFillColor(f) { - const x = f?.properties[this._fillColor()]; + const x = f?.properties[this._fillColor()]; const id = f?.properties[this.props.geojsonprop]; if (x !== undefined && id !== undefined) { if (this.state.clicked !== false) { @@ -164,89 +163,91 @@ export default class CustomChoropleth extends React.Component { } } - _onHover({x, y, object}) { this.setState({x, y, hoveredRegion: object}); } + _onHover({ x, y, object }) { this.setState({ x, y, hoveredRegion: object }); } _renderTooltip() { - const {x, y, hoveredRegion} = this.state; - return ( - hoveredRegion && ( -
- { - Object.keys(hoveredRegion.properties).map((value, idx) => { - return ` + const { x, y, hoveredRegion } = this.state; + return ( + hoveredRegion && ( +
+ { + Object.keys(hoveredRegion.properties).map((value, idx) => { + return ` ${value}: ${hoveredRegion.properties[[value]]} `; - }) - } - {/* {hoveredRegion.properties.DISPLAY_NAME}
+ }) + } + {/* {hoveredRegion.properties.DISPLAY_NAME}
Mean Travel Time: {hoveredRegion.properties.travel_time} */} -
) - ); - } +
) + ); + } - _onClick(f) { - const id = f?.object?.properties[this.props.geojsonprop]; - if (this.state.clicked !== parseInt(id)) { - this.props.updatequery({ [this.props.by]: parseInt(id) }); - this.setState({ clicked: parseInt(id) }); - } else { - //double click deselects - this._reset(); + _onClick(f) { + const id = f?.object?.properties[this.props.geojsonprop]; + if (this.state.clicked !== parseInt(id)) { + this.props.updatequery({ [this.props.by]: parseInt(id) }); + this.setState({ clicked: parseInt(id) }); + } else { + //double click deselects + this._reset(); + } } -} -_renderLayers() { - const {data} = this.state; - - return [new GeoJsonLayer({ - data, - highlightColor: [200, 200, 200, 200], - autoHighlight: true, - wireframe: false, - pickable: true, - stroked: false, // only on extrude false - filled: true, - extruded: true, - lineWidthScale: 10, // only if extrude false - lineWidthMinPixels: 1, - getRadius: 100, // only if points - getLineWidth: 10, - opacity: 50, - getFillColor: this._getFillColor, - getElevation: f => f?.properties[this._elevation()] * 5, - onClick: this._onClick, - onHover: this._onHover, - getLineColor: [0, 188, 212, 100], - updateTriggers: - {getFillColor: [this.state.clicked, this.state.data], getElevation: [this.state.data]} - })] -} + _renderLayers() { + const { data } = this.state; + + return [new GeoJsonLayer({ + data, + highlightColor: [200, 200, 200, 200], + autoHighlight: true, + wireframe: false, + pickable: true, + stroked: false, // only on extrude false + filled: true, + extruded: true, + lineWidthScale: 10, // only if extrude false + lineWidthMinPixels: 1, + getPointRadius: 100, // only if points + getLineWidth: 10, + opacity: 50, + getFillColor: this._getFillColor, + getElevation: f => f?.properties[this._elevation()] * 5, + onClick: this._onClick, + onHover: this._onHover, + getLineColor: [0, 188, 212, 100], + updateTriggers: + { getFillColor: [this.state.clicked, this.state.data], getElevation: [this.state.data] } + })] + } -_reset() { - this.props.updatequery({[this.props.by]: undefined}); - this.setState({clicked: false}) -} + _reset() { + this.props.updatequery({ [this.props.by]: undefined }); + this.setState({ clicked: false }) + } -render() { - return ( - - Trip {this.props.by} aggregated by {this.props.agg} - - - - - - - {this._renderTooltip} - - - - ) - } + render() { + return ( + + Trip {this.props.by} aggregated by {this.props.agg} + + + + + + + {this._renderTooltip} + + + + ) + } } diff --git a/modules/demo/client-server/components/charts/echarts.bar.jsx b/modules/demo/client-server/components/charts/echarts.bar.jsx index f2fe9ce1b..23d3fd9f7 100644 --- a/modules/demo/client-server/components/charts/echarts.bar.jsx +++ b/modules/demo/client-server/components/charts/echarts.bar.jsx @@ -15,7 +15,7 @@ import { tableFromIPC } from 'apache-arrow'; import * as d3 from 'd3'; import ReactECharts from 'echarts-for-react'; -import React from 'react'; +import * as React from 'react'; import { Card } from 'react-bootstrap'; export default class CustomBar extends React.Component { diff --git a/modules/demo/client-server/components/charts/indicator.js b/modules/demo/client-server/components/charts/indicator.jsx similarity index 76% rename from modules/demo/client-server/components/charts/indicator.js rename to modules/demo/client-server/components/charts/indicator.jsx index 33aa9c3cf..072f9a502 100644 --- a/modules/demo/client-server/components/charts/indicator.js +++ b/modules/demo/client-server/components/charts/indicator.jsx @@ -12,17 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; -import * as d3 from "d3"; +import * as d3 from 'd3'; +import * as React from 'react'; import { Card } from 'react-bootstrap'; export default class Indicator extends React.Component { constructor(props) { super(props); - this.state = { - current_query: this.props.getquery(), - size: 0 - } + this.state = { current_query: this.props.getquery(), size: 0 } } componentDidMount() { @@ -32,7 +29,7 @@ export default class Indicator extends React.Component { } componentDidUpdate() { - // if parent componet `getquery()` is updated, and is not the same as state.current_query, + // if parent componet `getquery()` is updated, and is not the same as state.current_query, // refetch the data with current query if (this.props.getquery() !== this.state.current_query) { // update state @@ -55,21 +52,21 @@ export default class Indicator extends React.Component { } async _updateSize() { - const url = this._generateApiUrl(); // `/uber/tracts/groupby/sourceid/mean?columns=travel_time`; + const url = + this._generateApiUrl(); // `/uber/tracts/groupby/sourceid/mean?columns=travel_time`; if (!url) { return null; } - const size = await fetch(url, { method: 'GET' }).then((res) => res.json()).then(data => { return data }); + const size = + await fetch(url, { method: 'GET' }).then((res) => res.json()).then(data => { return data }); return size; } render() { return ( - - Data Points Selected - + + Data Points Selected {this.state.size} - - ) + ) } } diff --git a/modules/demo/client-server/next.config.js b/modules/demo/client-server/next.config.js index 7639e903b..00f911de1 100644 --- a/modules/demo/client-server/next.config.js +++ b/modules/demo/client-server/next.config.js @@ -6,6 +6,7 @@ module.exports = { // Note: we provide webpack above so you should not `require` it // Perform customizations to webpack config // config.plugins.push(new webpack.IgnorePlugin({ resourceRegExp: /.*?\.node/ig })) + config.externals.push({'mapbox-gl': 'maplibre-gl'}); if (isServer) { config.externals.push({ '@rapidsai/core': '@rapidsai/core', diff --git a/modules/demo/client-server/package.json b/modules/demo/client-server/package.json index 6ea115bc6..b9ed6d256 100644 --- a/modules/demo/client-server/package.json +++ b/modules/demo/client-server/package.json @@ -13,26 +13,30 @@ "start": "next build && next start" }, "dependencies": { - "@deck.gl/carto": "8.6.6", - "@deck.gl/core": "8.6.6", - "@deck.gl/geo-layers": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/carto": "8.8.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/geo-layers": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@fortawesome/fontawesome-svg-core": "1.2.35", "@fortawesome/free-solid-svg-icons": "5.15.3", "@fortawesome/react-fontawesome": "0.1.14", - "apache-arrow": "^8.0.0", + "apache-arrow": "^9.0.0", "bootstrap": "4.6.0", "d3": "6.6.2", "echarts": "5.0.2", "echarts-for-react": "3.0.1", - "mjolnir.js": "2.6.0", + "maplibre-gl": "2.4.0", + "mjolnir.js": "2.7.1", "next": "11.1.3", "react": "17.0.2", "react-bootstrap": "1.6.1", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" + }, + "devDependencies": { + "@babel/core": "7.15.5" }, "files": [ "pages", diff --git a/modules/demo/client-server/pages/dashboard/mortgage.js b/modules/demo/client-server/pages/dashboard/mortgage.jsx similarity index 64% rename from modules/demo/client-server/pages/dashboard/mortgage.js rename to modules/demo/client-server/pages/dashboard/mortgage.jsx index d18841cdf..1f0103b22 100644 --- a/modules/demo/client-server/pages/dashboard/mortgage.js +++ b/modules/demo/client-server/pages/dashboard/mortgage.jsx @@ -12,14 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. +import * as d3 from 'd3'; import Head from 'next/head'; -import React from 'react'; -import CustomChoropleth from '../../components/charts/deck.geo'; -import CustomBar from '../../components/charts/echarts.bar'; -import Indicator from '../../components/charts/indicator'; -import { Row, Col, Container } from 'react-bootstrap'; +import * as React from 'react'; +import { Col, Container, Row } from 'react-bootstrap'; + +import CustomChoropleth from '../../components/charts/deck.geo.jsx'; +import CustomBar from '../../components/charts/echarts.bar.jsx'; +import Indicator from '../../components/charts/indicator.jsx'; import Layout from '../../components/layout'; -import * as d3 from "d3"; // color scale for choropleth charts const COLOR_SCALE = [ @@ -35,34 +36,24 @@ const thresholdScale = export default class MortgageDashboard extends React.Component { constructor(props) { super(props); - this.state = { - query_dict: {} - } + this.state = { query_dict: {} }; this._getQuery = this._getQuery.bind(this); this._resetQuery = this._resetQuery.bind(this); this._updateQuery = this._updateQuery.bind(this); } - _getQuery() { - return this.state.query_dict; - } + _getQuery() { return this.state.query_dict; } - _resetQuery() { - this.setState({ - query_dict: {} - }); - } + _resetQuery() { this.setState({ query_dict: {} }); } _updateQuery(query_dict) { - query_dict = { ...this.state.query_dict, ...query_dict } - this.setState({ - query_dict: query_dict - }) + query_dict = { ...this.state.query_dict, ...query_dict }; + this.setState({ query_dict: query_dict }) } render() { return ( - + Fannie Mae Mortgage Dashboard @@ -71,31 +62,30 @@ export default class MortgageDashboard extends React.Component { + updatequery={this._updateQuery} /> + className='mb-3' + /> + /> @@ -107,19 +97,26 @@ export default class MortgageDashboard extends React.Component { fillcolor="delinquency_12_prediction" elevation="current_actual_upb" geojsonurl="https://raw.githubusercontent.com/rapidsai/cuxfilter/GTC-2018-mortgage-visualization/javascript/demos/GTC%20demo/src/data/zip3-ms-rhs-lessprops.json" - geojsonprop="ZIP3" - initialviewstate={{ longitude: -101, latitude: 37, zoom: 3, maxZoom: 16, pitch: 0, bearing: 0 }} + geojsonprop='ZIP3' + initialviewstate={{ + longitude: -101, + latitude: 37, + zoom: 3, + maxZoom: 16, + pitch: 0, + bearing: 0 + }} getquery={this._getQuery} updatequery={this._updateQuery} thresholdScale={thresholdScale} legend_props={{ - "0.100": '0 to 0.196', - "0.197": '0.196 to 0.198', - "0.199": '0.198 to 0.200', - "0.201": '0.200 to 0.202', - "0.203": '0.202 to 0.2+', + '0.100': '0 to 0.196', + '0.197': '0.196 to 0.198', + '0.199': '0.198 to 0.200', + '0.201': '0.200 to 0.202', + '0.203': '0.202 to 0.2+' }} - > + /> diff --git a/modules/demo/client-server/pages/dashboard/uber.js b/modules/demo/client-server/pages/dashboard/uber.js deleted file mode 100644 index 489cc25d0..000000000 --- a/modules/demo/client-server/pages/dashboard/uber.js +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. -// -// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 -// -// 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. - -import Head from 'next/head'; -import React from 'react'; -import CustomChoropleth from '../../components/charts/deck.geo'; -import CustomBar from '../../components/charts/echarts.bar'; -import Indicator from '../../components/charts/indicator'; -import { Row, Col, Container } from 'react-bootstrap'; -import Layout from '../../components/layout'; -import * as d3 from "d3"; - -// color scale for choropleth charts -const COLOR_SCALE = [ - [49, 130, 189, 100], - [107, 174, 214, 100], - [123, 142, 216, 100], - [226, 103, 152, 100], - [255, 0, 104, 100], -]; -const thresholdScale = - d3.scaleThreshold().domain([0, 400, 800, 1000, 2000, 4000]).range(COLOR_SCALE); - -export default class UberDashboard extends React.Component { - constructor(props) { - super(props); - this.state = { - query_dict: {} - } - this._getQuery = this._getQuery.bind(this); - this._resetQuery = this._resetQuery.bind(this); - this._updateQuery = this._updateQuery.bind(this); - } - - _getQuery() { - return this.state.query_dict; - } - - _resetQuery() { - this.setState({ - query_dict: {} - }); - } - - _updateQuery(query_dict) { - query_dict = { ...this.state.query_dict, ...query_dict } - this.setState({ - query_dict: query_dict - }) - } - - render() { - return ( - - - Uber Dashboard - - - - - - - - - k + 1)} - className="mb-3" - > - - - - - - - - - - - - - - - - - - - ) - } -} diff --git a/modules/demo/client-server/pages/dashboard/uber.jsx b/modules/demo/client-server/pages/dashboard/uber.jsx new file mode 100644 index 000000000..73c6bd732 --- /dev/null +++ b/modules/demo/client-server/pages/dashboard/uber.jsx @@ -0,0 +1,156 @@ +// Copyright (c) 2021, NVIDIA CORPORATION. +// +// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +// +// 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. + +import * as d3 from 'd3'; +import Head from 'next/head'; +import * as React from 'react'; +import { Col, Container, Row } from 'react-bootstrap'; + +import CustomChoropleth from '../../components/charts/deck.geo.jsx'; +import CustomBar from '../../components/charts/echarts.bar.jsx'; +import Indicator from '../../components/charts/indicator.jsx'; +import Layout from '../../components/layout'; + +// color scale for choropleth charts +const COLOR_SCALE = [ + [49, 130, 189, 100], + [107, 174, 214, 100], + [123, 142, 216, 100], + [226, 103, 152, 100], + [255, 0, 104, 100], +]; +const thresholdScale = + d3.scaleThreshold().domain([0, 400, 800, 1000, 2000, 4000]).range(COLOR_SCALE); + +export default class UberDashboard extends React.Component { + constructor(props) { + super(props); + this.state = { query_dict: {} }; + this._getQuery = this._getQuery.bind(this); + this._resetQuery = this._resetQuery.bind(this); + this._updateQuery = this._updateQuery.bind(this); + } + + _getQuery() { return this.state.query_dict; } + + _resetQuery() { this.setState({ query_dict: {} }); } + + _updateQuery(query_dict) { + query_dict = { ...this.state.query_dict, ...query_dict }; + this.setState({ query_dict: query_dict }) + } + + render() { + return ( + + + Uber Dashboard + + + + + + + + + k + 1)} + className='mb-3' + /> + + + + + + + + + + + + + + + + + + + ); + } +} diff --git a/modules/demo/client-server/public/data/SOURCES.md b/modules/demo/client-server/public/data/SOURCES.md new file mode 100644 index 000000000..99e116756 --- /dev/null +++ b/modules/demo/client-server/public/data/SOURCES.md @@ -0,0 +1,9 @@ +# Notebook demo data sources + +* [US_Accidents_Dec20.csv](https://www.kaggle.com/sobhanmoosavi/us-accidents?select=US_Accidents_Dec20.csv) +* [san_francisco_censustracts.geojson](https://movement.uber.com/explore/san_francisco/travel-times/query?lang=en-US&si=1277&ti=&ag=censustracts&dt[tpb]=ALL_DAY&dt[wd;]=1,2,3,4,5,6,7&dt[dr][sd]=2020-03-01&dt[dr][ed]=2020-03-31&cd=&sa;=&sdn=&lat.=37.7749295&lng.=-122.4547777&z.=12) + + `Download data > Geo Boundaries > SAN_FRANCISCO_CENSUSTRACTS.JSON` +* [san_fran_uber.csv](https://movement.uber.com/explore/san_francisco/travel-times/query?lang=en-US&si=1277&ti=&ag=censustracts&dt[tpb]=ALL_DAY&dt[wd;]=1,2,3,4,5,6,7&dt[dr][sd]=2020-03-01&dt[dr][ed]=2020-03-31&cd=&sa;=&sdn=&lat.=37.7749295&lng.=-122.4547777&z.=12) + + `Download data > All data > 2020 Quarter > Travel Times By Date By Hour Buckets (All Days) (1.7gb)` diff --git a/modules/demo/deck/3d-heatmap/app.js b/modules/demo/deck/3d-heatmap/app.js deleted file mode 100644 index 5338b9071..000000000 --- a/modules/demo/deck/3d-heatmap/app.js +++ /dev/null @@ -1,125 +0,0 @@ -import React, { Component } from 'react'; -import { StaticMap } from 'react-map-gl'; -import { AmbientLight, PointLight, LightingEffect } from '@deck.gl/core'; -import { HexagonLayer } from '@deck.gl/aggregation-layers'; -import DeckGL from '@deck.gl/react'; - -// Set your mapbox token here -const MAPBOX_TOKEN = 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line - -// Source data CSV -const DATA_URL = - 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv'; // eslint-disable-line - -const ambientLight = new AmbientLight({ - color: [255, 255, 255], - intensity: 1.0 -}); - -const pointLight1 = new PointLight({ - color: [255, 255, 255], - intensity: 0.8, - position: [-0.144528, 49.739968, 80000] -}); - -const pointLight2 = new PointLight({ - color: [255, 255, 255], - intensity: 0.8, - position: [-3.807751, 54.104682, 8000] -}); - -const lightingEffect = new LightingEffect({ ambientLight, pointLight1, pointLight2 }); - -const material = { - ambient: 0.64, - diffuse: 0.6, - shininess: 32, - specularColor: [51, 51, 51] -}; - -const INITIAL_VIEW_STATE = { - longitude: -1.4157267858730052, - latitude: 52.232395363869415, - zoom: 6.6, - minZoom: 5, - maxZoom: 15, - pitch: 40.5, - bearing: -27.396674584323023 -}; - -const colorRange = [ - [1, 152, 189], - [73, 227, 206], - [216, 254, 181], - [254, 237, 177], - [254, 173, 84], - [209, 55, 78] -]; - -const elevationScale = { min: 1, max: 50 }; - -/* eslint-disable react/no-deprecated */ -export default class App extends Component { - static get defaultColorRange() { - return colorRange; - } - - constructor(props) { - super(props); - this.state = { - elevationScale: elevationScale.min - }; - require('d3-request').csv(DATA_URL, (error, response) => { - if (!error) { - this.setState({ data: response.map(d => [Number(d.lng), Number(d.lat)]) }); - } - }); - } - - _renderLayers() { - const { data } = this.state; - const { radius = 1000, upperPercentile = 100, coverage = 1 } = this.props; - - return [ - new HexagonLayer({ - id: 'heatmap', - colorRange, - coverage, - data, - elevationRange: [0, 3000], - elevationScale: data && data.length ? 50 : 0, - extruded: true, - getPosition: d => d, - onHover: this.props.onHover, - pickable: Boolean(this.props.onHover), - radius, - upperPercentile, - material, - - transitions: { - elevationScale: 3000 - } - }) - ]; - } - - render() { - const { mapStyle = 'mapbox://styles/mapbox/dark-v9' } = this.props; - - return ( - - - - ); - } -} diff --git a/modules/demo/deck/3d-heatmap/app.jsx b/modules/demo/deck/3d-heatmap/app.jsx new file mode 100644 index 000000000..ee1bb8f54 --- /dev/null +++ b/modules/demo/deck/3d-heatmap/app.jsx @@ -0,0 +1,104 @@ +import { HexagonLayer } from '@deck.gl/aggregation-layers'; +import { AmbientLight, LightingEffect, PointLight } from '@deck.gl/core'; +import DeckGL from '@deck.gl/react'; +import * as React from 'react'; +import { Component } from 'react'; +import { StaticMap } from 'react-map-gl'; + +// Set your mapbox token here +const MAPBOX_TOKEN = + 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line + +// Source data CSV +const DATA_URL = + 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv'; // eslint-disable-line + +const ambientLight = new AmbientLight({ color: [255, 255, 255], intensity: 1.0 }); + +const pointLight1 = + new PointLight({ color: [255, 255, 255], intensity: 0.8, position: [-0.144528, 49.739968, 80000] }); + +const pointLight2 = + new PointLight({ color: [255, 255, 255], intensity: 0.8, position: [-3.807751, 54.104682, 8000] }); + +const lightingEffect = new LightingEffect({ ambientLight, pointLight1, pointLight2 }); + +const material = { + ambient: 0.64, + diffuse: 0.6, + shininess: 32, + specularColor: [51, 51, 51] +}; + +const INITIAL_VIEW_STATE = { + longitude: -1.4157267858730052, + latitude: 52.232395363869415, + zoom: 6.6, + minZoom: 5, + maxZoom: 15, + pitch: 40.5, + bearing: -27.396674584323023 +}; + +const colorRange = + [[1, 152, 189], [73, 227, 206], [216, 254, 181], [254, 237, 177], [254, 173, 84], [209, 55, 78]]; + +const elevationScale = { + min: 1, + max: 50 +}; + +/* eslint-disable react/no-deprecated */ +export default class App extends Component { + static get defaultColorRange() { return colorRange; } + + constructor(props) { + super(props); + this.state = { elevationScale: elevationScale.min }; + require('d3-request').csv(DATA_URL, (error, response) => { + if (!error) { this.setState({ data: response.map(d => [Number(d.lng), Number(d.lat)]) }); } + }); + } + + _renderLayers() { + const { data } = this.state; + const { radius = 1000, upperPercentile = 100, coverage = 1 } = this.props; + + return [new HexagonLayer({ + id: 'heatmap', + colorRange, + coverage, + data, + elevationRange: [0, 3000], + elevationScale: data && data.length ? 50 : 0, + extruded: true, + getPosition: d => d, + onHover: this.props.onHover, + pickable: Boolean(this.props.onHover), + radius, + upperPercentile, + material, + + transitions: { elevationScale: 3000 } + })]; + } + + render() { + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; + + return ( + + + + ); + } +} diff --git a/modules/demo/deck/3d-heatmap/index.js b/modules/demo/deck/3d-heatmap/index.js index fde933f60..205be2231 100755 --- a/modules/demo/deck/3d-heatmap/index.js +++ b/modules/demo/deck/3d-heatmap/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: '3D Heatmap Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/3d-heatmap/package.json b/modules/demo/deck/3d-heatmap/package.json index e693701f6..2cf06a032 100644 --- a/modules/demo/deck/3d-heatmap/package.json +++ b/modules/demo/deck/3d-heatmap/package.json @@ -9,22 +9,22 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/aggregation-layers": "8.6.6", - "@deck.gl/core": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/aggregation-layers": "8.8.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", "d3-request": "1.0.6", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/3d-tiles/app.js b/modules/demo/deck/3d-tiles/app.jsx similarity index 89% rename from modules/demo/deck/3d-tiles/app.js rename to modules/demo/deck/3d-tiles/app.jsx index 75cc63a6f..4c969760a 100644 --- a/modules/demo/deck/3d-tiles/app.js +++ b/modules/demo/deck/3d-tiles/app.jsx @@ -1,18 +1,18 @@ -import React, { Component } from 'react'; -import { render } from 'react-dom'; -import { StaticMap } from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; import { Tile3DLayer } from '@deck.gl/geo-layers'; - +import DeckGL from '@deck.gl/react'; +import { CesiumIonLoader } from '@loaders.gl/3d-tiles'; import { registerLoaders } from '@loaders.gl/core'; // To manage dependencies and bundle size, the app must decide which supporting loaders to bring in import { DracoWorkerLoader } from '@loaders.gl/draco'; -import { CesiumIonLoader } from '@loaders.gl/3d-tiles'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; registerLoaders([DracoWorkerLoader]); // Set your mapbox token here -const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line +const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line const ION_ASSET_ID = 43978; const ION_TOKEN = @@ -33,10 +33,7 @@ const INITIAL_VIEW_STATE = { export default class App extends Component { constructor(props) { super(props); - this.state = { - initialViewState: INITIAL_VIEW_STATE, - attributions: [] - }; + this.state = { initialViewState: INITIAL_VIEW_STATE, attributions: [] }; } _onTilesetLoad(tileset) { @@ -84,11 +81,8 @@ export default class App extends Component { - - ); + ); } } -export function renderToDOM(container) { - render(, container); -} +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/3d-tiles/index.js b/modules/demo/deck/3d-tiles/index.js index e58eed169..6a1b0abba 100755 --- a/modules/demo/deck/3d-tiles/index.js +++ b/modules/demo/deck/3d-tiles/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: '3D Titles Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/3d-tiles/package.json b/modules/demo/deck/3d-tiles/package.json index 795e19f49..a79e8226b 100644 --- a/modules/demo/deck/3d-tiles/package.json +++ b/modules/demo/deck/3d-tiles/package.json @@ -9,25 +9,25 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/geo-layers": "8.6.6", - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@loaders.gl/3d-tiles": "3.1.6", - "@loaders.gl/core": "3.1.6", - "@loaders.gl/draco": "3.1.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/geo-layers": "8.8.10", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@loaders.gl/3d-tiles": "3.2.9", + "@loaders.gl/core": "3.2.9", + "@loaders.gl/draco": "3.2.9", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/arc/app.js b/modules/demo/deck/arc/app.js index deb4362aa..52fa725dc 100644 --- a/modules/demo/deck/arc/app.js +++ b/modules/demo/deck/arc/app.js @@ -1,36 +1,29 @@ -/* global fetch */ -import React, { Component } from 'react'; -import { StaticMap } from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; -import { GeoJsonLayer, ArcLayer } from '@deck.gl/layers'; -import { scaleQuantile } from 'd3-scale'; - -// Set your mapbox token here -const MAPBOX_TOKEN = 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line - -// Source data GeoJSON +// Copyright (c) 2022, NVIDIA CORPORATION. +// +// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +// +// 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. + +import {log as deckLog} from '@deck.gl/core'; +import {ArcLayer, GeoJsonLayer} from '@deck.gl/layers'; +import {MapboxOverlay} from '@deck.gl/mapbox'; +import {scaleQuantile} from 'd3-scale'; +import * as maplibre from 'maplibre-gl'; + +deckLog.level = 0; +deckLog.enable(false); + +const mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json'; const DATA_URL = - 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/arc/counties.json'; // eslint-disable-line - -export const inFlowColors = [ - [255, 255, 204], - [199, 233, 180], - [127, 205, 187], - [65, 182, 196], - [29, 145, 192], - [34, 94, 168], - [12, 44, 132] -]; - -export const outFlowColors = [ - [255, 255, 178], - [254, 217, 118], - [254, 178, 76], - [253, 141, 60], - [252, 78, 42], - [227, 26, 28], - [177, 0, 38] -]; + 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/arc/counties.json'; const INITIAL_VIEW_STATE = { longitude: -100, @@ -38,124 +31,109 @@ const INITIAL_VIEW_STATE = { zoom: 3, maxZoom: 15, pitch: 30, - bearing: 30 + bearing: 30, }; -/* eslint-disable react/no-deprecated */ -export default class App extends Component { - constructor(props) { - super(props); - this.state = { - hoveredCounty: null, - // Set default selection to San Francisco - selectedCounty: null - }; - this._onHoverCounty = this._onHoverCounty.bind(this); - this._onSelectCounty = this._onSelectCounty.bind(this); - this._renderTooltip = this._renderTooltip.bind(this); - - fetch(DATA_URL) - .then(response => response.json()) - .then(({ features }) => { - this._recalculateArcs(features); - this.setState({ data: features }); - }); - } - - _onHoverCounty({ x, y, object }) { - this.setState({ x, y, hoveredCounty: object }); +// Add MapLibre GL for the basemap +const map = new maplibre.Map({ + style: mapStyle, + interactive: true, + container: document.body, + zoom: INITIAL_VIEW_STATE.zoom, + pitch: INITIAL_VIEW_STATE.pitch, + bearing: INITIAL_VIEW_STATE.bearing, + maxZoom: INITIAL_VIEW_STATE.maxZoom, + center: [ + INITIAL_VIEW_STATE.longitude, + INITIAL_VIEW_STATE.latitude, + ], +}); + +map.scrollZoom.setWheelZoomRate(1 / 25); + +const deck = new MapboxOverlay({layers: [], interleaved: true}); + +map.addControl(deck); + +fetch(DATA_URL) + .then(response => response.json()) + .then(({features}) => getLayers(calcArcs(features))) // + .then((props) => deck.setProps(props)); + +function calcArcs(data, selectedCounty = deck._props.selectedCounty) { + if (!data || !data.length) { return; } + if (!selectedCounty) { // + selectedCounty = data.find(f => f.properties.name === 'Los Angeles, CA'); } + const {flows, centroid} = selectedCounty.properties; + + const arcs = Object.keys(flows).map(toId => { + const f = data[toId]; + return { + source: centroid, + target: f.properties.centroid, + value: flows[toId], + }; + }); - _onSelectCounty({ object }) { - this._recalculateArcs(this.state.data, object); - } + const scale = + scaleQuantile().domain(arcs.map(a => Math.abs(a.value))).range(inFlowColors.map((c, i) => i)); - _renderTooltip() { - const { x, y, hoveredCounty } = this.state; - return ( - hoveredCounty && ( -
- {hoveredCounty.properties.name} -
- ) - ); - } + arcs.forEach(a => { + a.gain = Math.sign(a.value); + a.quantile = scale(Math.abs(a.value)); + }); - _recalculateArcs(data, selectedCounty = this.state.selectedCounty) { - if (!data || !data.length) { - return; - } - if (!selectedCounty) { - selectedCounty = data.find(f => f.properties.name === 'Los Angeles, CA'); - } - const { flows, centroid } = selectedCounty.properties; - - const arcs = Object.keys(flows).map(toId => { - const f = data[toId]; - return { - source: centroid, - target: f.properties.centroid, - value: flows[toId] - }; - }); - - const scale = scaleQuantile() - .domain(arcs.map(a => Math.abs(a.value))) - .range(inFlowColors.map((c, i) => i)); - - arcs.forEach(a => { - a.gain = Math.sign(a.value); - a.quantile = scale(Math.abs(a.value)); - }); - - if (this.props.onSelectCounty) { - this.props.onSelectCounty(selectedCounty); - } - - this.setState({ arcs, selectedCounty }); - } - - _renderLayers() { - const { data } = this.state; - const { strokeWidth = 2 } = this.props; + return {data, arcs, selectedCounty}; +} - return [ +function getLayers({data, arcs, ...props}) { + return { + ...props, + layers: [ new GeoJsonLayer({ id: 'geojson', - data, - stroked: false, + data: data, filled: true, + stroked: true, + pickable: true, + autoHighlight: true, + lineWidthMinPixels: 1, + getLineWidth: 1, getFillColor: [0, 0, 0, 0], - onHover: this._onHoverCounty, - onClick: this._onSelectCounty, - pickable: true + getLineColor: [255, 255, 255, 135], + onHover: ({x, y, object}) => deck.setProps({x, y, hoveredCounty: object}), + onClick: ({object}) => deck.setProps(getLayers(calcArcs(data, object))), }), new ArcLayer({ id: 'arc', - data: this.state.arcs, + data: arcs, + getWidth: 2, getSourcePosition: d => d.source, getTargetPosition: d => d.target, - getSourceColor: d => (d.gain > 0 ? inFlowColors : outFlowColors)[d.quantile], - getTargetColor: d => (d.gain > 0 ? outFlowColors : inFlowColors)[d.quantile], - getWidth: strokeWidth - }) - ]; - } - - render() { - const { mapStyle = 'mapbox://styles/mapbox/light-v9' } = this.props; - - return ( - - - - {this._renderTooltip} - - ); - } + getSourceColor: d => (d.gain > 0 ? inFlowColors : outFlowColors)[d.quantile], + getTargetColor: d => (d.gain > 0 ? outFlowColors : inFlowColors)[d.quantile], + }), + ] + }; } + +const inFlowColors = [ + [255, 255, 204], + [199, 233, 180], + [127, 205, 187], + [65, 182, 196], + [29, 145, 192], + [34, 94, 168], + [12, 44, 132] +]; + +const outFlowColors = [ + [255, 255, 178], + [254, 217, 118], + [254, 178, 76], + [253, 141, 60], + [252, 78, 42], + [227, 26, 28], + [177, 0, 38] +]; diff --git a/modules/demo/deck/arc/index.js b/modules/demo/deck/arc/index.js index 1d4e7ed7d..f594560a7 100755 --- a/modules/demo/deck/arc/index.js +++ b/modules/demo/deck/arc/index.js @@ -1,6 +1,6 @@ #!/usr/bin/env node -// Copyright (c) 2020, NVIDIA CORPORATION. +// Copyright (c) 2020-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,11 +18,14 @@ module.exports = (glfwOptions = { title: 'Arc Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + const jsdom = new (require('@rapidsai/jsdom').RapidsJSDOM)({ glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, }); + return Object.assign(jsdom, { + loaded: jsdom.window.evalFn(async () => await import('./app.js')), + }); }; if (require.main === module) { diff --git a/modules/demo/deck/arc/package.json b/modules/demo/deck/arc/package.json index fb61330b0..d3f911487 100644 --- a/modules/demo/deck/arc/package.json +++ b/modules/demo/deck/arc/package.json @@ -9,19 +9,19 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/mapbox": "8.8.10", "@rapidsai/jsdom": "~22.8.1", "d3-scale": "2.2.2", - "mjolnir.js": "2.6.0", + "maplibre-gl": "2.4.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", - "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-dom": "17.0.2" }, "files": [ "app.js", diff --git a/modules/demo/deck/bezier/index.js b/modules/demo/deck/bezier/index.js index 89a4874bb..71b149642 100755 --- a/modules/demo/deck/bezier/index.js +++ b/modules/demo/deck/bezier/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Bezier Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./src/app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./src/app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/bezier/package.json b/modules/demo/deck/bezier/package.json index be1a9762b..e714d8f25 100644 --- a/modules/demo/deck/bezier/package.json +++ b/modules/demo/deck/bezier/package.json @@ -10,15 +10,15 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2" }, diff --git a/modules/demo/deck/bezier/src/app.js b/modules/demo/deck/bezier/src/app.jsx similarity index 59% rename from modules/demo/deck/bezier/src/app.js rename to modules/demo/deck/bezier/src/app.jsx index 0d1d1e6fa..a282419cb 100644 --- a/modules/demo/deck/bezier/src/app.js +++ b/modules/demo/deck/bezier/src/app.jsx @@ -1,7 +1,9 @@ -import React, {Component} from 'react'; -import * as ReactDOM from 'react-dom'; +import { OrthographicView } from '@deck.gl/core'; import DeckGL from '@deck.gl/react'; -import {OrthographicView} from '@deck.gl/core'; +import * as React from 'react'; +import { Component } from 'react'; +import * as ReactDOM from 'react-dom'; + import BezierGraphLayer from './bezier-graph-layer'; import SAMPLE_GRAPH from './sample-graph.json'; @@ -12,16 +14,16 @@ const INITIAL_VIEW_STATE = { export default class App extends Component { render() { - const {data = SAMPLE_GRAPH, ...props} = this.props; + const { data = SAMPLE_GRAPH, ...props } = this.props; return ( ); @@ -29,5 +31,5 @@ export default class App extends Component { } if (require.main === module) { - ReactDOM.render(, document.body.appendChild(document.createElement('div'))); + ReactDOM.render(, document.body.appendChild(document.createElement('div'))); } diff --git a/modules/demo/deck/brushing/app.js b/modules/demo/deck/brushing/app.jsx similarity index 81% rename from modules/demo/deck/brushing/app.js rename to modules/demo/deck/brushing/app.jsx index b9d616ad3..81710d0e6 100644 --- a/modules/demo/deck/brushing/app.js +++ b/modules/demo/deck/brushing/app.jsx @@ -1,14 +1,16 @@ /* global fetch */ -import React, { Component } from 'react'; -import { StaticMap } from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; -import { ScatterplotLayer, ArcLayer } from '@deck.gl/layers'; import { BrushingExtension } from '@deck.gl/extensions'; +import { ArcLayer, ScatterplotLayer } from '@deck.gl/layers'; +import DeckGL from '@deck.gl/react'; import { scaleLinear } from 'd3-scale'; +import * as React from 'react'; +import { Component } from 'react'; +import { StaticMap } from 'react-map-gl'; // Set your mapbox token here // const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line -const MAPBOX_TOKEN = "pk.eyJ1IjoicGF1bGV0YXlsb3IiLCJhIjoiY2pocHhhajlwMmtvbTMxczg0d2wzcnlwYiJ9.K0XJGZ_I7dQVIaJ8HpthTg" +const MAPBOX_TOKEN = + 'pk.eyJ1IjoicGF1bGV0YXlsb3IiLCJhIjoiY2pocHhhajlwMmtvbTMxczg0d2wzcnlwYiJ9.K0XJGZ_I7dQVIaJ8HpthTg' const TOOLTIP_STYLE = { position: 'absolute', @@ -23,7 +25,7 @@ const TOOLTIP_STYLE = { // Source data GeoJSON const DATA_URL = - 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/arc/counties.json'; // eslint-disable-line + 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/arc/counties.json'; // eslint-disable-line export const inFlowColors = [[35, 181, 184]]; export const outFlowColors = [[166, 3, 3]]; @@ -48,28 +50,17 @@ const brushingExtension = new BrushingExtension(); export default class App extends Component { constructor(props) { super(props); - this.state = { - arcs: [], - targets: [], - sources: [], - ...this._getLayerData(props) - }; + this.state = { arcs: [], targets: [], sources: [], ...this._getLayerData(props) }; this._onHover = this._onHover.bind(this); fetch(DATA_URL) .then(response => response.json()) - .then(({ features }) => { - this.setState(this._getLayerData({ data: features })); - }); + .then(({ features }) => { this.setState(this._getLayerData({ data: features })); }); } - _onHover({ x, y, object }) { - this.setState({ x, y, hoveredObject: object }); - } + _onHover({ x, y, object }) { this.setState({ x, y, hoveredObject: object }); } _getLayerData({ data }) { - if (!data || !data.length) { - return null; - } + if (!data || !data.length) { return null; } const arcs = []; const targets = []; const sources = []; @@ -83,9 +74,7 @@ export default class App extends Component { value[flows[toId] > 0 ? 'gain' : 'loss'] += flows[toId]; // if number too small, ignore it - if (Math.abs(flows[toId]) < 50) { - return; - } + if (Math.abs(flows[toId]) < 50) { return; } const pairKey = [i, Number(toId)].sort((a, b) => a - b).join('-'); const sourceCentroid = data[toId].properties.centroid; const gain = Math.sign(flows[toId]); @@ -100,9 +89,7 @@ export default class App extends Component { }); // eliminate duplicates arcs - if (pairs[pairKey]) { - return; - } + if (pairs[pairKey]) { return; } pairs[pairKey] = true; @@ -124,13 +111,9 @@ export default class App extends Component { // sort targets by radius large -> small targets.sort((a, b) => Math.abs(b.net) - Math.abs(a.net)); - const sizeScale = scaleLinear() - .domain([0, Math.abs(targets[0].net)]) - .range([36, 400]); + const sizeScale = scaleLinear().domain([0, Math.abs(targets[0].net)]).range([36, 400]); - targets.forEach(pt => { - pt.radius = Math.sqrt(sizeScale(Math.abs(pt.net))); - }); + targets.forEach(pt => { pt.radius = Math.sqrt(sizeScale(Math.abs(pt.net))); }); return { arcs, targets, sources }; } @@ -138,12 +121,12 @@ export default class App extends Component { _renderTooltip() { const { x, y, hoveredObject } = this.state; - if (!hoveredObject) { - return null; - } + if (!hoveredObject) { return null; } return ( -
+
{hoveredObject.name}
{`Net gain: ${hoveredObject.net}`}
@@ -186,8 +169,7 @@ export default class App extends Component { brushingEnabled: enableBrushing, // only show rings when brushing radiusScale: enableBrushing ? 4000 : 0, - getLineColor: d => (d.net > 0 ? TARGET_COLOR : SOURCE_COLOR), - extensions: [brushingExtension] + getLineColor: d => (d.net > 0 ? TARGET_COLOR : SOURCE_COLOR), extensions: [brushingExtension] }), new ScatterplotLayer({ id: 'targets', @@ -217,7 +199,7 @@ export default class App extends Component { } render() { - const { mapStyle = 'mapbox://styles/mapbox/light-v9' } = this.props; + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; return ( - {this._renderTooltip()} ); diff --git a/modules/demo/deck/brushing/index.js b/modules/demo/deck/brushing/index.js index 970575917..3624fdc31 100755 --- a/modules/demo/deck/brushing/index.js +++ b/modules/demo/deck/brushing/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Brushing Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/brushing/package.json b/modules/demo/deck/brushing/package.json index 95c49f782..7c61cf6cf 100644 --- a/modules/demo/deck/brushing/package.json +++ b/modules/demo/deck/brushing/package.json @@ -9,23 +9,23 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/extensions": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/extensions": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", "d3-scale": "2.2.2", - "gl-matrix": "3.3.0", - "mjolnir.js": "2.6.0", + "gl-matrix": "3.4.3", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/geojson/app.js b/modules/demo/deck/geojson/app.js deleted file mode 100644 index 422614de3..000000000 --- a/modules/demo/deck/geojson/app.js +++ /dev/null @@ -1,154 +0,0 @@ -import React, {Component} from 'react'; -import {render} from 'react-dom'; -import {StaticMap} from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; -import {GeoJsonLayer, PolygonLayer} from '@deck.gl/layers'; -import {LightingEffect, AmbientLight, _SunLight as SunLight} from '@deck.gl/core'; -import {scaleThreshold} from 'd3-scale'; - -// Set your mapbox token here -const MAPBOX_TOKEN = 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line - -// Source data GeoJSON -const DATA_URL = - 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/geojson/vancouver-blocks.json'; // eslint-disable-line - -export const COLOR_SCALE = scaleThreshold() - .domain([-0.6, -0.45, -0.3, -0.15, 0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.05, 1.2]) - .range([ - [65, 182, 196], - [127, 205, 187], - [199, 233, 180], - [237, 248, 177], - // zero - [255, 255, 204], - [255, 237, 160], - [254, 217, 118], - [254, 178, 76], - [253, 141, 60], - [252, 78, 42], - [227, 26, 28], - [189, 0, 38], - [128, 0, 38] - ]); - -const INITIAL_VIEW_STATE = { - latitude: 49.254, - longitude: -123.13, - zoom: 11, - maxZoom: 16, - pitch: 45, - bearing: 0 -}; - -const ambientLight = new AmbientLight({ - color: [255, 255, 255], - intensity: 1.0 -}); - -const dirLight = new SunLight({ - timestamp: Date.UTC(2019, 7, 1, 22), - color: [255, 255, 255], - intensity: 1.0, - _shadow: true -}); - -const landCover = [[[-123.0, 49.196], [-123.0, 49.324], [-123.306, 49.324], [-123.306, 49.196]]]; - -export default class App extends Component { - constructor(props) { - super(props); - - this.state = { - hoveredObject: null - }; - this._onHover = this._onHover.bind(this); - this._renderTooltip = this._renderTooltip.bind(this); - - const lightingEffect = new LightingEffect({ambientLight, dirLight}); - lightingEffect.shadowColor = [0, 0, 0, 0.5]; - this._effects = [lightingEffect]; - } - - _onHover({x, y, object}) { - this.setState({x, y, hoveredObject: object}); - } - - _renderLayers() { - const {data = DATA_URL} = this.props; - - return [ - // only needed when using shadows - a plane for shadows to drop on - new PolygonLayer({ - id: 'ground', - data: landCover, - stroked: false, - getPolygon: f => f, - getFillColor: [0, 0, 0, 0] - }), - new GeoJsonLayer({ - id: 'geojson', - data, - opacity: 0.8, - stroked: false, - filled: true, - extruded: true, - wireframe: true, - getElevation: f => Math.sqrt(f.properties.valuePerSqm) * 10, - getFillColor: f => COLOR_SCALE(f.properties.growth), - getLineColor: [255, 255, 255], - pickable: true, - onHover: this._onHover - }) - ]; - } - - _renderTooltip() { - const {x, y, hoveredObject} = this.state; - return ( - hoveredObject && ( -
-
- Average Property Value -
-
-
${hoveredObject.properties.valuePerParcel} / parcel
-
- ${hoveredObject.properties.valuePerSqm} / m2 -
-
-
- Growth -
-
{Math.round(hoveredObject.properties.growth * 100)}%
-
- ) - ); - } - - render() { - const {mapStyle = 'mapbox://styles/mapbox/light-v9'} = this.props; - - return ( - - - - {this._renderTooltip} - - ); - } -} - -export function renderToDOM(container) { - render(, container); -} diff --git a/modules/demo/deck/geojson/app.jsx b/modules/demo/deck/geojson/app.jsx new file mode 100644 index 000000000..7110b7fc3 --- /dev/null +++ b/modules/demo/deck/geojson/app.jsx @@ -0,0 +1,134 @@ +import { _SunLight as SunLight, AmbientLight, LightingEffect } from '@deck.gl/core'; +import { GeoJsonLayer, PolygonLayer } from '@deck.gl/layers'; +import DeckGL from '@deck.gl/react'; +import { scaleThreshold } from 'd3-scale'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; + +// Set your mapbox token here +const MAPBOX_TOKEN = + 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line + +// Source data GeoJSON +const DATA_URL = + 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/geojson/vancouver-blocks.json'; // eslint-disable-line + +export const COLOR_SCALE = + scaleThreshold() + .domain([-0.6, -0.45, -0.3, -0.15, 0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.05, 1.2]) + .range([ + [65, 182, 196], + [127, 205, 187], + [199, 233, 180], + [237, 248, 177], + // zero + [255, 255, 204], + [255, 237, 160], + [254, 217, 118], + [254, 178, 76], + [253, 141, 60], + [252, 78, 42], + [227, 26, 28], + [189, 0, 38], + [128, 0, 38] + ]); + +const INITIAL_VIEW_STATE = { + latitude: 49.254, + longitude: -123.13, + zoom: 11, + maxZoom: 16, + pitch: 45, + bearing: 0 +}; + +const ambientLight = new AmbientLight({ color: [255, 255, 255], intensity: 1.0 }); + +const dirLight = new SunLight( + { timestamp: Date.UTC(2019, 7, 1, 22), color: [255, 255, 255], intensity: 1.0, _shadow: true }); + +const landCover = [[[-123.0, 49.196], [-123.0, 49.324], [-123.306, 49.324], [-123.306, 49.196]]]; + +export default class App extends Component { + constructor(props) { + super(props); + + this.state = { hoveredObject: null }; + this._onHover = this._onHover.bind(this); + this._renderTooltip = this._renderTooltip.bind(this); + + const lightingEffect = new LightingEffect({ ambientLight, dirLight }); + lightingEffect.shadowColor = [0, 0, 0, 0.5]; + this._effects = [lightingEffect]; + } + + _onHover({ x, y, object }) { this.setState({ x, y, hoveredObject: object }); } + + _renderLayers() { + const { data = DATA_URL } = this.props; + + return [ + // only needed when using shadows - a plane for shadows to drop on + new PolygonLayer({ + id: 'ground', + data: landCover, + stroked: false, + getPolygon: f => f, + getFillColor: [0, 0, 0, 0] + }), + new GeoJsonLayer({ + id: 'geojson', + data, + opacity: 0.8, + stroked: false, + filled: true, + extruded: true, + wireframe: true, + getElevation: f => Math.sqrt(f.properties.valuePerSqm) * 10, + getFillColor: f => COLOR_SCALE(f.properties.growth), + getLineColor: [255, 255, 255], + pickable: true, + onHover: this._onHover + }) + ]; + } + + _renderTooltip() { + const { x, y, hoveredObject } = this.state; + return (hoveredObject && (
+ Average Property Value +
+
$ {hoveredObject.properties.valuePerParcel} / parcel
+
$ {hoveredObject.properties.valuePerSqm} / m2 +
+
Growth +
+
{Math.round(hoveredObject.properties.growth * 100)} % +
+
)); + } + + render() { + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; + + return ( + + + {this._renderTooltip} + + ); + } +} + +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/geojson/index.js b/modules/demo/deck/geojson/index.js index c45628754..d3e03a06f 100755 --- a/modules/demo/deck/geojson/index.js +++ b/modules/demo/deck/geojson/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'GeoJson Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/geojson/package.json b/modules/demo/deck/geojson/package.json index b84610597..7ffaaa5ca 100644 --- a/modules/demo/deck/geojson/package.json +++ b/modules/demo/deck/geojson/package.json @@ -9,22 +9,22 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", "d3-scale": "2.2.2", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/heatmap/app.js b/modules/demo/deck/heatmap/app.jsx similarity index 53% rename from modules/demo/deck/heatmap/app.js rename to modules/demo/deck/heatmap/app.jsx index f83980623..8be07187a 100644 --- a/modules/demo/deck/heatmap/app.js +++ b/modules/demo/deck/heatmap/app.jsx @@ -1,10 +1,10 @@ -import React from 'react'; -import { StaticMap } from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; import { HeatmapLayer } from '@deck.gl/aggregation-layers'; +import DeckGL from '@deck.gl/react'; +import * as React from 'react'; +import { StaticMap } from 'react-map-gl'; const DATA_URL = - 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/screen-grid/uber-pickup-locations.json'; // eslint-disable-line + 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/screen-grid/uber-pickup-locations.json'; // eslint-disable-line const INITIAL_VIEW_STATE = { longitude: -73.75, @@ -24,22 +24,27 @@ export default function App({ radiusPixels = 30, mapStyle = MAP_STYLE }) { - const layers = [ - new HeatmapLayer({ - data, - id: 'heatmp-layer', - pickable: false, - getPosition: d => [d[0], d[1]], - getWeight: d => d[2], - radiusPixels, - intensity, - threshold - }) - ]; + const layers = [new HeatmapLayer({ + data, + id: 'heatmp-layer', + pickable: false, + getPosition: d => [d[0], d[1]], + getWeight: d => d[2], + radiusPixels, + intensity, + threshold + })]; return ( - - + + ); } diff --git a/modules/demo/deck/heatmap/index.js b/modules/demo/deck/heatmap/index.js index 20406ae0c..92e31318b 100755 --- a/modules/demo/deck/heatmap/index.js +++ b/modules/demo/deck/heatmap/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Heatmap Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/heatmap/package.json b/modules/demo/deck/heatmap/package.json index a4935bcef..d2f15c8be 100644 --- a/modules/demo/deck/heatmap/package.json +++ b/modules/demo/deck/heatmap/package.json @@ -9,21 +9,21 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/aggregation-layers": "8.6.6", - "@deck.gl/core": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/aggregation-layers": "8.8.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/highway/app.js b/modules/demo/deck/highway/app.jsx similarity index 50% rename from modules/demo/deck/highway/app.js rename to modules/demo/deck/highway/app.jsx index b7b8dd5b2..30e56213b 100644 --- a/modules/demo/deck/highway/app.js +++ b/modules/demo/deck/highway/app.jsx @@ -1,12 +1,14 @@ -import React, {Component} from 'react'; -import {render} from 'react-dom'; -import {StaticMap} from 'react-map-gl'; +import { GeoJsonLayer } from '@deck.gl/layers'; import DeckGL from '@deck.gl/react'; -import {GeoJsonLayer} from '@deck.gl/layers'; -import {scaleLinear, scaleThreshold} from 'd3-scale'; +import { scaleLinear, scaleThreshold } from 'd3-scale'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; // Set your mapbox token here -const MAPBOX_TOKEN = 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line +const MAPBOX_TOKEN = + 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line // Source data GeoJSON const DATA_URL = { @@ -16,29 +18,22 @@ const DATA_URL = { 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/highway/roads.json' }; -function getKey({state, type, id}) { - return `${state}-${type}-${id}`; -} +function getKey({ state, type, id }) { return `${state}-${type}-${id}`; } + +export const COLOR_SCALE = scaleThreshold().domain([0, 4, 8, 12, 20, 32, 52, 84, 136, 220]).range([ + [26, 152, 80], + [102, 189, 99], + [166, 217, 106], + [217, 239, 139], + [255, 255, 191], + [254, 224, 139], + [253, 174, 97], + [244, 109, 67], + [215, 48, 39], + [168, 0, 0] +]); -export const COLOR_SCALE = scaleThreshold() - .domain([0, 4, 8, 12, 20, 32, 52, 84, 136, 220]) - .range([ - [26, 152, 80], - [102, 189, 99], - [166, 217, 106], - [217, 239, 139], - [255, 255, 191], - [254, 224, 139], - [253, 174, 97], - [244, 109, 67], - [215, 48, 39], - [168, 0, 0] - ]); - -const WIDTH_SCALE = scaleLinear() - .clamp(true) - .domain([0, 200]) - .range([10, 2000]); +const WIDTH_SCALE = scaleLinear().clamp(true).domain([0, 200]).range([10, 2000]); const INITIAL_VIEW_STATE = { latitude: 38, @@ -52,19 +47,14 @@ export default class App extends Component { constructor(props) { super(props); - this.state = { - hoveredObject: null, - ...this._aggregateAccidents(props.accidents) - }; + this.state = { hoveredObject: null, ...this._aggregateAccidents(props.accidents) }; this._onHover = this._onHover.bind(this); this._renderTooltip = this._renderTooltip.bind(this); } componentWillReceiveProps(nextProps) { if (nextProps.accidents !== this.props.accidents) { - this.setState({ - ...this._aggregateAccidents(nextProps.accidents) - }); + this.setState({ ...this._aggregateAccidents(nextProps.accidents) }); } } @@ -81,72 +71,54 @@ export default class App extends Component { f[key] = a.fatalities; }); } - return {incidents, fatalities}; + return { incidents, fatalities }; } _getLineColor(f, fatalities) { - if (!fatalities) { - return [200, 200, 200]; - } + if (!fatalities) { return [200, 200, 200]; } const key = getKey(f.properties); const fatalitiesPer1KMile = ((fatalities[key] || 0) / f.properties.length) * 1000; return COLOR_SCALE(fatalitiesPer1KMile); } _getLineWidth(f, incidents) { - if (!incidents) { - return 10; - } + if (!incidents) { return 10; } const key = getKey(f.properties); const incidentsPer1KMile = ((incidents[key] || 0) / f.properties.length) * 1000; return WIDTH_SCALE(incidentsPer1KMile); } - _onHover({x, y, object}) { - this.setState({x, y, hoveredObject: object}); - } + _onHover({ x, y, object }) { this.setState({ x, y, hoveredObject: object }); } _renderLayers() { - const {roads = DATA_URL.ROADS, year} = this.props; - const {incidents, fatalities} = this.state; - - return [ - new GeoJsonLayer({ - id: 'geojson', - data: roads, - stroked: false, - filled: false, - lineWidthMinPixels: 0.5, - parameters: { - depthTest: false - }, - - getLineColor: f => this._getLineColor(f, fatalities[year]), - getLineWidth: f => this._getLineWidth(f, incidents[year]), - - pickable: true, - onHover: this._onHover, - - updateTriggers: { - getLineColor: {year}, - getLineWidth: {year} - }, - - transitions: { - getLineColor: 1000, - getLineWidth: 1000 - } - }) - ]; + const { roads = DATA_URL.ROADS, year } = this.props; + const { incidents, fatalities } = this.state; + + return [new GeoJsonLayer({ + id: 'geojson', + data: roads, + stroked: false, + filled: false, + lineWidthMinPixels: 0.5, + parameters: { depthTest: false }, + + getLineColor: f => this._getLineColor(f, fatalities[year]), + getLineWidth: f => this._getLineWidth(f, incidents[year]), + + pickable: true, + onHover: this._onHover, + + updateTriggers: { getLineColor: { year }, getLineWidth: { year } }, + + transitions: { getLineColor: 1000, getLineWidth: 1000 } + })]; } _renderTooltip() { - const {hoveredObject, x, y, fatalities, incidents} = this.state; - const {year} = this.props; + const { hoveredObject, x, y, fatalities, incidents } = this.state; + const { year } = this.props; - if (!hoveredObject) { - return null; - } + if (!hoveredObject) { return null; } const props = hoveredObject.properties; const key = getKey(props); @@ -154,9 +126,9 @@ export default class App extends Component { const r = ((incidents || {})[year] || {})[key] || ''; const content = r ? ( -
- {f} people died in {r} crashes on{' '} - {props.type === 'SR' ? props.state : props.type}-{props.id} in {year} +
{f} people died in {r}crashes on{' '} { + props.type === 'SR' ? props.state : props.type} - + {props.id} in {year}
) : (
@@ -165,32 +137,28 @@ export default class App extends Component { ); return ( -
- - {props.name} ({props.state}) - +
+ {props.name}({props.state}) {content}
); } render() { - const {mapStyle = 'mapbox://styles/mapbox/dark-v9'} = this.props; + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; return ( + controller={true}> - {this._renderTooltip} ); @@ -200,11 +168,7 @@ export default class App extends Component { export function renderToDOM(container) { render(, container); - const formatRow = d => ({ - ...d, - incidents: Number(d.incidents), - fatalities: Number(d.fatalities) - }); + const formatRow = d => ({ ...d, incidents: Number(d.incidents), fatalities: Number(d.fatalities) }); require('d3-request').csv(DATA_URL.ACCIDENTS, formatRow, (error, response) => { if (!error) { diff --git a/modules/demo/deck/highway/index.js b/modules/demo/deck/highway/index.js index 42460d4a8..749813d64 100755 --- a/modules/demo/deck/highway/index.js +++ b/modules/demo/deck/highway/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Highway Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/highway/package.json b/modules/demo/deck/highway/package.json index d2dc3ba33..5fd4a8314 100644 --- a/modules/demo/deck/highway/package.json +++ b/modules/demo/deck/highway/package.json @@ -9,23 +9,23 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", "d3-request": "1.0.6", "d3-scale": "2.2.2", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/icon/app.js b/modules/demo/deck/icon/app.jsx similarity index 73% rename from modules/demo/deck/icon/app.js rename to modules/demo/deck/icon/app.jsx index f1f47c238..3e6c7e55e 100644 --- a/modules/demo/deck/icon/app.js +++ b/modules/demo/deck/icon/app.jsx @@ -1,18 +1,19 @@ -import React, { Component } from 'react'; -import { render } from 'react-dom'; -import { StaticMap } from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; import { MapView } from '@deck.gl/core'; import { IconLayer } from '@deck.gl/layers'; +import DeckGL from '@deck.gl/react'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; import IconClusterLayer from './icon-cluster-layer'; // Set your mapbox token here -const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line +const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line // Source data CSV const DATA_URL = - 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/icon/meteorites.json'; // eslint-disable-line + 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/icon/meteorites.json'; // eslint-disable-line const MAP_VIEW = new MapView({ repeat: true }); const INITIAL_VIEW_STATE = { @@ -29,12 +30,7 @@ export default class App extends Component { constructor(props) { super(props); - this.state = { - x: 0, - y: 0, - hoveredObject: null, - expandedObjects: null - }; + this.state = { x: 0, y: 0, hoveredObject: null, expandedObjects: null }; this._onHover = this._onHover.bind(this); this._onClick = this._onClick.bind(this); this._closePopup = this._closePopup.bind(this); @@ -42,9 +38,7 @@ export default class App extends Component { } _onHover(info) { - if (this.state.expandedObjects) { - return; - } + if (this.state.expandedObjects) { return; } const { x, y, object } = info; this.setState({ x, y, hoveredObject: object }); @@ -62,9 +56,7 @@ export default class App extends Component { } _closePopup() { - if (this.state.expandedObjects) { - this.setState({ expandedObjects: null, hoveredObject: null }); - } + if (this.state.expandedObjects) { this.setState({ expandedObjects: null, hoveredObject: null }); } } _renderhoveredItems() { @@ -72,19 +64,19 @@ export default class App extends Component { if (expandedObjects) { return ( -
+
{expandedObjects.map(({ name, year, mass, class: meteorClass }) => { - return ( -
-
{name}
-
Year: {year || 'unknown'}
-
Class: {meteorClass}
-
Mass: {mass}g
-
+ return (
+
{name}
+
Year: {year || 'unknown'}
+
Class: {meteorClass}
+
Mass: {mass}g
+
); })} -
- ); +
); } if (!hoveredObject) { @@ -92,11 +84,15 @@ export default class App extends Component { } return hoveredObject.cluster ? ( -
+
{hoveredObject.point_count} records
) : ( -
+
{hoveredObject.name} {hoveredObject.year ? `(${hoveredObject.year})` : ''}
@@ -136,7 +132,7 @@ export default class App extends Component { } render() { - const { mapStyle = 'mapbox://styles/mapbox/dark-v9' } = this.props; + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; return ( - {this._renderhoveredItems} ); } } -export function renderToDOM(container) { - render(, container); -} +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/icon/index.js b/modules/demo/deck/icon/index.js index fb4234dc2..31daf8264 100755 --- a/modules/demo/deck/icon/index.js +++ b/modules/demo/deck/icon/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Icon Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/icon/package.json b/modules/demo/deck/icon/package.json index 363adf174..c4836844f 100644 --- a/modules/demo/deck/icon/package.json +++ b/modules/demo/deck/icon/package.json @@ -9,24 +9,24 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16", + "react-map-gl": "7.0.19", "supercluster": "6.0.2" }, "files": [ "data", "icon-cluster-layer.js", - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/image-tile/app.js b/modules/demo/deck/image-tile/app.jsx similarity index 98% rename from modules/demo/deck/image-tile/app.js rename to modules/demo/deck/image-tile/app.jsx index 1110909be..72a860a76 100644 --- a/modules/demo/deck/image-tile/app.js +++ b/modules/demo/deck/image-tile/app.jsx @@ -1,4 +1,5 @@ -import React, { PureComponent } from 'react'; +import * as React from 'react' +import { PureComponent } from 'react'; import { render } from 'react-dom'; import { OrthographicView, COORDINATE_SYSTEM } from '@deck.gl/core'; diff --git a/modules/demo/deck/image-tile/index.js b/modules/demo/deck/image-tile/index.js index 9c6a36a06..f2b1f6d39 100755 --- a/modules/demo/deck/image-tile/index.js +++ b/modules/demo/deck/image-tile/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Image Tile Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/image-tile/package.json b/modules/demo/deck/image-tile/package.json index 425d0f184..220d10125 100644 --- a/modules/demo/deck/image-tile/package.json +++ b/modules/demo/deck/image-tile/package.json @@ -9,17 +9,17 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/geo-layers": "8.6.6", - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@loaders.gl/core": "3.1.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/geo-layers": "8.8.10", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@loaders.gl/core": "3.2.9", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2" }, diff --git a/modules/demo/deck/interleaved-buffer/package.json b/modules/demo/deck/interleaved-buffer/package.json index b76a4d30b..aacc64e75 100644 --- a/modules/demo/deck/interleaved-buffer/package.json +++ b/modules/demo/deck/interleaved-buffer/package.json @@ -9,16 +9,16 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0" + "mjolnir.js": "2.7.1" }, "files": [ "src", diff --git a/modules/demo/deck/line/app.js b/modules/demo/deck/line/app.jsx similarity index 82% rename from modules/demo/deck/line/app.js rename to modules/demo/deck/line/app.jsx index 04672178d..3b0b2b34c 100644 --- a/modules/demo/deck/line/app.js +++ b/modules/demo/deck/line/app.jsx @@ -1,10 +1,14 @@ -import React, {Component} from 'react'; -import {render} from 'react-dom'; - -import {StaticMap} from 'react-map-gl'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; import DeckGL from '@deck.gl/react'; -import {LineLayer, ScatterplotLayer} from '@deck.gl/layers'; +import { LineLayer, ScatterplotLayer } from '@deck.gl/layers'; import GL from '@luma.gl/constants'; +import { StaticMap } from 'react-map-gl'; +import { log as deckLog } from '@deck.gl/core'; + +deckLog.level = 0; +deckLog.enable(false); // Set your mapbox token here const MAPBOX_TOKEN = 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line @@ -53,15 +57,15 @@ export default class App extends Component { this._renderTooltip = this._renderTooltip.bind(this); } - _onHover({x, y, object}) { - this.setState({x, y, hoveredObject: object}); + _onHover({ x, y, object }) { + this.setState({ x, y, hoveredObject: object }); } _renderTooltip() { - const {x, y, hoveredObject} = this.state; + const { x, y, hoveredObject } = this.state; return ( hoveredObject && ( -
+
{hoveredObject.country || hoveredObject.abbrev}
{hoveredObject.name.indexOf('0x') >= 0 ? '' : hoveredObject.name}
@@ -102,7 +106,7 @@ export default class App extends Component { } render() { - const {mapStyle = 'mapbox://styles/mapbox/dark-v9'} = this.props; + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; return ( - {this._renderTooltip} ); diff --git a/modules/demo/deck/line/index.js b/modules/demo/deck/line/index.js index ee4985171..eb59ae778 100755 --- a/modules/demo/deck/line/index.js +++ b/modules/demo/deck/line/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Line Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/line/package.json b/modules/demo/deck/line/package.json index 18e47686f..840f8b7f0 100644 --- a/modules/demo/deck/line/package.json +++ b/modules/demo/deck/line/package.json @@ -9,22 +9,22 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@luma.gl/constants": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@luma.gl/constants": "8.5.16", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/map-tile/app.js b/modules/demo/deck/map-tile/app.jsx similarity index 80% rename from modules/demo/deck/map-tile/app.js rename to modules/demo/deck/map-tile/app.jsx index 1ebb00636..5e3e504a9 100644 --- a/modules/demo/deck/map-tile/app.js +++ b/modules/demo/deck/map-tile/app.jsx @@ -1,9 +1,8 @@ -import React from 'react'; - -import DeckGL from '@deck.gl/react'; import { MapView } from '@deck.gl/core'; import { TileLayer } from '@deck.gl/geo-layers'; import { BitmapLayer, PathLayer } from '@deck.gl/layers'; +import DeckGL from '@deck.gl/react'; +import * as React from 'react'; const INITIAL_VIEW_STATE = { latitude: 47.65, @@ -17,9 +16,7 @@ const INITIAL_VIEW_STATE = { /* global window */ const devicePixelRatio = (typeof window !== 'undefined' && window.devicePixelRatio) || 1; -function getTooltip({ tile }) { - return tile && `tile: x: ${tile.x}, y: ${tile.y}, z: ${tile.z}`; -} +function getTooltip({ tile }) { return tile && `tile: x: ${tile.x}, y: ${tile.y}, z: ${tile.z}`; } export default function App({ showBorder = false, onTilesLoad = null }) { const tileLayer = new TileLayer({ @@ -44,18 +41,11 @@ export default function App({ showBorder = false, onTilesLoad = null }) { tileSize: 256, zoomOffset: devicePixelRatio === 1 ? -1 : 0, renderSubLayers: props => { - const { - bbox: { west, south, east, north } - } = props.tile; + const { bbox: { west, south, east, north } } = props.tile; return [ - new BitmapLayer(props, { - data: null, - image: props.data, - bounds: [west, south, east, north] - }), - showBorder && - new PathLayer({ + new BitmapLayer(props, { data: null, image: props.data, bounds: [west, south, east, north] }), + showBorder && new PathLayer({ id: `${props.id}-border`, visible: props.visible, data: [[[west, north], [west, south], [east, south], [east, north], [west, north]]], @@ -73,8 +63,7 @@ export default function App({ showBorder = false, onTilesLoad = null }) { views={new MapView({ repeat: true })} initialViewState={INITIAL_VIEW_STATE} controller={true} - getTooltip={getTooltip} - > + getTooltip={getTooltip} > ); } diff --git a/modules/demo/deck/map-tile/index.js b/modules/demo/deck/map-tile/index.js index 63c62dcdd..a6adf4fda 100755 --- a/modules/demo/deck/map-tile/index.js +++ b/modules/demo/deck/map-tile/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Map Tile Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/map-tile/package.json b/modules/demo/deck/map-tile/package.json index 46dd33ec7..05b129fb7 100644 --- a/modules/demo/deck/map-tile/package.json +++ b/modules/demo/deck/map-tile/package.json @@ -9,14 +9,14 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/geo-layers": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/geo-layers": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", "react": "17.0.2", "react-dom": "17.0.2" diff --git a/modules/demo/deck/mesh/app.js b/modules/demo/deck/mesh/app.jsx similarity index 85% rename from modules/demo/deck/mesh/app.js rename to modules/demo/deck/mesh/app.jsx index 48c050036..44336939d 100644 --- a/modules/demo/deck/mesh/app.js +++ b/modules/demo/deck/mesh/app.jsx @@ -1,5 +1,6 @@ -import React, {PureComponent} from 'react'; -import {render} from 'react-dom'; +import * as React from 'react' +import { PureComponent } from 'react'; +import { render } from 'react-dom'; import DeckGL from '@deck.gl/react'; import { COORDINATE_SYSTEM, @@ -8,11 +9,11 @@ import { LightingEffect, AmbientLight } from '@deck.gl/core'; -import {SolidPolygonLayer} from '@deck.gl/layers'; -import {SimpleMeshLayer} from '@deck.gl/mesh-layers'; +import { SolidPolygonLayer } from '@deck.gl/layers'; +import { SimpleMeshLayer } from '@deck.gl/mesh-layers'; -import {OBJLoader} from '@loaders.gl/obj'; -import {registerLoaders} from '@loaders.gl/core'; +import { OBJLoader } from '@loaders.gl/obj'; +import { registerLoaders } from '@loaders.gl/core'; // Add the loaders that handle your mesh format here registerLoaders([OBJLoader]); @@ -56,7 +57,7 @@ const dirLight = new DirectionalLight({ _shadow: true }); -const lightingEffect = new LightingEffect({ambientLight, dirLight}); +const lightingEffect = new LightingEffect({ ambientLight, dirLight }); const background = [ [[-1000.0, -1000.0, -40], [1000.0, -1000.0, -40], [1000.0, 1000.0, -40], [-1000.0, 1000.0, -40]] diff --git a/modules/demo/deck/mesh/index.js b/modules/demo/deck/mesh/index.js index fb46f977c..aa8e21961 100755 --- a/modules/demo/deck/mesh/index.js +++ b/modules/demo/deck/mesh/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Mesh Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/mesh/package.json b/modules/demo/deck/mesh/package.json index 53c5afa2a..c452a9b51 100644 --- a/modules/demo/deck/mesh/package.json +++ b/modules/demo/deck/mesh/package.json @@ -9,18 +9,18 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@loaders.gl/core": "3.1.6", - "@loaders.gl/obj": "3.1.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@loaders.gl/core": "3.2.9", + "@loaders.gl/obj": "3.2.9", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2" }, diff --git a/modules/demo/deck/playground/index.js b/modules/demo/deck/playground/index.js index c68c36d02..c34221f77 100755 --- a/modules/demo/deck/playground/index.js +++ b/modules/demo/deck/playground/index.js @@ -19,7 +19,7 @@ module.exports = (glfwOptions = { transparent: false }) => { return require('@rapidsai/jsdom') - .RapidsJSDOM.fromReactComponent(require('path').join(__dirname, 'src', 'app.js'), { + .RapidsJSDOM.fromReactComponent(require('path').join(__dirname, 'src', 'app.jsx'), { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/playground/package.json b/modules/demo/deck/playground/package.json index 28d05ff05..c6407ecd4 100644 --- a/modules/demo/deck/playground/package.json +++ b/modules/demo/deck/playground/package.json @@ -9,29 +9,29 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/aggregation-layers": "8.6.6", - "@deck.gl/core": "8.6.6", - "@deck.gl/geo-layers": "8.6.6", - "@deck.gl/google-maps": "8.6.6", - "@deck.gl/json": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@loaders.gl/3d-tiles": "3.1.6", - "@loaders.gl/core": "3.1.6", - "@loaders.gl/csv": "3.1.6", - "@loaders.gl/draco": "3.1.6", - "@loaders.gl/gltf": "3.1.6", - "@luma.gl/constants": "8.5.10", + "@deck.gl/aggregation-layers": "8.8.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/geo-layers": "8.8.10", + "@deck.gl/google-maps": "8.8.10", + "@deck.gl/json": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@loaders.gl/3d-tiles": "3.2.9", + "@loaders.gl/core": "3.2.9", + "@loaders.gl/csv": "3.2.9", + "@loaders.gl/draco": "3.2.9", + "@loaders.gl/gltf": "3.2.9", + "@luma.gl/constants": "8.5.16", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ "src", diff --git a/modules/demo/deck/playground/src/app.js b/modules/demo/deck/playground/src/app.jsx similarity index 96% rename from modules/demo/deck/playground/src/app.js rename to modules/demo/deck/playground/src/app.jsx index b0e0c5670..6ad6045a3 100644 --- a/modules/demo/deck/playground/src/app.js +++ b/modules/demo/deck/playground/src/app.jsx @@ -1,7 +1,8 @@ -import React, { Component, Fragment } from 'react'; +import * as React from 'react' +import { Component, Fragment } from 'react'; import { StaticMap } from 'react-map-gl'; -import DeckWithMapboxMaps from './deck-with-mapbox-maps'; -import DeckWithGoogleMaps from './deck-with-google-maps'; +import DeckWithMapboxMaps from './deck-with-mapbox-maps.jsx'; +import DeckWithGoogleMaps from './deck-with-google-maps.jsx'; import { FlyToInterpolator } from '@deck.gl/core'; import { JSONConverter, JSONConfiguration, _shallowEqualObjects } from '@deck.gl/json'; diff --git a/modules/demo/deck/playground/src/deck-with-google-maps.js b/modules/demo/deck/playground/src/deck-with-google-maps.jsx similarity index 81% rename from modules/demo/deck/playground/src/deck-with-google-maps.js rename to modules/demo/deck/playground/src/deck-with-google-maps.jsx index b78a28478..47ea74a2a 100644 --- a/modules/demo/deck/playground/src/deck-with-google-maps.js +++ b/modules/demo/deck/playground/src/deck-with-google-maps.jsx @@ -1,6 +1,7 @@ /* global console, document, window */ -import React, { Component } from 'react'; import { GoogleMapsOverlay } from '@deck.gl/google-maps'; +import * as React from 'react'; +import { Component } from 'react'; const HOST = 'https://maps.googleapis.com/maps/api/js'; const LOADING_GIF = 'https://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif'; @@ -31,27 +32,24 @@ function loadGoogleMapApi(apiKey, onComplete) { export default class DeckWithGoogleMaps extends Component { constructor(props) { super(props); - this.state = { - googleMapsLoaded: window.google && window.google.maps - }; + this.state = { googleMapsLoaded: window.google && window.google.maps }; } componentDidMount() { const { googleMapsToken } = this.props; if (!window.google || (window.google && !window.google.maps)) { - loadGoogleMapApi(googleMapsToken, () => { - this.setState({ googleMapsLoaded: true }); - }); + loadGoogleMapApi(googleMapsToken, () => { this.setState({ googleMapsLoaded: true }); }); } } render() { const { googleMapsLoaded } = this.state; if (!googleMapsLoaded) { - return Loading Google Maps overlay...; + return Loading Google Maps overlay...; } - return ; + return < DeckOverlayWrapper {...this.props} + />; } } @@ -76,7 +74,7 @@ class DeckOverlayWrapper extends Component { const map = new window.google.maps.Map(this.containerRef.current, view); this.DeckOverlay.setMap(map); this.DeckOverlay.setProps({ layers: this.props.layers }); - // eslint-disable-next-line react/no-did-mount-set-state + //eslint-disable-next-line react/no-did-mount-set-state this.setState({ isOverlayConfigured: true }); } @@ -84,9 +82,7 @@ class DeckOverlayWrapper extends Component { this.DeckOverlay.setProps({ layers: this.props.layers }); } - componentWillUnmount() { - delete this.DeckOverlay; - } + componentWillUnmount() { delete this.DeckOverlay; } render() { return
; diff --git a/modules/demo/deck/playground/src/deck-with-mapbox-maps.js b/modules/demo/deck/playground/src/deck-with-mapbox-maps.jsx similarity index 85% rename from modules/demo/deck/playground/src/deck-with-mapbox-maps.js rename to modules/demo/deck/playground/src/deck-with-mapbox-maps.jsx index e5e30e199..1a9dcb303 100644 --- a/modules/demo/deck/playground/src/deck-with-mapbox-maps.js +++ b/modules/demo/deck/playground/src/deck-with-mapbox-maps.jsx @@ -1,6 +1,7 @@ -import React, { Component } from 'react'; -import DeckGL from '@deck.gl/react'; import { View } from '@deck.gl/core'; +import DeckGL from '@deck.gl/react'; +import * as React from 'react'; +import { Component } from 'react'; export default class DeckWithMapboxMaps extends Component { render() { @@ -22,7 +23,7 @@ export default class DeckWithMapboxMaps extends Component { } return ( - + {maps} ); diff --git a/modules/demo/deck/plot/app.js b/modules/demo/deck/plot/app.js deleted file mode 100644 index 51d3832de..000000000 --- a/modules/demo/deck/plot/app.js +++ /dev/null @@ -1,98 +0,0 @@ -import React, {Component} from 'react'; -import {render} from 'react-dom'; -import DeckGL from '@deck.gl/react'; -import {OrbitView} from '@deck.gl/core'; -import PlotLayer from './plot-layer'; -import {scaleLinear} from 'd3-scale'; - -const EQUATION = (x, y) => (Math.sin(x * x + y * y) * x) / Math.PI; - -const INITIAL_VIEW_STATE = { - target: [0.5, 0.5, 0.5], - orbitAxis: 'Y', - rotationX: 30, - rotationOrbit: -30, - /* global window */ - zoom: typeof window !== `undefined` ? Math.log2(window.innerHeight / 3) : 1 // fit 3x3x3 box in current viewport -}; - -function getScale({min, max}) { - return scaleLinear() - .domain([min, max]) - .range([0, 1]); -} - -export default class App extends Component { - constructor(props) { - super(props); - this.state = { - hoverInfo: null - }; - - this._onHover = this._onHover.bind(this); - this._renderTooltip = this._renderTooltip.bind(this); - } - - _onHover(info) { - const hoverInfo = info.sample ? info : null; - if (hoverInfo !== this.state.hoverInfo) { - this.setState({hoverInfo}); - } - } - - _renderTooltip() { - const {hoverInfo} = this.state; - return ( - hoverInfo && ( -
- {hoverInfo.sample.map(x => x.toFixed(3)).join(', ')} -
- ) - ); - } - - render() { - const {resolution = 200, showAxis = true, equation = EQUATION} = this.props; - - const layers = [ - equation && - resolution && - new PlotLayer({ - getPosition: (u, v) => { - const x = (u - 1 / 2) * Math.PI * 2; - const y = (v - 1 / 2) * Math.PI * 2; - return [x, y, equation(x, y)]; - }, - getColor: (x, y, z) => [40, z * 128 + 128, 160], - getXScale: getScale, - getYScale: getScale, - getZScale: getScale, - uCount: resolution, - vCount: resolution, - drawAxes: showAxis, - axesPadding: 0.25, - axesColor: [0, 0, 0, 128], - pickable: true, - onHover: this._onHover, - updateTriggers: { - getPosition: equation - } - }) - ]; - - return ( - - {this._renderTooltip} - - ); - } -} - -export function renderToDOM(container) { - render(, container); -} diff --git a/modules/demo/deck/plot/app.jsx b/modules/demo/deck/plot/app.jsx new file mode 100644 index 000000000..6df24b7e7 --- /dev/null +++ b/modules/demo/deck/plot/app.jsx @@ -0,0 +1,92 @@ +import { OrbitView } from '@deck.gl/core'; +import DeckGL from '@deck.gl/react'; +import { scaleLinear } from 'd3-scale'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; + +import PlotLayer from './plot-layer'; + +const EQUATION = (x, y) => (Math.sin(x * x + y * y) * x) / Math.PI; + +const INITIAL_VIEW_STATE = { + target: [0.5, 0.5, 0.5], + orbitAxis: 'Y', + rotationX: 30, + rotationOrbit: -30, + /* global window */ + zoom: typeof window !== `undefined` ? Math.log2(window.innerHeight / 3) : 1 // fit 3x3x3 box in current viewport +}; + +function getScale({ min, max }) { return scaleLinear().domain([min, max]).range([0, 1]); } + +export default class App extends Component { + constructor(props) { + super(props); + this.state = { hoverInfo: null }; + + this._onHover = this._onHover.bind(this); + this._renderTooltip = this._renderTooltip.bind(this); + } + + _onHover(info) { + const hoverInfo = info.sample ? info : null; + if (hoverInfo !== this.state.hoverInfo) { this.setState({ hoverInfo }); } + } + + _renderTooltip() { + const { hoverInfo } = this.state; + return ( + hoverInfo && ( +
+ {hoverInfo.sample.map(x => x.toFixed(3)).join(', ')} +
+ ) + ); + } + + render() { + const { resolution = 200, showAxis = true, equation = EQUATION } = this.props; + + const layers = [ + equation && + resolution && + new PlotLayer({ + getPosition: (u, v) => { + const x = (u - 1 / 2) * Math.PI * 2; + const y = (v - 1 / 2) * Math.PI * 2; + return [x, y, equation(x, y)]; + }, + getColor: (x, y, z) => [40, z * 128 + 128, 160], + getXScale: getScale, + getYScale: getScale, + getZScale: getScale, + uCount: resolution, + vCount: resolution, + drawAxes: showAxis, + axesPadding: 0.25, + axesColor: [0, 0, 0, 128], + pickable: true, + onHover: this._onHover, + updateTriggers: { + getPosition: equation + } + }) + ]; + + return ( + + {this._renderTooltip} + + ); + } +} + +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/plot/index.js b/modules/demo/deck/plot/index.js index 2d28ce7ec..c7582e277 100755 --- a/modules/demo/deck/plot/index.js +++ b/modules/demo/deck/plot/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Plot Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/plot/package.json b/modules/demo/deck/plot/package.json index 09c3d55bd..04f34d6b0 100644 --- a/modules/demo/deck/plot/package.json +++ b/modules/demo/deck/plot/package.json @@ -9,15 +9,15 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", "d3-scale": "2.2.2", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2" }, diff --git a/modules/demo/deck/point-cloud/app.js b/modules/demo/deck/point-cloud/app.jsx similarity index 61% rename from modules/demo/deck/point-cloud/app.js rename to modules/demo/deck/point-cloud/app.jsx index 3f7657003..19e796c55 100644 --- a/modules/demo/deck/point-cloud/app.js +++ b/modules/demo/deck/point-cloud/app.jsx @@ -1,10 +1,11 @@ /* eslint-disable no-unused-vars */ -const {OrbitView, COORDINATE_SYSTEM, LinearInterpolator} = require('@deck.gl/core'); +const { OrbitView, COORDINATE_SYSTEM, LinearInterpolator } = require('@deck.gl/core'); import DeckGL from '@deck.gl/react'; -import {PointCloudLayer} from '@rapidsai/deck.gl'; -import React, {PureComponent, useEffect} from 'react'; -import {render} from 'react-dom'; -import {DataFrame, Float32, Series, Uint32} from '@rapidsai/cudf'; +import { PointCloudLayer } from '@rapidsai/deck.gl'; +import * as React from 'react' +import { PureComponent } from 'react'; +import { render } from 'react-dom'; +import { DataFrame, Float32, Series, Uint32 } from '@rapidsai/cudf'; const transitionInterpolator = new LinearInterpolator(['rotationOrbit']); @@ -12,28 +13,28 @@ const df = new DataFrame({ 'x': Series.new({ type: new Float32, data: [ - 0, 0, 31.41076, 19.58429, -6.98955, -28.30012, -28.30012, - -6.98955, 19.58429, 31.41076, 62.79052, 55.59824, 35.66908, 7.56856, + 0, 0, 31.41076, 19.58429, -6.98955, -28.30012, -28.30012, + -6.98955, 19.58429, 31.41076, 62.79052, 55.59824, 35.66908, 7.56856, -22.26583, -46.99938, -60.96594, -60.96594, -46.99938, -22.26583, 7.56856, - 35.66908, 55.59824, 62.79052, 94.10831, 89.00927, 74.26468, 51.47237, - 23.10223, -7.7714, -37.80288, -63.73783, -82.76579 + 35.66908, 55.59824, 62.79052, 94.10831, 89.00927, 74.26468, 51.47237, + 23.10223, -7.7714, -37.80288, -63.73783, -82.76579 ] }), 'y': Series.new({ type: new Float32, data: [ - 0, 0, 0, 24.55792, 30.62323, 13.62862, -13.62862, - -30.62323, -24.55792, 0, 0, 29.18021, 51.67558, 62.33271, - 58.71016, 41.63782, 15.02675, -15.02675, -41.63782, -58.71016, -62.33271, - -51.67558, -29.18021, 0, 0, 30.55692, 57.80252, 78.78433, - 91.22862, 93.78689, 86.18188, 69.23774, 44.79061 + 0, 0, 0, 24.55792, 30.62323, 13.62862, -13.62862, + -30.62323, -24.55792, 0, 0, 29.18021, 51.67558, 62.33271, + 58.71016, 41.63782, 15.02675, -15.02675, -41.63782, -58.71016, -62.33271, + -51.67558, -29.18021, 0, 0, 30.55692, 57.80252, 78.78433, + 91.22862, 93.78689, 86.18188, 69.23774, 44.79061 ] }), 'z': Series.new({ type: new Float32, data: [ - 0, 0, 10, 0.49344, 0.49344, 0.49344, 0.49344, 0.49344, 0.49344, - 0.49344, 1.97327, 5, 1.97327, 1.97327, 1.97327, 1.97327, 1.97327, 1.97327, + 0, 0, 10, 0.49344, 0.49344, 0.49344, 0.49344, 0.49344, 0.49344, + 0.49344, 1.97327, 5, 1.97327, 1.97327, 1.97327, 1.97327, 1.97327, 1.97327, 1.97327, 1.97327, 11, 1.97327, 1.97327, 1.97327, 4.43804, 4.43804, 4.43804, 4.43804, 4.43804, 19, 4.43804, 4.43804, 4.43804 ] @@ -64,15 +65,15 @@ export default class App extends PureComponent { constructor(props) { super(props); - this.state = {viewState: INITIAL_VIEW_STATE}; + this.state = { viewState: INITIAL_VIEW_STATE }; this._onViewStateChange = this._onViewStateChange.bind(this); } - _onViewStateChange({viewState}) { this.setState({viewState}); } + _onViewStateChange({ viewState }) { this.setState({ viewState }); } render() { - const {viewState} = this.state; + const { viewState } = this.state; const layers = [new PointCloudLayer({ id: 'laz-point-cloud-layer', @@ -99,14 +100,12 @@ export default class App extends PureComponent { return ( ); } @@ -114,4 +113,4 @@ export default class App extends PureComponent { export function renderToDOM(container) { render(, container); - } +} diff --git a/modules/demo/deck/point-cloud/index.js b/modules/demo/deck/point-cloud/index.js index f11cf0fa9..14a68d553 100755 --- a/modules/demo/deck/point-cloud/index.js +++ b/modules/demo/deck/point-cloud/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Point Cloud Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/point-cloud/package.json b/modules/demo/deck/point-cloud/package.json index 06e8f5059..4ebb454fd 100644 --- a/modules/demo/deck/point-cloud/package.json +++ b/modules/demo/deck/point-cloud/package.json @@ -9,18 +9,18 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@loaders.gl/core": "3.1.6", - "@loaders.gl/las": "3.1.6", - "@loaders.gl/ply": "3.1.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@loaders.gl/core": "3.2.9", + "@loaders.gl/las": "3.2.9", + "@loaders.gl/ply": "3.2.9", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2" }, diff --git a/modules/demo/deck/scatterplot/app.js b/modules/demo/deck/scatterplot/app.js deleted file mode 100644 index a24cd647e..000000000 --- a/modules/demo/deck/scatterplot/app.js +++ /dev/null @@ -1,68 +0,0 @@ -import React, {Component} from 'react'; -import {render} from 'react-dom'; -import {StaticMap} from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; -import {ScatterplotLayer} from '@deck.gl/layers'; - -// Set your mapbox token here -const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line -const MALE_COLOR = [0, 128, 255]; -const FEMALE_COLOR = [255, 0, 128]; - -// Source data CSV -const DATA_URL = - 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/scatterplot/manhattan.json'; // eslint-disable-line - -const INITIAL_VIEW_STATE = { - longitude: -74, - latitude: 40.7, - zoom: 11, - maxZoom: 16, - pitch: 0, - bearing: 0 -}; - -export default class App extends Component { - _renderLayers() { - const { - data = DATA_URL, - radius = 30, - maleColor = MALE_COLOR, - femaleColor = FEMALE_COLOR - } = this.props; - - return [ - new ScatterplotLayer({ - id: 'scatter-plot', - data, - radiusScale: radius, - radiusMinPixels: 0.25, - getPosition: d => [d[0], d[1], 0], - getFillColor: d => (d[2] === 1 ? maleColor : femaleColor), - getRadius: 1, - updateTriggers: { - getFillColor: [maleColor, femaleColor] - } - }) - ]; - } - - render() { - const {mapStyle = 'mapbox://styles/mapbox/light-v9'} = this.props; - - return ( - - - - ); - } -} - -export function renderToDOM(container) { - render(, container); -} diff --git a/modules/demo/deck/scatterplot/app.jsx b/modules/demo/deck/scatterplot/app.jsx new file mode 100644 index 000000000..d8e0f525e --- /dev/null +++ b/modules/demo/deck/scatterplot/app.jsx @@ -0,0 +1,59 @@ +import { ScatterplotLayer } from '@deck.gl/layers'; +import DeckGL from '@deck.gl/react'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; + +// Set your mapbox token here +const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line +const MALE_COLOR = [0, 128, 255]; +const FEMALE_COLOR = [255, 0, 128]; + +// Source data CSV +const DATA_URL = + 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/scatterplot/manhattan.json'; // eslint-disable-line + +const INITIAL_VIEW_STATE = { + longitude: -74, + latitude: 40.7, + zoom: 11, + maxZoom: 16, + pitch: 0, + bearing: 0 +}; + +export default class App extends Component { + _renderLayers() { + const { data = DATA_URL, radius = 30, maleColor = MALE_COLOR, femaleColor = FEMALE_COLOR } = + this.props; + + return [new ScatterplotLayer({ + id: 'scatter-plot', + data, + radiusScale: radius, + radiusMinPixels: 0.25, + getPosition: d => [d[0], d[1], 0], + getFillColor: d => (d[2] === 1 ? maleColor : femaleColor), + getRadius: 1, + updateTriggers: { getFillColor: [maleColor, femaleColor] } + })]; + } + + render() { + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; + + return ( + + + + ); + } +} + +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/scatterplot/index.js b/modules/demo/deck/scatterplot/index.js index 7b8a6e66b..f15fcb2c9 100755 --- a/modules/demo/deck/scatterplot/index.js +++ b/modules/demo/deck/scatterplot/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Scatter Plot Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/scatterplot/package.json b/modules/demo/deck/scatterplot/package.json index 2b479ca81..af2294e7b 100644 --- a/modules/demo/deck/scatterplot/package.json +++ b/modules/demo/deck/scatterplot/package.json @@ -9,21 +9,21 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/scenegraph-layer/app.js b/modules/demo/deck/scenegraph-layer/app.jsx similarity index 88% rename from modules/demo/deck/scenegraph-layer/app.js rename to modules/demo/deck/scenegraph-layer/app.jsx index 93acba6ce..199b6cd8a 100644 --- a/modules/demo/deck/scenegraph-layer/app.js +++ b/modules/demo/deck/scenegraph-layer/app.jsx @@ -1,13 +1,14 @@ /* global fetch, setTimeout, clearTimeout */ -import React, {Component, Fragment} from 'react'; -import {render} from 'react-dom'; +import * as React from 'react' +import { Component, Fragment } from 'react'; +import { render } from 'react-dom'; -import {StaticMap} from 'react-map-gl'; +import { StaticMap } from 'react-map-gl'; import DeckGL from '@deck.gl/react'; -import {ScenegraphLayer} from '@deck.gl/mesh-layers'; +import { ScenegraphLayer } from '@deck.gl/mesh-layers'; -import {GLTFLoader} from '@loaders.gl/gltf'; -import {registerLoaders} from '@loaders.gl/core'; +import { GLTFLoader } from '@loaders.gl/gltf'; +import { registerLoaders } from '@loaders.gl/core'; registerLoaders([GLTFLoader]); @@ -23,7 +24,7 @@ const MODEL_URL = const REFRESH_TIME = 30000; const ANIMATIONS = { - '*': {speed: 1} + '*': { speed: 1 } }; const INITIAL_VIEW_STATE = { @@ -81,7 +82,7 @@ export default class App extends Component { .then(resp => { if (resp && resp.states && !this.unmounted) { const nextTimeoutId = setTimeout(() => this._loadData(), REFRESH_TIME); - this.setState({data: this._sort(resp.states, this.state.data), nextTimeoutId}); + this.setState({ data: this._sort(resp.states, this.state.data), nextTimeoutId }); } }); } @@ -94,7 +95,7 @@ export default class App extends Component { } _renderLayers() { - const {data} = this.state; + const { data } = this.state; if (Array.isArray(data)) { return [ @@ -118,7 +119,7 @@ export default class App extends Component { transitions: { getPosition: REFRESH_TIME * 0.9 }, - onHover: ({object}) => this.setState({hoverObject: object}) + onHover: ({ object }) => this.setState({ hoverObject: object }) }) ]; } @@ -161,7 +162,7 @@ export default class App extends Component { > Data provided by{' '} diff --git a/modules/demo/deck/scenegraph-layer/index.js b/modules/demo/deck/scenegraph-layer/index.js index e389f37ab..764588e81 100755 --- a/modules/demo/deck/scenegraph-layer/index.js +++ b/modules/demo/deck/scenegraph-layer/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'SceneGraph Layer Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/scenegraph-layer/package.json b/modules/demo/deck/scenegraph-layer/package.json index 235341c83..8a7416b2e 100644 --- a/modules/demo/deck/scenegraph-layer/package.json +++ b/modules/demo/deck/scenegraph-layer/package.json @@ -9,21 +9,21 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@loaders.gl/core": "3.1.6", - "@loaders.gl/gltf": "3.1.6", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@loaders.gl/core": "3.2.9", + "@loaders.gl/gltf": "3.2.9", "@rapidsai/jsdom": "~22.8.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/screen-grid/app.js b/modules/demo/deck/screen-grid/app.js deleted file mode 100644 index 4a3495b8c..000000000 --- a/modules/demo/deck/screen-grid/app.js +++ /dev/null @@ -1,84 +0,0 @@ -import React, {Component} from 'react'; -import {render} from 'react-dom'; -import {StaticMap} from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; -import {ScreenGridLayer} from '@deck.gl/aggregation-layers'; -import {isWebGL2} from '@luma.gl/core'; - -// Set your mapbox token here -const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line - -// Source data CSV -const DATA_URL = - 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/screen-grid/uber-pickup-locations.json'; // eslint-disable-line - -const INITIAL_VIEW_STATE = { - longitude: -73.75, - latitude: 40.73, - zoom: 9.6, - maxZoom: 16, - pitch: 0, - bearing: 0 -}; - -const colorRange = [ - [255, 255, 178, 25], - [254, 217, 118, 85], - [254, 178, 76, 127], - [253, 141, 60, 170], - [240, 59, 32, 212], - [189, 0, 38, 255] -]; - -export default class App extends Component { - _renderLayers() { - const {data = DATA_URL, cellSize = 20, gpuAggregation = true, aggregation = 'SUM'} = this.props; - - return [ - new ScreenGridLayer({ - id: 'grid', - data, - opacity: 0.8, - getPosition: d => [d[0], d[1]], - getWeight: d => d[2], - cellSizePixels: cellSize, - colorRange, - gpuAggregation, - aggregation - }) - ]; - } - - _onInitialized(gl) { - if (!isWebGL2(gl)) { - console.warn('GPU aggregation is not supported'); // eslint-disable-line - if (this.props.disableGPUAggregation) { - this.props.disableGPUAggregation(); - } - } - } - - render() { - const {mapStyle = 'mapbox://styles/mapbox/dark-v9'} = this.props; - - return ( - - - - ); - } -} - -export function renderToDOM(container) { - render(, container); -} diff --git a/modules/demo/deck/screen-grid/app.jsx b/modules/demo/deck/screen-grid/app.jsx new file mode 100644 index 000000000..e5dcd1ca7 --- /dev/null +++ b/modules/demo/deck/screen-grid/app.jsx @@ -0,0 +1,78 @@ +import { ScreenGridLayer } from '@deck.gl/aggregation-layers'; +import DeckGL from '@deck.gl/react'; +import { isWebGL2 } from '@luma.gl/core'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; + +// Set your mapbox token here +const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line + +// Source data CSV +const DATA_URL = + 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/screen-grid/uber-pickup-locations.json'; // eslint-disable-line + +const INITIAL_VIEW_STATE = { + longitude: -73.75, + latitude: 40.73, + zoom: 9.6, + maxZoom: 16, + pitch: 0, + bearing: 0 +}; + +const colorRange = [ + [255, 255, 178, 25], + [254, 217, 118, 85], + [254, 178, 76, 127], + [253, 141, 60, 170], + [240, 59, 32, 212], + [189, 0, 38, 255] +]; + +export default class App extends Component { + _renderLayers() { + const { data = DATA_URL, cellSize = 20, gpuAggregation = true, aggregation = 'SUM' } = this.props; + + return [new ScreenGridLayer({ + id: 'grid', + data, + opacity: 0.8, + getPosition: d => [d[0], d[1]], + getWeight: d => d[2], + cellSizePixels: cellSize, + colorRange, + gpuAggregation, + aggregation + })]; + } + + _onInitialized(gl) { + if (!isWebGL2(gl)) { + console.warn('GPU aggregation is not supported'); // eslint-disable-line + if (this.props.disableGPUAggregation) { this.props.disableGPUAggregation(); } + } + } + + render() { + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; + + return ( + + + + ); + } +} + +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/screen-grid/index.js b/modules/demo/deck/screen-grid/index.js index bce21c446..56c489ed8 100755 --- a/modules/demo/deck/screen-grid/index.js +++ b/modules/demo/deck/screen-grid/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Screen Grid Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/screen-grid/package.json b/modules/demo/deck/screen-grid/package.json index 5399fbc58..d89cd6b72 100644 --- a/modules/demo/deck/screen-grid/package.json +++ b/modules/demo/deck/screen-grid/package.json @@ -9,20 +9,20 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/aggregation-layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@luma.gl/core": "8.5.10", + "@deck.gl/aggregation-layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@luma.gl/core": "8.5.16", "@rapidsai/jsdom": "~22.8.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/tagmap/app.js b/modules/demo/deck/tagmap/app.js deleted file mode 100644 index c09776ee7..000000000 --- a/modules/demo/deck/tagmap/app.js +++ /dev/null @@ -1,76 +0,0 @@ -/* eslint-disable max-len */ -import React, {Component} from 'react'; -import {render} from 'react-dom'; -import {StaticMap} from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; -import {TextLayer} from '@deck.gl/layers'; -import TagmapLayer from './tagmap-layer'; - -// Set your mapbox token here -const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line -// sample data -const DATA_URL = 'https://rivulet-zhang.github.io/dataRepo/tagmap/hashtags10k.json'; -// mapbox style file path -const MAPBOX_STYLE = - 'https://rivulet-zhang.github.io/dataRepo/mapbox/style/map-style-dark-v9-no-labels.json'; - -const DEFAULT_COLOR = [29, 145, 192]; - -const INITIAL_VIEW_STATE = { - latitude: 39.1, - longitude: -94.57, - zoom: 3.8, - maxZoom: 16, - pitch: 0, - bearing: 0 -}; - -export default class App extends Component { - _renderLayers() { - const {data = DATA_URL, cluster = true, fontSize = 32} = this.props; - - return [ - cluster - ? new TagmapLayer({ - id: 'twitter-topics-tagmap', - data, - getLabel: x => x.label, - getPosition: x => x.coordinates, - minFontSize: 14, - maxFontSize: fontSize * 2 - 14 - }) - : new TextLayer({ - id: 'twitter-topics-raw', - data, - getText: d => d.label, - getPosition: x => x.coordinates, - getColor: d => DEFAULT_COLOR, - getSize: d => 20, - sizeScale: fontSize / 20 - }) - ]; - } - - render() { - const {mapStyle = MAPBOX_STYLE} = this.props; - - return ( - - - - ); - } -} - -export function renderToDOM(container) { - render(, container); -} diff --git a/modules/demo/deck/tagmap/app.jsx b/modules/demo/deck/tagmap/app.jsx new file mode 100644 index 000000000..90d75972f --- /dev/null +++ b/modules/demo/deck/tagmap/app.jsx @@ -0,0 +1,72 @@ +/* eslint-disable max-len */ +import { TextLayer } from '@deck.gl/layers'; +import DeckGL from '@deck.gl/react'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; + +import TagmapLayer from './tagmap-layer'; + +// Set your mapbox token here +const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line +// sample data +const DATA_URL = 'https://rivulet-zhang.github.io/dataRepo/tagmap/hashtags10k.json'; +// mapbox style file path +const MAPBOX_STYLE = + 'https://rivulet-zhang.github.io/dataRepo/mapbox/style/map-style-dark-v9-no-labels.json'; + +const DEFAULT_COLOR = [29, 145, 192]; + +const INITIAL_VIEW_STATE = { + latitude: 39.1, + longitude: -94.57, + zoom: 3.8, + maxZoom: 16, + pitch: 0, + bearing: 0 +}; + +export default class App extends Component { + _renderLayers() { + const { data = DATA_URL, cluster = true, fontSize = 32 } = this.props; + + return [cluster ? new TagmapLayer({ + id: 'twitter-topics-tagmap', + data, + getLabel: x => x.label, + getPosition: x => x.coordinates, + minFontSize: 14, + maxFontSize: fontSize * 2 - 14 + }) + : new TextLayer({ + id: 'twitter-topics-raw', + data, + getText: d => d.label, + getPosition: x => x.coordinates, + getColor: d => DEFAULT_COLOR, + getSize: d => 20, + sizeScale: fontSize / 20 + })]; + } + + render() { + const { mapStyle = MAPBOX_STYLE } = this.props; + + return ( + + + + ); + } +} + +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/tagmap/index.js b/modules/demo/deck/tagmap/index.js index b4f987c47..d6814d515 100755 --- a/modules/demo/deck/tagmap/index.js +++ b/modules/demo/deck/tagmap/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Tag Map Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/tagmap/package.json b/modules/demo/deck/tagmap/package.json index 1b1862be5..d79708b16 100644 --- a/modules/demo/deck/tagmap/package.json +++ b/modules/demo/deck/tagmap/package.json @@ -9,23 +9,23 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", "d3-scale": "2.2.2", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16", + "react-map-gl": "7.0.19", "tagmap.js": "1.1.2" }, "files": [ - "app.js", + "app.jsx", "index.js", "tagmap-layer", "package.json" diff --git a/modules/demo/deck/text-layer/app.js b/modules/demo/deck/text-layer/app.jsx similarity index 56% rename from modules/demo/deck/text-layer/app.js rename to modules/demo/deck/text-layer/app.jsx index 2382d78d6..718982547 100644 --- a/modules/demo/deck/text-layer/app.js +++ b/modules/demo/deck/text-layer/app.jsx @@ -1,17 +1,20 @@ /* eslint-disable max-len */ /* global fetch, window */ -import React, {Component} from 'react'; -import {render} from 'react-dom'; -import {StaticMap} from 'react-map-gl'; +import { TextLayer } from '@deck.gl/layers'; import DeckGL from '@deck.gl/react'; -import {TextLayer} from '@deck.gl/layers'; import GL from '@luma.gl/constants'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; // Set your mapbox token here -const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line +const MAPBOX_TOKEN = process.env.MapboxAccessToken || 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line // mapbox style file path -const MAPBOX_STYLE = - 'https://rivulet-zhang.github.io/dataRepo/mapbox/style/map-style-dark-v9-no-labels.json'; +const MAPBOX_STYLE = ( + 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' || + 'https://rivulet-zhang.github.io/dataRepo/mapbox/style/map-style-dark-v9-no-labels.json' +); // sample data const DATA_URL = 'https://rivulet-zhang.github.io/dataRepo/text-layer/hashtagsOneDayWithTime.json'; const SECONDS_PER_DAY = 24 * 60 * 60; @@ -34,41 +37,33 @@ export default class App extends Component { this.state = {}; - if (!window.demoLauncherActive) { - this._loadData(); - } + if (!window.demoLauncherActive) { this._loadData(); } } componentWillUnmount() { - if (this._animationFrame) { - window.cancelAnimationFrame(this._animationFrame); - } + if (this._animationFrame) { window.cancelAnimationFrame(this._animationFrame); } } _loadData() { - fetch(DATA_URL) - .then(resp => resp.json()) - .then(resp => { - // each entry in the data object contains all tweets posted at that second - const data = Array.from({length: SECONDS_PER_DAY}, () => []); - resp.forEach(val => { - const second = parseInt(val.time, 10) % SECONDS_PER_DAY; - data[second].push(val); - }); - this.setState({data}); - window.requestAnimationFrame(this._animateData.bind(this)); + fetch(DATA_URL).then(resp => resp.json()).then(resp => { + // each entry in the data object contains all tweets posted at that second + const data = Array.from({ length: SECONDS_PER_DAY }, () => []); + resp.forEach(val => { + const second = parseInt(val.time, 10) % SECONDS_PER_DAY; + data[second].push(val); }); + this.setState({ data }); + window.requestAnimationFrame(this._animateData.bind(this)); + }); } _animateData() { - const {data} = this.state; + const { data } = this.state; const now = Date.now(); const getSecCeil = ms => Math.ceil(ms / 1000, 10) % SECONDS_PER_DAY; const getSecFloor = ms => Math.floor(ms / 1000, 10) % SECONDS_PER_DAY; - const timeWindow = [ - getSecCeil(now - TIME_WINDOW * 1000), - getSecFloor(now + TIME_WINDOW * 1000) - ]; + const timeWindow = + [getSecCeil(now - TIME_WINDOW * 1000), getSecFloor(now + TIME_WINDOW * 1000)]; if (data) { let dataSlice = []; for (let i = timeWindow[0]; i <= timeWindow[1]; i++) { @@ -78,32 +73,30 @@ export default class App extends Component { // use non-linear function to achieve smooth animation const opac = Math.cos((offset * Math.PI) / 2); const color = [...TEXT_COLOR, opac * 255]; - return Object.assign({}, val, {color}, {size: 12 * (opac + 1)}); + return Object.assign({}, val, { color }, { size: 12 * (opac + 1) }); }); dataSlice = [...dataSlice, ...slice]; } } - this.setState({dataSlice}); + this.setState({ dataSlice }); } this._animationFrame = window.requestAnimationFrame(this._animateData.bind(this)); } _renderLayers() { - return [ - new TextLayer({ - id: 'hashtag-layer', - data: this.state.dataSlice, - sizeScale: 4, - getPosition: d => d.coordinates, - getColor: d => d.color, - getSize: d => d.size - }) - ]; + return [new TextLayer({ + id: 'hashtag-layer', + data: this.state.dataSlice, + sizeScale: 4, + getPosition: d => d.coordinates, + getColor: d => d.color, + getSize: d => d.size + })]; } render() { - const {mapStyle = MAPBOX_STYLE} = this.props; + const { mapStyle = MAPBOX_STYLE } = this.props; return ( + }}> , container); -} +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/text-layer/index.js b/modules/demo/deck/text-layer/index.js index c1f421225..5518bced9 100755 --- a/modules/demo/deck/text-layer/index.js +++ b/modules/demo/deck/text-layer/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Text Layer Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/text-layer/package.json b/modules/demo/deck/text-layer/package.json index d4c8598a5..54c6fbc92 100644 --- a/modules/demo/deck/text-layer/package.json +++ b/modules/demo/deck/text-layer/package.json @@ -9,22 +9,22 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", - "@luma.gl/constants": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", + "@luma.gl/constants": "8.5.16", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/trips/app.js b/modules/demo/deck/trips/app.jsx similarity index 63% rename from modules/demo/deck/trips/app.js rename to modules/demo/deck/trips/app.jsx index 7b590e502..bd3d53bb3 100644 --- a/modules/demo/deck/trips/app.js +++ b/modules/demo/deck/trips/app.jsx @@ -1,11 +1,12 @@ /* global window */ -import {AmbientLight, LightingEffect, PointLight} from '@deck.gl/core'; -import {TripsLayer} from '@deck.gl/geo-layers'; -import {PolygonLayer} from '@deck.gl/layers'; +import { AmbientLight, LightingEffect, PointLight } from '@deck.gl/core'; +import { TripsLayer } from '@deck.gl/geo-layers'; +import { PolygonLayer } from '@deck.gl/layers'; import DeckGL from '@deck.gl/react'; -import React, {Component} from 'react'; -import {render} from 'react-dom'; -import {StaticMap} from 'react-map-gl'; +import * as React from 'react'; +import { Component } from 'react'; +import { render } from 'react-dom'; +import { StaticMap } from 'react-map-gl'; // Set your mapbox token here const MAPBOX_TOKEN = @@ -19,12 +20,12 @@ const DATA_URL = { 'https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/trips/trips-v7.json' // eslint-disable-line }; -const ambientLight = new AmbientLight({color: [255, 255, 255], intensity: 1.0}); +const ambientLight = new AmbientLight({ color: [255, 255, 255], intensity: 1.0 }); const pointLight = - new PointLight({color: [255, 255, 255], intensity: 2.0, position: [-74.05, 40.7, 8000]}); + new PointLight({ color: [255, 255, 255], intensity: 2.0, position: [-74.05, 40.7, 8000] }); -const lightingEffect = new LightingEffect({ambientLight, pointLight}); +const lightingEffect = new LightingEffect({ ambientLight, pointLight }); const material = { ambient: 0.1, @@ -54,7 +55,7 @@ const landCover = [[[-74.0, 40.7], [-74.02, 40.7], [-74.02, 40.72], [-74.0, 40.7 export default class App extends Component { constructor(props) { super(props); - this.state = {time: 0}; + this.state = { time: 0 }; } componentDidMount() { this._animate(); } @@ -65,22 +66,22 @@ export default class App extends Component { _animate() { const { - loopLength = 1800, // unit corresponds to the timestamp in source data + loopLength = 1800, // unit corresponds to the timestamp in source data animationSpeed = 30 // unit time per second - } = this.props; + } = this.props; const timestamp = Date.now() / 1000; - const loopTime = loopLength / animationSpeed; + const loopTime = loopLength / animationSpeed; - this.setState({time: ((timestamp % loopTime) / loopTime) * loopLength}); + this.setState({ time: ((timestamp % loopTime) / loopTime) * loopLength }); this._animationFrame = window.requestAnimationFrame(this._animate.bind(this)); } _renderLayers() { const { - buildings = DATA_URL.BUILDINGS, - trips = DATA_URL.TRIPS, + buildings = DATA_URL.BUILDINGS, + trips = DATA_URL.TRIPS, trailLength = 180, - theme = DEFAULT_THEME + theme = DEFAULT_THEME } = this.props; return [ @@ -95,9 +96,9 @@ export default class App extends Component { new TripsLayer({ id: 'trips', data: trips, - getPath: d => d.path, + getPath: d => d.path, getTimestamps: d => d.timestamps, - getColor: d => (d.vendor === 0 ? theme.trailColor0 : theme.trailColor1), + getColor: d => (d.vendor === 0 ? theme.trailColor0 : theme.trailColor1), opacity: 0.3, widthMinPixels: 2, rounded: true, @@ -112,7 +113,7 @@ export default class App extends Component { extruded: true, wireframe: false, opacity: 0.5, - getPolygon: f => f.polygon, + getPolygon: f => f.polygon, getElevation: f => f.height, getFillColor: theme.buildingColor, material: theme.material @@ -121,18 +122,24 @@ export default class App extends Component { } render() { - const {viewState, mapStyle = 'mapbox://styles/mapbox/dark-v9', theme = DEFAULT_THEME} = - this.props; + const { + viewState, + mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json', + theme = DEFAULT_THEME + } = this.props; return ( < StaticMap - reuseMaps + layers={this._renderLayers()} + effects={theme.effects} + initialViewState={INITIAL_VIEW_STATE} + viewState={viewState} + controller={true}> + ); diff --git a/modules/demo/deck/trips/index.js b/modules/demo/deck/trips/index.js index 72081ea2b..8ec0c0d1a 100755 --- a/modules/demo/deck/trips/index.js +++ b/modules/demo/deck/trips/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'Trips Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/trips/package.json b/modules/demo/deck/trips/package.json index 3eee1509c..2a4a5097e 100644 --- a/modules/demo/deck/trips/package.json +++ b/modules/demo/deck/trips/package.json @@ -9,23 +9,23 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/geo-layers": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/geo-layers": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/deck/worldmap/app.js b/modules/demo/deck/worldmap/app.jsx similarity index 66% rename from modules/demo/deck/worldmap/app.js rename to modules/demo/deck/worldmap/app.jsx index 53487d16f..f68c79f7b 100644 --- a/modules/demo/deck/worldmap/app.js +++ b/modules/demo/deck/worldmap/app.jsx @@ -1,12 +1,14 @@ -import React, { Component } from 'react'; +import { _SunLight as SunLight, AmbientLight, LightingEffect } from '@deck.gl/core'; +import { GeoJsonLayer, PolygonLayer } from '@deck.gl/layers'; +import DeckGL from '@deck.gl/react'; +import * as React from 'react'; +import { Component } from 'react'; import { render } from 'react-dom'; import { StaticMap } from 'react-map-gl'; -import DeckGL from '@deck.gl/react'; -import { GeoJsonLayer, PolygonLayer } from '@deck.gl/layers'; -import { LightingEffect, AmbientLight, _SunLight as SunLight } from '@deck.gl/core'; // Set your mapbox token here -const MAPBOX_TOKEN = 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line +const MAPBOX_TOKEN = + 'pk.eyJ1Ijoid21qcGlsbG93IiwiYSI6ImNrN2JldzdpbDA2Ym0zZXFzZ3oydXN2ajIifQ.qPOZDsyYgMMUhxEKrvHzRA'; // eslint-disable-line // Source data GeoJSON const DATA_URL = 'https://raw.githubusercontent.com/johan/world.geo.json/master/countries.geo.json'; @@ -20,17 +22,10 @@ export const INITIAL_VIEW_STATE = { bearing: 0 }; -const ambientLight = new AmbientLight({ - color: [255, 255, 255], - intensity: 1.0 -}); +const ambientLight = new AmbientLight({ color: [255, 255, 255], intensity: 1.0 }); -const dirLight = new SunLight({ - timestamp: Date.UTC(2019, 7, 1, 22), - color: [255, 255, 255], - intensity: 1.0, - _shadow: true -}); +const dirLight = new SunLight( + { timestamp: Date.UTC(2019, 7, 1, 22), color: [255, 255, 255], intensity: 1.0, _shadow: true }); const landCover = [[[-123.0, 49.196], [-123.0, 49.324], [-123.306, 49.324], [-123.306, 49.196]]]; @@ -38,9 +33,7 @@ export default class App extends Component { constructor(props) { super(props); - this.state = { - hoveredObject: null - }; + this.state = { hoveredObject: null }; this._onHover = this._onHover.bind(this); this._renderTooltip = this._renderTooltip.bind(this); @@ -49,9 +42,7 @@ export default class App extends Component { this._effects = [lightingEffect]; } - _onHover({ x, y, object }) { - this.setState({ x, y, hoveredObject: object }); - } + _onHover({ x, y, object }) { this.setState({ x, y, hoveredObject: object }); } _renderLayers() { const { data = DATA_URL } = this.props; @@ -86,31 +77,27 @@ export default class App extends Component { _renderTooltip() { const { x, y, hoveredObject } = this.state; return ( - hoveredObject && ( -
-
- Country -
+ hoveredObject && + (
Country +
+
+
{hoveredObject.properties + .name}
-
{hoveredObject.properties.name}
-
- id:{hoveredObject.id}
-
+ id:{hoveredObject.id}
- ) - ); +
)); } render() { - const { mapStyle = 'mapbox://styles/mapbox/light-v9' } = this.props; + const { mapStyle = 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json' } = this.props; return ( + controller={true}> , container); -} +export function renderToDOM(container) { render(, container); } diff --git a/modules/demo/deck/worldmap/index.js b/modules/demo/deck/worldmap/index.js index b635a5622..604eb25a8 100755 --- a/modules/demo/deck/worldmap/index.js +++ b/modules/demo/deck/worldmap/index.js @@ -18,7 +18,7 @@ module.exports = (glfwOptions = { title: 'World Map Demo', transparent: false }) => { - return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.js', { + return require('@rapidsai/jsdom').RapidsJSDOM.fromReactComponent('./app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved module: {path: __dirname}, diff --git a/modules/demo/deck/worldmap/package.json b/modules/demo/deck/worldmap/package.json index 8bdb8da26..9cc3059c5 100644 --- a/modules/demo/deck/worldmap/package.json +++ b/modules/demo/deck/worldmap/package.json @@ -9,21 +9,21 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-map-gl": "5.3.16" + "react-map-gl": "7.0.19" }, "files": [ - "app.js", + "app.jsx", "index.js", "package.json" ] diff --git a/modules/demo/graph/package.json b/modules/demo/graph/package.json index 24f2e0e46..40e2caf73 100644 --- a/modules/demo/graph/package.json +++ b/modules/demo/graph/package.json @@ -10,13 +10,13 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/react": "8.6.6", - "@luma.gl/core": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/react": "8.8.10", + "@luma.gl/core": "8.5.16", "@rapidsai/cuda": "~22.8.1", "@rapidsai/cudf": "~22.8.1", "@rapidsai/cugraph": "~22.8.1", @@ -24,7 +24,7 @@ "@rapidsai/glfw": "~22.8.1", "@rapidsai/jsdom": "~22.8.1", "ix": "4.4.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2" }, diff --git a/modules/demo/graph/src/app.jsx b/modules/demo/graph/src/app.jsx index 25b51073b..db6927078 100644 --- a/modules/demo/graph/src/app.jsx +++ b/modules/demo/graph/src/app.jsx @@ -1,4 +1,4 @@ -// Copyright (c) 2020-2021, NVIDIA CORPORATION. +// Copyright (c) 2020-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ import { default as DeckGL } from '@deck.gl/react'; import { GraphLayer } from '@rapidsai/deck.gl'; import { as as asAsyncIterable } from 'ix/asynciterable/as'; import { takeWhile } from 'ix/asynciterable/operators/takewhile'; -import React from 'react'; +import * as React from 'react'; import { default as loadGraphData } from './loader'; @@ -124,8 +124,7 @@ App.defaultProps = { } }) ] -} - ; +}; function onDragStart({ index }, { target }) { if (target) { [window, target].forEach((element) => (element.style || {}).cursor = 'grabbing'); } diff --git a/modules/demo/graph/src/loader.js b/modules/demo/graph/src/loader.js index 6fa8b2d97..4cec2ff5b 100644 --- a/modules/demo/graph/src/loader.js +++ b/modules/demo/graph/src/loader.js @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,7 +15,6 @@ import {clampRange as clamp, Float32Buffer} from '@rapidsai/cuda'; import {DataFrame, Float32, Int32, Series, Uint32, Uint64, Uint8, Utf8String} from '@rapidsai/cudf'; import {Graph} from '@rapidsai/cugraph'; -import * as arrow from 'apache-arrow'; import {concat as concatAsync, zip as zipAsync} from 'ix/asynciterable'; import {flatMap as flatMapAsync} from 'ix/asynciterable/operators'; diff --git a/modules/demo/ipc/graph/index.js b/modules/demo/ipc/graph/index.js index e42cbf6e7..c29e7faa2 100755 --- a/modules/demo/ipc/graph/index.js +++ b/modules/demo/ipc/graph/index.js @@ -21,7 +21,7 @@ module.exports = ({url, ...glfwOptions} = { }) => { return require('@rapidsai/jsdom') .RapidsJSDOM.fromReactComponent( - './src/app.js', + './src/app.jsx', { glfwOptions, // Change cwd to the example dir so relative file paths are resolved diff --git a/modules/demo/ipc/graph/package.json b/modules/demo/ipc/graph/package.json index b9c2dc2fd..c79bf2de5 100644 --- a/modules/demo/ipc/graph/package.json +++ b/modules/demo/ipc/graph/package.json @@ -10,21 +10,21 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/react": "8.6.6", - "@luma.gl/core": "8.5.10", - "@luma.gl/gltools": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/react": "8.8.10", + "@luma.gl/core": "8.5.16", + "@luma.gl/gltools": "8.5.16", "@rapidsai/cuda": "~22.8.1", "@rapidsai/cudf": "~22.8.1", "@rapidsai/cugraph": "~22.8.1", "@rapidsai/deck.gl": "~22.8.1", "@rapidsai/glfw": "~22.8.1", "ix": "4.4.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2", "zeromq": "6.0.0-beta.6" diff --git a/modules/demo/ipc/graph/src/app.js b/modules/demo/ipc/graph/src/app.jsx similarity index 92% rename from modules/demo/ipc/graph/src/app.js rename to modules/demo/ipc/graph/src/app.jsx index 08f6979f2..2ed0e63f8 100644 --- a/modules/demo/ipc/graph/src/app.js +++ b/modules/demo/ipc/graph/src/app.jsx @@ -26,7 +26,7 @@ import DeckGL from '@deck.gl/react'; import { createDeckGLReactRef } from '@rapidsai/deck.gl'; import { as as asAsyncIterable } from 'ix/asynciterable/as'; import { takeWhile } from 'ix/asynciterable/operators/takewhile'; -import React from 'react'; +import * as React from 'react'; import { GraphLayer } from '@rapidsai/deck.gl'; @@ -65,13 +65,10 @@ export class App extends React.Component { _framebuffer={props.getRenderTarget ? props.getRenderTarget() : null} onAfterRender={composeFns([onAfterRender, this.state.onAfterRender])}> + edgeStrokeWidth={2} edgeOpacity={.5} nodesStroked={true} nodeFillOpacity={ + .5} nodeStrokeOpacity={.9} { + ...this.state.graph + } /> {selectedParameter !== undefined ? : null} + /> : null + } ); } @@ -123,15 +121,13 @@ App.defaultProps = { }; function onDragStart({ index }, { target }) { - if (target) { - [window, target].forEach((element) => (element.style || {}).cursor = 'grabbing'); - } + if (target) { [window, target].forEach((element) => (element.style || {}).cursor = 'grabbing'); } } function onDragEnd({ index }, { target }) { if (target) { - [window, target].forEach((element) => - (element.style || {}).cursor = ~index ? 'pointer' : 'default'); + [window, target].forEach((element) => (element.style || {}).cursor = + ~index ? 'pointer' : 'default'); } } diff --git a/modules/demo/ipc/graph/src/index.js b/modules/demo/ipc/graph/src/index.js index c11cc7d3c..889184a31 100644 --- a/modules/demo/ipc/graph/src/index.js +++ b/modules/demo/ipc/graph/src/index.js @@ -14,14 +14,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; -import ReactDOM from 'react-dom'; +import * as React from 'react'; +import {render} from 'react-dom'; import App from './app'; export default App; if (process.env.REACT_APP_ENVIRONMENT === 'browser') { - ReactDOM.render( + render( , diff --git a/modules/demo/ipc/umap/package.json b/modules/demo/ipc/umap/package.json index 4061170d5..3be586d32 100644 --- a/modules/demo/ipc/umap/package.json +++ b/modules/demo/ipc/umap/package.json @@ -10,17 +10,17 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", "@rapidsai/cuda": "~22.8.1", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "zeromq": "6.0.0-beta.6" }, "files": [ diff --git a/modules/demo/luma/lessons/01/package.json b/modules/demo/luma/lessons/01/package.json index c788674c4..1267d6fd5 100644 --- a/modules/demo/luma/lessons/01/package.json +++ b/modules/demo/luma/lessons/01/package.json @@ -7,7 +7,7 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@luma.gl/core": "8.5.10", - "math.gl": "3.5.7" + "@luma.gl/core": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/02/package.json b/modules/demo/luma/lessons/02/package.json index c0b11368c..709042f79 100644 --- a/modules/demo/luma/lessons/02/package.json +++ b/modules/demo/luma/lessons/02/package.json @@ -7,7 +7,7 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@luma.gl/core": "8.5.10", - "math.gl": "3.5.7" + "@luma.gl/core": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/03/package.json b/modules/demo/luma/lessons/03/package.json index 79427550f..6012e67f9 100644 --- a/modules/demo/luma/lessons/03/package.json +++ b/modules/demo/luma/lessons/03/package.json @@ -7,11 +7,11 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@loaders.gl/images": "3.1.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "@luma.gl/experimental": "8.5.10", - "@luma.gl/shadertools": "8.5.10", - "math.gl": "3.5.7" + "@loaders.gl/images": "3.2.9", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "@luma.gl/experimental": "8.5.16", + "@luma.gl/shadertools": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/04/package.json b/modules/demo/luma/lessons/04/package.json index f2614152f..822b3e9b6 100644 --- a/modules/demo/luma/lessons/04/package.json +++ b/modules/demo/luma/lessons/04/package.json @@ -7,8 +7,8 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "math.gl": "3.5.7" + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/05/package.json b/modules/demo/luma/lessons/05/package.json index f6d2bac48..b3592c0fe 100644 --- a/modules/demo/luma/lessons/05/package.json +++ b/modules/demo/luma/lessons/05/package.json @@ -7,8 +7,8 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "math.gl": "3.5.7" + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/06/package.json b/modules/demo/luma/lessons/06/package.json index fd7ef968b..1d022f50c 100644 --- a/modules/demo/luma/lessons/06/package.json +++ b/modules/demo/luma/lessons/06/package.json @@ -7,11 +7,11 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@loaders.gl/images": "3.1.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "@luma.gl/experimental": "8.5.10", - "@luma.gl/shadertools": "8.5.10", - "math.gl": "3.5.7" + "@loaders.gl/images": "3.2.9", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "@luma.gl/experimental": "8.5.16", + "@luma.gl/shadertools": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/07/package.json b/modules/demo/luma/lessons/07/package.json index dc670d62a..be602b017 100644 --- a/modules/demo/luma/lessons/07/package.json +++ b/modules/demo/luma/lessons/07/package.json @@ -7,11 +7,11 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@loaders.gl/images": "3.1.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "@luma.gl/experimental": "8.5.10", - "@luma.gl/shadertools": "8.5.10", - "math.gl": "3.5.7" + "@loaders.gl/images": "3.2.9", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "@luma.gl/experimental": "8.5.16", + "@luma.gl/shadertools": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/08/package.json b/modules/demo/luma/lessons/08/package.json index 048e86243..b03b31223 100644 --- a/modules/demo/luma/lessons/08/package.json +++ b/modules/demo/luma/lessons/08/package.json @@ -7,11 +7,11 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@loaders.gl/images": "3.1.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "@luma.gl/experimental": "8.5.10", - "@luma.gl/shadertools": "8.5.10", - "math.gl": "3.5.7" + "@loaders.gl/images": "3.2.9", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "@luma.gl/experimental": "8.5.16", + "@luma.gl/shadertools": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/09/package.json b/modules/demo/luma/lessons/09/package.json index 1e7800355..95b2f764e 100644 --- a/modules/demo/luma/lessons/09/package.json +++ b/modules/demo/luma/lessons/09/package.json @@ -7,11 +7,11 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@loaders.gl/images": "3.1.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "@luma.gl/experimental": "8.5.10", - "@luma.gl/shadertools": "8.5.10", - "math.gl": "3.5.7" + "@loaders.gl/images": "3.2.9", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "@luma.gl/experimental": "8.5.16", + "@luma.gl/shadertools": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/10/package.json b/modules/demo/luma/lessons/10/package.json index 6b41fa1f9..77654b0d7 100644 --- a/modules/demo/luma/lessons/10/package.json +++ b/modules/demo/luma/lessons/10/package.json @@ -11,12 +11,12 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@loaders.gl/images": "3.1.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "@luma.gl/experimental": "8.5.10", - "@luma.gl/shadertools": "8.5.10", - "math.gl": "3.5.7", + "@loaders.gl/images": "3.2.9", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "@luma.gl/experimental": "8.5.16", + "@luma.gl/shadertools": "8.5.16", + "math.gl": "3.6.3", "mjolnir.js": "2.5.2" } } diff --git a/modules/demo/luma/lessons/11/package.json b/modules/demo/luma/lessons/11/package.json index fda3c3171..a85506223 100644 --- a/modules/demo/luma/lessons/11/package.json +++ b/modules/demo/luma/lessons/11/package.json @@ -11,9 +11,9 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "math.gl": "3.5.7", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "math.gl": "3.6.3", "mjolnir.js": "2.5.2" } } diff --git a/modules/demo/luma/lessons/12/package.json b/modules/demo/luma/lessons/12/package.json index dd03a2c89..c31dcafd2 100644 --- a/modules/demo/luma/lessons/12/package.json +++ b/modules/demo/luma/lessons/12/package.json @@ -11,8 +11,8 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "math.gl": "3.5.7" + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/13/package.json b/modules/demo/luma/lessons/13/package.json index 71d44debd..045cb60b0 100644 --- a/modules/demo/luma/lessons/13/package.json +++ b/modules/demo/luma/lessons/13/package.json @@ -11,8 +11,8 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "math.gl": "3.5.7" + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/14/package.json b/modules/demo/luma/lessons/14/package.json index 328c50d85..8054a90c3 100644 --- a/modules/demo/luma/lessons/14/package.json +++ b/modules/demo/luma/lessons/14/package.json @@ -11,11 +11,11 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@loaders.gl/images": "3.1.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "@luma.gl/experimental": "8.5.10", - "@luma.gl/shadertools": "8.5.10", - "math.gl": "3.5.7" + "@loaders.gl/images": "3.2.9", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "@luma.gl/experimental": "8.5.16", + "@luma.gl/shadertools": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/15/package.json b/modules/demo/luma/lessons/15/package.json index f2116a801..6758590bf 100644 --- a/modules/demo/luma/lessons/15/package.json +++ b/modules/demo/luma/lessons/15/package.json @@ -11,8 +11,8 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "math.gl": "3.5.7" + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/lessons/16/package.json b/modules/demo/luma/lessons/16/package.json index e3d81b730..ae400ad1b 100644 --- a/modules/demo/luma/lessons/16/package.json +++ b/modules/demo/luma/lessons/16/package.json @@ -7,11 +7,11 @@ "start-local": "webpack-dev-server --env.local --progress --hot --open -d" }, "dependencies": { - "@loaders.gl/images": "3.1.6", - "@luma.gl/constants": "8.5.10", - "@luma.gl/core": "8.5.10", - "@luma.gl/experimental": "8.5.10", - "@luma.gl/shadertools": "8.5.10", - "math.gl": "3.5.7" + "@loaders.gl/images": "3.2.9", + "@luma.gl/constants": "8.5.16", + "@luma.gl/core": "8.5.16", + "@luma.gl/experimental": "8.5.16", + "@luma.gl/shadertools": "8.5.16", + "math.gl": "3.6.3" } } diff --git a/modules/demo/luma/package.json b/modules/demo/luma/package.json index e08845e2c..22d2bb24f 100644 --- a/modules/demo/luma/package.json +++ b/modules/demo/luma/package.json @@ -10,8 +10,8 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { "@rapidsai/glfw": "~22.8.1", diff --git a/modules/demo/spatial/app.jsx b/modules/demo/spatial/app.jsx index 33273c50e..df57997ea 100644 --- a/modules/demo/spatial/app.jsx +++ b/modules/demo/spatial/app.jsx @@ -18,7 +18,7 @@ import { GraphLayer } from '@rapidsai/deck.gl'; // Preload cuDF kernels into device memory Series.new([0, 1, 2]).sum(); -import React from 'react'; +import * as React from 'react'; import DeckGL from '@deck.gl/react'; import { log as deckLog, OrthographicView } from '@deck.gl/core'; diff --git a/modules/demo/spatial/package.json b/modules/demo/spatial/package.json index 33eba6d7a..60b8cc9ff 100644 --- a/modules/demo/spatial/package.json +++ b/modules/demo/spatial/package.json @@ -10,19 +10,19 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/react": "8.6.6", - "@luma.gl/core": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/react": "8.8.10", + "@luma.gl/core": "8.5.16", "@rapidsai/cuda": "~22.8.1", "@rapidsai/cudf": "~22.8.1", "@rapidsai/cuspatial": "~22.8.1", "@rapidsai/glfw": "~22.8.1", "@rapidsai/jsdom": "~22.8.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2" }, diff --git a/modules/demo/spatial/util.js b/modules/demo/spatial/util.js index d609832a4..1e01b316f 100644 --- a/modules/demo/spatial/util.js +++ b/modules/demo/spatial/util.js @@ -28,7 +28,7 @@ import {existsSync} from 'fs'; import {readFile as fsReadFile} from 'fs/promises'; import * as Path from 'path'; -import loadSpatialDataset from './data'; +import * as loadSpatialDataset from './data'; /** * @param {Map} colorMap diff --git a/modules/demo/sql/sql-cluster-server/components/querybuilder.jsx b/modules/demo/sql/sql-cluster-server/components/querybuilder.jsx index 2b8da07f8..fdb4dca5f 100644 --- a/modules/demo/sql/sql-cluster-server/components/querybuilder.jsx +++ b/modules/demo/sql/sql-cluster-server/components/querybuilder.jsx @@ -14,7 +14,7 @@ import 'react-awesome-query-builder/lib/css/styles.css'; -import React from 'react'; +import * as React from 'react'; import { Builder, Query, Utils as QbUtils } from 'react-awesome-query-builder'; import MaterialConfig from 'react-awesome-query-builder/lib/config/material'; diff --git a/modules/demo/sql/sql-cluster-server/components/querydashboard.jsx b/modules/demo/sql/sql-cluster-server/components/querydashboard.jsx index 0ed0a8a08..f18018e8e 100644 --- a/modules/demo/sql/sql-cluster-server/components/querydashboard.jsx +++ b/modules/demo/sql/sql-cluster-server/components/querydashboard.jsx @@ -13,7 +13,7 @@ // limitations under the License. import Button from '@material-ui/core/Button'; -import React from 'react'; +import * as React from 'react'; import { Col, Container, FormControl, InputGroup, Row } from 'react-bootstrap'; import { QueryBuilder } from './querybuilder'; import { tableFromIPC } from 'apache-arrow'; diff --git a/modules/demo/sql/sql-cluster-server/package.json b/modules/demo/sql/sql-cluster-server/package.json index eba9c1771..e0f367206 100644 --- a/modules/demo/sql/sql-cluster-server/package.json +++ b/modules/demo/sql/sql-cluster-server/package.json @@ -20,7 +20,7 @@ "@material-ui/pickers": "3.3.10", "@rapidsai/cudf": "~22.8.1", "@rapidsai/sql": "~22.8.1", - "apache-arrow": "^8.0.0", + "apache-arrow": "^9.0.0", "axios": "0.22.0", "bootstrap": "4.6.0", "fastify-arrow": "1.0.0", @@ -33,8 +33,12 @@ "react-loading-overlay": "1.0.1" }, "files": [ - "package.json", "pages", - "components" + "components", + "data.js", + "index.js", + "README.md", + "package.json", + "next.config.js" ] } diff --git a/modules/demo/sql/sql-cluster-server/pages/_app.jsx b/modules/demo/sql/sql-cluster-server/pages/_app.jsx index 31a0c5e38..e0d75448a 100644 --- a/modules/demo/sql/sql-cluster-server/pages/_app.jsx +++ b/modules/demo/sql/sql-cluster-server/pages/_app.jsx @@ -17,7 +17,7 @@ import './style.css'; import { Container, Navbar, Nav } from 'react-bootstrap'; import { QueryDashboard } from '../components/querydashboard'; -import React from 'react'; +import * as React from 'react'; export default function App() { return ( diff --git a/modules/demo/ssr/graph/package.json b/modules/demo/ssr/graph/package.json index 1dfd0e02f..93d507863 100644 --- a/modules/demo/ssr/graph/package.json +++ b/modules/demo/ssr/graph/package.json @@ -10,8 +10,8 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { "@rapidsai/cuda": "~22.8.1", diff --git a/modules/demo/ssr/luma/package.json b/modules/demo/ssr/luma/package.json index 7b0f755fa..ab6d3fee3 100644 --- a/modules/demo/ssr/luma/package.json +++ b/modules/demo/ssr/luma/package.json @@ -10,8 +10,8 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { "@rapidsai/cuda": "~22.8.1", diff --git a/modules/demo/ssr/point-cloud/package.json b/modules/demo/ssr/point-cloud/package.json index 9e4c21deb..36f7abc5d 100644 --- a/modules/demo/ssr/point-cloud/package.json +++ b/modules/demo/ssr/point-cloud/package.json @@ -10,8 +10,8 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { "@rapidsai/cuda": "~22.8.1", diff --git a/modules/demo/tfjs/addition-rnn/package.json b/modules/demo/tfjs/addition-rnn/package.json index fe9b386b0..3d0e1e4ca 100644 --- a/modules/demo/tfjs/addition-rnn/package.json +++ b/modules/demo/tfjs/addition-rnn/package.json @@ -10,8 +10,8 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { "@rapidsai/glfw": "~22.8.1", diff --git a/modules/demo/tfjs/webgl-tests/package.json b/modules/demo/tfjs/webgl-tests/package.json index 63f2ede93..968993476 100644 --- a/modules/demo/tfjs/webgl-tests/package.json +++ b/modules/demo/tfjs/webgl-tests/package.json @@ -10,8 +10,8 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { "@rapidsai/glfw": "~22.8.1", diff --git a/modules/demo/umap/package.json b/modules/demo/umap/package.json index a546afdb2..c46deab07 100644 --- a/modules/demo/umap/package.json +++ b/modules/demo/umap/package.json @@ -10,13 +10,13 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { - "@deck.gl/core": "8.6.6", - "@deck.gl/react": "8.6.6", - "@luma.gl/core": "8.5.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/react": "8.8.10", + "@luma.gl/core": "8.5.16", "@rapidsai/cuda": "~22.8.1", "@rapidsai/cudf": "~22.8.1", "@rapidsai/cugraph": "~22.8.1", @@ -24,7 +24,7 @@ "@rapidsai/glfw": "~22.8.1", "@rapidsai/jsdom": "~22.8.1", "ix": "4.4.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "react": "17.0.2", "react-dom": "17.0.2" }, diff --git a/modules/demo/umap/src/app.jsx b/modules/demo/umap/src/app.jsx index f05368c60..d6aec68dc 100644 --- a/modules/demo/umap/src/app.jsx +++ b/modules/demo/umap/src/app.jsx @@ -18,7 +18,7 @@ import { default as DeckGL } from '@deck.gl/react'; import { GraphLayer } from '@rapidsai/deck.gl'; import { as as asAsyncIterable } from 'ix/asynciterable/as'; import { takeWhile } from 'ix/asynciterable/operators/takewhile'; -import React from 'react'; +import * as React from 'react'; import { default as loadGraphData } from './loader'; diff --git a/modules/demo/viz-app/components/demo-dashboard/data-row/data-metrics/data-metrics.jsx b/modules/demo/viz-app/components/demo-dashboard/data-row/data-metrics/data-metrics.jsx index 907123141..2407df817 100644 --- a/modules/demo/viz-app/components/demo-dashboard/data-row/data-metrics/data-metrics.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/data-row/data-metrics/data-metrics.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import styles from '../data-container.module.css'; export default function DataMetrics({ source }) { diff --git a/modules/demo/viz-app/components/demo-dashboard/data-row/data-row.jsx b/modules/demo/viz-app/components/demo-dashboard/data-row/data-row.jsx index 05ee6a360..cdc615287 100644 --- a/modules/demo/viz-app/components/demo-dashboard/data-row/data-row.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/data-row/data-row.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import { Row, Col } from 'react-bootstrap'; import DataTable from './data-table/data-table'; import DataMetrics from './data-metrics/data-metrics'; diff --git a/modules/demo/viz-app/components/demo-dashboard/data-row/data-table/data-table.jsx b/modules/demo/viz-app/components/demo-dashboard/data-row/data-table/data-table.jsx index fbd27dc96..432fe281c 100644 --- a/modules/demo/viz-app/components/demo-dashboard/data-row/data-table/data-table.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/data-row/data-table/data-table.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import styles from '../data-container.module.css'; export default function DataTable({ source }) { diff --git a/modules/demo/viz-app/components/demo-dashboard/demo-dashboard.jsx b/modules/demo/viz-app/components/demo-dashboard/demo-dashboard.jsx index 2db483b39..d9ff184bf 100644 --- a/modules/demo/viz-app/components/demo-dashboard/demo-dashboard.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/demo-dashboard.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import Layout from './layout/layout'; import DemoView from './demo-view/demo-view'; import DataRow from './data-row/data-row'; diff --git a/modules/demo/viz-app/components/demo-dashboard/extended-table/extended-table.jsx b/modules/demo/viz-app/components/demo-dashboard/extended-table/extended-table.jsx index 2b0342bc4..01b8b08e8 100644 --- a/modules/demo/viz-app/components/demo-dashboard/extended-table/extended-table.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/extended-table/extended-table.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import { useTable, useSortBy, usePagination } from 'react-table'; import styles from './extended-table.module.css'; diff --git a/modules/demo/viz-app/components/demo-dashboard/file-input/file-input.jsx b/modules/demo/viz-app/components/demo-dashboard/file-input/file-input.jsx index bafba7b32..afb064bc0 100644 --- a/modules/demo/viz-app/components/demo-dashboard/file-input/file-input.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/file-input/file-input.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; export default class FileInput extends React.Component { constructor(props) { diff --git a/modules/demo/viz-app/components/demo-dashboard/header-underline/header-underline.jsx b/modules/demo/viz-app/components/demo-dashboard/header-underline/header-underline.jsx index 0d577e6ae..09abcbae6 100644 --- a/modules/demo/viz-app/components/demo-dashboard/header-underline/header-underline.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/header-underline/header-underline.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; export default function HeaderUnderline(props) { return ( diff --git a/modules/demo/viz-app/components/demo-dashboard/navbar/status/status.jsx b/modules/demo/viz-app/components/demo-dashboard/navbar/status/status.jsx index 87b1cefac..dabffbd5b 100644 --- a/modules/demo/viz-app/components/demo-dashboard/navbar/status/status.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/navbar/status/status.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCircleNotch } from '@fortawesome/free-solid-svg-icons'; diff --git a/modules/demo/viz-app/components/demo-dashboard/slide-menu/slide-menu.jsx b/modules/demo/viz-app/components/demo-dashboard/slide-menu/slide-menu.jsx index 02dc4d559..2b946e537 100644 --- a/modules/demo/viz-app/components/demo-dashboard/slide-menu/slide-menu.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/slide-menu/slide-menu.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import FileInput from '../file-input/file-input'; import HeaderUnderline from '../header-underline/header-underline'; import { slide as Menu } from 'react-burger-menu'; diff --git a/modules/demo/viz-app/components/demo-dashboard/tool-bar/tool-bar.jsx b/modules/demo/viz-app/components/demo-dashboard/tool-bar/tool-bar.jsx index f4d0ea158..cd137f3b0 100644 --- a/modules/demo/viz-app/components/demo-dashboard/tool-bar/tool-bar.jsx +++ b/modules/demo/viz-app/components/demo-dashboard/tool-bar/tool-bar.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import styles from './tool-bar.module.css'; import Image from 'next/image'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; diff --git a/modules/demo/viz-app/package.json b/modules/demo/viz-app/package.json index 947ae41bc..5cb01123b 100644 --- a/modules/demo/viz-app/package.json +++ b/modules/demo/viz-app/package.json @@ -13,28 +13,27 @@ "start": "next build && next start" }, "dependencies": { - "@deck.gl/carto": "8.6.6", - "@deck.gl/core": "8.6.6", - "@deck.gl/geo-layers": "8.6.6", - "@deck.gl/layers": "8.6.6", - "@deck.gl/mesh-layers": "8.6.6", - "@deck.gl/react": "8.6.6", + "@deck.gl/carto": "8.8.10", + "@deck.gl/core": "8.8.10", + "@deck.gl/geo-layers": "8.8.10", + "@deck.gl/layers": "8.8.10", + "@deck.gl/mesh-layers": "8.8.10", + "@deck.gl/react": "8.8.10", "@fortawesome/fontawesome-svg-core": "1.2.35", "@fortawesome/free-solid-svg-icons": "5.15.3", "@fortawesome/react-fontawesome": "0.1.14", "@rapidsai/cudf": "~22.8.1", - "apache-arrow": "^8.0.0", + "apache-arrow": "^9.0.0", "bootstrap": "4.6.0", "d3": "6.6.2", "echarts": "5.0.2", "echarts-for-react": "3.0.1", - "mjolnir.js": "2.6.0", + "mjolnir.js": "2.7.1", "next": "11.1.3", "react": "17.0.2", "react-bootstrap": "1.6.1", "react-burger-menu": "3.0.6", "react-dom": "17.0.2", - "react-map-gl": "5.3.16", "react-table": "7.7.0", "react-tabs": "3.2.2", "simple-peer": "9.11.0", diff --git a/modules/demo/viz-app/pages/demo/graph.jsx b/modules/demo/viz-app/pages/demo/graph.jsx index e3dc9ed47..732e13f30 100644 --- a/modules/demo/viz-app/pages/demo/graph.jsx +++ b/modules/demo/viz-app/pages/demo/graph.jsx @@ -13,7 +13,7 @@ // limitations under the License. import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; -import React from 'react'; +import * as React from 'react'; import DemoDashboard from "../../components/demo-dashboard/demo-dashboard"; import HeaderUnderline from '../../components/demo-dashboard/header-underline/header-underline'; import ExtendedTable from '../../components/demo-dashboard/extended-table/extended-table'; diff --git a/modules/demo/viz-app/pages/demo/point-cloud.jsx b/modules/demo/viz-app/pages/demo/point-cloud.jsx index d8730b8da..cd8deee0d 100644 --- a/modules/demo/viz-app/pages/demo/point-cloud.jsx +++ b/modules/demo/viz-app/pages/demo/point-cloud.jsx @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import React from 'react'; +import * as React from 'react'; import DemoDashboard from "../../components/demo-dashboard/demo-dashboard"; import { io } from "socket.io-client"; diff --git a/modules/demo/viz-app/pages/demo/umap.jsx b/modules/demo/viz-app/pages/demo/umap.jsx index c034b6fda..81ce0f101 100644 --- a/modules/demo/viz-app/pages/demo/umap.jsx +++ b/modules/demo/viz-app/pages/demo/umap.jsx @@ -13,7 +13,7 @@ // limitations under the License. import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; -import React from 'react'; +import * as React from 'react'; import DemoDashboard from "../../components/demo-dashboard/demo-dashboard"; import HeaderUnderline from '../../components/demo-dashboard/header-underline/header-underline'; import ExtendedTable from '../../components/demo-dashboard/extended-table/extended-table'; diff --git a/modules/demo/xterm/package.json b/modules/demo/xterm/package.json index d53e4c634..58c2fa660 100644 --- a/modules/demo/xterm/package.json +++ b/modules/demo/xterm/package.json @@ -10,8 +10,8 @@ ], "bin": "index.js", "scripts": { - "start": "node --experimental-vm-modules --trace-uncaught index.js", - "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --trace-uncaught index.js" + "start": "node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js", + "watch": "find -type f | entr -c -d -r node --experimental-vm-modules --enable-source-maps --trace-uncaught index.js" }, "dependencies": { "@rapidsai/glfw": "~22.8.1", diff --git a/modules/io/.vscode/tasks.json b/modules/io/.vscode/tasks.json new file mode 100644 index 000000000..9ae576be1 --- /dev/null +++ b/modules/io/.vscode/tasks.json @@ -0,0 +1,83 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "shell", + "label": "Rebuild node_cuio TS and C++ (slow)", + "group": { "kind": "build", "isDefault": true, }, + "command": "if [[ \"${input:CMAKE_BUILD_TYPE}\" == \"Release\" ]]; then yarn rebuild; else yarn rebuild:debug; fi", + "problemMatcher": [ + "$tsc", + { + "owner": "cuda", + "fileLocation": ["relative", "${workspaceFolder}/build/${input:CMAKE_BUILD_TYPE}"], + "pattern": { + "file": 1, + "line": 2, + "severity": 3, + "message": 4, + "regexp": "^(.*)\\((\\d+)\\):\\s+(error|warning|note|info):\\s+(.*)$" + } + }, + { + "owner": "cpp", + "fileLocation": ["relative", "${workspaceFolder}/build/${input:CMAKE_BUILD_TYPE}"], + "pattern": { + "file": 1, + "line": 2, + "severity": 4, + "message": 5, + "regexp": "^(.*):(\\d+):(\\d+):\\s+(error|warning|note|info):\\s+(.*)$" + } + }, + ], + }, + { + "type": "npm", + "group": "build", + "label": "Recompile node_cuio TS (fast)", + "script": "tsc:build", + "detail": "yarn tsc:build", + "problemMatcher": ["$tsc"], + }, + { + "type": "shell", + "group": "build", + "label": "Recompile node_cuio C++ (fast)", + "command": "ninja -C ${workspaceFolder}/build/${input:CMAKE_BUILD_TYPE}", + "problemMatcher": [ + { + "owner": "cuda", + "fileLocation": ["relative", "${workspaceFolder}/build/${input:CMAKE_BUILD_TYPE}"], + "pattern": { + "file": 1, + "line": 2, + "severity": 3, + "message": 4, + "regexp": "^(.*)\\((\\d+)\\):\\s+(error|warning|note|info):\\s+(.*)$" + } + }, + { + "owner": "cpp", + "fileLocation": ["relative", "${workspaceFolder}/build/${input:CMAKE_BUILD_TYPE}"], + "pattern": { + "file": 1, + "line": 2, + "severity": 4, + "message": 5, + "regexp": "^(.*):(\\d+):(\\d+):\\s+(error|warning|note|info):\\s+(.*)$" + } + }, + ], + }, + ], + "inputs": [ + { + "type": "pickString", + "default": "Release", + "id": "CMAKE_BUILD_TYPE", + "options": ["Release", "Debug"], + "description": "C++ Build Type", + } + ] +} diff --git a/modules/io/package.json b/modules/io/package.json index 1f5def3ed..84b9e3b87 100644 --- a/modules/io/package.json +++ b/modules/io/package.json @@ -43,7 +43,7 @@ "tsc:clean": "rimraf build/js", "tsc:build": "yarn tsc:clean && tsc -p ./tsconfig.json", "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w", - "dev:cpack": "cd build/Release && cpack -G TGZ >/dev/null && echo \"$(realpath -m ./rapidsai_*-*-*.tar.gz)\"" + "dev:cpack:enabled": "echo $npm_package_name" }, "dependencies": { "@rapidsai/cudf": "~22.8.1" diff --git a/modules/jsdom/.vscode/launch.json b/modules/jsdom/.vscode/launch.json index ba4d46cc0..382f4a409 100644 --- a/modules/jsdom/.vscode/launch.json +++ b/modules/jsdom/.vscode/launch.json @@ -12,10 +12,10 @@ "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "program": "${workspaceFolder}/node_modules/.bin/jest", - // "skipFiles": [ - // "/**", - // "${workspaceFolder}/node_modules/**" - // ], + "skipFiles": [ + // "/**", + // "${workspaceFolder}/node_modules/**" + ], "env": { "NODE_NO_WARNINGS": "1", "NODE_ENV": "production", @@ -28,6 +28,28 @@ "${input:TEST_FILE}" ] }, + { + "name": "Debug Import Tests", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "program": "test/test-import.js", + "skipFiles": [ + // "/**", + // "${workspaceFolder}/node_modules/**" + ], + "env": { + "NODE_NO_WARNINGS": "1", + "NODE_ENV": "production", + "READABLE_STREAM": "disable", + }, + "runtimeArgs": [ + "--trace-uncaught", + "--experimental-vm-modules" + ] + }, ], "inputs": [ { diff --git a/modules/jsdom/jest.config.js b/modules/jsdom/jest.config.js index 231b5a953..d0106841a 100644 --- a/modules/jsdom/jest.config.js +++ b/modules/jsdom/jest.config.js @@ -55,6 +55,6 @@ module.exports = { "preset": "ts-jest", "testMatch": null, "moduleNameMapper": { - "^@rapidsai\/jsdom(.*)": "/src/$1", + "^@rapidsai\/jsdom(.*)": "/build/js/$1", } }; diff --git a/modules/jsdom/package.json b/modules/jsdom/package.json index badc5d08e..17451bade 100644 --- a/modules/jsdom/package.json +++ b/modules/jsdom/package.json @@ -20,7 +20,8 @@ "scripts": { "clean": "rimraf build doc compile_commands.json", "doc": "rimraf doc && typedoc --options typedoc.js", - "test": "node -r dotenv/config node_modules/.bin/jest -c jest.config.js", + "test": "yarn test-import && node -r dotenv/config node_modules/.bin/jest -c jest.config.js", + "test-import": "node -r dotenv/config --experimental-vm-modules test/test-import.js", "build": "yarn tsc:build", "compile": "yarn tsc:build", "rebuild": "yarn tsc:build", @@ -33,11 +34,11 @@ "@babel/preset-env": "7.15.6", "@babel/preset-react": "7.14.5", "@babel/register": "7.15.3", + "@cwasm/webp": "0.1.5", "@rapidsai/core": "~22.8.1", "@rapidsai/glfw": "~22.8.1", "@types/jsdom": "16.2.13", "@types/parse5": "6.0.3", - "btoa": "1.2.1", "canvas": "2.8.0", "clone-deep": "4.0.1", "cross-fetch": "3.1.4", diff --git a/modules/jsdom/src/index.ts b/modules/jsdom/src/index.ts index a8ddb25bc..5efd373b6 100644 --- a/modules/jsdom/src/index.ts +++ b/modules/jsdom/src/index.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,23 +14,19 @@ import * as jsdom from 'jsdom'; -import {installGetContext} from './polyfills/canvas'; -import {installFetch} from './polyfills/fetch'; import {GLFWWindowOptions, installGLFWWindow} from './polyfills/glfw'; -import {installImageData, installImageDecode} from './polyfills/image'; import {installJSDOMUtils} from './polyfills/jsdom'; import {mjolnirHammerResolvers} from './polyfills/modules/mjolnir'; -import {createContextRequire as createRequire} from './polyfills/modules/require'; +import {reactMapGLMapboxResolvers} from './polyfills/modules/reactmapgl'; import {createResolve, ResolversMap} from './polyfills/modules/resolve'; -import {createTransform} from './polyfills/modules/transform'; import {createContextFactory} from './polyfills/modules/vm'; import {createObjectUrlAndTmpDir} from './polyfills/object-url'; import { - AnimationFrameRequest, AnimationFrameRequestedCallback, + defaultFrameScheduler, installAnimationFrame } from './polyfills/raf'; -import {installStreams} from './polyfills/streams'; +import {installWorker} from './polyfills/worker'; import {ImageLoader} from './resourceloader'; export interface RapidsJSDOMOptions extends jsdom.ConstructorOptions { @@ -38,21 +34,23 @@ export interface RapidsJSDOMOptions extends jsdom.ConstructorOptions { frameRate?: number; glfwOptions?: GLFWWindowOptions; resolvers?: ResolversMap; - babel?: boolean|Partial; + babel?: false|Partial; reportUnhandledExceptions?: boolean; onAnimationFrameRequested?: AnimationFrameRequestedCallback; } const defaultOptions = { + frameRate: 60, glfwOptions: {}, reportUnhandledExceptions: true, onAnimationFrameRequested: undefined, babel: { babelrc: false, presets: [ - ['@babel/preset-env', {'targets': {'node': 'current'}}], - ['@babel/preset-react', {'useBuiltIns': true}] - ] + // Uncomment this if we want to transpile all ESM to CJS + // ['@babel/preset-env', {'targets': {'node': 'current'}}], + ['@babel/preset-react', {'useBuiltIns': true}], + ], } }; @@ -60,83 +58,131 @@ export class RapidsJSDOM extends jsdom.JSDOM { static fromReactComponent(componentPath: string, jsdomOptions: RapidsJSDOMOptions = {}, reactProps = {}) { - const jsdom = new RapidsJSDOM(jsdomOptions); - const loaded = jsdom.window.evalFn(async () => { - const React = require('react'); - const ReactDOM = require('react-dom'); - const Component = await eval(`import('${componentPath}')`); - ReactDOM.render(React.createElement(Component.default || Component, reactProps), - document.body.appendChild(document.createElement('div'))); - }, {componentPath, reactProps}); - return Object.assign(jsdom, {loaded}); + const jsdom = new RapidsJSDOM(jsdomOptions); + return Object.assign(jsdom, { + loaded: jsdom.window.evalFn( + async () => { + const {createElement} = require('react'); + const {render} = require('react-dom'); + return await window.eval(`import('${componentPath}')`).then((Component: any) => { + render(createElement(Component.default || Component, reactProps), + document.body.appendChild(document.createElement('div'))); + }); + }, + {componentPath, reactProps}) + }); } + public loaded: Promise; + constructor(options: RapidsJSDOMOptions = {}) { - const opts = Object.assign({}, defaultOptions, options); - const {path: dir = process.cwd()} = opts.module ?? require.main ?? module; - const {url, install: installObjectURL} = createObjectUrlAndTmpDir(); + const opts = Object.assign({}, defaultOptions, options); + const {path: dir = process.cwd()} = opts.module ?? require.main ?? module; + const babel = + Object.assign({}, defaultOptions.babel, !opts.babel ? {} : opts.babel, {cwd: dir}); + + const {url, tmpdir} = createObjectUrlAndTmpDir(); const imageLoader = new ImageLoader(url, dir); + const polyfillFetchPath = require.resolve('./polyfills/fetch'); + const polyfillImagePath = require.resolve('./polyfills/image'); + const polyfillCanvasPath = require.resolve('./polyfills/canvas'); + const polyfillStreamsPath = require.resolve('./polyfills/streams'); + const polyfillObjectURLPath = require.resolve('./polyfills/object-url'); + const polyfillTransformPath = require.resolve('./polyfills/modules/transform'); + super(undefined, { ...opts, url, resources: imageLoader, pretendToBeVisual: true, - runScripts: 'outside-only', - beforeParse(window) { - if (opts.reportUnhandledExceptions) { installUnhandledExceptionListeners(); } + runScripts: options.runScripts ?? 'outside-only', + beforeParse: (window) => { + if (opts.reportUnhandledExceptions) { // + installUnhandledExceptionListeners(); + } const { - onAnimationFrameRequested = defaultFrameScheduler(window, opts.frameRate), + frameRate, + glfwOptions, + onAnimationFrameRequested = defaultFrameScheduler(window, frameRate), } = opts; - const createContext = createContextFactory(window, dir); - window = [ - installJSDOMUtils({ - createContext, - require: createRequire({ - dir, - context: createContext(), - resolve: createResolve({...opts.resolvers, ...mjolnirHammerResolvers()}), - ...createTransform((opts.babel || undefined) && // - (typeof opts.babel === 'object') - ? {...opts.babel, cwd: dir} - : {...defaultOptions.babel, cwd: dir}), - }) - }), - installFetch, - installStreams, - installObjectURL, - installImageData, - installImageDecode, - installGetContext, - installGLFWWindow(opts.glfwOptions), + installWorker, + installGLFWWindow(glfwOptions), installAnimationFrame(onAnimationFrameRequested), + installJSDOMUtils({ + dir, + createContext: createContextFactory(window, dir), + resolve: createResolve({ + ...opts.resolvers, + ...mjolnirHammerResolvers(), + ...reactMapGLMapboxResolvers(), + }), + }) ].reduce((window, fn) => fn(window), window); - imageLoader.svg2img = window.evalFn(() => require('svg2img').default); + window.evalFn(() => { + const {createTransform} = + require(polyfillTransformPath) as typeof import('./polyfills/modules/transform'); + + const {extensions: _extensions, transform: _transform} = createTransform({ + ...babel, + preTransform(path: string, code: string) { + // prepend a fix for mapbox-gl's serialization code + if (path.includes('mapbox-gl/dist/mapbox-gl') || + path.includes('maplibre-gl/dist/maplibre-gl')) { + return ` + Object.defineProperty(({}).constructor, '_classRegistryKey', {value: 'Object', writable: false}); + ${code}`; + } + return code; + } + }); + Object.assign(window.jsdom.global.require, {extensions: _extensions}); + Object.assign(window.jsdom.global.require.main, {_extensions, _transform}); + + const {installFetch} = // + require(polyfillFetchPath) as typeof import('./polyfills/fetch'); + const {installImageData, installImageDecode} = + require(polyfillImagePath) as typeof import('./polyfills/image'); + const {installGetContext} = + require(polyfillCanvasPath) as typeof import('./polyfills/canvas'); + const {installStreams} = + require(polyfillStreamsPath) as typeof import('./polyfills/streams'); + const {installObjectURL} = + require(polyfillObjectURLPath) as typeof import('./polyfills/object-url'); + + [installFetch, + installStreams, + installObjectURL(tmpdir), + installImageData, + installImageDecode, + installGetContext, + ].reduce((window, fn) => fn(window), window); + + imageLoader.svg2img = require('svg2img').default; + }, { + babel, + tmpdir, + frameRate, + glfwOptions, + imageLoader, + polyfillFetchPath, + polyfillImagePath, + polyfillCanvasPath, + polyfillStreamsPath, + polyfillObjectURLPath, + polyfillTransformPath, + onAnimationFrameRequested, + }); } }); - } -} -function defaultFrameScheduler(window: jsdom.DOMWindow, fps = 60) { - let request: AnimationFrameRequest|null = null; - let interval: any = setInterval(() => { - if (request) { - const f = request.flush; - request = null; - f(() => {}); - } - window.poll(); - }, 1000 / fps); - window.addEventListener('close', () => { - interval && clearInterval(interval); - request = interval = null; - }, {once: true}); - return (r_: AnimationFrameRequest) => { request = r_; }; + this.loaded = Promise.resolve(this.window); + } } function installUnhandledExceptionListeners() { diff --git a/modules/jsdom/src/polyfills/canvas.ts b/modules/jsdom/src/polyfills/canvas.ts index 1c6c57de5..de645c22f 100644 --- a/modules/jsdom/src/polyfills/canvas.ts +++ b/modules/jsdom/src/polyfills/canvas.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ import * as jsdom from 'jsdom'; export function installGetContext(window: jsdom.DOMWindow) { - const gl = window.evalFn(() => require('@rapidsai/webgl')) as typeof import('@rapidsai/webgl'); + const gl = require('@rapidsai/webgl') as typeof import('@rapidsai/webgl'); // eslint-disable-next-line @typescript-eslint/unbound-method const JSDOM_getContext = window.HTMLCanvasElement.prototype.getContext; diff --git a/modules/jsdom/src/polyfills/fetch.ts b/modules/jsdom/src/polyfills/fetch.ts index 633df96d8..36679945d 100644 --- a/modules/jsdom/src/polyfills/fetch.ts +++ b/modules/jsdom/src/polyfills/fetch.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,11 +23,17 @@ export function installFetch(window: jsdom.DOMWindow) { Request, Response, fetch, - } = window.evalFn(() => require('cross-fetch')) as typeof import('cross-fetch'); + } = require('cross-fetch') as typeof import('cross-fetch'); window.jsdom.global.Headers = Headers; window.jsdom.global.Request = Request; window.jsdom.global.Response = Response; - window.jsdom.global.fetch = function fileAwareFetch(url: string, options: RequestInit = {}) { + window.jsdom.global.fetch = function fileAwareFetch(inp: string|Request, + options: RequestInit = {}) { + if (typeof inp !== 'string' && ((inp instanceof Request) || ('url' in inp))) { + return fetch(inp, options); + } + + let url = inp as string; const isDataURI = url && url.startsWith('data:'); const isFilePath = url && !isDataURI && !Url.parse(url).protocol; if (isFilePath) { diff --git a/modules/jsdom/src/polyfills/glfw.ts b/modules/jsdom/src/polyfills/glfw.ts index 208fc5182..d721a6321 100644 --- a/modules/jsdom/src/polyfills/glfw.ts +++ b/modules/jsdom/src/polyfills/glfw.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import { isHeadless, } from '@rapidsai/glfw'; import * as jsdom from 'jsdom'; +import {performance} from 'perf_hooks'; import {Subscription} from 'rxjs'; import {dndEvents, GLFWDndEvent} from './events/dnd'; @@ -156,6 +157,17 @@ export function installGLFWWindow(windowOptions: GLFWWindowOptions = {}) { configurable: false, get() { return _maximized; }, }, + matchMedia: { + enumerable: true, + configurable: true, + value: undefined, + }, + performance: { + writable: false, + enumerable: true, + configurable: true, + value: performance, + }, transparent: { enumerable: true, configurable: false, diff --git a/modules/jsdom/src/polyfills/image.ts b/modules/jsdom/src/polyfills/image.ts index 523a83e14..47e7cc39a 100644 --- a/modules/jsdom/src/polyfills/image.ts +++ b/modules/jsdom/src/polyfills/image.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,10 +15,7 @@ import * as jsdom from 'jsdom'; export function installImageData(window: jsdom.DOMWindow) { - window.jsdom.global.ImageData ??= window.evalFn(() => { - // debugger; - return require('canvas').ImageData; - }); + window.jsdom.global.ImageData ??= require('canvas').ImageData; return window; } diff --git a/modules/jsdom/src/polyfills/jsdom.ts b/modules/jsdom/src/polyfills/jsdom.ts index 9e533cbd9..5acdfa319 100644 --- a/modules/jsdom/src/polyfills/jsdom.ts +++ b/modules/jsdom/src/polyfills/jsdom.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -13,31 +13,45 @@ // limitations under the License. import * as jsdom from 'jsdom'; -import * as vm from 'vm'; +import * as Module from 'module'; -import {Require} from './modules/require'; +import { + createContextRequire as createRequire, + CreateContextRequireOptions +} from './modules/require'; declare module 'jsdom' { + // clang-format off interface DOMWindow { + import: (specifier: string) => Promise; evalFn: (script: () => any, globals?: Record) => any; } + // clang-format on } -export function installJSDOMUtils({require, createContext}: { - require: Require, - createContext: (globals?: Record) => vm.Context, -}) { +export function installJSDOMUtils(options: { + createContext: (globals?: Record) => import('vm').Context, +}&Pick) { return (window: jsdom.DOMWindow) => { - window.jsdom.global.require = require; + const {createContext} = options; + + const require = window.jsdom.global.require = + createRequire({...options, context: createContext()}); + + window.import = window.jsdom.global.import = require.main._cachedDynamicImporter; if (window.jsdom.utils.implForWrapper(window.document)._origin === 'null') { window.jsdom.utils.implForWrapper(window.document)._origin = ''; } window.evalFn = (f: () => any, globals: Record = {}) => { - const source = `(${f.toString()}).call(this)`; + const exports = {}; + const context = createContext(globals); + const source = `return (${f.toString()}).call(this);`; const filename = `evalmachine.<${f.name || 'anonymous'}>`; - return require.main.exec(source, filename, createContext(globals)); + return require.main + .exec(require, Module.wrap(source), filename, context) // + .call(exports, exports, require, require.main, filename, '.'); }; return window; diff --git a/modules/jsdom/src/polyfills/modules/import.ts b/modules/jsdom/src/polyfills/modules/import.ts index 0284ec1f7..7447705f2 100644 --- a/modules/jsdom/src/polyfills/modules/import.ts +++ b/modules/jsdom/src/polyfills/modules/import.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,53 +12,123 @@ // See the License for the specific language governing permissions and // limitations under the License. -import * as fs from 'fs'; +import * as fs from 'fs/promises'; +import * as Path from 'path'; import * as vm from 'vm'; +import {SourceTextModule, SyntheticModule} from 'vm'; -import {Require} from './require'; +import {createContextRequire as createRequire, ESMSyntheticModule, Require} from './require'; -const {SourceTextModule, SyntheticModule} = vm; +Object.entries({SyntheticModule, SourceTextModule}).forEach(([name, Class]) => { + if (!Class) { + console.error(`${name} not found. ` + + `@rapidsai/jsdom requires node is with the --experimental-vm-modules flag.`); + process.exit(1); + } +}); + +declare module 'vm' { + interface Module { + context: vm.Context; + identifier: string; + evaluate(): Promise; + link(linker: (specifier: string, parent?: vm.Module) => vm.Module | + Promise): Promise; + } + + interface SyntheticModule extends Module { + setExport(name: string, value: any): void; + } + interface SyntheticModuleConstructor { + new(exportNames: string[], + evaluateCallback: (this: vm.SyntheticModule) => void, + options?: string|{identifier: string, context?: vm.Context}): SyntheticModule; + readonly name: 'SyntheticModule'; + } + const SyntheticModule: SyntheticModuleConstructor; + + type SourceTextModule = Module + interface SourceTextModuleConstructor { + new(code: string, + options?: string|{identifier: string, context?: vm.Context}): SourceTextModule; + readonly name: 'SourceTextModule'; + } + const SourceTextModule: SourceTextModuleConstructor; +} export function createImport(require: Require, context: import('vm').Context, - transform: (path: string, code: string) => string | null | undefined) { + transform: (path: string, code: string) => string) { return importModuleDynamically; - async function importModuleDynamically(specifier: string) { + async function importModuleDynamically(specifier: string, parent?: vm.Script|vm.Module) { const path = require.resolve(specifier); - const opts = {displayErrors: true, context, importModuleDynamically, identifier: path}; + const opts = { + identifier: path, + displayErrors: true, + importModuleDynamically, + context: (parent)?.context || context, + }; try { // Try importing as CJS first return await tryRequire(path, opts); } catch (e1: any) { - // If CJS throws, try importing as ESM try { + // If CJS throws, try importing as ESM return await tryImport(path, opts); - } catch (e2: any) { - throw new Error(` -${String(e1?.stack ?? e1?.message ?? e1)}\n -${String(e2?.stack ?? e2?.message ?? e2)}`); + } catch (e2: any) { // + throw[e1, e2]; } } } function tryRequire(path: string, opts: any) { - const exports = require(path); - if (exports.__esModule && !('default' in exports)) { // - exports.default = exports; + const exports = (require as any)(path, true); + const keys = Object.keys(exports); + if (exports.__esModule && !('default' in exports)) { + exports.default = exports; + keys[keys.indexOf('__esModule')] = 'default'; } - const keys = Object.keys(exports).filter((name) => name !== '__esModule'); - return linkAndEvaluate(new SyntheticModule(keys, function(this: any) { // - keys.forEach((n) => this.setExport(n, exports[n])); - }, opts)); + const mod = new SyntheticModule(keys, function() { // + keys.forEach((name) => this.setExport(name, exports[name])); + }, opts); + return linkAndEvaluate(exports[ESMSyntheticModule] = mod); } function tryImport(path: string, opts: any) { - return linkAndEvaluate( - new SourceTextModule(transform(path, fs.readFileSync(path, 'utf8')), opts)); + const dir = Path.dirname(path); + const ext = Path.extname(path); + return fs.readFile(path, 'utf8') + .then((code) => { + code = `var __dirname='${dir}';\n${code}`; + code = `var __filename='${path}';\n${code}`; + if (ext in require.extensions) { // + code = transform(path, code); + } + return new SourceTextModule(code, opts); + }) + .then(linkAndEvaluate); } - function linkAndEvaluate(module: any) { - return module.link(importModuleDynamically).then(() => module.evaluate()).then(() => module); + function linkAndEvaluate(module: vm.Module) { + let r = require; + const dir = Path.dirname(module.identifier); + if (dir !== require.main.path) { + r = createRequire({ + dir, + transform, + parent: require.main, + extensions: require.extensions, + resolve: require.main.__resolve, + context: module.context || context, + }); + + r.main._moduleCache = require.cache; + r.main._resolveCache = require.main._resolveCache; + } + + return module.link(createImport(r, r.main._context, transform)) + .then(() => module.evaluate()) + .then(() => module); } } diff --git a/modules/jsdom/src/polyfills/modules/reactmapgl.ts b/modules/jsdom/src/polyfills/modules/reactmapgl.ts new file mode 100644 index 000000000..242d8bc93 --- /dev/null +++ b/modules/jsdom/src/polyfills/modules/reactmapgl.ts @@ -0,0 +1,29 @@ +// Copyright (c) 2022, NVIDIA CORPORATION. +// +// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +// +// 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. + +import * as Module from 'module'; + +export function reactMapGLMapboxResolvers() { + return { + 'react-map-gl/src/utils/mapboxgl': reactMapGLMapboxResolver, + 'react-map-gl/dist/es5/utils/mapboxgl': reactMapGLMapboxResolver, + 'react-map-gl/dist/esm/utils/mapboxgl': reactMapGLMapboxResolver, + 'react-map-gl/dist/es6/utils/mapboxgl': reactMapGLMapboxResolver, + }; +} + +function reactMapGLMapboxResolver(request: string, ...args: any[]) { + request = request.replace('mapboxgl', 'mapboxgl.browser'); + return (Module as any)._resolveFilename(request, ...args); +} diff --git a/modules/jsdom/src/polyfills/modules/require.ts b/modules/jsdom/src/polyfills/modules/require.ts index 1a064164d..d6fc77175 100644 --- a/modules/jsdom/src/polyfills/modules/require.ts +++ b/modules/jsdom/src/polyfills/modules/require.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -38,7 +38,8 @@ let moduleId = 0; * Patch nodejs module system to support context, * compilation and module resolution overrides. */ -const Module_: any = Module; + +const Module_: any = getRealModule(); const module_static__load = Module_._load; const module_static__cache = Module_._cache; const module_static__extensions_js = Module_._extensions['.js']; @@ -46,11 +47,12 @@ const module_static__resolveFilename = Module_._resolveFilename; const module_prototype__compile = Module_.prototype._compile; const module_prototype_load = Module_.prototype.load; -interface CreateContextRequireOptions { +export interface CreateContextRequireOptions { /** The directory from which to resolve requires for this module. */ dir: string; /** A vm.Context to be used as the context for any required modules. */ context: any; + parent?: Module; /** A function to override the native module resolution. */ resolve?: Resolver; /** A function to transform code during dynamic import. */ @@ -61,38 +63,41 @@ interface CreateContextRequireOptions { export class ContextModule extends Module { declare public _context: vm.Context; - declare public _moduleCache: Record; - declare public _resolveCache: Record; + declare public _proxyExports: Record; + declare public _moduleCache: NodeJS.Dict; + declare public _resolveCache: NodeJS.Dict; declare public _extensions?: Partial; declare public _require: Require; declare public __resolve: Resolver; declare public _transform: Transform; - declare public _cachedDynamicImporter: (specifier: string) => Promise; + declare public _cachedDynamicImporter: (specifier: string) => Promise; /** * Custom nodejs Module implementation which uses a provided * resolver, require hooks, and context. */ constructor({ - dir, + parent = require.main ?? module, + dir = parent.path, context, resolve, extensions, transform = (_path: string, code: string) => code, }: CreateContextRequireOptions) { const filename = Path.join(dir, `index.${moduleId++}.ctx`); - super(filename, require.main || module); + super(filename, parent); this.filename = filename; this.paths = Module_._nodeModulePaths(dir); + this._proxyExports = {}; this._moduleCache = {}; this._resolveCache = {}; - this._extensions = extensions; this._transform = transform; - this._require = createRequire(this); + this._extensions = extensions; + this._require = createRequire(this, this); this._context = isContext(context) ? context : vm.createContext(context); if (typeof resolve === 'function') { @@ -101,7 +106,8 @@ export class ContextModule extends Module { this._resolveFilename = module_static__resolveFilename; } - this._cachedDynamicImporter = createImport(this._require, context, this._transform); + this._cachedDynamicImporter = createImport( + this._require, context, (path: string, code: string) => this._transform(path, code)); this.loaded = true; } @@ -121,7 +127,8 @@ export class ContextModule extends Module { }) { const cache = this._resolveCache; const cacheKey = `${parent.path}\x00${request}`; - if (cache[cacheKey]) { return cache[cacheKey]; } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + if (cache[cacheKey]) { return cache[cacheKey]!; } const resolved = this.__resolve(request, parent, isMain, options); if (resolved) { cache[cacheKey] = resolved; } return resolved; @@ -133,12 +140,12 @@ export class ContextModule extends Module { public load(filename: string) { return patched_prototype_load.call(this, filename); } - public exec(content: string, filename: string, inner = this._context) { + public exec(require: Require, content: string, filename: string, inner = this._context) { const outer = this._context; const options = { filename, displayErrors: true, - importModuleDynamically: this.createDynamicImporter(inner), + importModuleDynamically: this.createDynamicImporter(require, inner), }; return tryAndReset( () => { this._context = inner; }, @@ -147,10 +154,10 @@ export class ContextModule extends Module { ); } - public createDynamicImporter(context = this._context) { + public createDynamicImporter(require: Require = this._require, context = this._context) { return context === this._context // ? this._cachedDynamicImporter - : createImport(this._require, context, this._transform); + : createImport(require, context, this._transform); } } @@ -162,7 +169,7 @@ export class ContextModule extends Module { * @param isMain */ function patched_static__load(request: string, parent: Module, isMain: boolean): any { - if (Module.builtinModules.indexOf(request) !== -1) { + if (Module_.builtinModules.indexOf(request) !== -1) { return module_static__load(request, parent, isMain); } @@ -170,7 +177,7 @@ function patched_static__load(request: string, parent: Module, isMain: boolean): if (module) { const filename = patched_static__resolveFilename(request, parent, isMain); - // ensure native addons are added to the global static Module._cache + // ensure native addons are added to the global static Module_._cache const cache = Path.extname(filename) === '.node' ? module_static__cache : module._moduleCache; const child = cache[filename]; if (child) { @@ -200,7 +207,7 @@ function patched_static__extensions_js(module: any, filename: string) { */ function patched_static__resolveFilename( request: string, parent: Module, isMain?: boolean, options?: {paths?: string[]|undefined;}) { - if (Module.builtinModules.indexOf(request) === -1) { + if (Module_.builtinModules.indexOf(request) === -1) { const module = findNearestContextModule(parent); if (module) { return tryAndReset( @@ -245,10 +252,15 @@ function patched_prototype__compile(this: Module, content: string, filename: str const module = findNearestContextModule(this); if (module) { - const exports = this.exports; + const {id} = this; const require = createRequire(this); const dirname = Path.dirname(filename); - return module.exec(Module.wrap(content), filename) + let exports = this.exports; + if (module._proxyExports[id]) { + delete module._proxyExports[id]; + exports = makeESMExportsProxy(this, exports); + } + return module.exec(require, Module_.wrap(content), filename) .call(exports, exports, require, this, filename, dirname); } @@ -307,9 +319,9 @@ function tryAndReset any>(setup: () => any, work: Work, reset: * * @param mod The module to create a require function for. */ -function createRequire(mod: Module) { - const main = findNearestContextModule(mod); - function require(id: string) { +function createRequire(mod: Module, main = findNearestContextModule(mod)) { + function require(id: string, isAttemptingToRequireCJSAsESM = false) { + main && (main._proxyExports[id] = isAttemptingToRequireCJSAsESM); return tryAndReset( installModuleHooks, () => mod.require(id), @@ -328,28 +340,58 @@ function createRequire(mod: Module) { let installedCount = 0; +// Jest hijacks the Module builtin, this gets the real one. +function getRealModule(): typeof Module { + const M = Module as any; + return M.__proto__ && M.__proto__.prototype ? M.__proto__ : M; +} + function installModuleHooks() { if (++installedCount === 1) { - // Jest hijacks the Module builtin, this gets the real one. - let M = Module as any; - M = M.__proto__ && M.__proto__.prototype ? M.__proto__ : M; - M._load = patched_static__load; - M._extensions['.js'] = patched_static__extensions_js; - M._resolveFilename = patched_static__resolveFilename; - M.prototype._compile = patched_prototype__compile; - M.prototype.load = patched_prototype_load; + Module_._load = patched_static__load; + Module_._extensions['.js'] = patched_static__extensions_js; + Module_._resolveFilename = patched_static__resolveFilename; + Module_.prototype._compile = patched_prototype__compile; + Module_.prototype.load = patched_prototype_load; } } function uninstallModuleHooks() { if (--installedCount === 0) { - // Jest hijacks the Module builtin, this gets the real one. - let M = Module as any; - M = M.__proto__ && M.__proto__.prototype ? M.__proto__ : M; - M._load = module_static__load; - M._extensions['.js'] = module_static__extensions_js; - M._resolveFilename = module_static__resolveFilename; - M.prototype._compile = module_prototype__compile; - M.prototype.load = module_prototype_load; + Module_._load = module_static__load; + Module_._extensions['.js'] = module_static__extensions_js; + Module_._resolveFilename = module_static__resolveFilename; + Module_.prototype._compile = module_prototype__compile; + Module_.prototype.load = module_prototype_load; } } + +export const ESMSyntheticModule = Symbol('ESMSyntheticModule'); + +const ES6ExportsProxyHandler: ProxyHandler = { + set(target: any, p: string|symbol, v: any, receiver: any) { // + const success = Reflect.set(target, p, v, receiver); + if (success && p !== ESMSyntheticModule) { + const mod = Reflect.get(target, ESMSyntheticModule, receiver); + if (mod) { mod.setExport(p, v); } + } + return success; + }, +}; + +function makeESMExportsProxy(module: Module, exports: any) { + let proxiedExports = new Proxy(exports, ES6ExportsProxyHandler); + Object.defineProperty(module, 'exports', { + get() { return proxiedExports; }, + set(value: any) { + if (value !== proxiedExports) { + if (value && typeof value === 'object') { // + proxiedExports = new Proxy(value, ES6ExportsProxyHandler); + } else { + proxiedExports = value; + } + } + }, + }); + return proxiedExports; +} diff --git a/modules/jsdom/src/polyfills/modules/transform.ts b/modules/jsdom/src/polyfills/modules/transform.ts index cdc03be38..c7c11d1f0 100644 --- a/modules/jsdom/src/polyfills/modules/transform.ts +++ b/modules/jsdom/src/polyfills/modules/transform.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,17 +20,19 @@ import * as Path from 'path'; const cloneDeep = require('clone-deep'); const sourceMapSupport = require('source-map-support'); -export type Transform = (path: string, code: string) => string|null|undefined; +export type Transform = (path: string, code: string) => string; const identityTransform: Transform = (_: string, code: string) => code; -export function createTransform(opts?: Partial) { - let transform = identityTransform; +export function createTransform({preTransform = identityTransform, ...opts}: + {preTransform?: Transform}&Partial = {}) { + let transform = preTransform; if (opts) { const maps: any = {}; const transformOpts = normalizeOptions(opts); const installSourceMaps = supportSourceMaps(maps); transform = (path: string, code: string) => { + const content = preTransform(path, code); // merge in base options and resolve all the plugins and presets relative to this file const compileOpts = babel.loadOptions({ // sourceRoot can be overwritten @@ -40,16 +42,16 @@ export function createTransform(opts?: Partial) { }); if (compileOpts) { const {sourceMaps = 'both'} = compileOpts; - const transformed = babel.transform(code, {...compileOpts, sourceMaps, ast: false}); + const transformed = babel.transform(content, {...compileOpts, sourceMaps, ast: false}); if (transformed) { if (transformed.map) { installSourceMaps(); maps[path] = transformed.map; } - return transformed.code; + return transformed.code || content; } } - return code; + return content; }; } @@ -59,13 +61,13 @@ export function createTransform(opts?: Partial) { function compilersByExtension(transform: Transform) { return { ...(Module as any)._extensions, + // compile `.js` files even if "type": "module" is set in the file's package.json ['.js']: transformAndCompile, ['.jsx']: transformAndCompile, ['.mjs']: transformAndCompile, ['.cjs']: transformAndCompile, }; - // compile `.js` files even if "type": "module" is set in the file's package.json function transformAndCompile(module: Module, filename: string) { return (module)._compile(transform(filename, fs.readFileSync(filename, 'utf8')), filename); } diff --git a/modules/jsdom/src/polyfills/modules/vm.ts b/modules/jsdom/src/polyfills/modules/vm.ts index 19077a1ef..5db2da13e 100644 --- a/modules/jsdom/src/polyfills/modules/vm.ts +++ b/modules/jsdom/src/polyfills/modules/vm.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -29,17 +29,20 @@ export function createContextFactory(window: jsdom.DOMWindow, cwd: string) { window.jsdom.utils.wrapperForImpl = wrapperForImpl; window.jsdom.global = implForWrapper(window)._globalObject; window.jsdom.global.__cwd = cwd; + window.jsdom.global.URL = window.URL; + window.jsdom.global.Blob = window.Blob; + window.jsdom.global.Worker = window.Worker; return createContext; function createContext(globals: Record = {}) { - const innerWindow = window; const outerGlobal = window.jsdom.global; const innerGlobal = Object.create(outerGlobal, { ...Object.getOwnPropertyDescriptors(global), - window: {get: () => innerWindow, configurable: true, enumerable: true}, + ...Object.getOwnPropertyDescriptors(outerGlobal), global: {get: () => innerContext, configurable: true, enumerable: true}, globalThis: {get: () => innerContext, configurable: true, enumerable: true}, + window: {value: window, configurable: true, enumerable: true, writable: false}, }); const innerProcess = Object.assign(clone(process), { @@ -50,7 +53,7 @@ export function createContextFactory(window: jsdom.DOMWindow, cwd: string) { }); const innerContext = - vm.createContext(Object.assign(innerGlobal, {process: innerProcess, ...globals})); + vm.createContext(Object.assign(innerGlobal, {process: innerProcess}, globals)); return installSymbolHasInstanceImpls(innerContext); } @@ -62,6 +65,7 @@ const { } = Object; const nodeGlobals = Object.keys(getOwnPropertyDescriptors(vm.runInNewContext('this'))); + const clone = (obj: any) => Object.create(getPrototypeOf(obj), getOwnPropertyDescriptors(obj)); function installSymbolHasInstanceImpls(context: vm.Context) { diff --git a/modules/jsdom/src/polyfills/object-url.ts b/modules/jsdom/src/polyfills/object-url.ts index 36d1eb182..b6cb73097 100644 --- a/modules/jsdom/src/polyfills/object-url.ts +++ b/modules/jsdom/src/polyfills/object-url.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,34 +20,35 @@ import * as Path from 'path'; export function createObjectUrlAndTmpDir() { const tmpdir = mkdtempSync(os.tmpdir() + Path.sep); const url = `http://${Path.basename(tmpdir)}/`.toLowerCase(); + return {url, tmpdir}; +} - return {url, tmpdir, install: installObjectURL}; - - function installObjectURL(window: jsdom.DOMWindow) { +export function installObjectURL(tmpdir: string) { + return function installObjectURL(window: jsdom.DOMWindow) { let filesCount = 0; - const map: any = {}; + const map = new Map(); - if (!window.jsdom.global.URL) { // - Object.defineProperty(window.jsdom.global, 'URL', {}); - } + window.jsdom.global.URL ??= window.URL; - window.jsdom.global.URL.createObjectURL = createObjectURL; - window.jsdom.global.URL.revokeObjectURL = revokeObjectURL; + [window.URL, window.jsdom.global.URL].forEach((URL) => { + URL.createObjectURL ??= createObjectURL; + URL.revokeObjectURL ??= revokeObjectURL; + }); return window; function createObjectURL(blob: Blob) { const path = Path.join(tmpdir, `${filesCount++}`); writeFileSync(path, window.jsdom.utils.implForWrapper(blob)._buffer); - const url = `file://${path}`; - map[url] = path; + const url = new window.jsdom.global.URL(`file://${path}`); + map.set(url, path); return url; } function revokeObjectURL(url: any) { - if (url in map) { - const p = map[url]; - delete map[url]; + if (map.has(url)) { + const p = map.get(url)!; + map.delete(url); unlinkSync(p); } } diff --git a/modules/jsdom/src/polyfills/raf.ts b/modules/jsdom/src/polyfills/raf.ts index 83993b670..00085de24 100644 --- a/modules/jsdom/src/polyfills/raf.ts +++ b/modules/jsdom/src/polyfills/raf.ts @@ -46,8 +46,6 @@ export function installAnimationFrame(onAnimationFrameRequested: AnimationFrameR window.removeEventListener('refresh', refresh); }, {once: true}); - Object.assign(window.jsdom.global, {requestAnimationFrame, cancelAnimationFrame}); - return Object.assign(window, {requestAnimationFrame, cancelAnimationFrame}); function cancelAnimationFrame(cb?: (time: number) => any) { @@ -97,3 +95,20 @@ export function installAnimationFrame(onAnimationFrameRequested: AnimationFrameR } }; } + +export function defaultFrameScheduler(window: jsdom.DOMWindow, fps = 60) { + let request: AnimationFrameRequest|null = null; + let interval: any = setInterval(() => { + if (request) { + const f = request.flush; + request = null; + f(() => {}); + } + window.poll && window.poll(); + }, 1000 / fps); + window.addEventListener('close', () => { + interval && clearInterval(interval); + request = interval = null; + }, {once: true}); + return (r_: AnimationFrameRequest) => { request = r_; }; +} diff --git a/modules/jsdom/src/polyfills/streams.ts b/modules/jsdom/src/polyfills/streams.ts index cf5670a82..9053d890d 100644 --- a/modules/jsdom/src/polyfills/streams.ts +++ b/modules/jsdom/src/polyfills/streams.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,11 +15,11 @@ import * as jsdom from 'jsdom'; export function installStreams(window: jsdom.DOMWindow) { - const streams = window.evalFn(() => require('web-streams-polyfill')); - window.jsdom.global.ReadableStream = streams.ReadableStream; - window.jsdom.global.WritableStream = streams.WritableStream; - window.jsdom.global.TransformStream = streams.TransformStream; - window.jsdom.global.CountQueuingStrategy = streams.CountQueuingStrategy; - window.jsdom.global.ByteLengthQueuingStrategy = streams.ByteLengthQueuingStrategy; + const streams = require('web-streams-polyfill'); + window.jsdom.global.ReadableStream ??= streams.ReadableStream; + window.jsdom.global.WritableStream ??= streams.WritableStream; + window.jsdom.global.TransformStream ??= streams.TransformStream; + window.jsdom.global.CountQueuingStrategy ??= streams.CountQueuingStrategy; + window.jsdom.global.ByteLengthQueuingStrategy ??= streams.ByteLengthQueuingStrategy; return window; } diff --git a/modules/jsdom/src/polyfills/usertiming.ts b/modules/jsdom/src/polyfills/usertiming.ts deleted file mode 100644 index fcbf0763e..000000000 --- a/modules/jsdom/src/polyfills/usertiming.ts +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. -// -// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 -// -// 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. - -import * as jsdom from 'jsdom'; -import {performance} from 'perf_hooks'; - -export function installUserTiming(window: jsdom.DOMWindow) { - // Use node's perf_hooks for native performance.now - (window).performance = Object.create(performance); - // Polyfill the rest of the UserTiming API - (global).window = window; - (window).performance = require('usertiming'); - delete (global).window; - return window; -} diff --git a/modules/jsdom/src/polyfills/worker.ts b/modules/jsdom/src/polyfills/worker.ts new file mode 100644 index 000000000..e0592addb --- /dev/null +++ b/modules/jsdom/src/polyfills/worker.ts @@ -0,0 +1,113 @@ +// Copyright (c) 2022, NVIDIA CORPORATION. +// +// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +// +// 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. + +import * as fs from 'fs'; +import * as jsdom from 'jsdom'; +import {Worker, WorkerOptions} from 'worker_threads'; + +export function installWorker(window: jsdom.DOMWindow) { + window.Worker = class JSDOMWorker extends Worker { + constructor(filename: string|URL, options?: WorkerOptions) { // + /* eslint-disable-next-line @typescript-eslint/restrict-template-expressions */ + if (`${filename}`.startsWith('file:')) { + const contents = fs.readFileSync(filename, 'utf8'); + if (!contents.startsWith('// rapidsai_jsdom_worker_preamble')) { + /* eslint-disable-next-line @typescript-eslint/restrict-template-expressions */ + fs.writeFileSync(filename, injectPreamble(`${filename}`, contents)); + } + } + super(filename, options); + } + addEventListener(...[type, handler]: Parameters) { + return this.addListener(type, handler); + } + removeEventListener(...[type, handler]: Parameters) { + return this.removeListener(type, handler); + } + }; + return window; +} + +function injectPreamble(filename: string, code: string) { + return `// rapidsai_jsdom_worker_preamble +const {Blob} = require('buffer'); +class ImageData { + constructor(data, width, height, settings) { + if(typeof data === 'number') { + settings = height, height = width, width = data, data = undefined; + } + if (data) { + if (data.byteLength === 0) throw new RangeError("The input data has a zero byte length"); + const pitch = (() => { + if (data instanceof Uint16Array) { return 2; } + if (data instanceof Uint8Array) { return 4; } + if (data instanceof Uint8ClampedArray) { return 4; } + throw new TypeError('Expected (Uint8ClampedArray, width[, height]), (Uint16Array, width[, height]) or (width, height)'); + })(); + if (typeof width !== 'number' || width !== width) throw new RangeError("The source width is zero"); + if (typeof height !== 'number' || height !== height) height = (data.byteLength / pitch) / width; + data = new Uint8ClampedArray(data.buffer); + } else { + if (typeof width !== 'number' || width !== width) throw new RangeError("The source width is zero"); + if (typeof height !== 'number' || height !== height) throw new RangeError("The source height is zero"); + data = new Uint8ClampedArray(width * height * 4); + } + this.data = data; + this.width = width; + this.height = height; + } +} +const {parentPort} = require('worker_threads'); +class WorkerGlobalScope extends require('events') { + constructor(global) { + super(); + this.self = global; + this.origin = '${filename}'; + + if (!global.fetch) { + const {Headers, Request, Response, fetch} = require('${require.resolve('cross-fetch')}'); + this.fetch = fetch; + this.Headers = Headers; + this.Request = Request; + this.Response = Response; + } + + const messageHandlersMap = new Map(); + this.addEventListener = (type, handler) => { + if (type === 'message') { + const h = (data) => { handler({data}); }; + messageHandlersMap.set(handler, h); + parentPort.addListener(type, h); + } else { + this.addListener(type, handler); + } + } + this.removeEventListener = (type, handler) => { + if (type === 'message') { + const h = messageHandlersMap.get(handler); + messageHandlersMap.delete(handler); + parentPort.removeListener(type, h); + } else { + this.removeListener(type, handler); + } + } + + Object.setPrototypeOf(global, this); + } + importScripts(...xs) { xs.forEach(x => require(x)); } + postMessage(data, ...xs) { parentPort.postMessage({data}, ...xs); } +} +global.self = new WorkerGlobalScope(Object.assign(global, {ImageData})).self; +${code}`; +} diff --git a/modules/jsdom/src/resourceloader.ts b/modules/jsdom/src/resourceloader.ts index 51d248c87..ee750c5af 100644 --- a/modules/jsdom/src/resourceloader.ts +++ b/modules/jsdom/src/resourceloader.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,11 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +import * as webp from '@cwasm/webp'; import * as jsdom from 'jsdom'; import * as Url from 'url'; -const btoa = require('btoa') as (x: string) => string; - export class ImageLoader extends jsdom.ResourceLoader { declare private _svg2img: typeof import('svg2img').default; public set svg2img(f: typeof import('svg2img').default) { this._svg2img = f; } @@ -43,6 +42,8 @@ export class ImageLoader extends jsdom.ResourceLoader { private _loadDataURL(url: string, options: jsdom.FetchOptions) { const {mediaType, encoding, contents} = parseDataURLPrefix(url); switch (mediaType) { + case 'image/webp': // + return loadWebpDataUrl(webp, encoding, contents); case 'image/svg+xml': // return loadSVGDataUrl(this._svg2img, encoding, contents, options); default: break; @@ -67,7 +68,8 @@ function loadSVGDataUrl(svg2img: typeof import('svg2img').default, const options = {width: element?.offsetWidth, height: element?.offsetHeight}; const data = (() => { switch (encoding) { - case 'base64': return btoa(contents).trim(); + case 'base64': // + return Buffer.from(contents).toString('base64'); default: return decodeURIComponent(contents).trim(); } })(); @@ -77,3 +79,18 @@ function loadSVGDataUrl(svg2img: typeof import('svg2img').default, }); }); } + +function loadWebpDataUrl(webp: typeof import('@cwasm/webp'), encoding: string, contents: string) { + const data = (() => { + switch (encoding) { + case 'base64': // + return Buffer.from(contents, 'base64'); + default: return Buffer.from(decodeURIComponent(contents).trim()); + } + })(); + return new Promise((resolve, reject) => { + try { + resolve(webp.decode(data)); + } catch (e) { reject(e); } + }); +} diff --git a/modules/jsdom/test/files/test-cjs-import.js b/modules/jsdom/test/files/test-cjs-import.js new file mode 100644 index 000000000..66d176d1c --- /dev/null +++ b/modules/jsdom/test/files/test-cjs-import.js @@ -0,0 +1,5 @@ +const testCJSModule = require('./test-cjs-module'); + +module.exports = { + importedModuleSharesGlobalsWithThisModule: Object.aGlobalField === testCJSModule.aGlobalField, +}; diff --git a/modules/jsdom/test/files/test-cjs-module.js b/modules/jsdom/test/files/test-cjs-module.js index f053ebf79..e3b5c072a 100644 --- a/modules/jsdom/test/files/test-cjs-module.js +++ b/modules/jsdom/test/files/test-cjs-module.js @@ -1 +1,5 @@ -module.exports = {}; +Object.defineProperty(Object, 'aGlobalField', {value: 10}); + +exports.foo = 'foo'; +exports.aGlobalField = Object.aGlobalField; +exports.setFooToBar = () => { exports.foo = 'bar'; }; diff --git a/modules/jsdom/test/files/test-esm-import.js b/modules/jsdom/test/files/test-esm-import.js new file mode 100644 index 000000000..8c9e4b919 --- /dev/null +++ b/modules/jsdom/test/files/test-esm-import.js @@ -0,0 +1,5 @@ +import testESMModule from './test-esm-module'; + +export default { + importedModuleSharesGlobalsWithThisModule: Object.aGlobalField === testESMModule.aGlobalField, +}; diff --git a/modules/jsdom/test/files/test-esm-module.js b/modules/jsdom/test/files/test-esm-module.js index ff8b4c563..bbad08f4b 100644 --- a/modules/jsdom/test/files/test-esm-module.js +++ b/modules/jsdom/test/files/test-esm-module.js @@ -1 +1,3 @@ -export default {}; +Object.defineProperty(Object, 'aGlobalField', {value: 10}); + +export default {aGlobalField: Object.aGlobalField}; diff --git a/modules/jsdom/test/require-tests.ts b/modules/jsdom/test/require-tests.ts index 861e4b98a..fa46e65fd 100644 --- a/modules/jsdom/test/require-tests.ts +++ b/modules/jsdom/test/require-tests.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,17 +14,67 @@ import {globalWindow} from './utils'; +const eval_ = (code: string) => globalWindow.evalFn(() => { + const res = eval(code); + return res; +}, {code}); + test('fails to require a non-existent file', () => { - expect(() => globalWindow.evalFn(() => typeof require(`./files/nonexistent_file`) === 'object')) + expect(() => globalWindow.eval(`require('./files/nonexistent_file')`)) // .toThrow(); }); -test('successfully requires a local CommonJS module', () => { - expect(globalWindow.evalFn(() => typeof require(`./files/test-cjs-module`) === 'object')) - .toBe(true); +test('requires a local CommonJS module', () => { + const code = `require('./files/test-cjs-module')`; + expect(typeof eval_(code)).toBe('object'); +}); + +// this requires we transpile ESM to CJS with babel +test.skip('requires a local ESModule module', () => { + const code = `require('./files/test-esm-module').default`; + expect(typeof eval_(code)).toBe('object'); +}); + +test('imports a local CommonJS module', async () => { + const code = `import('./files/test-cjs-module')`; + expect(typeof (await eval_(code))).toBe('object'); +}); + +test('imports a local ESModule module', async () => { + const code = `import('./files/test-esm-module')`; + expect(typeof (await eval_(code)).default).toBe('object'); +}); + +test('requires a local CommonJS module that imports an ESModule', () => { + const code = `require('./files/test-cjs-import')`; + const {importedModuleSharesGlobalsWithThisModule} = eval_(code); + expect(importedModuleSharesGlobalsWithThisModule).toBe(true); +}); + +// this requires we transpile ESM to CJS with babel +test.skip('requires a local ESModule module that imports an ESModule', () => { + const code = `require('./files/test-esm-import')`; + const {importedModuleSharesGlobalsWithThisModule} = eval_(code).default; + expect(importedModuleSharesGlobalsWithThisModule).toBe(true); +}); + +test('imports a local CommonJS module that imports an ESModule', async () => { + const code = `import('./files/test-cjs-import')`; + const {importedModuleSharesGlobalsWithThisModule} = await eval_(code); + expect(importedModuleSharesGlobalsWithThisModule).toBe(true); +}); + +test('imports a local ESModule module that imports an ESModule', async () => { + const code = `import('./files/test-esm-import')`; + const {importedModuleSharesGlobalsWithThisModule} = (await eval_(code)).default; + expect(importedModuleSharesGlobalsWithThisModule).toBe(true); }); -test('successfully requires a local ESModule module', () => { - expect(globalWindow.evalFn(() => typeof require(`./files/test-esm-module`).default === 'object')) - .toBe(true); +test('CJS modules imported as ESM modules can modify their named exports ', async () => { + const code = `import('./files/test-cjs-module')`; + const testCJSModule = (await eval_(code)) as typeof import('./files/test-cjs-module'); + expect(typeof testCJSModule).toBe('object'); + expect(testCJSModule.foo).toEqual('foo'); + testCJSModule.setFooToBar(); + expect(testCJSModule.foo).toEqual('bar'); }); diff --git a/modules/jsdom/test/test-import.js b/modules/jsdom/test/test-import.js new file mode 100644 index 000000000..83d76ca86 --- /dev/null +++ b/modules/jsdom/test/test-import.js @@ -0,0 +1,41 @@ +// Copyright (c) 2022, NVIDIA CORPORATION. +// +// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 +// +// 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. + +const assert = require('assert'); +const {RapidsJSDOM} = require('@rapidsai/jsdom'); + +(async () => { // + const jsdom = new RapidsJSDOM({glfwOptions: {visible: false}}); + await jsdom.loaded; + assert((await jsdom.window.evalFn(async () => { + const {importedModuleSharesGlobalsWithThisModule} = + (await import('./files/test-esm-import')).default; + return importedModuleSharesGlobalsWithThisModule; + })) === true, + 'test-esm-import and test-esm-module should share globals'); + + assert((await jsdom.window.evalFn(async () => { + const {importedModuleSharesGlobalsWithThisModule} = + (await import('./files/test-cjs-import')); + return importedModuleSharesGlobalsWithThisModule; + })) === true, + 'test-cjs-import and test-cjs-module should share globals'); + + return 0; +})() + .catch((e) => { + console.error(e); + return 1; + }) + .then(code => process.exit(code ?? 0)); diff --git a/modules/jsdom/test/utils.ts b/modules/jsdom/test/utils.ts index 3268937c5..3bd714130 100644 --- a/modules/jsdom/test/utils.ts +++ b/modules/jsdom/test/utils.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2021, NVIDIA CORPORATION. +// Copyright (c) 2021-2022, NVIDIA CORPORATION. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,7 +17,9 @@ import * as jsdom from 'jsdom'; export let globalWindow: jsdom.DOMWindow; -beforeAll(() => { ({window: globalWindow} = new RapidsJSDOM({module: require.main})); }); +beforeAll(() => { + ({window: globalWindow} = new RapidsJSDOM({glfwOptions: {visible: false}, module: require.main})); +}); afterAll(() => { if (globalWindow) { // globalWindow.dispatchEvent(new globalWindow.CloseEvent('close')); diff --git a/modules/rmm/package.json b/modules/rmm/package.json index 5a97c655a..bb0399cde 100644 --- a/modules/rmm/package.json +++ b/modules/rmm/package.json @@ -43,7 +43,7 @@ "tsc:clean": "rimraf build/js", "tsc:build": "yarn tsc:clean && tsc -p ./tsconfig.json", "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w", - "dev:cpack": "cd build/Release && cpack -G TGZ >/dev/null && echo \"$(realpath -m ./rapidsai_*-*-*.tar.gz)\"" + "dev:cpack:enabled": "echo $npm_package_name" }, "dependencies": { "@rapidsai/cuda": "~22.8.1" diff --git a/modules/sql/package.json b/modules/sql/package.json index f1b82d017..569eda022 100644 --- a/modules/sql/package.json +++ b/modules/sql/package.json @@ -43,7 +43,7 @@ "tsc:clean": "rimraf build/js", "tsc:build": "yarn tsc:clean && tsc -p ./tsconfig.json", "tsc:watch": "yarn tsc:clean && tsc -p ./tsconfig.json -w", - "dev:cpack": "cd build/Release && cpack -G TGZ >/dev/null && echo \"$(realpath -m ./rapidsai_*-*-*.tar.gz)\"" + "dev:cpack:enabled": "echo $npm_package_name" }, "dependencies": { "@rapidsai/cudf": "~22.8.1", diff --git a/modules/webgl/src/shader.cpp b/modules/webgl/src/shader.cpp index 5c50e9aed..226882ba6 100644 --- a/modules/webgl/src/shader.cpp +++ b/modules/webgl/src/shader.cpp @@ -102,7 +102,7 @@ Napi::Value WebGL2RenderingContext::GetShaderParameter(Napi::CallbackInfo const& case GL_COMPILE_STATUS: { GLint param{}; GL_EXPORT::glGetShaderiv(shader, pname, ¶m); - return CPPToNapi(info)(param); + return CPPToNapi(info)(static_cast(param)); } case GL_SHADER_TYPE: { GLint param{}; diff --git a/node-rapids.code-workspace b/node-rapids.code-workspace index c037c6700..e77302844 100644 --- a/node-rapids.code-workspace +++ b/node-rapids.code-workspace @@ -216,6 +216,7 @@ "**/.git/objects/**": true, "**/.git/subtree-cache/**": true, "**/build/**": true, + "**/.next/**": true, "**/.cache/**": true, "**/.cmake-js/**": true, "**/node_modules/**": true @@ -226,6 +227,7 @@ "**/napi-inl.deprecated.h": false, "**/node_api.h": false, "**/build/**": true, + "**/.next/**": true, "**/.cache/**": true, "**/.cmake-js/**": true, "**/node_modules/**": true diff --git a/package.json b/package.json index cb7f2935b..aab4f1208 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,8 @@ "dependencies": { "@typescript-eslint/eslint-plugin": "5.30.0", "@typescript-eslint/parser": "5.30.0", + "bufferutil": "4.0.6", + "utf-8-validate": "5.0.9", "cmake-js": "6.0.0", "cross-env": "7.0.3", "dotenv": "8.2.0", @@ -130,40 +132,41 @@ ] }, "resolutions": { - "**/@deck.gl/aggregation-layers": "8.6.6", - "**/@deck.gl/arcgis": "8.6.6", - "**/@deck.gl/carto": "8.6.6", - "**/@deck.gl/core": "8.6.6", - "**/@deck.gl/extensions": "8.6.6", - "**/@deck.gl/geo-layers": "8.6.6", - "**/@deck.gl/google-maps": "8.6.6", - "**/@deck.gl/json": "8.6.6", - "**/@deck.gl/layers": "8.6.6", - "**/@deck.gl/mesh-layers": "8.6.6", - "**/@deck.gl/react": "8.6.6", - "**/@loaders.gl/3d-tiles": "3.1.6", - "**/@loaders.gl/core": "3.1.6", - "**/@loaders.gl/csv": "3.1.6", - "**/@loaders.gl/draco": "3.1.6", - "**/@loaders.gl/gltf": "3.1.6", - "**/@loaders.gl/i3s": "3.1.6", - "**/@loaders.gl/images": "3.1.6", - "**/@loaders.gl/las": "3.1.6", - "**/@loaders.gl/obj": "3.1.6", - "**/@loaders.gl/ply": "3.1.6", - "**/@luma.gl/constants": "8.5.10", - "**/@luma.gl/core": "8.5.10", - "**/@luma.gl/engine": "8.5.10", - "**/@luma.gl/experimental": "8.5.10", - "**/@luma.gl/gltools": "8.5.10", - "**/@luma.gl/shadertools": "8.5.10", - "**/@luma.gl/webgl": "8.5.10", - "**/apache-arrow": "^8.0.0", - "**/gl-matrix": "3.3.0", + "**/@deck.gl/aggregation-layers": "8.8.10", + "**/@deck.gl/carto": "8.8.10", + "**/@deck.gl/core": "8.8.10", + "**/@deck.gl/extensions": "8.8.10", + "**/@deck.gl/geo-layers": "8.8.10", + "**/@deck.gl/google-maps": "8.8.10", + "**/@deck.gl/json": "8.8.10", + "**/@deck.gl/layers": "8.8.10", + "**/@deck.gl/mapbox": "8.8.10", + "**/@deck.gl/mesh-layers": "8.8.10", + "**/@deck.gl/react": "8.8.10", + "**/@loaders.gl/3d-tiles": "3.2.9", + "**/@loaders.gl/core": "3.2.9", + "**/@loaders.gl/csv": "3.2.9", + "**/@loaders.gl/draco": "3.2.9", + "**/@loaders.gl/gltf": "3.2.9", + "**/@loaders.gl/i3s": "3.2.9", + "**/@loaders.gl/images": "3.2.9", + "**/@loaders.gl/las": "3.2.9", + "**/@loaders.gl/obj": "3.2.9", + "**/@loaders.gl/ply": "3.2.9", + "**/@luma.gl/constants": "8.5.16", + "**/@luma.gl/core": "8.5.16", + "**/@luma.gl/engine": "8.5.16", + "**/@luma.gl/experimental": "8.5.16", + "**/@luma.gl/gltools": "8.5.16", + "**/@luma.gl/shadertools": "8.5.16", + "**/@luma.gl/webgl": "8.5.16", + "**/@math.gl/core": "3.6.3", + "**/apache-arrow": "^9.0.0", + "**/gl-matrix": "3.4.3", "**/jsdom": "16.6.0", - "**/math.gl": "3.5.7", - "**/mjolnir.js": "2.6.0", - "**/react-map-gl": "5.3.16" + "**/math.gl": "3.6.3", + "**/mjolnir.js": "2.7.1", + "**/maplibre-gl": "2.4.0" }, "release": { "analyzeCommits": "simple-commit-message" diff --git a/scripts/npm-pack/linux.sh b/scripts/npm-pack/linux.sh index 013701f09..619b5d10d 100755 --- a/scripts/npm-pack/linux.sh +++ b/scripts/npm-pack/linux.sh @@ -2,9 +2,22 @@ set -Eeo pipefail -rm -rf "$PWD/build" && mkdir -p "$PWD/build" \ - && lerna_args="--no-sort --stream --parallel --no-prefix" \ - && echo "running cpack" \ - && cp $(lerna run ${lerna_args} --scope '@rapidsai/*' dev:cpack) "$PWD/build" \ - && echo "running npm pack" \ - && lerna exec ${lerna_args} "npm pack --pack-destination $PWD/build \$PWD"; +rm -rf "$PWD/build" +mkdir -p "$PWD/build" + +args="--stream --no-sort --parallel"; + +echo "running npm pack..." + +lerna exec ${args} "npm pack --pack-destination $PWD/build \$PWD"; + +echo "running cpack..." + +pkgs="$(lerna run ${args} --no-prefix --scope '@rapidsai/*' dev:cpack:enabled)"; + +args+=" $(for name in ${pkgs}; do echo "--scope $name"; done)"; + +lerna exec ${args} "\ +cd build/Release \ +&& cpack -G TGZ && rm -rf _CPack_Packages \ +&& mv ./rapidsai_*-*-*.tar.gz \$LERNA_ROOT_PATH/build/" diff --git a/yarn.lock b/yarn.lock index 7c406df63..b30273de8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,10 +24,10 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0", "@babel/compat-data@^7.18.8": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" - integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" + integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== "@babel/core@7.15.5": version "7.15.5" @@ -51,32 +51,32 @@ source-map "^0.5.0" "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.5.5", "@babel/core@^7.7.5": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" - integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" + integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.13" + "@babel/generator" "^7.19.0" + "@babel/helper-compilation-targets" "^7.19.1" + "@babel/helper-module-transforms" "^7.19.0" + "@babel/helpers" "^7.19.0" + "@babel/parser" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.13" - "@babel/types" "^7.18.13" + "@babel/traverse" "^7.19.1" + "@babel/types" "^7.19.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.15.4", "@babel/generator@^7.18.13": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" - integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== +"@babel/generator@^7.15.4", "@babel/generator@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" + integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== dependencies: - "@babel/types" "^7.18.13" + "@babel/types" "^7.19.0" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -95,33 +95,33 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4", "@babel/helper-compilation-targets@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" - integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" + integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== dependencies: - "@babel/compat-data" "^7.18.8" + "@babel/compat-data" "^7.19.1" "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" + browserslist "^4.21.3" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz#63e771187bd06d234f95fdf8bd5f8b6429de6298" - integrity sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA== + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b" + integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== 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-function-name" "^7.19.0" "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" - integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" + integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" @@ -152,13 +152,13 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" - integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" @@ -181,19 +181,19 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" - integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== +"@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" + integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" "@babel/helper-simple-access" "^7.18.6" "@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/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -202,10 +202,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" + integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== "@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" @@ -218,15 +218,15 @@ "@babel/types" "^7.18.9" "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" + integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/traverse" "^7.19.1" + "@babel/types" "^7.19.0" "@babel/helper-simple-access@^7.18.6": version "7.18.6" @@ -255,9 +255,9 @@ integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - 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#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.14.5", "@babel/helper-validator-option@^7.18.6": version "7.18.6" @@ -265,23 +265,23 @@ integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== "@babel/helper-wrap-function@^7.18.9": - version "7.18.11" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" - integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1" + integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg== dependencies: - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.11" - "@babel/types" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" -"@babel/helpers@^7.15.4", "@babel/helpers@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" - integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== +"@babel/helpers@^7.15.4", "@babel/helpers@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" + integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": version "7.18.6" @@ -292,10 +292,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.15.5", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" - integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.15.5", "@babel/parser@^7.18.10", "@babel/parser@^7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" + integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": version "7.18.9" @@ -307,12 +307,12 @@ "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.15.4": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" + integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -592,15 +592,16 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-classes@^7.15.4": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" + integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.19.0" "@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-plugin-utils" "^7.19.0" "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" @@ -692,13 +693,13 @@ babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f" + integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-module-transforms" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" @@ -711,12 +712,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - 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#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" + integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-regexp-features-plugin" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-new-target@^7.14.5": version "7.18.6" @@ -762,15 +763,15 @@ "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx@^7.14.5", "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.3.0": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz#ea47b2c4197102c196cbd10db9b3bb20daa820f1" - integrity sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A== + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" + integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.18.10" + "@babel/types" "^7.19.0" "@babel/plugin-transform-react-pure-annotations@^7.14.5": version "7.18.6" @@ -803,11 +804,11 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.14.6": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" + integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-transform-sticky-regex@^7.14.5": @@ -967,13 +968,13 @@ regenerator-runtime "^0.13.4" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.14.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" - integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.15.4", "@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": +"@babel/template@^7.15.4", "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== @@ -982,19 +983,19 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.9": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" - integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" + integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" + "@babel/generator" "^7.19.0" "@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.13" - "@babel/types" "^7.18.13" + "@babel/parser" "^7.19.1" + "@babel/types" "^7.19.0" debug "^4.1.0" globals "^11.1.0" @@ -1006,10 +1007,10 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" - integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== +"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" + integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== dependencies: "@babel/helper-string-parser" "^7.18.10" "@babel/helper-validator-identifier" "^7.18.6" @@ -1020,6 +1021,11 @@ resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@canvas/image-data@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz#3bd2cd856e13fc9e2c25feff360a4056857b0367" + integrity sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1028,6 +1034,13 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@cwasm/webp@0.1.5": + version "0.1.5" + resolved "https://registry.npmjs.org/@cwasm/webp/-/webp-0.1.5.tgz#b61014319aa9bb70b9f6d8a30f2838fed21779d1" + integrity sha512-ceIZQkyxK+s7mmItNcWqqHdOBiJAxYxTnrnPNgUNjldB1M9j+Bp/3eVIVwC8rUFyN/zoFwuT0331pyY3ackaNA== + dependencies: + "@canvas/image-data" "^1.0.0" + "@date-io/core@1.x", "@date-io/core@^1.3.13": version "1.3.13" resolved "https://registry.npmjs.org/@date-io/core/-/core-1.3.13.tgz#90c71da493f20204b7a972929cc5c482d078b3fa" @@ -1040,111 +1053,131 @@ dependencies: "@date-io/core" "^1.3.13" -"@deck.gl/aggregation-layers@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/aggregation-layers/-/aggregation-layers-8.6.6.tgz#de7bba8be2173705f7ed5437d4585c6b7a446430" - integrity sha512-+G9iapAqFPE/MbTjkX3NnkeEYIOFY+eQFqO2pOqJlSWDIXT5eNQV5tZTMB5SN8fMVCYrfZ4RhxrYsO3kltWtIQ== +"@deck.gl/aggregation-layers@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/aggregation-layers/-/aggregation-layers-8.8.10.tgz#def43d52dddc78fea01086c081c11b8ef68e2b4b" + integrity sha512-gxprp8sYb3gTfuccX5LcoG+BqGMduGmLJd0Z4QalQJnhVrT25rNtNYHtcKSmijdgM7i8/Tk2lbiuTgYnbE15cA== dependencies: - "@luma.gl/shadertools" "^8.5.10" - "@math.gl/web-mercator" "^3.5.4" + "@luma.gl/constants" "^8.5.16" + "@luma.gl/shadertools" "^8.5.16" + "@math.gl/web-mercator" "^3.6.2" d3-hexbin "^0.2.1" -"@deck.gl/arcgis@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/arcgis/-/arcgis-8.6.6.tgz#006b0eeb2a05b04d933d1f1477f61cd1ca70cbf4" - integrity sha512-SiuPYT42eI1TKZUbsFKDeNU7QcOnAnhgcr/KfZo1urwADD3y/osklq13fIBSEOs5hXVbxqyMHqOFfm3iE7aBNQ== - dependencies: - esri-loader "^3.2.0" - -"@deck.gl/carto@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/carto/-/carto-8.6.6.tgz#c6c198f8b4436b8003efdf377626f40fb7363795" - integrity sha512-JUpCusUBuL4K1zC1ZvNfkRd6ShnmZwy2QhlwHy2+x5OsPB63bEg9P8lG/PGfj9JIYFgX8lBdfDX0AHO4oSgzVQ== - dependencies: - "@loaders.gl/loader-utils" "^3.1.5" - "@loaders.gl/mvt" "^3.1.5" - "@loaders.gl/tiles" "^3.1.5" - "@math.gl/web-mercator" "^3.5.6" +"@deck.gl/carto@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/carto/-/carto-8.8.10.tgz#b15b3acbbcfb22f46d02364d898a245678011d67" + integrity sha512-w0JwLbkLI+A5kBgYTbML7GOwf62NzcjrumwIiaAzbJlkZ0reinj5jGTm9MZZBhHwjx1XeqFxgkwDVJioMWlfFg== + dependencies: + "@loaders.gl/gis" "^3.2.5" + "@loaders.gl/loader-utils" "^3.2.5" + "@loaders.gl/mvt" "^3.2.5" + "@loaders.gl/tiles" "^3.2.5" + "@luma.gl/constants" "^8.5.16" + "@math.gl/web-mercator" "^3.6.2" cartocolor "^4.0.2" + d3-array "^2.8.0" + d3-color "^2.0.0" + d3-format "^2.0.0" d3-scale "^3.2.3" + h3-js "^3.7.0" + moment-timezone "^0.5.33" + pbf "^3.2.1" -"@deck.gl/core@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/core/-/core-8.6.6.tgz#c88f2ef1c50f4d750f4b048249d06f08c42a5fb3" - integrity sha512-dCQxKkOT3mOA6RY6+iUTIyW4II04YiZ49uM/0+Un8KXzSzwhwDBQB2vpyKoMUhdjyvEB/64lnr2XQHU0wg1K8A== - dependencies: - "@loaders.gl/core" "^3.1.5" - "@loaders.gl/images" "^3.1.5" - "@luma.gl/core" "^8.5.10" - "@math.gl/web-mercator" "^3.5.6" +"@deck.gl/core@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/core/-/core-8.8.10.tgz#b3b5e8b4ac58efef4e2cc72e5e5ae17a7ec0eed7" + integrity sha512-Zayn+kVWh99AjjdJKIIXkIFO64zw2A+OVMEInBkudiPsr6J3huXbHRqLuFoQoStCt4N9bDGGIjEy1/285dqm3Q== + dependencies: + "@loaders.gl/core" "^3.2.5" + "@loaders.gl/images" "^3.2.5" + "@luma.gl/constants" "^8.5.16" + "@luma.gl/core" "^8.5.16" + "@math.gl/core" "^3.6.2" + "@math.gl/sun" "^3.6.2" + "@math.gl/web-mercator" "^3.6.2" + "@probe.gl/env" "^3.5.0" + "@probe.gl/log" "^3.5.0" + "@probe.gl/stats" "^3.5.0" gl-matrix "^3.0.0" - math.gl "^3.5.4" - mjolnir.js "^2.5.0" - probe.gl "^3.4.0" - -"@deck.gl/extensions@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/extensions/-/extensions-8.6.6.tgz#5d2c9ba58e822a5ba9631b858594f682f33ee46b" - integrity sha512-BCDBEtaXV2Fi/o8Mn71WJYV6Vn+iKSuzeutNsPipyckT/aKJOUZ47gVomYaAgpQe2LyP3B9JewJYWOX+k3IRWg== - dependencies: - "@luma.gl/shadertools" "^8.5.10" - -"@deck.gl/geo-layers@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/geo-layers/-/geo-layers-8.6.6.tgz#82decde1bfbb47ebbae061a325d3eb9b3c58bda0" - integrity sha512-Ob/7xzeTbM/qhW20trE4UOF8DtJ2eIvr+Jtwt2D5Xre947aPXRgdqtd3WBmaZEVNlzLGZBZHbuJcYfIXyP7dow== - dependencies: - "@loaders.gl/3d-tiles" "^3.1.5" - "@loaders.gl/gis" "^3.1.5" - "@loaders.gl/loader-utils" "^3.1.5" - "@loaders.gl/mvt" "^3.1.5" - "@loaders.gl/terrain" "^3.1.5" - "@loaders.gl/tiles" "^3.1.5" - "@luma.gl/experimental" "^8.5.10" - "@math.gl/culling" "^3.5.6" - "@math.gl/web-mercator" "^3.5.6" - h3-js "^3.6.0" + math.gl "^3.6.2" + mjolnir.js "^2.7.0" + +"@deck.gl/extensions@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/extensions/-/extensions-8.8.10.tgz#abdf2f61f3b412fc8993d0a2200a69dcc509331e" + integrity sha512-E8SdVNegiMUwxvnGk/rhF01g8SS8q1CKmI2aniXsfTzcP3i2PbzG2gQkKHKUaw44Jgq2w9xwecmfaN+UiDCwlw== + dependencies: + "@luma.gl/shadertools" "^8.5.16" + +"@deck.gl/geo-layers@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/geo-layers/-/geo-layers-8.8.10.tgz#80167d7ceec819afd48d98978bd678c5fe7449b7" + integrity sha512-REpL873uU8oKlbgwT3UYbjCOXbFaUWyWnpzO0+rOn0n4UGgCnZA30FCmXzn8I1XkYemLKO0agIf31l+xehvPVw== + dependencies: + "@loaders.gl/3d-tiles" "^3.2.5" + "@loaders.gl/gis" "^3.2.5" + "@loaders.gl/loader-utils" "^3.2.5" + "@loaders.gl/mvt" "^3.2.5" + "@loaders.gl/schema" "^3.2.5" + "@loaders.gl/terrain" "^3.2.5" + "@loaders.gl/tiles" "^3.2.5" + "@luma.gl/constants" "^8.5.16" + "@luma.gl/experimental" "^8.5.16" + "@math.gl/core" "^3.6.2" + "@math.gl/culling" "^3.6.2" + "@math.gl/web-mercator" "^3.6.2" + "@types/geojson" "^7946.0.8" + h3-js "^3.7.0" long "^3.2.0" - math.gl "^3.5.6" -"@deck.gl/google-maps@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/google-maps/-/google-maps-8.6.6.tgz#83d959e3248a06d1fcd22ad734213da15ffc2458" - integrity sha512-Ya+T+CxBUopBsp6O7Zdfrmnr/LYiuNjLCSh07ty3ayH1+U09VA3BZ++EWpMHrkI76jCAM1col7EoxgrovX4mYg== +"@deck.gl/google-maps@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/google-maps/-/google-maps-8.8.10.tgz#49931fe371d310a7c2a2143ea2e67f62486bbe11" + integrity sha512-8a92ujr7jCvATLjq6R8MF+sv7xZokft/sfplXVgMBjGr7WJ2dXcgKzYdbVkSRIHSIqDEmt5y8iGGgfZU9qgDWA== -"@deck.gl/json@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/json/-/json-8.6.6.tgz#872bf39bf167ec9c0b5c9452a7b4b8f88ea9ce33" - integrity sha512-6X7TUpTdoqOEvqIG7dO7VX9H0SIi5vjIf+anltBWiQzFsCkAsT3l7Ydw7wES5X++a4O0BcVed9klTXF1IK7zKA== +"@deck.gl/json@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/json/-/json-8.8.10.tgz#6aef1effa148ee873305199bf14b6fbad4fd92e5" + integrity sha512-XFL5GgZ70GrzjI/+Uhqv18xEtoEQxZcxqrMAK+E+V4ntTQjA/s7CMJNkK7dYn/2+p8X0AfGqoM/EnclX8RgA/A== dependencies: d3-dsv "^1.0.8" expression-eval "^2.0.0" -"@deck.gl/layers@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/layers/-/layers-8.6.6.tgz#b7e7559fedc42d647e2fd99ffea24810b115c84c" - integrity sha512-PNaulWRyTvukP+q/jwQ+DwXvhRuWtKUuM/vxHzYgahpEYvkhfGLovhfJWtYm0CvRjBP/BGpH2OBdo50sDYI2dg== +"@deck.gl/layers@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/layers/-/layers-8.8.10.tgz#52b14cf1162d678ba82acd7141e49a2e80904442" + integrity sha512-ydvS41h3d7HA75Ym+nwy9Y/oRAp4jxVCogZfpArw9sdj3k1IDjethO6CGs/5zZUN3NbaVDKrJ7CPFFJ3/nEySQ== dependencies: - "@loaders.gl/images" "^3.1.5" + "@loaders.gl/images" "^3.2.5" + "@loaders.gl/schema" "^3.2.5" + "@luma.gl/constants" "^8.5.16" "@mapbox/tiny-sdf" "^1.1.0" - "@math.gl/polygon" "^3.5.6" + "@math.gl/core" "^3.6.2" + "@math.gl/polygon" "^3.6.2" + "@math.gl/web-mercator" "^3.6.2" earcut "^2.0.6" -"@deck.gl/mesh-layers@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/mesh-layers/-/mesh-layers-8.6.6.tgz#a7a8846b59f46b4cb816ca77d67de6c94c33641d" - integrity sha512-LLGYTDo5dil6HqL6xaAaiCb3bbv1zbB6dsjvYRm6+qVHG76pKMyzhYBNkTGBEZeGQpaRIItD0RpVbTI800uXiA== +"@deck.gl/mapbox@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/mapbox/-/mapbox-8.8.10.tgz#7fafe378dd0b405946df5b43a103665dc82bc41f" + integrity sha512-NwR92nVsnfEtdUkR6kVY0wac3L4VAjrsfRetE/cEJ6A/McJwELhhBbUckxv3oO4v0p9UVuIB2AM71g1m9loTxg== dependencies: - "@loaders.gl/gltf" "^3.1.5" - "@luma.gl/experimental" "^8.5.10" - "@luma.gl/shadertools" "^8.5.10" + "@types/mapbox-gl" "^2.6.3" -"@deck.gl/react@8.6.6": - version "8.6.6" - resolved "https://registry.npmjs.org/@deck.gl/react/-/react-8.6.6.tgz#f0edf41adef1ef68ddff031514f4c9ae6d48d23f" - integrity sha512-7AU6YPVIuI9aiPGpEIoh7qKjx45omOrguOis+y65nGvy8uclPZDadIZ5NoINUsyXeoDBegCIU/GX7Crzgk769Q== +"@deck.gl/mesh-layers@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/mesh-layers/-/mesh-layers-8.8.10.tgz#824b59f83ddf17a00ef93b6336665f87e25ea958" + integrity sha512-vpHAoiC/9Ztu6KUMgm65cveYm+z4bmbqLl5y/Vhej7JJxU9oyFCfX0FYoyucllc3DFM307nqW2j1drkPKPyokg== dependencies: - prop-types "^15.6.0" + "@loaders.gl/gltf" "^3.2.5" + "@luma.gl/constants" "^8.5.16" + "@luma.gl/experimental" "^8.5.16" + "@luma.gl/shadertools" "^8.5.16" + +"@deck.gl/react@8.8.10": + version "8.8.10" + resolved "https://registry.npmjs.org/@deck.gl/react/-/react-8.8.10.tgz#103b2a09916904224b3966198c6bf1a44acdb791" + integrity sha512-OJFKvWi/BHwgpslbP7Wlw6RCYx9Zwl5ncaERIJLPZ7/Qicoy0NK7/wIv7NW+WNv+0dnsJGKwriUc5PBq6hK7iA== "@emotion/cache@^10.0.27": version "10.0.29" @@ -1203,13 +1236,13 @@ integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== "@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== + version "1.3.2" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" + integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.2" + espree "^9.4.0" globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -1298,6 +1331,15 @@ dependencies: ajv "^6.12.6" +"@fastify/ajv-compiler@^3.1.1": + version "3.2.0" + resolved "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.2.0.tgz#a165ffb877fe239571a68f7b22143034176dcb8a" + integrity sha512-JrqgKmZoh1AJojDZk699DupQ9+tz5gSy7/w+5DrkXy5whM5IcqdV3SjG5qnOqgVJT1nPtUMDY0xYus2j6vwJiw== + dependencies: + ajv "^8.10.0" + ajv-formats "^2.1.1" + fast-uri "^2.0.0" + "@fastify/autoload@^4.0.0": version "4.0.1" resolved "https://registry.npmjs.org/@fastify/autoload/-/autoload-4.0.1.tgz#7b3008af96ef0cd20926e01b04aaae0a2c4e225b" @@ -1321,11 +1363,28 @@ fastify-plugin "^4.0.0" mnemonist "0.39.2" +"@fastify/deepmerge@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz#91f0a5a27034ff76b7bece63a5906894940ace82" + integrity sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g== + "@fastify/error@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@fastify/error/-/error-2.0.0.tgz#a9f94af56eb934f0ab1ce4ef9f0ced6ebf2319dc" integrity sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w== +"@fastify/error@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz#bfcb7b33cec0196413083a91ef2edc7b2c88455b" + integrity sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg== + +"@fastify/fast-json-stringify-compiler@^4.0.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.1.0.tgz#ebf657ce4ec88e27ba311f7560eaa0b37de8719d" + integrity sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw== + dependencies: + fast-json-stringify "^5.0.0" + "@fastify/multipart@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@fastify/multipart/-/multipart-6.0.0.tgz#da7e80b589b3874b3964145ec6e13fd69bd7e6cf" @@ -2340,310 +2399,273 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" -"@loaders.gl/3d-tiles@3.1.6", "@loaders.gl/3d-tiles@^3.1.5": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/3d-tiles/-/3d-tiles-3.1.6.tgz#de79397b67fa156112e17ccdcdbdd9b941a4ef39" - integrity sha512-wDrOxq4QN9QsIKG+ltLuws45rgvUCc02JIbO4beUQamhpRG0Hz4gZGx1ffhKVft1x5pyUMHMVKSecXu645J6Ig== +"@loaders.gl/3d-tiles@3.2.9", "@loaders.gl/3d-tiles@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/3d-tiles/-/3d-tiles-3.2.9.tgz#2371475fe0328f4ee7a149503deb4e5b33ca105c" + integrity sha512-h5RlXsOzAPjw07vri/cHqAQDA4vWF9jfhw9A2j93RD9gfAftzn0SeO0g04jM9xlZKKRbAS4F5zG9kaftj5HqWQ== dependencies: - "@loaders.gl/draco" "3.1.6" - "@loaders.gl/gltf" "3.1.6" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/math" "3.1.6" - "@loaders.gl/tiles" "3.1.6" + "@loaders.gl/draco" "3.2.9" + "@loaders.gl/gltf" "3.2.9" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/math" "3.2.9" + "@loaders.gl/tiles" "3.2.9" "@math.gl/core" "^3.5.1" "@math.gl/geospatial" "^3.5.1" -"@loaders.gl/core@3.1.6", "@loaders.gl/core@^3.1.5": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/core/-/core-3.1.6.tgz#1a7de00d584a58c0e76c55e9a395a2d4e41ae9fe" - integrity sha512-/UA+xrgJKDW18zYU8wJ4QQLtfiC7HPU9zXZZUjsrTKE39v/Tcq8t0O3dSr2B9I8n4cy5SpgTC3gvBGJQFKe/mw== +"@loaders.gl/core@3.2.9", "@loaders.gl/core@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/core/-/core-3.2.9.tgz#b60db0e5567715c16ab8b4254e1943c1e86c6e53" + integrity sha512-dBFtpRUaSZBZ0OVe3ZHkEfDmqizgpb9AUxzUkhsiyTFi3D5Y8xeqFg1x5ftC8OA4+15o0vBQeqJsXFBWiR2ysA== dependencies: "@babel/runtime" "^7.3.1" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/worker-utils" "3.1.6" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/worker-utils" "3.2.9" + "@probe.gl/log" "^3.5.0" probe.gl "^3.4.0" -"@loaders.gl/csv@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/csv/-/csv-3.1.6.tgz#52e794012321168368122c7032170acc038d697d" - integrity sha512-AikEI/++NxBnw978PdkVNQPFRVLpUMPHTTEr2SguHwxVK5E3vVIzvmYUqe580rNxoSa6yAKKM8Uv44yPcfk8NA== +"@loaders.gl/csv@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/csv/-/csv-3.2.9.tgz#5f6eb2ab752f59ba85120a0e9986fd53148f7fd5" + integrity sha512-LqQpPs351k9J3OpRgmaw6hrycHiKXMYEjkUzRnKg8/yu2Bb377uXpsVieGQq0VF/iTEgUoHWVZBxW5wgsi3/PQ== dependencies: - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/schema" "3.1.6" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" -"@loaders.gl/draco@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/draco/-/draco-3.1.6.tgz#11fdaf690c321b140686a06c88cb53fdcf859b77" - integrity sha512-X7hvGJqMx/io1vH/pogCYOMY04hgHTx8FPddvkf701V2270NRIp5ohClXOABJzTDLjc9B6ekqUQuADyTGTsPEA== +"@loaders.gl/draco@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/draco/-/draco-3.2.9.tgz#8604ea6b6af6fec87d6ffc3a66d6486ab71d8400" + integrity sha512-WTIlAc0JZLTsi8kGAzdRhqsqo+IZlwGdHyA/T6wJCrA2fpdqYsYB5XHK3ZnM0NtC3cPd2tYhti1j4nurUVMVHQ== dependencies: "@babel/runtime" "^7.3.1" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/schema" "3.1.6" - "@loaders.gl/worker-utils" "3.1.6" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" + "@loaders.gl/worker-utils" "3.2.9" draco3d "1.4.1" -"@loaders.gl/gis@3.2.7", "@loaders.gl/gis@^3.1.5": - version "3.2.7" - resolved "https://registry.npmjs.org/@loaders.gl/gis/-/gis-3.2.7.tgz#6199332d9512d13d288a8a7aee71037b3b2ef7d5" - integrity sha512-iJJvaujkGTswv6lx+khI98+akwnWWKq9D9ltOgdB5AY59v8QVTEyqlX1Y5Ir3w3ffvgY3rAP9Sa9gOlD/2KcqQ== +"@loaders.gl/gis@3.2.9", "@loaders.gl/gis@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/gis/-/gis-3.2.9.tgz#0160062610dabb51a03f1f9369e3d57fe195f247" + integrity sha512-322A5Q0nYNSiZUpR9UuaK3qxI0J1fpFEaIDVDjiF18aMxNCQ66g/H/nda/aeriRdNq2q4oJ6l+MrJlpPFUSwng== dependencies: - "@loaders.gl/loader-utils" "3.2.7" - "@loaders.gl/schema" "3.2.7" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" "@mapbox/vector-tile" "^1.3.1" "@math.gl/polygon" "^3.5.1" pbf "^3.2.1" -"@loaders.gl/gltf@3.1.6", "@loaders.gl/gltf@^3.1.5": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/gltf/-/gltf-3.1.6.tgz#a4dfff1b934a1c6cdd77d94a2fba23bb5b0ee472" - integrity sha512-1CwBD4xejJPYNjXGDuzJK+kdH3jHwMR7c8vlGYXWcmNGRBvUk02nUWxRP0oFOYS0AAUXZfVLZlllcrZoIv96uA== - dependencies: - "@loaders.gl/draco" "3.1.6" - "@loaders.gl/images" "3.1.6" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/textures" "3.1.6" - -"@loaders.gl/i3s@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/i3s/-/i3s-3.1.6.tgz#a907074dfa49e5403288471f1c03e9e4a21a23a9" - integrity sha512-rQLmQU4r2gldlFv8K3clkht5WdjGUUiq3y+sKpw8bKwYUhGnkReyuRRHIAHKXMbm6dqCfu3Y4WBRX85Nyo+2zA== - dependencies: - "@loaders.gl/draco" "3.1.6" - "@loaders.gl/images" "3.1.6" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/schema" "3.1.6" - "@loaders.gl/textures" "3.1.6" - "@loaders.gl/tiles" "3.1.6" +"@loaders.gl/gltf@3.2.9", "@loaders.gl/gltf@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/gltf/-/gltf-3.2.9.tgz#5698ccbf537632dda9125feb0bffabdca028ae71" + integrity sha512-F5LqR7RR6PRHZpCWJuwQXIUQqCEDpfNMAzBI3iDySJhsOduiJJ7fFYTE0DamsU8ai50sbNnmlgv+WhoEZ/+7+Q== + dependencies: + "@loaders.gl/draco" "3.2.9" + "@loaders.gl/images" "3.2.9" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/textures" "3.2.9" + +"@loaders.gl/i3s@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/i3s/-/i3s-3.2.9.tgz#947502b7e45bc17d6ca3cc59949318a99a3742cf" + integrity sha512-TWcA4v2t+2yXD7OLTepQpjaiNCpYgt8DV68cO8J1FzgBeDN0KadtXOtO+2JU1n99gUQXitDaFWPzWb7xXR/N1Q== + dependencies: + "@loaders.gl/draco" "3.2.9" + "@loaders.gl/images" "3.2.9" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" + "@loaders.gl/textures" "3.2.9" + "@loaders.gl/tiles" "3.2.9" "@luma.gl/constants" "^8.5.4" "@math.gl/core" "^3.5.1" "@math.gl/culling" "^3.5.1" "@math.gl/geospatial" "^3.5.1" probe.gl "^3.4.0" -"@loaders.gl/images@3.1.6", "@loaders.gl/images@3.2.7", "@loaders.gl/images@^3.1.5": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/images/-/images-3.1.6.tgz#2a967cee1c55962e00d248ba8cf68d6de27e89cb" - integrity sha512-1SV1uIZMzQgKxZb1tmEx9ls822xfhJS14KS98M1ZtwyFKUvLHU7sDIqlLEPZHTVWYcBRfxCVI6lsOb+wAay3MA== +"@loaders.gl/images@3.2.9", "@loaders.gl/images@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/images/-/images-3.2.9.tgz#fb0df01e5d39a27225502c8205a5bdb2397155af" + integrity sha512-Akx9lep4zeSXxD9fRtOP6nS+IjzX4dZQ+P7uIXJ0ydqeBNbUjzKtPgkVEtBqYQNUjPXuXvQ0xahVTNatb/2tLg== dependencies: - "@loaders.gl/loader-utils" "3.1.6" + "@loaders.gl/loader-utils" "3.2.9" -"@loaders.gl/las@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/las/-/las-3.1.6.tgz#d5e686333e75841b89cc3ebe34fb9c7761fc0300" - integrity sha512-vM1oZrYo74pQixEiHFSZHNLaWzsaTBZQpFll01q+HJkBLy+8GBcUO/hx5jfm8hk2AOR5SgbFhqtpw5R8GzC4lQ== +"@loaders.gl/las@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/las/-/las-3.2.9.tgz#6b835af3a16fc949f76c95ddf4eb4fd911789ca8" + integrity sha512-UZhLwNhOOpdKtYnZh53ZPrB9WUowZ7o4/ZIhvIaIJhQEAetYSe/FGb/pF0yfhpH7LIN26LB8bBlsr0evJhVrZg== dependencies: "@babel/runtime" "^7.3.1" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/schema" "3.1.6" - -"@loaders.gl/loader-utils@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/loader-utils/-/loader-utils-3.1.6.tgz#1f4d958e460d293284019875175a029663fb7da4" - integrity sha512-L9QqXjPSCs5SwUy70XIsAmR7ec10bST1nq7kU0bwIt892iQoIPI2iIHy03dsA6/RFkMI28VPA2St3yXbMeuSPw== - dependencies: - "@babel/runtime" "^7.3.1" - "@loaders.gl/worker-utils" "3.1.6" - "@probe.gl/stats" "^3.5.0" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" + apache-arrow "^4.0.0" -"@loaders.gl/loader-utils@3.2.7", "@loaders.gl/loader-utils@^3.1.5": - version "3.2.7" - resolved "https://registry.npmjs.org/@loaders.gl/loader-utils/-/loader-utils-3.2.7.tgz#2ccb4f6fefa2fb0b537b8f86c8f37d2d9af3a5df" - integrity sha512-jvEdM6TSKNkWy7wakPnUIZiUoVVcVCUE6NuYfk9iL+CFsA5bCCthjkVpGm5cFX2cRZ2dphTtD54WC4iEilmBLQ== +"@loaders.gl/loader-utils@3.2.9", "@loaders.gl/loader-utils@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/loader-utils/-/loader-utils-3.2.9.tgz#a8cb0e1d4f9fa36f0b43c28a4d3f502757bc383f" + integrity sha512-oz5A404HJ7lxRdkH/rdBmZ2hlQfQiyY244N6fLPI456f/9X52XAgAeoGt6WSQsEHpr/x//lsN7hot59NhaYrvA== dependencies: "@babel/runtime" "^7.3.1" - "@loaders.gl/worker-utils" "3.2.7" + "@loaders.gl/worker-utils" "3.2.9" "@probe.gl/stats" "^3.5.0" -"@loaders.gl/math@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/math/-/math-3.1.6.tgz#37a3118b59655142e54bf9f01de716637ea2d05b" - integrity sha512-+EWrv8fIgOFWdAfLvfJZD+nvG7U5aS3jSgJXiqxm+AOp9gIctVDs0Vgk/vy8vzQWlaKSKKNLRO4kMZQZc3u+uQ== - dependencies: - "@loaders.gl/images" "3.1.6" - "@loaders.gl/loader-utils" "3.1.6" - "@math.gl/core" "^3.5.1" - -"@loaders.gl/math@3.2.7": - version "3.2.7" - resolved "https://registry.npmjs.org/@loaders.gl/math/-/math-3.2.7.tgz#72159e1b731be82b99fcc4aae144e67216f7a506" - integrity sha512-DI65PoWzBGTWoznL1W6Tnoy0T/kwlI3ctlf/DyZ4zvrgicFmccrmgnNehdGmwOUt9TE8N7mCOopMa1yXEl1a3g== +"@loaders.gl/math@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/math/-/math-3.2.9.tgz#d91e299a1740b11ff5c74a15cb49a542316cb8a2" + integrity sha512-wm30jfZosEyzE6791xb+GU70sxtA5w5lsM5bfVU9ObwzmLZrzjKjhNN/McxQ5U03Hsz14TrWokr/oZuWVH2/uQ== dependencies: - "@loaders.gl/images" "3.2.7" - "@loaders.gl/loader-utils" "3.2.7" + "@loaders.gl/images" "3.2.9" + "@loaders.gl/loader-utils" "3.2.9" "@math.gl/core" "^3.5.1" -"@loaders.gl/mvt@^3.1.5": - version "3.2.7" - resolved "https://registry.npmjs.org/@loaders.gl/mvt/-/mvt-3.2.7.tgz#0e6b0edb71a86e4dd09d2bc2bcc02b7db0732716" - integrity sha512-4PHd6ZrW3aoD2PaitJ8pmlij2J4j9CQ/BhmbuKvrJikpdWOvOMDt1S/1KCakmyQLFiWmr2lkVnWJUlxG92IkhA== +"@loaders.gl/mvt@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/mvt/-/mvt-3.2.9.tgz#2ce4bce2b730edea7657a8bbf4ac20f6a83641c6" + integrity sha512-P4ZK8/nJTNxNqnqkOVxvVw5qmpItnDAbjgqf0ZLFqNw0BTAbs7nHJRcNGtn0olz+2TYPLr3en+1ZtD1bO+/7EQ== dependencies: - "@loaders.gl/gis" "3.2.7" - "@loaders.gl/loader-utils" "3.2.7" - "@loaders.gl/schema" "3.2.7" + "@loaders.gl/gis" "3.2.9" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" "@math.gl/polygon" "^3.5.1" pbf "^3.2.1" -"@loaders.gl/obj@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/obj/-/obj-3.1.6.tgz#60251f04906e601216eb97b687eb826953c5f767" - integrity sha512-zB5xUznCCxLqJIcFfaf9gJPUzUfTGeut/yKizXwP+Y8hVBIp07k5evlV/b18CyADGwruztTfUrtOmRn3g3/MAg== +"@loaders.gl/obj@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/obj/-/obj-3.2.9.tgz#cc68fe061714c7b853fcdffc4e6053b5fe54202c" + integrity sha512-lrUZ/394y+/rSwEli+ENCQgTZ9WLUoQ7a2g88yC0/1U6TvDiC1FHaQA5zNHx+skQZ9r0CtG5GLg4NwX8Np+fTw== dependencies: "@babel/runtime" "^7.3.1" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/schema" "3.1.6" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" -"@loaders.gl/ply@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/ply/-/ply-3.1.6.tgz#7f0b1c44a1af0c0f7755f9bb6c3cf63d206ef8c2" - integrity sha512-9dRP7Gel3NNURnhN/Lm3Db0icgF9Qvg5f2/8/l5IsklnbtF9usuzmn8FSxEsyP8dw4wku2ZTAcI5eWL/T3pp5w== +"@loaders.gl/ply@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/ply/-/ply-3.2.9.tgz#fcc33f1546b3a420a3a9107039d594afe5861b59" + integrity sha512-FIf4wJOR1iqem/LX18EAQQUPlc5L38ZN1CM/0sggW138HE2eCrPlL1L3xpydKuae3ldpyhX6FaWN9AS0IfNu2g== dependencies: "@babel/runtime" "^7.3.1" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/schema" "3.1.6" - -"@loaders.gl/schema@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/schema/-/schema-3.1.6.tgz#c98f01734e9ce1e07ce673feab25ede919e4c599" - integrity sha512-6l9bcEGLC/KBvyAbZdMpx9jLo9A1Sl15smW+FSI2pZx8BGQZQNePCNvaN3YEywvVIVmz5wF/xAsaCw8Asw9zbw== - dependencies: - "@types/geojson" "^7946.0.7" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" -"@loaders.gl/schema@3.2.7": - version "3.2.7" - resolved "https://registry.npmjs.org/@loaders.gl/schema/-/schema-3.2.7.tgz#e1afa7d7cfe2cd38655c95a1fdd1370900463acb" - integrity sha512-GFLcyXcxAZcf0yTQZU05QFBmxCdR7MsivPkleSAMm62pXfyPuurUNwo3pkdIhNukcK5Tn8O0T3+xjOBtsoQAXw== +"@loaders.gl/schema@3.2.9", "@loaders.gl/schema@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/schema/-/schema-3.2.9.tgz#96e461dec91728c57557666b310d554aa57c25c9" + integrity sha512-Qg/c4/0x3Awtz1EzWwAwyAgXxGHbbCvYdeA7idcpvjPA/xtrBkysEnwbwpbY06+xqJ3lnchkDkyFdCTgqdYjqg== dependencies: "@types/geojson" "^7946.0.7" apache-arrow "^4.0.0" -"@loaders.gl/terrain@^3.1.5": - version "3.2.7" - resolved "https://registry.npmjs.org/@loaders.gl/terrain/-/terrain-3.2.7.tgz#f9c9dfd7bd41fd2c356add7ed74382d94ae5e595" - integrity sha512-Uq+NPGJGtAJpdKmnSGlPy5hgFb5MElFIIXCKmCrmrBgs3D4BQAtQSTajD0SqsgmZgNM47NWDuVy5h6Xdq4Ey5w== +"@loaders.gl/terrain@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/terrain/-/terrain-3.2.9.tgz#ac801abbd8c1c920133a042843d5df0ae209c3db" + integrity sha512-3Y1u40/vkITSuPUNIsVX6uafzdTvWZTltP1FLXI8/gRkZWDNGXjkez8qNDsVvlgfz6GP0TqjIlragZ/KSGoTOQ== dependencies: "@babel/runtime" "^7.3.1" - "@loaders.gl/loader-utils" "3.2.7" - "@loaders.gl/schema" "3.2.7" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" "@mapbox/martini" "^0.2.0" -"@loaders.gl/textures@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/textures/-/textures-3.1.6.tgz#b3b8da4a8a387730a6965d0bd93d08ff5c18b068" - integrity sha512-wcjbOqbWT5umcYpwkuiI8fdKV9apFhzg32nWzbcfslxlFuLTeGwYaX41mnNX0y81GCNUHYmW5iapBTLbwqeVMg== +"@loaders.gl/textures@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/textures/-/textures-3.2.9.tgz#c606fb27b3f55644a548daafc57f33d1d44a02dd" + integrity sha512-Sx8vkjlGupe9lhAQp7jxMe6aVI7Ptt5byvs4HXrWKgyiUNxQLR2eSh2xw13VYa4BHu1DHcHEI2EPNIoZ+VivhA== dependencies: - "@loaders.gl/images" "3.1.6" - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/worker-utils" "3.1.6" + "@loaders.gl/images" "3.2.9" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/schema" "3.2.9" + "@loaders.gl/worker-utils" "3.2.9" ktx-parse "^0.0.4" texture-compressor "^1.0.2" -"@loaders.gl/tiles@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/tiles/-/tiles-3.1.6.tgz#7a251a11c469a23e8e155087c4348b1d8819f97b" - integrity sha512-mZraZERewsrpNBOjBDxrfnllMVLbG76/8vO3FdaBaq+5aPHkDO5fgrWmkeo0qleZtKspYqsUfmEvkiLUDuy3Ew== +"@loaders.gl/tiles@3.2.9", "@loaders.gl/tiles@^3.2.5": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/tiles/-/tiles-3.2.9.tgz#f0fc7b8bcfe0af10c5d25bd9daa15a78aaf01901" + integrity sha512-noUn1Kk5BZmyfb8hMoZg/cZK46RSayQP9Bh6buNcUecSbKL6HK32/Obhtj4AsDtBExH1AmMcxpfVIkA9JTDoQg== dependencies: - "@loaders.gl/loader-utils" "3.1.6" - "@loaders.gl/math" "3.1.6" + "@loaders.gl/loader-utils" "3.2.9" + "@loaders.gl/math" "3.2.9" "@math.gl/core" "^3.5.1" "@math.gl/culling" "^3.5.1" "@math.gl/geospatial" "^3.5.1" "@math.gl/web-mercator" "^3.5.1" "@probe.gl/stats" "^3.5.0" -"@loaders.gl/tiles@^3.1.5": - version "3.2.7" - resolved "https://registry.npmjs.org/@loaders.gl/tiles/-/tiles-3.2.7.tgz#3197800711e79ccd7019067f95970ba0fcde99e5" - integrity sha512-sL8JG7KqLjHFaetTon6bRz+d3Wuh+W/znJdQhnjOxMgUzwZrn6dBDuSLakEUz86gaZYHV9iyvd9EmOoBhILRdg== - dependencies: - "@loaders.gl/loader-utils" "3.2.7" - "@loaders.gl/math" "3.2.7" - "@math.gl/core" "^3.5.1" - "@math.gl/culling" "^3.5.1" - "@math.gl/geospatial" "^3.5.1" - "@math.gl/web-mercator" "^3.5.1" - "@probe.gl/stats" "^3.5.0" - -"@loaders.gl/worker-utils@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.1.6.tgz#91e9e6978973f8651b3acb142fe34a899fb18194" - integrity sha512-lfi+b53fhNX0sHqeGiw3WcY1b/RgLFtIrKsovKtAU08/6xQe+QlYJNET8V63HZ1osczIDDKq8eOEZAxDxEmRCA== - dependencies: - "@babel/runtime" "^7.3.1" - -"@loaders.gl/worker-utils@3.2.7": - version "3.2.7" - resolved "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.2.7.tgz#feeaca2f7fe725154bdae5d709a80c92ebad3d69" - integrity sha512-gdWw46Wnt+NJyJDVibvs7zK7e58ifgmDvcE1gWHqXISMdTfqRDQJenxCPXuLFR47EWIAytcB7y0xBz6Dka2/NQ== +"@loaders.gl/worker-utils@3.2.9": + version "3.2.9" + resolved "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.2.9.tgz#755707acceafa2c1e8dbd68b6e3953cd45cf7574" + integrity sha512-x9BnbprVJk23oy4+UbH6Hr3sBdAxjvFUDCecvfM7o0UB1gZTyW9C5miVRkTnJeln9MnbLhjsdmWh+52h1QMbRg== dependencies: "@babel/runtime" "^7.3.1" -"@luma.gl/constants@8.5.10", "@luma.gl/constants@^8.5.4": - version "8.5.10" - resolved "https://registry.npmjs.org/@luma.gl/constants/-/constants-8.5.10.tgz#dd8b5ed786e372582a1a28e79c20481e363b4b50" - integrity sha512-0OZnNbb8hF+ogr/Exr5KFEnSMQdCgjrbO2ZYeNIGO0UVMTu4oTSLfRcBxKUs1NzxG5RogyV8dL6ETQbkP5VAZw== +"@luma.gl/constants@8.5.16", "@luma.gl/constants@^8.5.16", "@luma.gl/constants@^8.5.4": + version "8.5.16" + resolved "https://registry.npmjs.org/@luma.gl/constants/-/constants-8.5.16.tgz#196f270d0e7735cafe264e994ee34ebfaa11906a" + integrity sha512-b9JrfhlU4tgQWa7vAzQzzw3yS0NdJBrTEZ6LA9XRKSwVV5VunHXApnrnN4v1oA0AGgnknnUf40PRBZolsVK+7Q== -"@luma.gl/core@8.5.10", "@luma.gl/core@^8.5.10": - version "8.5.10" - resolved "https://registry.npmjs.org/@luma.gl/core/-/core-8.5.10.tgz#a4fdb8656e249b72b84addb0a9412ab91a65fc15" - integrity sha512-NzzMnSgzPta3gMu8vSM/kWiY09HypHRXt4zw/xFX4geLeX4iXm7Jnm+eeaNpc/QH/yJ51+4bpvZml0P5NIukfQ== +"@luma.gl/core@8.5.16", "@luma.gl/core@^8.5.16": + version "8.5.16" + resolved "https://registry.npmjs.org/@luma.gl/core/-/core-8.5.16.tgz#a8ad0afbb68885913d4a18add5b3926c8c9be39d" + integrity sha512-w3goHMFEhQFlpoXXygFD6zaZvu4rYvMLfDXThpBMUYm8Y4k46UREFYhsV1aOe1aJlaolsRT/9J2fgSDXr0yA3w== dependencies: "@babel/runtime" "^7.0.0" - "@luma.gl/constants" "8.5.10" - "@luma.gl/engine" "8.5.10" - "@luma.gl/gltools" "8.5.10" - "@luma.gl/shadertools" "8.5.10" - "@luma.gl/webgl" "8.5.10" + "@luma.gl/constants" "8.5.16" + "@luma.gl/engine" "8.5.16" + "@luma.gl/gltools" "8.5.16" + "@luma.gl/shadertools" "8.5.16" + "@luma.gl/webgl" "8.5.16" -"@luma.gl/engine@8.5.10": - version "8.5.10" - resolved "https://registry.npmjs.org/@luma.gl/engine/-/engine-8.5.10.tgz#4e8cdd8ffb0bd5e13e4e521f4e0b05c21a9805a6" - integrity sha512-W3cPlabMl1g6dfAio4yGD9GohoMULXqsBm9P9WOh0KypQBw5pFlE2C/njY43YhfvnpMPDMUjjraYrEXa1fhaig== +"@luma.gl/engine@8.5.16": + version "8.5.16" + resolved "https://registry.npmjs.org/@luma.gl/engine/-/engine-8.5.16.tgz#d8b4bdf8d63fbb470c0416a0cfde6513bace2bed" + integrity sha512-F9wMLg+ystsXa3oOzLezaD1K7ot+kL69IKIJqVjxNecPLf8E/BxJlKL+AZW7SCluka6pFMlGomog0GnjjCxH8Q== dependencies: "@babel/runtime" "^7.0.0" - "@luma.gl/constants" "8.5.10" - "@luma.gl/gltools" "8.5.10" - "@luma.gl/shadertools" "8.5.10" - "@luma.gl/webgl" "8.5.10" + "@luma.gl/constants" "8.5.16" + "@luma.gl/gltools" "8.5.16" + "@luma.gl/shadertools" "8.5.16" + "@luma.gl/webgl" "8.5.16" "@math.gl/core" "^3.5.0" - probe.gl "^3.4.0" + "@probe.gl/env" "^3.5.0" + "@probe.gl/stats" "^3.5.0" + "@types/offscreencanvas" "^2019.7.0" -"@luma.gl/experimental@8.5.10", "@luma.gl/experimental@^8.5.10": - version "8.5.10" - resolved "https://registry.npmjs.org/@luma.gl/experimental/-/experimental-8.5.10.tgz#103a2873e9a390a272480d22685b98875d615cab" - integrity sha512-1Ldq2DEor9qWHoRetcAz4BID1pwp+5x67F2mfe2UtjEpDY0Modi7t8C94PR8cviyjRIu3DErxX7o8HxJ4JXxpQ== +"@luma.gl/experimental@8.5.16", "@luma.gl/experimental@^8.5.16": + version "8.5.16" + resolved "https://registry.npmjs.org/@luma.gl/experimental/-/experimental-8.5.16.tgz#3fc46bbbbd82a057f8233a9ba0ac464078e5d874" + integrity sha512-5bbb3DgyNGlfKtEGN+Ztu4WdMy7bHMKUkQ7UzHoRHsjXSB54rzlSuqfxM0royfljSCnDNhDmSUagSuwnkwNkMg== dependencies: - "@luma.gl/constants" "8.5.10" + "@luma.gl/constants" "8.5.16" "@math.gl/core" "^3.5.0" earcut "^2.0.6" -"@luma.gl/gltools@8.5.10": - version "8.5.10" - resolved "https://registry.npmjs.org/@luma.gl/gltools/-/gltools-8.5.10.tgz#be47f64f215d97e8d5896ab14060078bd04fd12e" - integrity sha512-XQFocLXvSYfkW2xL1I50nYrPwgyt1jvmzmood3RQBQMiBcgU1JFW2w4tU+V/C5QXcAWWVzm8aIBkuQsCo34zrQ== +"@luma.gl/gltools@8.5.16": + version "8.5.16" + resolved "https://registry.npmjs.org/@luma.gl/gltools/-/gltools-8.5.16.tgz#d2c9feb3645bbf36220719c70ed13623eeca8074" + integrity sha512-CNCLbKtMRep7tTuB5x3RA7tD70U8XXA8xhABDZs7oAQ0Q/K2EjnwskSUlWzgD3ZPluh6JZzvQBEi4DSmeW3NZA== dependencies: "@babel/runtime" "^7.0.0" - "@luma.gl/constants" "8.5.10" - probe.gl "^3.4.0" + "@luma.gl/constants" "8.5.16" + "@probe.gl/env" "^3.5.0" + "@probe.gl/log" "^3.5.0" + "@types/offscreencanvas" "^2019.7.0" -"@luma.gl/shadertools@8.5.10", "@luma.gl/shadertools@^8.5.10": - version "8.5.10" - resolved "https://registry.npmjs.org/@luma.gl/shadertools/-/shadertools-8.5.10.tgz#37a22f99298f917a2bddf4452f04eaec7066bf27" - integrity sha512-Va/e7fHFI7ZWu03obtNlXN7noIUF1u9U3Pm6PVqeVi3Z24yWl/pFbb5/O1gn66LQZF6fpwoLGN7m4NGk2YyHyA== +"@luma.gl/shadertools@8.5.16", "@luma.gl/shadertools@^8.5.16": + version "8.5.16" + resolved "https://registry.npmjs.org/@luma.gl/shadertools/-/shadertools-8.5.16.tgz#90eeed64fc4dfce9e87cd096238988cff06dda30" + integrity sha512-L3M3v6bQhIT8McCeqLvHnLJBmBXYDog1QblF4PVszuIB/WH+cHxZ0I26X2a1eEsVCvdeCrxRBxr42743oyfUNA== dependencies: "@babel/runtime" "^7.0.0" "@math.gl/core" "^3.5.0" -"@luma.gl/webgl@8.5.10": - version "8.5.10" - resolved "https://registry.npmjs.org/@luma.gl/webgl/-/webgl-8.5.10.tgz#8e39137978692c5695a2138a403837ad51a780a2" - integrity sha512-8cCJ6aoKmVKvrYoPC6G1jHqMsfTGyn50YMmRkrk2Q79nBe531LZr+6EYXlqx2+AR9obKwTnhTPlxjKg5gR4rYg== +"@luma.gl/webgl@8.5.16": + version "8.5.16" + resolved "https://registry.npmjs.org/@luma.gl/webgl/-/webgl-8.5.16.tgz#a0d68802b00e881a36181f65f12f703550c35cd9" + integrity sha512-vyzr4Mu3+6rKnyu4c5gmTcuDG6xKF49qy316v8oMp45VT0xCQBP17Poq0b0j0VqbGOOtXGI/pxOtr68Ii9fDuA== dependencies: "@babel/runtime" "^7.0.0" - "@luma.gl/constants" "8.5.10" - "@luma.gl/gltools" "8.5.10" - probe.gl "^3.4.0" + "@luma.gl/constants" "8.5.16" + "@luma.gl/gltools" "8.5.16" + "@probe.gl/env" "^3.5.0" + "@probe.gl/stats" "^3.5.0" -"@mapbox/geojson-rewind@^0.5.0": +"@mapbox/geojson-rewind@^0.5.2": version "0.5.2" resolved "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a" integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA== @@ -2651,20 +2673,15 @@ get-stream "^6.0.1" minimist "^1.2.6" -"@mapbox/geojson-types@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz#9aecf642cb00eab1080a57c4f949a65b4a5846d6" - integrity sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw== - "@mapbox/jsonlint-lines-primitives@^2.0.2": version "2.0.2" resolved "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ== -"@mapbox/mapbox-gl-supported@^1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e" - integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== +"@mapbox/mapbox-gl-supported@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz#c15367178d8bfe4765e6b47b542fe821ce259c7b" + integrity sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ== "@mapbox/martini@^0.2.0": version "0.2.0" @@ -2672,9 +2689,9 @@ integrity sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ== "@mapbox/node-pre-gyp@^1.0.0": - version "1.0.9" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz#09a8781a3a036151cdebbe8719d6f8b25d4058bc" - integrity sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw== + version "1.0.10" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c" + integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA== dependencies: detect-libc "^2.0.0" https-proxy-agent "^5.0.0" @@ -2691,15 +2708,20 @@ resolved "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ== -"@mapbox/tiny-sdf@^1.1.0", "@mapbox/tiny-sdf@^1.1.1": +"@mapbox/tiny-sdf@^1.1.0": version "1.2.5" resolved "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz#424c620a96442b20402552be70a7f62a8407cc59" integrity sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw== -"@mapbox/unitbezier@^0.0.0": - version "0.0.0" - resolved "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" - integrity sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA== +"@mapbox/tiny-sdf@^2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.5.tgz#cdba698d3d65087643130f9af43a2b622ce0b372" + integrity sha512-OhXt2lS//WpLdkqrzo/KwB7SRD8AiNTFFzuo9n14IBupzIMa67yGItcK7I2W9D8Ghpa4T04Sw9FWsKCJG50Bxw== + +"@mapbox/unitbezier@^0.0.1": + version "0.0.1" + resolved "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz#d32deb66c7177e9e9dfc3bbd697083e2e657ff01" + integrity sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw== "@mapbox/vector-tile@^1.3.1": version "1.3.1" @@ -2807,15 +2829,7 @@ prop-types "^15.7.2" react-is "^16.8.0 || ^17.0.0" -"@math.gl/core@3.5.7": - version "3.5.7" - resolved "https://registry.npmjs.org/@math.gl/core/-/core-3.5.7.tgz#41145f214c36f20a6bf32e4c25551e97c6828e99" - integrity sha512-EtMS3Nzv//nc6gAVcmvVsZAkf8+sVNruPcWEaBh95h82T7GroMLLf1WBgOhtOBOvCh6vInxjcYDsJOn7RY5oqg== - dependencies: - "@babel/runtime" "^7.12.0" - gl-matrix "~3.3.0" - -"@math.gl/core@3.6.3", "@math.gl/core@^3.5.0", "@math.gl/core@^3.5.1": +"@math.gl/core@3.6.3", "@math.gl/core@^3.5.0", "@math.gl/core@^3.5.1", "@math.gl/core@^3.6.2": version "3.6.3" resolved "https://registry.npmjs.org/@math.gl/core/-/core-3.6.3.tgz#a6bf796ed421093099749d609de8d99a3ac20a53" integrity sha512-jBABmDkj5uuuE0dTDmwwss7Cup5ZwQ6Qb7h1pgvtkEutTrhkcv8SuItQNXmF45494yIHeoGue08NlyeY6wxq2A== @@ -2824,7 +2838,7 @@ "@math.gl/types" "3.6.3" gl-matrix "^3.4.0" -"@math.gl/culling@^3.5.1", "@math.gl/culling@^3.5.6": +"@math.gl/culling@^3.5.1", "@math.gl/culling@^3.6.2": version "3.6.3" resolved "https://registry.npmjs.org/@math.gl/culling/-/culling-3.6.3.tgz#91cdfa496748e8873a2e6261415a27a27b6af5f2" integrity sha512-3UERXHbaPlM6pnTk2MI7LeQ5CoelDZzDzghTTcv+HdQCZsT/EOEuEdYimETHtSxiyiOmsX2Un65UBLYT/rbKZg== @@ -2842,19 +2856,26 @@ "@math.gl/core" "3.6.3" gl-matrix "^3.4.0" -"@math.gl/polygon@^3.5.1", "@math.gl/polygon@^3.5.6": +"@math.gl/polygon@^3.5.1", "@math.gl/polygon@^3.6.2": version "3.6.3" resolved "https://registry.npmjs.org/@math.gl/polygon/-/polygon-3.6.3.tgz#0c19c0b059cedde1cd760cc3796e9180f75bcbde" integrity sha512-FivQ1ZnYcAss1wVifOkHP/ZnlfQy1IL/769uzNtiHxwUbW0kZG3yyOZ9I7fwyzR5Hvqt3ErJKHjSYZr0uVlz5g== dependencies: "@math.gl/core" "3.6.3" +"@math.gl/sun@^3.6.2": + version "3.6.3" + resolved "https://registry.npmjs.org/@math.gl/sun/-/sun-3.6.3.tgz#30c15612313b56349c568f21f39c0e0f0e77b2df" + integrity sha512-mrx6CGYYeTNSQttvcw0KVUy+35YDmnjMqpO/o0t06Vcghrt0HNruB/ScRgUSbJrgkbOg1Vcqm23HBd++clzQzw== + dependencies: + "@babel/runtime" "^7.12.0" + "@math.gl/types@3.6.3": version "3.6.3" resolved "https://registry.npmjs.org/@math.gl/types/-/types-3.6.3.tgz#9fa9866feabcbb76de107d78ff3a89c0243ac374" integrity sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA== -"@math.gl/web-mercator@^3.5.1", "@math.gl/web-mercator@^3.5.4", "@math.gl/web-mercator@^3.5.5", "@math.gl/web-mercator@^3.5.6": +"@math.gl/web-mercator@^3.5.1", "@math.gl/web-mercator@^3.6.2": version "3.6.3" resolved "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.3.tgz#ef91168e030eecffc788618d686e8a6c1d7a0bf8" integrity sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw== @@ -3077,14 +3098,14 @@ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== -"@probe.gl/env@3.5.2": +"@probe.gl/env@3.5.2", "@probe.gl/env@^3.5.0": version "3.5.2" resolved "https://registry.npmjs.org/@probe.gl/env/-/env-3.5.2.tgz#f5639d5686235afb165f353675efea26766f8555" integrity sha512-JlNvJ2p6+ObWX7es6n3TycGPTv5CfVrCS8vblI1eHhrFCcZ6RxIo727ffRVwldpp0YTzdgjx3/4fB/1dnVYElw== dependencies: "@babel/runtime" "^7.0.0" -"@probe.gl/log@3.5.2": +"@probe.gl/log@3.5.2", "@probe.gl/log@^3.5.0": version "3.5.2" resolved "https://registry.npmjs.org/@probe.gl/log/-/log-3.5.2.tgz#e33103f6151c30431c4bfe63f1341bc0d9febe94" integrity sha512-5yo8Dg8LrSltuPBdGlLh/WOvt4LdU7DDHu75GMeiS0fKM+J4IACRpGV8SOrktCj1MWZ6JVHcNQkJnoyZ6G7p/w== @@ -3132,6 +3153,11 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== + "@tensorflow/tfjs-backend-cpu@2.8.6": version "2.8.6" resolved "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-2.8.6.tgz#ef60c3294a04c8c600abb4b438263c06d9b7b7bd" @@ -3250,9 +3276,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.18.0" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz#8134fd78cb39567465be65b9fdc16d378095f41f" - integrity sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw== + version "7.18.1" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz#ce5e2c8c272b99b7a9fd69fa39f0b4cd85028bd9" + integrity sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA== dependencies: "@babel/types" "^7.3.0" @@ -3286,7 +3312,7 @@ resolved "https://registry.npmjs.org/@types/flatbuffers/-/flatbuffers-1.10.0.tgz#aa74e30ffdc86445f2f060e1808fc9d56b5603ba" integrity sha512-7btbphLrKvo5yl/5CC2OCxUSMx1wV1wvGT1qDXkSt7yi00/YW7E8k6qzXqJHsp+WU0eoG7r6MTQQXI9lIvd0qA== -"@types/geojson@*", "@types/geojson@^7946.0.7": +"@types/geojson@*", "@types/geojson@^7946.0.10", "@types/geojson@^7946.0.7", "@types/geojson@^7946.0.8": version "7946.0.10" resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249" integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA== @@ -3306,6 +3332,11 @@ dependencies: "@types/node" "*" +"@types/hammerjs@^2.0.41": + version "2.0.41" + resolved "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz#f6ecf57d1b12d2befcce00e928a6a097c22980aa" + integrity sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA== + "@types/invariant@^2.2.33": version "2.2.35" resolved "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz#cd3ebf581a6557452735688d8daba6cf0bd5a3be" @@ -3357,17 +3388,31 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/mapbox-gl@^2.0.3": +"@types/mapbox-gl@^2.6.0", "@types/mapbox-gl@^2.6.3": version "2.7.5" resolved "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.7.5.tgz#9e31fc592adb2762e4e5c7727dca5ec367dfc780" integrity sha512-T8gACm3oGKMlBo2l/9vnKEAxgCc0g2mr8g6dI1d3ZO6EzRe7JALBONlWRmc7SOHV79kiarkcdLdDVEnfd+jilA== dependencies: "@types/geojson" "*" +"@types/mapbox__point-geometry@*", "@types/mapbox__point-geometry@^0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.2.tgz#488a9b76e8457d6792ea2504cdd4ecdd9860a27e" + integrity sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA== + +"@types/mapbox__vector-tile@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.0.tgz#8fa1379dbaead1e1b639b8d96cfd174404c379d6" + integrity sha512-kDwVreQO5V4c8yAxzZVQLE5tyWF+IPToAanloQaSnwfXmIcJ7cyOrv8z4Ft4y7PsLYmhWXmON8MBV8RX0Rgr8g== + dependencies: + "@types/geojson" "*" + "@types/mapbox__point-geometry" "*" + "@types/pbf" "*" + "@types/minimatch@*": - version "5.1.0" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.0.tgz#c3018161691376002f8a22ebb87f341e0dba3219" - integrity sha512-0RJHq5FqDWo17kdHe+SMDJLfxmLaqHbWnqZ6gNKzDvStUlrmx/eKIY17+ifLS1yybo7X86aUshQMlittDOVNnw== + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/minimist@^1.2.0": version "1.2.2" @@ -3383,9 +3428,9 @@ form-data "^3.0.0" "@types/node@*", "@types/node@>= 8", "@types/node@>=10.0.0": - version "18.7.13" - resolved "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz#23e6c5168333480d454243378b69e861ab5c011a" - integrity sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw== + version "18.7.18" + resolved "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154" + integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg== "@types/node@17.0.33": version "17.0.33" @@ -3402,7 +3447,7 @@ resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== -"@types/node@^17.0.24": +"@types/node@^17.0.36": version "17.0.45" resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== @@ -3412,6 +3457,11 @@ resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== +"@types/offscreencanvas@^2019.7.0": + version "2019.7.0" + resolved "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz#e4a932069db47bb3eabeb0b305502d01586fa90d" + integrity sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg== + "@types/offscreencanvas@~2019.3.0": version "2019.3.0" resolved "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz#3336428ec7e9180cf4566dfea5da04eb586a6553" @@ -3439,6 +3489,11 @@ resolved "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== +"@types/pbf@*", "@types/pbf@^3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61" + integrity sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ== + "@types/prettier@^2.0.0": version "2.7.0" resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" @@ -3462,18 +3517,18 @@ "@types/react" "*" "@types/react@*", "@types/react@>=16.14.8", "@types/react@>=16.9.11": - version "18.0.17" - resolved "https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz#4583d9c322d67efe4b39a935d223edcc7050ccf4" - integrity sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ== + version "18.0.20" + resolved "https://registry.npmjs.org/@types/react/-/react-18.0.20.tgz#e4c36be3a55eb5b456ecf501bd4a00fd4fd0c9ab" + integrity sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/react@^17": - version "17.0.48" - resolved "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz#a4532a8b91d7b27b8768b6fc0c3bccb760d15a6c" - integrity sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A== + version "17.0.50" + resolved "https://registry.npmjs.org/@types/react/-/react-17.0.50.tgz#39abb4f7098f546cfcd6b51207c90c4295ee81fc" + integrity sha512-ZCBHzpDb5skMnc1zFXAXnL3l1FAdi+xZvwxK+PkglMmBrwjpp9nKaWuEvrGnSifCJmBFGxZOOFuwC6KH/s0NuA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -3645,7 +3700,14 @@ abbrev@1: resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abstract-logging@^2.0.0: +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abstract-logging@^2.0.0, abstract-logging@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== @@ -3722,6 +3784,13 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + ajv@^6.10.0, ajv@^6.11.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -3732,7 +3801,7 @@ ajv@^6.10.0, ajv@^6.11.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.1.0: +ajv@^8.0.0, ajv@^8.1.0, ajv@^8.10.0: version "8.11.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -3859,22 +3928,22 @@ anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apache-arrow@^4.0.0, apache-arrow@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/apache-arrow/-/apache-arrow-8.0.0.tgz#3b3123a067d84a71693a70c16c762b8d9ee0d4e0" - integrity sha512-74wgHL9P+vgylNOhnLGw1meOQ1cbYyi+TXo1eDnQJ9g2Ly+k8novUWQIG5SIp6acnErhGRTsMJajwUh9x/ZbaQ== +apache-arrow@^4.0.0, apache-arrow@^8.0.0, apache-arrow@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/apache-arrow/-/apache-arrow-9.0.0.tgz#c2308e5b9723aef75f7a56d9339c2523736a31f6" + integrity sha512-Myt0vtm7eRtg4dYQp1hb2A77jbPhCYZcPeNp1F0u7te3rWQtcDI3EOSLxToFywdLQ1hfPzhzdLfDL0tPQObJjw== dependencies: "@types/command-line-args" "5.2.0" "@types/command-line-usage" "5.0.2" "@types/flatbuffers" "*" - "@types/node" "^17.0.24" + "@types/node" "^17.0.36" "@types/pad-left" "2.1.1" command-line-args "5.2.1" command-line-usage "6.1.3" flatbuffers "2.0.4" json-bignum "^0.0.3" pad-left "^2.1.0" - tslib "^2.3.1" + tslib "^2.4.0" append-transform@^2.0.0: version "2.0.0" @@ -4148,6 +4217,15 @@ avvio@^7.1.2: fastq "^1.6.1" queue-microtask "^1.1.2" +avvio@^8.1.3: + version "8.2.0" + resolved "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz#aff28b0266617bf07ffc1c2d5f4220c3663ce1c2" + integrity sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg== + dependencies: + archy "^1.0.0" + debug "^4.0.0" + fastq "^1.6.1" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -4536,15 +4614,15 @@ browserslist@4.16.6: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.20.2, browserslist@^4.21.3: - version "4.21.3" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== +browserslist@^4.21.3: + version "4.21.4" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" node-releases "^2.0.6" - update-browserslist-db "^1.0.5" + update-browserslist-db "^1.0.9" bs-logger@0.x: version "0.2.6" @@ -4565,7 +4643,7 @@ btoa-lite@^1.0.0: resolved "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA== -btoa@1.2.1, btoa@^1.1.2: +btoa@^1.1.2: version "1.2.1" resolved "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== @@ -4620,6 +4698,13 @@ buffers@~0.1.1: resolved "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== +bufferutil@4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" + integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== + dependencies: + node-gyp-build "^4.3.0" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4788,10 +4873,10 @@ camelcase@^6.0.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228, caniuse-lite@^1.0.30001370: - version "1.0.30001383" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001383.tgz#aecf317ccd940690725ae3ae4f28293c5fb8050e" - integrity sha512-swMpEoTp5vDoGBZsYZX7L7nXHe6dsHxi9o6/LKf/f0LukVtnrxly5GVb/fWdCDTqi/yw6Km6tiJ0pmBacm0gbg== +caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228, caniuse-lite@^1.0.30001400: + version "1.0.30001402" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001402.tgz#aa29e1f47f5055b0d0c07696a67b8b08023d14c8" + integrity sha512-Mx4MlhXO5NwuvXGgVb+hg65HZ+bhUYsz8QtDGDo2QmaJS2GBX47Xfi2koL86lc8K+l+htXeTEB/Aeqvezoo6Ew== canvas@2.8.0: version "2.8.0" @@ -4803,9 +4888,9 @@ canvas@2.8.0: simple-get "^3.0.3" canvas@^2.6.0: - version "2.9.3" - resolved "https://registry.npmjs.org/canvas/-/canvas-2.9.3.tgz#8723c4f970442d4cdcedba5221579f9660a58bdb" - integrity sha512-WOUM7ghii5TV2rbhaZkh1youv/vW1/Canev6Yx6BG2W+1S07w8jKZqKkPnbiPpQEDsnJdN8ouDd7OvQEGXDcUw== + version "2.10.1" + resolved "https://registry.npmjs.org/canvas/-/canvas-2.10.1.tgz#fbfd4b1b3b106c3454481d79d363ebadf8811c08" + integrity sha512-29pIjn9uwTUsIgJUNd7GXxKk8sg4iyJwLm1wIilNIqX1mVzXSc2nUij9exW1LqNpis1d2ebMYfMqTWcokZ4pdA== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" nan "^2.15.0" @@ -5026,9 +5111,9 @@ classnames@2.2.6: integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== classnames@^2.2.6, classnames@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== + version "2.3.2" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== clean-stack@^2.0.0: version "2.2.0" @@ -5541,17 +5626,16 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.16.0, core-js-compat@^3.16.2: - version "3.25.0" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.0.tgz#489affbfbf9cb3fa56192fe2dd9ebaee985a66c5" - integrity sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow== + version "3.25.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz#6f13a90de52f89bbe6267e5620a412c7f7ff7e42" + integrity sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw== dependencies: browserslist "^4.21.3" - semver "7.0.0" core-js@3, core-js@^3.8.3: - version "3.25.0" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz#be71d9e0dd648ffd70c44a7ec2319d039357eceb" - integrity sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA== + version "3.25.1" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.25.1.tgz#5818e09de0db8956e16bf10e2a7141e931b7c69c" + integrity sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ== core-util-is@1.0.2: version "1.0.2" @@ -5750,14 +5834,14 @@ cssstyle@^2.3.0: cssom "~0.3.6" csstype@^2.5.2, csstype@^2.5.7: - version "2.6.20" - resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda" - integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA== + version "2.6.21" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" + integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== csstype@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" - integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== + version "3.1.1" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== currently-unhandled@^0.4.1: version "0.4.1" @@ -5789,7 +5873,7 @@ cz-conventional-changelog@2.1.0: right-pad "^1.0.1" word-wrap "^1.0.3" -"d3-array@1.2.0 - 2", d3-array@2, d3-array@^2.3.0, d3-array@^2.5.0: +"d3-array@1.2.0 - 2", d3-array@2, d3-array@^2.3.0, d3-array@^2.5.0, d3-array@^2.8.0: version "2.12.1" resolved "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== @@ -5834,7 +5918,7 @@ d3-color@1: resolved "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== -"d3-color@1 - 2", d3-color@2: +"d3-color@1 - 2", d3-color@2, d3-color@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e" integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== @@ -5915,7 +5999,7 @@ d3-format@1: resolved "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4" integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ== -"d3-format@1 - 2", d3-format@2: +"d3-format@1 - 2", d3-format@2, d3-format@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767" integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== @@ -6452,9 +6536,9 @@ dotenv@8.2.0: integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== dotenv@^16.0.0: - version "16.0.1" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" - integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== + version "16.0.2" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.2.tgz#0b0f8652c016a3858ef795024508cddc4bffc5bf" + integrity sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA== draco3d@1.4.1: version "1.4.1" @@ -6483,7 +6567,7 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -earcut@^2.0.6, earcut@^2.2.2: +earcut@^2.0.6, earcut@^2.2.4: version "2.2.4" resolved "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== @@ -6517,10 +6601,10 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.3.723, electron-to-chromium@^1.4.202: - version "1.4.232" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.232.tgz#67a0a874b0057662244230d18d3a9847c135a9d9" - integrity sha512-nd+FW8xHjM+PxNWG44nKnwHaBDdVpJUZuI2sS2JJPt/QpdombnmoCRWEEQNnzaktdIQhsNWdD+dlqxwO8Bn99g== +electron-to-chromium@^1.3.723, electron-to-chromium@^1.4.251: + version "1.4.253" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.253.tgz#3402fd2159530fc6d94237f1b9535fa7bebaf399" + integrity sha512-1pezJ2E1UyBTGbA7fUlHdPSXQw1k+82VhTFLG5G0AUqLGvsZqFzleOblceqegZzxYX4kC7hGEEdzIQI9RZ1Cuw== elliptic@^6.5.3: version "6.5.4" @@ -6651,10 +6735,10 @@ enquirer@^2.3.6: dependencies: ansi-colors "^4.1.1" -entities@^4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz#c34062a94c865c322f9d67b4384e4169bcede6a4" - integrity sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg== +entities@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== env-paths@^2.2.0: version "2.2.1" @@ -6684,15 +6768,15 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" - integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + version "1.20.2" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz#8495a07bc56d342a3b8ea3ab01bd986700c2ccb3" + integrity sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" + get-intrinsic "^1.1.2" get-symbol-description "^1.0.0" has "^1.0.3" has-property-descriptors "^1.0.0" @@ -6704,9 +6788,9 @@ es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20 is-shared-array-buffer "^1.0.2" is-string "^1.0.7" is-weakref "^1.0.2" - object-inspect "^1.12.0" + object-inspect "^1.12.2" object-keys "^1.1.1" - object.assign "^4.1.2" + object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" string.prototype.trimend "^1.0.5" string.prototype.trimstart "^1.0.5" @@ -6870,10 +6954,10 @@ eslint@8.18.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^9.3.2: - version "9.3.3" - resolved "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d" - integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng== +espree@^9.3.2, espree@^9.4.0: + version "9.4.0" + resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" @@ -6903,11 +6987,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -esri-loader@^3.2.0: - version "3.6.0" - resolved "https://registry.npmjs.org/esri-loader/-/esri-loader-3.6.0.tgz#5373a977fb43f5ab7a3171a3c7353fe932f33b41" - integrity sha512-hvFnBLcHDVcymOXTg2IxptPAxDKq1lOQjO1bFlaJTZxmruvGR+41HjW12BgemPhiEBrH782q2nFuUytwWPVAMg== - estraverse@^4.1.1: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -6943,6 +7022,11 @@ eve@~0.5.1: resolved "https://registry.npmjs.org/eve/-/eve-0.5.4.tgz#67d080b9725291d7e389e34c26860dd97f1debaa" integrity sha512-aqprQ9MAOh1t66PrHxDFmMXPlgNO6Uv1uqvxmwjprQV50jaQ2RqO7O1neY4PJwC+hMnkyMDphu2AQPOPZdjQog== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^3.1.0: version "3.1.2" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" @@ -7126,9 +7210,9 @@ fast-glob@^2.2.6: micromatch "^3.1.10" fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -7156,12 +7240,31 @@ fast-json-stringify@^2.5.2: rfdc "^1.2.0" string-similarity "^4.0.1" +fast-json-stringify@^5.0.0: + version "5.3.0" + resolved "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.3.0.tgz#e3f6a86b68fbf9b8ff0e7c892141a719d128b6bb" + integrity sha512-jTlJV/VAaYMtYl5G41uEL8UQT7/fT5W6LuxKxIS/Lpm6bXxmR+reF3m3WgP/WwxXybH61O+xhWK7n9uAsY6zGA== + dependencies: + "@fastify/deepmerge" "^1.0.0" + ajv "^8.10.0" + ajv-formats "^2.1.1" + fast-deep-equal "^3.1.3" + fast-uri "^2.1.0" + rfdc "^1.2.0" + fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-redact@^3.0.0: +fast-querystring@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz#d6151cd025d4b100e09e24045f6c35ae9ff191ef" + integrity sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA== + dependencies: + fast-decode-uri-component "^1.0.1" + +fast-redact@^3.0.0, fast-redact@^3.1.1: version "3.1.2" resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz#d58e69e9084ce9fa4c1a6fa98a3e1ecf5d7839aa" integrity sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw== @@ -7171,6 +7274,11 @@ fast-safe-stringify@^2.0.8: resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== +fast-uri@^2.0.0, fast-uri@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz#9279432d6b53675c90116b947ed2bbba582d6fb5" + integrity sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA== + fastify-arrow@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fastify-arrow/-/fastify-arrow-1.0.0.tgz#49435f441bae61ace524dc0395b620f1cdffe167" @@ -7293,9 +7401,9 @@ fastify@3.20.2: tiny-lru "^7.0.0" fastify@^3.0.0: - version "3.29.1" - resolved "https://registry.npmjs.org/fastify/-/fastify-3.29.1.tgz#0d44d0f1d2d17d22b7bc068a45706290a36eebb8" - integrity sha512-UhGmh0/J0YQetqULYfv/utvut0R6ICQvO6Oh81JvG75UbjVgueqoE6EPChB3gR5aF3dVKpT/qFTgc7zvpGTYNg== + version "3.29.2" + resolved "https://registry.npmjs.org/fastify/-/fastify-3.29.2.tgz#57161e5c46e1c405fcdd545bfe88c8585bca3e36" + integrity sha512-XFuIF4T9IdkCVtV0amWQZg50w8iPn8MoAV4yK1DP88dU7YEwxDOOpVgKLWZS4YJA8RU001KUfg2b/2L6kEwJWA== dependencies: "@fastify/ajv-compiler" "^1.0.0" "@fastify/error" "^2.0.0" @@ -7313,6 +7421,26 @@ fastify@^3.0.0: semver "^7.3.2" tiny-lru "^8.0.1" +fastify@^4.0.0: + version "4.6.0" + resolved "https://registry.npmjs.org/fastify/-/fastify-4.6.0.tgz#47524173eb4013a1f98fb718ba1263f67a02a39a" + integrity sha512-EgWUvcJNvsql1R4g5/ce866BYk8SgJKjGh6AI0e9BR+NidP7hqX1ObiwHEVbkR15A9XwMtkKd3TE/tFZCjsqnA== + dependencies: + "@fastify/ajv-compiler" "^3.1.1" + "@fastify/error" "^3.0.0" + "@fastify/fast-json-stringify-compiler" "^4.0.0" + abstract-logging "^2.0.1" + avvio "^8.1.3" + find-my-way "^7.0.0" + light-my-request "^5.5.1" + pino "^8.0.0" + process-warning "^2.0.0" + proxy-addr "^2.0.7" + rfdc "^1.3.0" + secure-json-parse "^2.4.0" + semver "^7.3.7" + tiny-lru "^8.0.2" + fastq@^1.6.0, fastq@^1.6.1: version "1.13.0" resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -7431,6 +7559,15 @@ find-my-way@^4.1.0, find-my-way@^4.5.0: safe-regex2 "^2.0.0" semver-store "^0.3.0" +find-my-way@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/find-my-way/-/find-my-way-7.2.0.tgz#35090bb1f738e58e005b6831873c01648cb21851" + integrity sha512-27SFA5sSYDYFZCQ/7SSJB0yhStTP/qxKP1OEC8feZvkHFRuD3fGcQ97Y+0w8HpKTDfMYWXGU3h2ETRGt5zPWyA== + dependencies: + fast-deep-equal "^3.1.3" + fast-querystring "^1.0.0" + safe-regex2 "^2.0.0" + find-parent-dir@^0.3.0: version "0.3.1" resolved "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz#c5c385b96858c3351f95d446cab866cbf9f11125" @@ -7523,9 +7660,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.14.4: - version "1.15.1" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== for-each@^0.3.3: version "0.3.3" @@ -7777,10 +7914,10 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" - integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: function-bind "^1.1.1" has "^1.0.3" @@ -7946,10 +8083,10 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -gl-matrix@3.3.0, gl-matrix@^3.0.0, gl-matrix@^3.2.1, gl-matrix@^3.4.0, gl-matrix@~3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz#232eef60b1c8b30a28cbbe75b2caf6c48fd6358b" - integrity sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA== +gl-matrix@3.4.3, gl-matrix@^3.0.0, gl-matrix@^3.4.0, gl-matrix@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" + integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== glob-parent@^3.1.0: version "3.1.0" @@ -8019,6 +8156,15 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, gl once "^1.3.0" path-is-absolute "^1.0.0" +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -8062,17 +8208,12 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -grid-index@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" - integrity sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA== - growly@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== -h3-js@^3.6.0: +h3-js@^3.7.0: version "3.7.2" resolved "https://registry.npmjs.org/h3-js/-/h3-js-3.7.2.tgz#61d4feb7bb42868ca9cdb2d5cf9d9dda94f9e5a3" integrity sha512-LPjlHSwB9zQZrMqKloCZmmmt3yZzIK7nqPcXqwU93zT3TtYG6jP4tZBzAPouxut7lLjdFbMQ75wRBiKfpsnY7w== @@ -8538,7 +8679,7 @@ inherits@2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -8762,9 +8903,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + version "1.2.6" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.6.tgz#fd6170b0b8c7e2cc73de342ef8284a2202023c44" + integrity sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q== is-ci@^2.0.0: version "2.0.0" @@ -9734,9 +9875,9 @@ json5@^1.0.1: minimist "^1.2.0" jsonc-parser@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz#73b8f0e5c940b83d03476bc2e51a20ef0932615d" - integrity sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg== + version "3.2.0" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== jsonfile@^4.0.0: version "4.0.0" @@ -9973,6 +10114,15 @@ light-my-request@^4.2.0: process-warning "^1.0.0" set-cookie-parser "^2.4.1" +light-my-request@^5.5.1: + version "5.6.1" + resolved "https://registry.npmjs.org/light-my-request/-/light-my-request-5.6.1.tgz#cff5c75d8cb35a354433d75406fea74a2f8bcdb1" + integrity sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g== + dependencies: + cookie "^0.5.0" + process-warning "^2.0.0" + set-cookie-parser "^2.4.1" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -10337,34 +10487,35 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -mapbox-gl@^1.0.0: - version "1.13.2" - resolved "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.13.2.tgz#76639c44f141f8dff71b7d8f1504f2aed11f7517" - integrity sha512-CPjtWygL+f7naL+sGHoC2JQR0DG7u+9ik6WdkjjVmz2uy0kBC2l+aKfdi3ZzUR7VKSQJ6Mc/CeCN+6iVNah+ww== +maplibre-gl@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-2.4.0.tgz#2b53dbf526626bf4ee92ad4f33f13ef09e5af182" + integrity sha512-csNFylzntPmHWidczfgCZpvbTSmhaWvLRj9e1ezUDBEPizGgshgm3ea1T5TCNEEBq0roauu7BPuRZjA3wO4KqA== dependencies: - "@mapbox/geojson-rewind" "^0.5.0" - "@mapbox/geojson-types" "^1.0.2" + "@mapbox/geojson-rewind" "^0.5.2" "@mapbox/jsonlint-lines-primitives" "^2.0.2" - "@mapbox/mapbox-gl-supported" "^1.5.0" + "@mapbox/mapbox-gl-supported" "^2.0.1" "@mapbox/point-geometry" "^0.1.0" - "@mapbox/tiny-sdf" "^1.1.1" - "@mapbox/unitbezier" "^0.0.0" + "@mapbox/tiny-sdf" "^2.0.5" + "@mapbox/unitbezier" "^0.0.1" "@mapbox/vector-tile" "^1.3.1" "@mapbox/whoots-js" "^3.1.0" + "@types/geojson" "^7946.0.10" + "@types/mapbox__point-geometry" "^0.1.2" + "@types/mapbox__vector-tile" "^1.3.0" + "@types/pbf" "^3.0.2" csscolorparser "~1.0.3" - earcut "^2.2.2" + earcut "^2.2.4" geojson-vt "^3.2.1" - gl-matrix "^3.2.1" - grid-index "^1.1.0" - minimist "^1.2.5" + gl-matrix "^3.4.3" + global-prefix "^3.0.0" murmurhash-js "^1.0.0" pbf "^3.2.1" - potpack "^1.0.1" + potpack "^1.0.2" quickselect "^2.0.0" - rw "^1.3.3" - supercluster "^7.1.0" + supercluster "^7.1.5" tinyqueue "^2.0.3" - vt-pbf "^3.1.1" + vt-pbf "^3.1.3" marked@^3.0.8: version "3.0.8" @@ -10376,12 +10527,12 @@ material-ui-confirm@2.1.3: resolved "https://registry.npmjs.org/material-ui-confirm/-/material-ui-confirm-2.1.3.tgz#5f75c56d137603f7fcef22125fa82a8892e4dc5f" integrity sha512-3tu1wk5mo7l03QVzo5qiUv8tL28uoVhwUdu/wpIfMsYVAQmak3eFHMWXq/26ZAyqQKJWIqcF3c43hP5+Q7Wi7w== -math.gl@3.5.7, math.gl@^3.5.4, math.gl@^3.5.6: - version "3.5.7" - resolved "https://registry.npmjs.org/math.gl/-/math.gl-3.5.7.tgz#533c7dd30baf419015493a5d70f23b2df838f86f" - integrity sha512-WS633GusobHd5L7+4aiMVRZL3MYQk59futWsKvEvSEtrd5UnBa+y6xMpgn0VGlYmr7VXYqmvcRh/PnfMPN2tpw== +math.gl@3.6.3, math.gl@^3.6.2: + version "3.6.3" + resolved "https://registry.npmjs.org/math.gl/-/math.gl-3.6.3.tgz#f87e0d24cb33c1a215185ae3a4e16839f1ce6db2" + integrity sha512-Yq9CyECvSDox9+5ETi2+x1bGTY5WvGUGL3rJfC4KPoCZAM51MGfrCm6rIn4yOJUVfMPs2a5RwMD+yGS/n1g3gg== dependencies: - "@math.gl/core" "3.5.7" + "@math.gl/core" "3.6.3" md5.js@^1.3.4: version "1.3.5" @@ -10632,12 +10783,12 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mjolnir.js@2.6.0, mjolnir.js@^2.5.0: - version "2.6.0" - resolved "https://registry.npmjs.org/mjolnir.js/-/mjolnir.js-2.6.0.tgz#0a199f71434b5f183248e1a9bb06a3b4e5533ecb" - integrity sha512-rGA7+BJKvXI0ypxQD/+rQE/sW26kmc8UIZWhmQrjhwCf/zvhbcBlsu2vPB6w0Kv/rVnVFEONTSQqC0vFEpQvIA== +mjolnir.js@2.7.1, mjolnir.js@^2.7.0: + version "2.7.1" + resolved "https://registry.npmjs.org/mjolnir.js/-/mjolnir.js-2.7.1.tgz#4e12590fe168b377c9c669b9c31aa5a62f8b8460" + integrity sha512-72BeUWgTv2cj5aZQKpwL8caNUFhXZ9bDm1hxpNj70XJQ62IBnTZmtv/WPxJvtaVNhzNo+D2U8O6ryNI0zImYcw== dependencies: - "@babel/runtime" "^7.0.0" + "@types/hammerjs" "^2.0.41" hammerjs "^2.0.8" mkdirp-promise@^5.0.1: @@ -10678,6 +10829,13 @@ moment-timezone@0.5.14: dependencies: moment ">= 2.9.0" +moment-timezone@^0.5.33: + version "0.5.37" + resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz#adf97f719c4e458fdb12e2b4e87b8bec9f4eef1e" + integrity sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg== + dependencies: + moment ">= 2.9.0" + moment@2.19.3: version "2.19.3" resolved "https://registry.npmjs.org/moment/-/moment-2.19.3.tgz#bdb99d270d6d7fda78cc0fbace855e27fe7da69f" @@ -10915,7 +11073,7 @@ node-fetch@^2.5.0, node-fetch@^2.6.7, node-fetch@~2.6.1: dependencies: whatwg-url "^5.0.0" -node-gyp-build@^4.1.0: +node-gyp-build@^4.1.0, node-gyp-build@^4.3.0: version "4.5.0" resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== @@ -11162,9 +11320,9 @@ number-is-nan@^1.0.0: integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== nwsapi@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz#10a9f268fbf4c461249ebcfe38e359aa36e2577c" - integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg== + version "2.2.2" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== nyc@^15.1.0: version "15.1.0" @@ -11218,7 +11376,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.12.0, object-inspect@^1.9.0: +object-inspect@^1.12.2, object-inspect@^1.9.0: version "1.12.2" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== @@ -11243,7 +11401,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.2: +object.assign@^4.1.0, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -11280,6 +11438,11 @@ octokit-pagination-methods@^1.1.0: resolved "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== +on-exit-leak-free@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz#5c703c968f7e7f851885f6459bf8a8a57edc9cc4" + integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -11617,11 +11780,11 @@ parse-url@^6.0.0: protocols "^1.4.0" parse5@*: - version "7.0.0" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" - integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g== + version "7.1.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746" + integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg== dependencies: - entities "^4.3.0" + entities "^4.4.0" parse5@6.0.1: version "6.0.1" @@ -11790,6 +11953,14 @@ pinkie@^2.0.0: resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== +pino-abstract-transport@v1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + pino-colada@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/pino-colada/-/pino-colada-2.2.2.tgz#d52a9a20ea4a2916d54a6ec97100ae7898885e4c" @@ -11806,6 +11977,11 @@ pino-std-serializers@^3.1.0: resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== +pino-std-serializers@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz#4c20928a1bafca122fdc2a7a4a171ca1c5f9c526" + integrity sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ== + pino@^6.13.0: version "6.14.0" resolved "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz#b745ea87a99a6c4c9b374e4f29ca7910d4c69f78" @@ -11819,6 +11995,23 @@ pino@^6.13.0: quick-format-unescaped "^4.0.3" sonic-boom "^1.0.2" +pino@^8.0.0: + version "8.5.0" + resolved "https://registry.npmjs.org/pino/-/pino-8.5.0.tgz#60943fa2ec0ac4f22b1f8fde199cc2488547261e" + integrity sha512-PuD6sOti8Y+p9zRoNB5dibmfjfM/OU2tEtJFICxw5ulXi1d0qnq/Rt3CsR6aBEAOeyCXP+ZUfiNWW+tt55pNzg== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport v1.0.0 + pino-std-serializers "^6.0.0" + process-warning "^2.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^3.1.0" + thread-stream "^2.0.0" + pirates@^4.0.0, pirates@^4.0.1: version "4.0.5" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -11893,7 +12086,7 @@ postcss@8.2.15: nanoid "^3.1.23" source-map "^0.6.1" -potpack@^1.0.1: +potpack@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== @@ -11982,6 +12175,11 @@ process-warning@^1.0.0: resolved "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +process-warning@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz#341dbeaac985b90a04ebcd844d50097c7737b2ee" + integrity sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww== + process@0.11.10, process@^0.11.1, process@^0.11.10: version "0.11.10" resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -12023,7 +12221,7 @@ prop-types-extra@^1.1.0: react-is "^16.3.2" warning "^4.0.0" -prop-types@^15.5.0, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -12367,19 +12565,12 @@ react-loading-overlay@1.0.1: prop-types "^15.6.2" react-transition-group "^2.5.0" -react-map-gl@5.3.16: - version "5.3.16" - resolved "https://registry.npmjs.org/react-map-gl/-/react-map-gl-5.3.16.tgz#8da810188f221e1afb8dc7e0416d023f8634352d" - integrity sha512-JxYkZFQvhEQdLUFFIlViMwtFFdJ1gRU8yj5ZDSiyNtFv6esaIozNL/SPG0bSXauGNsNYmQROcgW1zU9RoaAaQA== +react-map-gl@7.0.19: + version "7.0.19" + resolved "https://registry.npmjs.org/react-map-gl/-/react-map-gl-7.0.19.tgz#bcd5e7963cf0209175a5398a3d99f5c3a40f3f0a" + integrity sha512-s3E8aU6BursSDVwzQZbzdDzDRUX4kdfRqZODYvkdDbInr3RzaNdlbhJ5tojXKWOonsxV6wt+Acv9JCaOMKaf0A== dependencies: - "@babel/runtime" "^7.0.0" - "@types/geojson" "^7946.0.7" - "@types/mapbox-gl" "^2.0.3" - mapbox-gl "^1.0.0" - mjolnir.js "^2.5.0" - prop-types "^15.7.2" - resize-observer-polyfill "^1.5.1" - viewport-mercator-project "^6.2.3 || ^7.0.2" + "@types/mapbox-gl" "^2.6.0" react-overlays@^5.0.1: version "5.2.0" @@ -12570,6 +12761,13 @@ read@1, read@~1.0.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz#280d0a29f559d3fb684a277254e02b6f61ae0631" + integrity sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw== + dependencies: + abort-controller "^3.0.0" + readable-stream@~1.0.26-2: version "1.0.34" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -12634,6 +12832,11 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" +real-require@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -12684,10 +12887,10 @@ redux@^4.1.0: dependencies: "@babel/runtime" "^7.9.2" -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: regenerate "^1.4.2" @@ -12731,26 +12934,26 @@ regexpp@^3.2.0: integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" - integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== + version "5.2.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz#a69c26f324c1e962e9ffd0b88b055caba8089139" + integrity sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ== 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" -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== +regjsgen@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" + integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" @@ -12834,11 +13037,6 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -13020,7 +13218,7 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rw@1, rw@^1.3.3: +rw@1: version "1.3.3" resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== @@ -13085,6 +13283,11 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +safe-stable-stringify@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" + integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg== + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -13160,11 +13363,6 @@ semver@5.5.0: resolved "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@7.x, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.7" resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" @@ -13509,6 +13707,14 @@ socket.io-parser@~4.0.4: component-emitter "~1.3.0" debug "~4.3.1" +socket.io-parser@~4.2.0: + version "4.2.1" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5" + integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + socket.io@4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/socket.io/-/socket.io-4.1.3.tgz#d114328ef27ab31b889611792959c3fa6d502500" @@ -13525,16 +13731,16 @@ socket.io@4.1.3: socket.io-parser "~4.0.4" socket.io@^4.0.1: - version "4.5.1" - resolved "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz#aa7e73f8a6ce20ee3c54b2446d321bbb6b1a9029" - integrity sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ== + version "4.5.2" + resolved "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz#1eb25fd380ab3d63470aa8279f8e48d922d443ac" + integrity sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ== dependencies: accepts "~1.3.4" base64id "~2.0.0" debug "~4.3.2" engine.io "~6.2.0" socket.io-adapter "~2.4.0" - socket.io-parser "~4.0.4" + socket.io-parser "~4.2.0" socks-proxy-agent@^4.0.0: version "4.0.2" @@ -13560,6 +13766,13 @@ sonic-boom@^1.0.2: atomic-sleep "^1.0.0" flatstr "^1.0.12" +sonic-boom@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.0.tgz#ce9f2de7557e68be2e52c8df6d9b052e7d348143" + integrity sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA== + dependencies: + atomic-sleep "^1.0.0" + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -13689,7 +13902,7 @@ split2@^3.0.0: dependencies: readable-stream "^3.0.0" -split2@^4.1.0: +split2@^4.0.0, split2@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== @@ -14084,7 +14297,7 @@ supercluster@6.0.2: dependencies: kdbush "^3.0.0" -supercluster@^7.1.0: +supercluster@^7.1.5: version "7.1.5" resolved "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" integrity sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg== @@ -14118,9 +14331,9 @@ supports-color@^8.0.0: has-flag "^4.0.0" supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" @@ -14335,6 +14548,13 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +thread-stream@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/thread-stream/-/thread-stream-2.2.0.tgz#310c03a253f729094ce5d4638ef5186dfa80a9e8" + integrity sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ== + dependencies: + real-require "^0.2.0" + throat@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" @@ -14380,7 +14600,7 @@ tiny-lru@^7.0.0: resolved "https://registry.npmjs.org/tiny-lru/-/tiny-lru-7.0.6.tgz#b0c3cdede1e5882aa2d1ae21cb2ceccf2a331f24" integrity sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow== -tiny-lru@^8.0.1: +tiny-lru@^8.0.1, tiny-lru@^8.0.2: version "8.0.2" resolved "https://registry.npmjs.org/tiny-lru/-/tiny-lru-8.0.2.tgz#812fccbe6e622ded552e3ff8a4c3b5ff34a85e4c" integrity sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg== @@ -14582,7 +14802,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1: +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -14790,9 +15010,9 @@ unicode-match-property-value-ecmascript@^2.0.0: integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - 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#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== union-value@^1.0.0: version "1.0.1" @@ -14873,10 +15093,10 @@ upath@^1.2.0: resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" - integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== +update-browserslist-db@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" + integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -14931,6 +15151,13 @@ usertiming@0.1.8: resolved "https://registry.npmjs.org/usertiming/-/usertiming-0.1.8.tgz#35378e7f41a248d40e658d05f80423469a7b0650" integrity sha512-0P7EsAN6Fx/VWFuYaleB1EZZ2UNT8n+lQ1Kdhggo1ZX1vau0Sd6ti3HvKAUWT/2HIXYcgKDUd3XtUrdYdR62MQ== +utf-8-validate@5.0.9: + version "5.0.9" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" + integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== + dependencies: + node-gyp-build "^4.3.0" + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -15039,13 +15266,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -"viewport-mercator-project@^6.2.3 || ^7.0.2": - version "7.0.4" - resolved "https://registry.npmjs.org/viewport-mercator-project/-/viewport-mercator-project-7.0.4.tgz#67feec04135484bf424dd4890d630e82116b31e6" - integrity sha512-0jzpL6pIMocCKWg1C3mqi/N4UPgZC3FzwghEm1H+XsUo8hNZAyJc3QR7YqC816ibOR8aWT5pCsV+gCu8/BMJgg== - dependencies: - "@math.gl/web-mercator" "^3.5.5" - vm-browserify@1.1.2, vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -15061,7 +15281,7 @@ vscode-textmate@5.2.0: resolved "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== -vt-pbf@^3.1.1: +vt-pbf@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz#68fd150756465e2edae1cc5c048e063916dcfaac" integrity sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==