From e49f6c85e3a58d968f4c8c24d13d76e95da9dda5 Mon Sep 17 00:00:00 2001 From: Martin Blom Date: Wed, 24 Aug 2022 06:28:53 +0200 Subject: [PATCH 01/47] Only match JDK 6, 7 & 8 and not 16, 17 & 18. --- find_java_libdir.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/find_java_libdir.sh b/find_java_libdir.sh index 8482378..a90b152 100755 --- a/find_java_libdir.sh +++ b/find_java_libdir.sh @@ -23,14 +23,14 @@ main () { fi local jre_dir - if [[ "${java_version}" =~ (6|7|8) && "${os}" != "zos" ]]; then + if [[ "${java_version}" =~ ^(6|7|8)$ && "${os}" != "zos" ]]; then jre_dir="${java_home}/jre/lib" else jre_dir="${java_home}/lib" fi local lib_dir="" - if [[ "${os}" == "linux" && ! "${java_version}" =~ (6|7|8) ]]; then + if [[ "${os}" == "linux" && ! "${java_version}" =~ ^(6|7|8)$ ]]; then # no arch on JDK 9+ lib_dir="${jre_dir}/server" elif [[ "${os}" == "linux" && "${target_arch}" == "arm" ]]; then From b38a6a031bcf547590e6467026120166ba12995a Mon Sep 17 00:00:00 2001 From: Martin Blom Date: Wed, 24 Aug 2022 07:22:09 +0200 Subject: [PATCH 02/47] Fix macOS build with JDK 17 & 18. (This fixes building the package only. #515 prevents it from actually working.) --- find_java_libdir.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/find_java_libdir.sh b/find_java_libdir.sh index a90b152..47c4b20 100755 --- a/find_java_libdir.sh +++ b/find_java_libdir.sh @@ -49,7 +49,7 @@ main () { target_arch=`uname -m` if [[ -d ${jre_dir}/${target_arch}/classic ]]; then lib_dir="${jre_dir}"/${target_arch}/classic; else lib_dir="${jre_dir}"/${target_arch}/server; fi elif [[ "${os}" == "mac" ]]; then - lib_dir="${jre_dir}/jli" + if [[ -d ${jre_dir}/jli ]]; then lib_dir="${jre_dir}/jli"; else lib_dir="${jre_dir}"; fi else local arch if [[ "${target_arch}" =~ (32|386) ]]; then From 1744fdd7ca8a4242522c23037b9746f5c8f7e105 Mon Sep 17 00:00:00 2001 From: Martin Blom Date: Tue, 11 Apr 2023 17:30:29 +0200 Subject: [PATCH 03/47] Removed support for legacy macOS Java runtimes. --- binding.gyp | 47 +++++++++----------------------------------- compile-java-code.sh | 15 +------------- 2 files changed, 10 insertions(+), 52 deletions(-) diff --git a/binding.gyp b/binding.gyp index 143cf0b..0611750 100644 --- a/binding.gyp +++ b/binding.gyp @@ -15,12 +15,9 @@ ['OS=="win"', { 'javahome%': ' Date: Tue, 11 Apr 2023 17:39:27 +0200 Subject: [PATCH 04/47] Explicit 'node-gyp rebuild'. --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 6dbb1c2..c44f203 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "find-java-home": "1.1.0", "glob": "7.1.6", "lodash": "^4.17.21", - "nan": "2.14.1" + "nan": "2.14.1", + "node-gyp": "^9.1.0" }, "devDependencies": { "chalk": "2.4.1", @@ -38,6 +39,7 @@ "when": "3.7.8" }, "scripts": { + "install": "node-gyp rebuild", "test": "node testRunner.js", "postinstall": "node postInstall.js" }, From 2d0fbddc90efca810a1132eb32c7740d03a6ed8b Mon Sep 17 00:00:00 2001 From: Martin Blom Date: Wed, 12 Apr 2023 18:55:28 +0200 Subject: [PATCH 05/47] Replaced scripts to compile the Java classes. --- .gitignore | 1 + compile-java-code.cmd | 16 - compile-java-code.sh | 30 - compile-java.sh | 13 + compile-java8-code.cmd | 8 - compile-java8-code.sh | 14 - pnpm-lock.yaml | 2164 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 2178 insertions(+), 68 deletions(-) delete mode 100644 compile-java-code.cmd delete mode 100755 compile-java-code.sh create mode 100755 compile-java.sh delete mode 100644 compile-java8-code.cmd delete mode 100755 compile-java8-code.sh create mode 100644 pnpm-lock.yaml diff --git a/.gitignore b/.gitignore index 1e0b206..d08236e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ node-java.cbp *.iml *.kdev4 */.kdev_include_paths +.vscode diff --git a/compile-java-code.cmd b/compile-java-code.cmd deleted file mode 100644 index 193b645..0000000 --- a/compile-java-code.cmd +++ /dev/null @@ -1,16 +0,0 @@ -set JAVA_VERSION=1.7 - -set OUTFILE="%TMP%\findJavaHome.txt" -node findJavaHome.js > %OUTFILE% -set /p JAVA_HOME=<%OUTFILE% - -set JAVAC_OPTS=-source %JAVA_VERSION% -target %JAVA_VERSION% -bootclasspath "%JAVA_HOME%\jre\lib\rt.jar" - -cd test -"%JAVA_HOME%\bin\javac" %JAVAC_OPTS% *.java - -cd ..\src-java\node -"%JAVA_HOME%\bin\javac" %JAVAC_OPTS% *.java - -cd ..\..\ -"%JAVA_HOME%\bin\javah" -classpath src-java -d .\src node.NodeDynamicProxyClass \ No newline at end of file diff --git a/compile-java-code.sh b/compile-java-code.sh deleted file mode 100755 index 4fd057f..0000000 --- a/compile-java-code.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -e - -JAVA_VERSION=1.7 - -if [ -n "$1" ]; then - JAVA_HOME=$1 - JAVAC_OPTS="-source ${JAVA_VERSION} -target ${JAVA_VERSION} -bootclasspath ${JAVA_HOME}/jre/lib/rt.jar" - - cd test - ${JAVA_HOME}/bin/javac ${JAVAC_OPTS} *.java - - cd ../src-java/node - ${JAVA_HOME}/bin/javac ${JAVAC_OPTS} *.java - - cd ../../ - ${JAVA_HOME}/bin/javah -classpath src-java -d ./src node.NodeDynamicProxyClass -else - JAVAC_OPTS="-source ${JAVA_VERSION} -target ${JAVA_VERSION} -bootclasspath /opt/jdk/jre/lib/rt.jar" - - cd test - javac ${JAVAC_OPTS} *.java - - cd ../src-java/node - javac ${JAVAC_OPTS} *.java - - cd ../../ - javah -classpath src-java -d ./src node.NodeDynamicProxyClass -fi - - diff --git a/compile-java.sh b/compile-java.sh new file mode 100755 index 0000000..4ff1a51 --- /dev/null +++ b/compile-java.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +if [ -z "${JAVA_HOME}" ]; then + export JAVA_HOME=`/usr/libexec/java_home -v 11` +fi + +echo "Using `javac -version`." +set -x + +javac -source 1.7 -target 1.7 src-java/node/*.java +javac -source 1.7 -target 1.7 test/*.java +javac -source 1.8 -target 1.8 test8/*.java +javah -classpath src-java -d ./src node.NodeDynamicProxyClass diff --git a/compile-java8-code.cmd b/compile-java8-code.cmd deleted file mode 100644 index 1990fae..0000000 --- a/compile-java8-code.cmd +++ /dev/null @@ -1,8 +0,0 @@ -set JAVA_VERSION=1.8 - -set OUTFILE="%TMP%\findJavaHome.txt" -node findJavaHome.js > %OUTFILE% -set /p JAVA_HOME=<%OUTFILE% - -cd test8 -"%JAVA_HOME%\bin\javac" -source %JAVA_VERSION% *.java diff --git a/compile-java8-code.sh b/compile-java8-code.sh deleted file mode 100755 index af3015e..0000000 --- a/compile-java8-code.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -e - -# This script must be run on a Mac due to its reliance on /usr/libexec/java_home -# to find a JDK 1.8 installation. Note that this script will work correctly on -# a mac with JDK 1.8 installed, even if JAVA_HOME currently points to a 1.7 -# or earlier JDK. -# This script is run manually by maintainers of this project, who add the -# the generated .class files to source control. - -JAVA_VERSION=1.8 -JDK8_HOME=$(/usr/libexec/java_home -v ${JAVA_VERSION}) - -cd test8 -${JDK8_HOME}/bin/javac -source ${JAVA_VERSION} *.java diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..4662462 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2164 @@ +lockfileVersion: '6.0' + +dependencies: + async: + specifier: 2.6.1 + version: 2.6.1 + find-java-home: + specifier: 1.1.0 + version: 1.1.0 + glob: + specifier: 7.1.6 + version: 7.1.6 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + nan: + specifier: 2.14.1 + version: 2.14.1 + node-gyp: + specifier: ^9.1.0 + version: 9.1.0 + +devDependencies: + chalk: + specifier: 2.4.1 + version: 2.4.1 + nodeunit: + specifier: 0.11.3 + version: 0.11.3 + when: + specifier: 3.7.8 + version: 3.7.8 + +packages: + + /@babel/code-frame@7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/generator@7.18.13: + resolution: {integrity: sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.13 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + dev: true + + /@babel/helper-environment-visitor@7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.18.9: + resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.10 + '@babel/types': 7.18.13 + dev: true + + /@babel/helper-hoist-variables@7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.13 + dev: true + + /@babel/helper-split-export-declaration@7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.13 + dev: true + + /@babel/helper-string-parser@7.18.10: + resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.18.6: + resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/highlight@7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.18.6 + chalk: 2.4.1 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.18.13: + resolution: {integrity: sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.13 + dev: true + + /@babel/template@7.18.10: + resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.18.13 + '@babel/types': 7.18.13 + dev: true + + /@babel/traverse@7.18.13: + resolution: {integrity: sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.13 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.18.9 + '@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 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.18.13: + resolution: {integrity: sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.18.6 + to-fast-properties: 2.0.0 + dev: true + + /@gar/promisify@1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + dev: false + + /@jridgewell/gen-mapping@0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.15 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/trace-mapping@0.3.15: + resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@npmcli/fs@2.1.2: + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.3.7 + dev: false + + /@npmcli/move-file@2.0.1: + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + dev: false + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: false + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /agentkeepalive@4.2.1: + resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} + engines: {node: '>= 8.0.0'} + dependencies: + debug: 4.3.4 + depd: 1.1.2 + humanize-ms: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /append-transform@1.0.0: + resolution: {integrity: sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==} + engines: {node: '>=4'} + dependencies: + default-require-extensions: 2.0.0 + dev: true + + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false + + /archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + dev: true + + /are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.0 + dev: false + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /async@2.6.1: + resolution: {integrity: sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==} + dependencies: + lodash: 4.17.21 + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4@1.11.0: + resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /bind-obj-methods@2.0.2: + resolution: {integrity: sha512-bUkRdEOppT1Xg/jG0+bp0JSjUD9U0r7skxb/42WeBUjfBpW6COQTIgQmKX5J2Z3aMXcORKgN2N+d7IQwTK3pag==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.0.3 + infer-owner: 1.0.4 + lru-cache: 7.14.0 + minipass: 3.3.4 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.1.11 + unique-filename: 2.0.0 + transitivePeerDependencies: + - bluebird + dev: false + + /caching-transform@3.0.2: + resolution: {integrity: sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==} + engines: {node: '>=6'} + dependencies: + hasha: 3.0.0 + make-dir: 2.1.0 + package-hash: 3.0.0 + write-file-atomic: 2.4.3 + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /capture-stack-trace@1.0.1: + resolution: {integrity: sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==} + engines: {node: '>=0.10.0'} + dev: true + + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /chalk@2.4.1: + resolution: {integrity: sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: false + + /clean-yaml-object@0.1.0: + resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==} + engines: {node: '>=0.10.0'} + dev: true + + /cliui@5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: false + + /convert-source-map@1.8.0: + resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + optional: true + + /coveralls@3.1.1: + resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} + engines: {node: '>=6'} + hasBin: true + dependencies: + js-yaml: 3.14.1 + lcov-parse: 1.0.0 + log-driver: 1.2.7 + minimist: 1.2.6 + request: 2.88.2 + dev: true + + /cp-file@6.2.0: + resolution: {integrity: sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.10 + make-dir: 2.1.0 + nested-error-stacks: 2.1.1 + pify: 4.0.1 + safe-buffer: 5.2.1 + dev: true + + /cross-spawn@4.0.2: + resolution: {integrity: sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==} + dependencies: + lru-cache: 4.1.5 + which: 1.3.1 + dev: true + + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /default-require-extensions@2.0.0: + resolution: {integrity: sha512-B0n2zDIXpzLzKeoEozorDSa1cHc1t0NjmxP0zuAxbizNU2MBqYJJKYXrrFdKuQliojXynrxgd7l4ahfg/+aA5g==} + engines: {node: '>=4'} + dependencies: + strip-bom: 3.0.0 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: false + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + + /diff@1.4.0: + resolution: {integrity: sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w==} + engines: {node: '>=0.3.1'} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /domain-browser@1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + dev: true + + /ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /ejs@2.7.4: + resolution: {integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + + /emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: false + optional: true + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: false + + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: false + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /events-to-array@1.1.2: + resolution: {integrity: sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==} + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: true + + /find-java-home@1.1.0: + resolution: {integrity: sha512-bSTCKNZ193UM/+ZZoNDzICAEHcVywovkhsWCkZALjCvRXQ+zXTe/XATrrP4CpxkaP6YFhQJOpyRpH0P2U/woDA==} + dependencies: + which: 1.0.9 + winreg: 1.2.4 + dev: false + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: true + + /foreground-child@1.5.6: + resolution: {integrity: sha512-3TOY+4TKV0Ml83PXJQY+JFQaHNV38lzQDIzzXYg1kWdBLenGgoZhAs0CKgzI31vi2pWEpQMq/Yi4bpKwCPkw7g==} + dependencies: + cross-spawn: 4.0.2 + signal-exit: 3.0.7 + dev: true + + /forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fs-exists-cached@1.0.0: + resolution: {integrity: sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==} + dev: true + + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /function-loop@1.0.2: + resolution: {integrity: sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==} + dev: true + + /gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: false + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /glob@8.0.3: + resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.0 + once: 1.4.0 + dev: false + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + /har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true + + /har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: false + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /hasha@3.0.0: + resolution: {integrity: sha512-w0Kz8lJFBoyaurBiNrIvxPqr/gJ6fOfSkpAPOepN3oECqGJag37xPbOv57izi/KP8auHgNYxn5fXtAb+1LsJ6w==} + engines: {node: '>=4'} + dependencies: + is-stream: 1.1.0 + dev: true + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-cache-semantics@4.1.0: + resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} + dev: false + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.17.0 + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.2 + dev: false + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + optional: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: false + + /infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: false + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-core-module@2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + dependencies: + has: 1.0.3 + dev: true + + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false + + /is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: false + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + optional: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /istanbul-lib-coverage@2.0.5: + resolution: {integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==} + engines: {node: '>=6'} + dev: true + + /istanbul-lib-hook@2.0.7: + resolution: {integrity: sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==} + engines: {node: '>=6'} + dependencies: + append-transform: 1.0.0 + dev: true + + /istanbul-lib-instrument@3.3.0: + resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} + engines: {node: '>=6'} + dependencies: + '@babel/generator': 7.18.13 + '@babel/parser': 7.18.13 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.13 + '@babel/types': 7.18.13 + istanbul-lib-coverage: 2.0.5 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@2.0.8: + resolution: {integrity: sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==} + engines: {node: '>=6'} + dependencies: + istanbul-lib-coverage: 2.0.5 + make-dir: 2.1.0 + supports-color: 6.1.0 + dev: true + + /istanbul-lib-source-maps@3.0.6: + resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} + engines: {node: '>=6'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 2.0.5 + make-dir: 2.1.0 + rimraf: 2.7.1 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@2.2.7: + resolution: {integrity: sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==} + engines: {node: '>=6'} + dependencies: + html-escaper: 2.0.2 + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /lcov-parse@1.0.0: + resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} + hasBin: true + dev: true + + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.10 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: true + + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + + /lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /log-driver@1.2.7: + resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==} + engines: {node: '>=0.8.6'} + dev: true + + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: false + + /lru-cache@7.14.0: + resolution: {integrity: sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==} + engines: {node: '>=12'} + dev: false + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + agentkeepalive: 4.2.1 + cacache: 16.1.3 + http-cache-semantics: 4.1.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.14.0 + minipass: 3.3.4 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 9.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: false + + /merge-source-map@1.1.0: + resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} + dependencies: + source-map: 0.6.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@5.1.0: + resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimist@1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true + + /minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: false + + /minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minipass: 3.3.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: false + + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: false + + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.4 + dev: false + + /minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.4 + dev: false + + /minipass@2.9.0: + resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} + dependencies: + safe-buffer: 5.2.1 + yallist: 3.1.1 + dev: true + + /minipass@3.3.4: + resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: false + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + yallist: 4.0.0 + dev: false + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.6 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /nan@2.14.1: + resolution: {integrity: sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==} + dev: false + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false + + /nested-error-stacks@2.1.1: + resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} + dev: true + + /node-gyp@9.1.0: + resolution: {integrity: sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==} + engines: {node: ^12.22 || ^14.13 || >=16} + hasBin: true + dependencies: + env-paths: 2.2.1 + glob: 7.1.6 + graceful-fs: 4.2.10 + make-fetch-happen: 10.2.1 + nopt: 5.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.3.7 + tar: 6.1.11 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + dev: false + + /nodeunit@0.11.3: + resolution: {integrity: sha512-gDNxrDWpx07BxYNO/jn1UrGI1vNhDQZrIFphbHMcTCDc5mrrqQBWfQMXPHJ5WSgbFwD1D6bv4HOsqtTrPG03AA==} + deprecated: you are strongly encouraged to use other testing options + hasBin: true + dependencies: + ejs: 2.7.4 + tap: 12.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + dev: false + + /nyc@14.1.1: + resolution: {integrity: sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==} + engines: {node: '>=6'} + hasBin: true + dependencies: + archy: 1.0.0 + caching-transform: 3.0.2 + convert-source-map: 1.8.0 + cp-file: 6.2.0 + find-cache-dir: 2.1.0 + find-up: 3.0.0 + foreground-child: 1.5.6 + glob: 7.1.6 + istanbul-lib-coverage: 2.0.5 + istanbul-lib-hook: 2.0.7 + istanbul-lib-instrument: 3.3.0 + istanbul-lib-report: 2.0.8 + istanbul-lib-source-maps: 3.0.6 + istanbul-reports: 2.2.7 + js-yaml: 3.14.1 + make-dir: 2.1.0 + merge-source-map: 1.1.0 + resolve-from: 4.0.0 + rimraf: 2.7.1 + signal-exit: 3.0.7 + spawn-wrap: 1.4.3 + test-exclude: 5.2.3 + uuid: 3.4.0 + yargs: 13.3.2 + yargs-parser: 13.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: true + + /os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: true + + /own-or-env@1.0.2: + resolution: {integrity: sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==} + dependencies: + own-or: 1.0.0 + dev: true + + /own-or@1.0.0: + resolution: {integrity: sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: false + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /package-hash@3.0.0: + resolution: {integrity: sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.10 + hasha: 3.0.0 + lodash.flattendeep: 4.4.0 + release-zalgo: 1.0.0 + dev: true + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: true + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + optional: true + + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: false + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: false + + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /punycode@2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: true + + /qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /read-pkg-up@4.0.0: + resolution: {integrity: sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + read-pkg: 3.0.0 + dev: true + + /read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: true + + /readable-stream@2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + requiresBuild: true + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + optional: true + + /readable-stream@3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + + /release-zalgo@1.0.0: + resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} + engines: {node: '>=4'} + dependencies: + es6-error: 4.1.1 + dev: true + + /request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve@1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: false + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.1.6 + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.1.6 + dev: false + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + + /semver@7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: false + + /socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + socks: 2.7.0 + transitivePeerDependencies: + - supports-color + dev: false + + /socks@2.7.0: + resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: false + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /spawn-wrap@1.4.3: + resolution: {integrity: sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==} + dependencies: + foreground-child: 1.5.6 + mkdirp: 0.5.6 + os-homedir: 1.0.2 + rimraf: 2.7.1 + signal-exit: 3.0.7 + which: 1.3.1 + dev: true + + /spdx-correct@3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-license-ids@3.0.12: + resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /sshpk@1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minipass: 3.3.4 + dev: false + + /stack-utils@1.0.5: + resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: false + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /tap-mocha-reporter@3.0.9: + resolution: {integrity: sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==} + hasBin: true + dependencies: + color-support: 1.1.3 + debug: 2.6.9 + diff: 1.4.0 + escape-string-regexp: 1.0.5 + glob: 7.1.6 + js-yaml: 3.14.1 + tap-parser: 5.4.0 + unicode-length: 1.0.3 + optionalDependencies: + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /tap-parser@5.4.0: + resolution: {integrity: sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==} + hasBin: true + dependencies: + events-to-array: 1.1.2 + js-yaml: 3.14.1 + optionalDependencies: + readable-stream: 2.3.7 + dev: true + + /tap-parser@7.0.0: + resolution: {integrity: sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==} + hasBin: true + dependencies: + events-to-array: 1.1.2 + js-yaml: 3.14.1 + minipass: 2.9.0 + dev: true + + /tap@12.7.0: + resolution: {integrity: sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==} + engines: {node: '>=4'} + hasBin: true + dependencies: + bind-obj-methods: 2.0.2 + browser-process-hrtime: 1.0.0 + capture-stack-trace: 1.0.1 + clean-yaml-object: 0.1.0 + color-support: 1.1.3 + coveralls: 3.1.1 + domain-browser: 1.2.0 + esm: 3.2.25 + foreground-child: 1.5.6 + fs-exists-cached: 1.0.0 + function-loop: 1.0.2 + glob: 7.1.6 + isexe: 2.0.0 + js-yaml: 3.14.1 + minipass: 2.9.0 + mkdirp: 0.5.6 + nyc: 14.1.1 + opener: 1.5.2 + os-homedir: 1.0.2 + own-or: 1.0.0 + own-or-env: 1.0.2 + rimraf: 2.7.1 + signal-exit: 3.0.7 + source-map-support: 0.5.21 + stack-utils: 1.0.5 + tap-mocha-reporter: 3.0.9 + tap-parser: 7.0.0 + tmatch: 4.0.0 + trivial-deferred: 1.0.1 + ts-node: 8.10.2(typescript@3.9.10) + tsame: 2.0.1 + typescript: 3.9.10 + write-file-atomic: 2.4.3 + yapool: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /tar@6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.3.4 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: false + + /test-exclude@5.2.3: + resolution: {integrity: sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==} + engines: {node: '>=6'} + dependencies: + glob: 7.1.6 + minimatch: 3.1.2 + read-pkg-up: 4.0.0 + require-main-filename: 2.0.0 + dev: true + + /tmatch@4.0.0: + resolution: {integrity: sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.1.1 + dev: true + + /trivial-deferred@1.0.1: + resolution: {integrity: sha512-dagAKX7vaesNNAwOc9Np9C2mJ+7YopF4lk+jE2JML9ta4kZ91Y6UruJNH65bLRYoUROD8EY+Pmi44qQWwXR7sw==} + dev: true + + /ts-node@8.10.2(typescript@3.9.10): + resolution: {integrity: sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==} + engines: {node: '>=6.0.0'} + hasBin: true + peerDependencies: + typescript: '>=2.7' + dependencies: + arg: 4.1.3 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.21 + typescript: 3.9.10 + yn: 3.1.1 + dev: true + + /tsame@2.0.1: + resolution: {integrity: sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==} + dev: true + + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /typescript@3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /unicode-length@1.0.3: + resolution: {integrity: sha512-rZKNhIqioUp7H49afr26tivLDCvUSqOXwmwEEnsCwnPX67S1CYbOL45Y5IP3K/XHN73/lg21HlrB8SNlYXKQTg==} + dependencies: + punycode: 1.4.1 + strip-ansi: 3.0.1 + dev: true + + /unique-filename@2.0.0: + resolution: {integrity: sha512-tpzoz2RpZ//6Zt4GPpOFTyrnfZuSvjIfe8lvx6Thp4yTQwJtAFwPlssEBE62VhGA2We5/COyNpcIu+OABu3/Yg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + unique-slug: 2.0.2 + dev: false + + /unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: false + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /when@3.7.8: + resolution: {integrity: sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==} + dev: true + + /which-module@2.0.0: + resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + dev: true + + /which@1.0.9: + resolution: {integrity: sha512-E87fdQ/eRJr9W1X4wTPejNy9zTW3FI2vpCZSJ/HAY+TkjKVC0TUm1jk6vn2Z7qay0DQy0+RBGdXxj+RmmiGZKQ==} + hasBin: true + dev: false + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: false + + /winreg@1.2.4: + resolution: {integrity: sha512-IHpzORub7kYlb8A43Iig3reOvlcBJGX9gZ0WycHhghHtA65X0LYnMRuJs+aH1abVnMJztQkvQNlltnbPi5aGIA==} + dev: false + + /wrap-ansi@5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.10 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: false + + /yapool@1.0.0: + resolution: {integrity: sha512-RONBZndo8Lo8pKPfORRxr2DIk2NZKIml654o4kaIu7RXVxQCKsAN6AqrcoZsI3h+2H5YO2mD/04Wy4LbAgd+Pg==} + dev: true + + /yargs-parser@13.1.2: + resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs@13.3.2: + resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.3 + yargs-parser: 13.1.2 + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true From b679dd1a11714548883f5305c9cf88cbd9515f80 Mon Sep 17 00:00:00 2001 From: Martin Blom Date: Tue, 11 Apr 2023 17:56:43 +0200 Subject: [PATCH 06/47] Actually test (and handle) argument count mismatch. Always pass strings as const-ref and don't modify caller values, for correct error messages. --- src/utils.cpp | 26 ++++++++++++++++++-------- src/utils.h | 8 ++++---- test/java-ambiguousMethod-test.js | 6 +++--- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/utils.cpp b/src/utils.cpp index 488254e..135d0c8 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -213,7 +213,7 @@ jvalueType javaGetType(JNIEnv *env, jclass type) { } } -jclass javaFindClass(JNIEnv* env, std::string& className) { +jclass javaFindClass(JNIEnv* env, const std::string& className) { std::string searchClassName = className; std::replace(searchClassName.begin(), searchClassName.end(), '.', '/'); @@ -234,7 +234,7 @@ jclass javaFindClass(JNIEnv* env, std::string& className) { return clazz; } -jobject javaFindField(JNIEnv* env, jclass clazz, std::string& fieldName) { +jobject javaFindField(JNIEnv* env, jclass clazz, const std::string& fieldName) { jobject result = NULL; jclass clazzclazz = env->GetObjectClass(clazz); jclass fieldClazz = env->FindClass("java/lang/reflect/Field"); @@ -789,18 +789,18 @@ jobjectArray javaObjectArrayToClasses(JNIEnv *env, jobjectArray objs) { return results; } -jobject javaFindMethod(JNIEnv *env, jclass clazz, std::string& methodName, jobjectArray methodArgs) { +jobject javaFindMethod(JNIEnv *env, jclass clazz, const std::string& methodName, jobjectArray methodArgs) { std::string::size_type parenLoc = methodName.find("("); if(parenLoc != std::string::npos) { jobject method = NULL; std::string methodSig = methodName.substr(parenLoc); - methodName = methodName.substr(0, parenLoc); - jmethodID methodID = env->GetStaticMethodID(clazz, methodName.c_str(), methodSig.c_str()); + std::string methodRealName = methodName.substr(0, parenLoc); + jmethodID methodID = env->GetStaticMethodID(clazz, methodRealName.c_str(), methodSig.c_str()); if(methodID != 0) { method = env->ToReflectedMethod(clazz, methodID, true); } else { - methodID = env->GetMethodID(clazz, methodName.c_str(), methodSig.c_str()); + methodID = env->GetMethodID(clazz, methodRealName.c_str(), methodSig.c_str()); if(methodID != 0) { method = env->ToReflectedMethod(clazz, methodID, true); } @@ -810,6 +810,10 @@ jobject javaFindMethod(JNIEnv *env, jclass clazz, std::string& methodName, jobje // cast arguments if(method != NULL) { javaCastArguments(env, methodArgs, method); + if(env->ExceptionCheck()) { + env->ExceptionClear(); + method = NULL; + } } return method; @@ -856,14 +860,20 @@ int dynamicProxyDataVerify(DynamicProxyData* data) { return 0; } -std::string methodNotFoundToString(JNIEnv *env, jclass clazz, std::string methodName, bool constructor, Nan::NAN_METHOD_ARGS_TYPE args, int argStart, int argEnd) { +std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string& methodNameSig, bool constructor, Nan::NAN_METHOD_ARGS_TYPE args, int argStart, int argEnd) { std::ostringstream startOfMessage; std::ostringstream msg; + std::string methodName = methodNameSig.substr(0, methodNameSig.find('(')); jclass classClazz = env->FindClass("java/lang/Class"); jmethodID class_getName = env->GetMethodID(classClazz, "getName", "()Ljava/lang/String;"); - startOfMessage << "Could not find method \"" << methodName.c_str() << "("; + if (methodName != methodNameSig) { + startOfMessage << "Could not find method for signature \"" << methodNameSig.c_str() << "\" and arguments \"("; + } else { + startOfMessage << "Could not find method \"" << methodName.c_str() << "("; + } + for(int i=argStart; i key, v8::Local Date: Tue, 11 Apr 2023 22:37:45 +0200 Subject: [PATCH 07/47] Fixed methodAmbigious tests for ibm-semeru-open-11.jdk. --- src/utils.cpp | 3 ++- test/java-ambiguousMethod-test.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/utils.cpp b/src/utils.cpp index 135d0c8..780a291 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -797,15 +797,16 @@ jobject javaFindMethod(JNIEnv *env, jclass clazz, const std::string& methodName, std::string methodSig = methodName.substr(parenLoc); std::string methodRealName = methodName.substr(0, parenLoc); jmethodID methodID = env->GetStaticMethodID(clazz, methodRealName.c_str(), methodSig.c_str()); + env->ExceptionClear(); // If GetStaticMethodID can't find the method it throws an exception and we need to just return NULL if(methodID != 0) { method = env->ToReflectedMethod(clazz, methodID, true); } else { methodID = env->GetMethodID(clazz, methodRealName.c_str(), methodSig.c_str()); + env->ExceptionClear(); // If GetMethodID can't find the method it throws an exception and we need to just return NULL if(methodID != 0) { method = env->ToReflectedMethod(clazz, methodID, true); } } - env->ExceptionClear(); // If GetStaticMethodID can't find the method it throws an exception and we need to just return NULL // cast arguments if(method != NULL) { diff --git a/test/java-ambiguousMethod-test.js b/test/java-ambiguousMethod-test.js index 72802b8..7dd0c14 100644 --- a/test/java-ambiguousMethod-test.js +++ b/test/java-ambiguousMethod-test.js @@ -70,7 +70,7 @@ exports['Java - Call Ambiguous Method'] = nodeunit.testCase({ "methodAmbiguous (sync) - int passed to double": function(test) { var myTest = java.newInstanceSync("Test"); - var result = java.callMethodSync(myTest, 'staticMethodAmbiguous(Ljava/lang/Double;)I', 1); + var result = java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Double;)I', 1); test.equal(result, 1); test.done(); }, From d092e64f6a1790bff3bf58974c4b3e4f295f6453 Mon Sep 17 00:00:00 2001 From: Martin Blom Date: Wed, 12 Apr 2023 19:03:52 +0200 Subject: [PATCH 08/47] Use a Java trampoline when calling Java code from JNI. This prevents the "null caller frame" error in recent JDKs. Additionally, if running on JDK 9+, search class hierarchy for a accessible method to invoke. This makes Arrays.asList(...).toArray() work. --- src-java/node/CastingUtils.class | Bin 1381 -> 1377 bytes src-java/node/MethodCallBaton.class | Bin 0 -> 1867 bytes src-java/node/MethodCallBaton.java | 56 ++++++++++++++++++++++ src-java/node/NodeDynamicProxyClass.class | Bin 2249 -> 2231 bytes src-java/node/VarArgs.class | Bin 1364 -> 1365 bytes src/methodCallBaton.cpp | 25 +++++----- test/RunInterface$1.class | Bin 924 -> 921 bytes test/RunInterface.class | Bin 2075 -> 2065 bytes test/Test$Enum.class | Bin 972 -> 966 bytes test/Test$StaticEnum.class | Bin 872 -> 866 bytes test/Test.class | Bin 6571 -> 6565 bytes 11 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 src-java/node/MethodCallBaton.class create mode 100644 src-java/node/MethodCallBaton.java diff --git a/src-java/node/CastingUtils.class b/src-java/node/CastingUtils.class index 8eb0c1ccc3102e7ea59f02e819f346435c54bce3..de5359827ef7482064d3d099fa941ae1bd905e43 100644 GIT binary patch delta 131 zcmWlSJr06E7zGEiXaWI*0wDs4Kh**al`%0P^m;fOZ-DJqgbq8;Vc{(-{OsP$6z}7{ zT{Elm9UBGo`h{Z|J>p;LI2g$Eli*s#;egkStR^D!Ag})-krqn3In^m*O+rde#(@ou Ztd@c!B^^5<@KB2{#geU^Vu?gv_df+66+Zv~ delta 136 zcmWlSp$>vj7)B55DjQ4?2q-E}-3S-lEEZ>BV>W#`qaEu_jE2qUF!&Y(fA^(xPWV3V z*EPMW9@r@0qTh@xqgy7|GRAL6^$Y)2!~_lAzGd1GnkSi5F^SaRU+;q|P7#T0M#h|+ c1qYTKS#cIqvlRjlH6B@&$6g|(DC0mgRNpPA_5;uIsk!?(Yrj4D35QnrWV3=`-nbJ;Y6h#Rlj+~KY zKKA_+?XsI}>BjAJ!4hWrEBXi6vtVe?vmC4>OdE#r=<4a+d(XLF@ACJty07CHcP&<(QxdbRBcl4 zx9yi;mzn+r!KF}AsI!ZDpkgf-oy>-jl=@szUhU=|gvu&r0OZXVc;1oFCcMGRZV64BjKLdf`Xm7)+3QQcfj|{fJbS~=kU$dQVIYG4HO75OKVrn=j z0&~&!^ni|vow6-2#1_cB183%*z|f`>EIW3?@?CGUn;z?$i?(zxXN{IMYg@K)pS~VQ z*GdR=$MR_s@J4vDtUV+`mNcjFLa z5guKhw_cntsZ7#jTht2Aalb&4B%f3VdaWp_e}-1vg(7OZ(8_!jUm)G(HoCFAz!j#J zE-T~8v)M#^R?VoH#IMMXD;f1tSu^wFS}$gG7pb3AvHQ>8#iuNriYc6B@xthr*dy7U z82_iFW(21x&(Y!x&Qs ctor, Object[] args) throws Exception { + return ctor.newInstance(args); + } + + public static Object invokeMethod(Method func, Object obj, Object[] args) throws Exception { + func.setAccessible(true); + return func.invoke(obj, args); + } + + public static Object invokeMethod9(Method func, Object obj, Object[] args) throws Exception { + if (!func.canAccess(obj)) { + Method accessible = findAccessible(func, obj, func.getDeclaringClass()); + + if (accessible != null) { + func = accessible; + } + } + + return func.invoke(obj, args); + } + + private static Method findAccessible(Method func, Object obj, Class clazz) { + Method accessible = null; + + if (clazz != null) { + try { + accessible = clazz.getMethod(func.getName(), func.getParameterTypes()); + accessible = accessible.canAccess(obj) ? accessible : null; + } catch (Exception ignored) { + accessible = null; + } + + if (accessible == null) { + accessible = findAccessible(func, obj, clazz.getSuperclass()); + } + + if (accessible == null) { + for (Class iface : clazz.getInterfaces()) { + accessible = findAccessible(func, obj, iface); + + if (accessible != null) { + break; + } + } + } + } + + return accessible; + } +} diff --git a/src-java/node/NodeDynamicProxyClass.class b/src-java/node/NodeDynamicProxyClass.class index 6a4a30d282c31fb89ba350dce1f76eb561805808..9eed5b236611e57d4dc9d5cfbfdc59e03abdefbc 100644 GIT binary patch delta 498 zcmWlVTW^d}6o#MueG}{ZcDFLq5HmeaQgLcJv^u4xqfS-Su~dgrbc)e2ElQp1aP2}q z7vjR7XhKN1=YRMYBG$gxZ}z+1CvURWuk_dS%I|;Qe**oywPYEx?4#smSSZKrXT*}? zfaM^EV)7ieDo2D-Z;o2VIA%G{32(=(@+U2)I33aBvoltU6&T~Jmvb=_oc9eEyi5ug zJ0qrqilvoH5toH&;fke`tHO+M?fvJE=6W({rp=AylbJ~y!mZmT4N+;fUTf5r%E|hm zx49_HI;zY$ZgMLb4>q;jcGS4zn5Qn>bu@Io9280mjwu#}dye}&aBQaAvBX2+k)JF( z9#eNb;i=;p&xIF`m#jE?C?#Y@Ghd$pZ(a@Gbit2W1vd9|!K_QdP*&)&2&zIytd)Dz2JHP0wl=w5$-zr}?yRxkRbPMveAI`uXEGrjWb-?tw?EAK6pH;6P!#^$0@7OBb@f6*V4xsOFw5lJ!jQ_-g1F~h$gRHv zG*ep0Ycx&-dr~=J(oy1$V~Xjx5NyrdbCpYlgK8#~D<+pEev8?=I!43*_oiSJYwLoEls yP_sr^hPW7Q&u6J;8v*;&Sfv55R8U5ilq!w}HmbIX7FC2m?{+Y$Q@fM~9QqIG9Zenp diff --git a/src-java/node/VarArgs.class b/src-java/node/VarArgs.class index 2836b3526b874dfa93540f782637c13066aa7d87..ecd67e020024b38f4bac78e53425546f8629b33c 100644 GIT binary patch delta 75 zcmcb@b(L$wR2I&)3~WHiz>qR|9*g(nH!MoJdJNn^z7zv5gEWH-5Xv#gGpH~qFz7QV bGFUPwF*q?OGx##7Gej|HFeFVjXO#s2D`pG_ delta 71 zcmcc0b%krgR2I%P3~WHiz>q$99*g(nXDq6kS`1u3z7&HD5Xv#gGpH~qFz7QVGFUPw XF*q?OGXyZGGsH4zFr-elV3h>`1b7SI diff --git a/src/methodCallBaton.cpp b/src/methodCallBaton.cpp index 0811994..8b4902e 100644 --- a/src/methodCallBaton.cpp +++ b/src/methodCallBaton.cpp @@ -119,13 +119,12 @@ v8::Local MethodCallBaton::resultsToV8(JNIEnv *env) { } void NewInstanceBaton::ExecuteInternal(JNIEnv* env) { - jclass constructorClazz = env->FindClass("java/lang/reflect/Constructor"); - jmethodID constructor_newInstance = env->GetMethodID(constructorClazz, "newInstance", "([Ljava/lang/Object;)Ljava/lang/Object;"); - - //printf("invoke: %s\n", javaMethodCallToString(env, m_method, constructor_newInstance, m_args).c_str()); + jclass batonClazz = env->FindClass("node/MethodCallBaton"); + jmethodID newInstance = env->GetStaticMethodID(batonClazz, "newInstance", "(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;"); jarray args = javaGetArgsForConstructor(env, m_method, m_args); - jobject result = env->CallObjectMethod(m_method, constructor_newInstance, args); + jobject result = env->CallStaticObjectMethod(batonClazz, newInstance, m_method, args); + if(env->ExceptionCheck()) { jthrowable ex = env->ExceptionOccurred(); env->ExceptionClear(); @@ -138,8 +137,6 @@ void NewInstanceBaton::ExecuteInternal(JNIEnv* env) { } void StaticMethodCallBaton::ExecuteInternal(JNIEnv* env) { - jmethodID method_invoke = getMethodInvokeMethodId(env); - /* printf("calling %s\n", javaObjectToString(env, m_method).c_str()); printf("arguments\n"); @@ -150,8 +147,11 @@ void StaticMethodCallBaton::ExecuteInternal(JNIEnv* env) { } */ + jclass batonClazz = env->FindClass("node/MethodCallBaton"); + jmethodID invokeMethod = env->GetStaticMethodID(batonClazz, env->GetVersion() >= 0x90000 ? "invokeMethod9" : "invokeMethod", "(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); + jarray args = javaGetArgsForMethod(env, m_method, m_args); - jobject result = env->CallObjectMethod(m_method, method_invoke, NULL, args); + jobject result = env->CallStaticObjectMethod(batonClazz, invokeMethod, m_method, NULL, args); if(env->ExceptionCheck()) { jthrowable ex = env->ExceptionOccurred(); @@ -165,8 +165,6 @@ void StaticMethodCallBaton::ExecuteInternal(JNIEnv* env) { } void InstanceMethodCallBaton::ExecuteInternal(JNIEnv* env) { - jmethodID method_invoke = getMethodInvokeMethodId(env); - /* printf("calling %s\n", javaObjectToString(env, m_method).c_str()); printf("arguments\n"); @@ -174,9 +172,12 @@ void InstanceMethodCallBaton::ExecuteInternal(JNIEnv* env) { printf(" %s\n", javaObjectToString(env, env->GetObjectArrayElement((jobjectArray)m_args, i)).c_str()); } */ - + + jclass batonClazz = env->FindClass("node/MethodCallBaton"); + jmethodID invokeMethod = env->GetStaticMethodID(batonClazz, env->GetVersion() >= 0x90000 ? "invokeMethod9" : "invokeMethod", "(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); + jarray args = javaGetArgsForMethod(env, m_method, m_args); - jobject result = env->CallObjectMethod(m_method, method_invoke, m_javaObject->getObject(), args); + jobject result = env->CallStaticObjectMethod(batonClazz, invokeMethod, m_method, m_javaObject->getObject(), args); if(env->ExceptionCheck()) { jthrowable ex = env->ExceptionOccurred(); diff --git a/test/RunInterface$1.class b/test/RunInterface$1.class index 8f0ec5b55545975740810c290674d671a11e08b8..968bfc7824897c89c86e86d3920afbf5fc541c93 100644 GIT binary patch delta 99 zcmbQkK9im6)W2Q(7#J9g8H^`#X((#3GiWn1aFr$Is1&6Zm*$i(GB8DZGBU7&Mc5g1 zHU>v9vgz_L=rQO|-pD8`Wx&p0$ira7AkE0Y7gU<(nOBlpl$MyBs$#hLHRDD`0LxYw AuK)l5 delta 109 zcmbQqK8Ky_)W2Q(7#J9g8B8W}X{czkGw3ifaFr$Is1&6Zm*$i(GB8DZGBU7&Mc5g1 z85x8pD=>*|%&})=)8k>#XE2z&kx^FGke$JZ2WW^iBLiPhX`W|ZNorAAVsfgAAtM9B J<`;|`83CKx8JqwB diff --git a/test/RunInterface.class b/test/RunInterface.class index 629d96407f8ccbc691aec43ecf0ee7e8c18e8ad0..c0d30e952d09de60b02c8c5d680c954b92296201 100644 GIT binary patch delta 684 zcmZ9IOH&g;6otReIMZY@TEUp06p&1a7!pJx8eaiHK#gzlfp0||9~&2#efI8Bv(vxe zLQBLdt?~!xFL1-&wN)%FZx1Pxa?z*zo^$%#?)x^`N;bd$`SJ~zByh=aG{FGJdN`h- zpA!lCsA;BL9HuoVU3!?&%xX@#B$#t?nK!Utl+$s}aMq;M4V;UU=Dayw&|K79(p*-g z>Mt9?>eJ zu@jG!Xd~>49FCLka%5zDeI(f}T9MJnvEYo2b}|NtOM6!yS=#DY*HPcHxMR}sjWef) z!wn~!8WVk+Bq&mdmcD$LUiO<>Pb#}e~&pR(#Rk#>O!r!|1 E7l%_*y8r+H delta 699 zcmY*WOHUI~7(I7}ncGeW(`pK_k;k+JN{h4w#Ro-;fLhbgy-m z{sm*ABxqcaxOM9vaO)pnWsK)e6U9vC%>B+e-*>*;X-D5iSHJ!KvH@Tc4GTRu7{M+~ zhfsm@|q9bh39qmvDbXmvf<#0 zZ|E7_!BxMY505*zrpW6yZm5wrk(9V)V+pry)Nsc}9d~UEV9AU<<_*!6rE5HRz&!-= zdk#L5T& D5fu@W delta 115 zcmX@ceukav)W2Q(7#J9g8EhwVDQX&VGO#chb1;a5XcGs(-{DcQxmTM delta 95 zcmaFF_JWP;)W2Q(7#J9g84M?KDGF+GGO#dcaWDviXl-@|osBjjj7qu;dh87Pj12rC wsl_EK!6k_$naQqsrMWx|5)1}B3{nizlh-od=T>H5VqgTC#VyP*c^cCh0QBAy_W%F@ diff --git a/test/Test.class b/test/Test.class index 51e0bad372b954bf26cba303a8c0b50d31725c6b..1559c37a2cab5aaf54322ad3da5e8146a4d5c81a 100644 GIT binary patch literal 6565 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 HA40DK7T+CD From 2eeaba441dbbaa0a32bb38401e31921d44520897 Mon Sep 17 00:00:00 2001 From: Martin Blom Date: Wed, 12 Apr 2023 19:08:45 +0200 Subject: [PATCH 09/47] Wait for list.addPromise() to finish before adding next item. Prevents ConcurrentModificationException in JDK 20. --- test/promises-test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/promises-test.js b/test/promises-test.js index a324183..9bf8248 100644 --- a/test/promises-test.js +++ b/test/promises-test.js @@ -96,13 +96,13 @@ exports['Promises'] = nodeunit.testCase({ test.strictEqual(name, "java.util.ArrayList"); }) .then(function() { - list.addPromise('hello'); + return list.addPromise('hello'); }) .then(function() { - list.addPromise('world'); + return list.addPromise('world'); }) .then(function() { - list.addPromise('boo'); + return list.addPromise('boo'); }) .then(function() { return list.iteratorPromise(); From 6c48aacd3705b5c3e1cb67d82f84b964ee7f7652 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Wed, 19 Apr 2023 01:28:20 +0000 Subject: [PATCH 10/47] v0.13.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c44f203..2d46c8b 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "jvm", "bridge" ], - "version": "0.12.2", + "version": "0.13.0", "engines": { "node": ">=7.0.0" }, From 465b4e81dd1e539bb04d4a5168f0da6064d93855 Mon Sep 17 00:00:00 2001 From: Piotr Dobrowolski Date: Fri, 10 Mar 2023 10:23:04 +0100 Subject: [PATCH 11/47] fix empty string promise suffix Only notable behaviour broken with empty string promise suffix was static method calls on imported classes. (java.import('...').staticMethod()) This is due to double-promisification of callStaticMethod function. This change extracts raw, pre-promisified methods used later in runtime by java bridge as local variables and uses that instead. This also fixes a similar breakage if someone set "Sync" as promise suffix. --- lib/nodeJavaBridge.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/nodeJavaBridge.js b/lib/nodeJavaBridge.js index 97d84e7..7bf2b1a 100644 --- a/lib/nodeJavaBridge.js +++ b/lib/nodeJavaBridge.js @@ -30,6 +30,10 @@ java.classpath.pushDir = function(dir) { }; java.nativeBindingLocation = binaryPath; +var callStaticMethod = java.callStaticMethod; +var callStaticMethodSync = java.callStaticMethodSync; +var newInstanceSync = java.newInstanceSync; + var syncSuffix = undefined; var asyncSuffix = undefined; var ifReadOnlySuffix = '_'; @@ -230,7 +234,7 @@ java.import = function(name) { for (var i = 0; i < arguments.length; i++) { args.push(arguments[i]); } - return java.newInstanceSync.apply(java, args); + return newInstanceSync.apply(java, args); }; var i; @@ -270,17 +274,17 @@ java.import = function(name) { if (_.isString(syncSuffix)) { var syncName = usableName(methodName + syncSuffix); - result[syncName] = java.callStaticMethodSync.bind(java, name, methodName); + result[syncName] = callStaticMethodSync.bind(java, name, methodName); } if (_.isString(asyncSuffix)) { var asyncName = usableName(methodName + asyncSuffix); - result[asyncName] = java.callStaticMethod.bind(java, name, methodName); + result[asyncName] = callStaticMethod.bind(java, name, methodName); } if (promisify && _.isString(promiseSuffix)) { var promiseName = usableName(methodName + promiseSuffix); - result[promiseName] = promisify(java.callStaticMethod.bind(java, name, methodName)); + result[promiseName] = promisify(callStaticMethod.bind(java, name, methodName)); } } } From 2b9160f18dc8be157ba7350d457133f23525af01 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Apr 2022 04:32:39 +0000 Subject: [PATCH 12/47] Bump async from 2.6.1 to 2.6.4 Bumps [async](https://github.com/caolan/async) from 2.6.1 to 2.6.4. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v2.6.1...v2.6.4) --- updated-dependencies: - dependency-name: async dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 99e976a..2941168 100644 --- a/package-lock.json +++ b/package-lock.json @@ -204,11 +204,11 @@ "dev": true }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.14" } }, "asynckit": { diff --git a/package.json b/package.json index 2d46c8b..194cb80 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "url": "https://github.com/joeferner/node-java.git" }, "dependencies": { - "async": "2.6.1", + "async": "2.6.4", "find-java-home": "1.1.0", "glob": "7.1.6", "lodash": "^4.17.21", From 09320f46d1be7af2ee7cdefc4097c2f339fd6c1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 4 Mar 2023 02:35:48 +0000 Subject: [PATCH 13/47] Bump minimist from 1.2.5 to 1.2.8 Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.8. - [Release notes](https://github.com/minimistjs/minimist/releases) - [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md) - [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.8) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2941168..9873cca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1079,9 +1079,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "minipass": { From d0882c378be2ac54dc415a688a252e44ee2cb943 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Dec 2022 17:51:18 +0000 Subject: [PATCH 14/47] Bump qs from 6.5.2 to 6.5.3 Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3. - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3) --- updated-dependencies: - dependency-name: qs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9873cca..3a9998c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1351,9 +1351,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, "read-pkg": { From 77421dcec54a6ff6e197112fbc541d5123973bf5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Oct 2023 19:07:53 +0000 Subject: [PATCH 15/47] Bump semver from 5.7.1 to 5.7.2 Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 879 ++++++++++++++++++++++++++++++++++++++++++++-- pnpm-lock.yaml | 24 +- 2 files changed, 860 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a9998c..45088ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "java", - "version": "0.12.2", + "version": "0.13.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -131,6 +131,79 @@ } } }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.4", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", @@ -146,8 +219,7 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", @@ -167,12 +239,38 @@ "default-require-extensions": "^2.0.0" } }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -270,6 +368,124 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, "caching-transform": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", @@ -311,6 +527,16 @@ "supports-color": "^5.3.0" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, "clean-yaml-object": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", @@ -346,8 +572,7 @@ "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, "combined-stream": { "version": "1.0.8", @@ -369,6 +594,11 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -452,7 +682,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -478,6 +707,11 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "diff": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", @@ -509,8 +743,26 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" }, "error-ex": { "version": "1.3.2", @@ -551,6 +803,11 @@ "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", "dev": true }, + "exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -637,6 +894,29 @@ "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", "dev": true }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -648,6 +928,61 @@ "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==", "dev": true }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -710,6 +1045,11 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "hasha": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", @@ -731,6 +1071,21 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -742,11 +1097,46 @@ "sshpk": "^1.7.0" } }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "inflight": { "version": "1.0.6", @@ -762,6 +1152,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -771,8 +1166,12 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, "is-stream": { "version": "1.1.0", @@ -796,8 +1195,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isstream": { "version": "0.1.2", @@ -836,9 +1234,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -1030,6 +1428,14 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } } }, "make-error": { @@ -1038,6 +1444,49 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, "merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", @@ -1102,6 +1551,148 @@ } } }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -1114,20 +1705,65 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nan": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, "nested-error-stacks": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", "dev": true }, + "node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "requires": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "nodeunit": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/nodeunit/-/nodeunit-0.11.3.tgz", @@ -1138,6 +1774,14 @@ "tap": "^12.0.1" } }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "requires": { + "abbrev": "^1.0.0" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -1148,6 +1792,25 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" } }, "nyc": { @@ -1242,6 +1905,14 @@ "p-limit": "^2.0.0" } }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -1332,6 +2003,20 @@ "dev": true, "optional": true }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -1466,6 +2151,11 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -1484,20 +2174,35 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { "version": "3.0.3", @@ -1505,6 +2210,40 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -1609,6 +2348,29 @@ "tweetnacl": "~0.14.0" } }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "requires": { + "minipass": "^3.1.1" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, "stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", @@ -1619,7 +2381,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -1630,8 +2391,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, "requires": { "safe-buffer": "~5.1.0" }, @@ -1640,7 +2399,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, "optional": true } } @@ -1649,7 +2407,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -1767,6 +2524,36 @@ "minipass": "^2.2.0" } }, + "tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, "test-exclude": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", @@ -1888,6 +2675,22 @@ } } }, + "unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -1900,9 +2703,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { "version": "3.4.0", @@ -1948,6 +2749,14 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "winreg": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4662462..b5123be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,13 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: async: - specifier: 2.6.1 - version: 2.6.1 + specifier: 2.6.4 + version: 2.6.4 find-java-home: specifier: 1.1.0 version: 1.1.0 @@ -301,8 +305,8 @@ packages: engines: {node: '>=0.8'} dev: true - /async@2.6.1: - resolution: {integrity: sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==} + /async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} dependencies: lodash: 4.17.21 dev: false @@ -478,6 +482,7 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + requiresBuild: true dev: true optional: true @@ -878,6 +883,7 @@ packages: /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + requiresBuild: true dependencies: safer-buffer: 2.1.2 dev: false @@ -944,6 +950,7 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + requiresBuild: true dev: true optional: true @@ -1118,7 +1125,7 @@ packages: engines: {node: '>=6'} dependencies: pify: 4.0.1 - semver: 5.7.1 + semver: 5.7.2 dev: true /make-error@1.3.6: @@ -1322,7 +1329,7 @@ packages: dependencies: hosted-git-info: 2.8.9 resolve: 1.22.1 - semver: 5.7.1 + semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -1486,6 +1493,7 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + requiresBuild: true dev: true optional: true @@ -1654,8 +1662,8 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true dev: true From d1ce9712b28222fb66953ac4b77cab376ed5fbd9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Oct 2023 19:08:32 +0000 Subject: [PATCH 16/47] Bump http-cache-semantics from 4.1.0 to 4.1.1 Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1. - [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1) --- updated-dependencies: - dependency-name: http-cache-semantics dependency-type: indirect ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b5123be..c237cd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -840,8 +840,8 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-cache-semantics@4.1.0: - resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: false /http-proxy-agent@5.0.0: @@ -1138,7 +1138,7 @@ packages: dependencies: agentkeepalive: 4.2.1 cacache: 16.1.3 - http-cache-semantics: 4.1.0 + http-cache-semantics: 4.1.1 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 From d29db8ab66b3d0ec24c3a0697a754096d5367967 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Oct 2023 19:12:52 +0000 Subject: [PATCH 17/47] Bump ansi-regex from 4.1.0 to 4.1.1 Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 4.1.0 to 4.1.1. - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v4.1.1) --- updated-dependencies: - dependency-name: ansi-regex dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 45088ae..a6fb2e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -217,9 +217,9 @@ } }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -943,11 +943,6 @@ "wide-align": "^1.1.5" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2409,6 +2404,13 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + } } }, "strip-bom": { @@ -2655,7 +2657,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "punycode": { From d72e1f913d93c1b7c83c6fab855869ff5ef3bdcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Oct 2023 19:12:53 +0000 Subject: [PATCH 18/47] Bump debug from 4.1.1 to 4.3.4 Bumps [debug](https://github.com/debug-js/debug) from 4.1.1 to 4.3.4. - [Release notes](https://github.com/debug-js/debug/releases) - [Commits](https://github.com/debug-js/debug/compare/4.1.1...4.3.4) --- updated-dependencies: - dependency-name: debug dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index a6fb2e0..907bbb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -679,11 +679,11 @@ } }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { @@ -2227,16 +2227,6 @@ "agent-base": "^6.0.2", "debug": "^4.3.3", "socks": "^2.6.2" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - } } }, "source-map": { From 92059a53f3001c2cb08c22dc91db2d7f0d75ab9d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Oct 2023 19:13:09 +0000 Subject: [PATCH 19/47] Bump json-schema and jsprim Bumps [json-schema](https://github.com/kriszyp/json-schema) and [jsprim](https://github.com/joyent/node-jsprim). These dependencies needed to be updated together. Updates `json-schema` from 0.2.3 to 0.4.0 - [Commits](https://github.com/kriszyp/json-schema/compare/v0.2.3...v0.4.0) Updates `jsprim` from 1.4.1 to 1.4.2 - [Changelog](https://github.com/TritonDataCenter/node-jsprim/blob/v1.4.2/CHANGES.md) - [Commits](https://github.com/joyent/node-jsprim/compare/v1.4.1...v1.4.2) --- updated-dependencies: - dependency-name: json-schema dependency-type: indirect - dependency-name: jsprim dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 907bbb2..e5724d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1322,12 +1322,6 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1341,15 +1335,23 @@ "dev": true }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "dependencies": { + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + } } }, "lcov-parse": { From 9cc3ebb8ab0b5212cbe0a469f003548bd864411d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Oct 2023 19:19:32 +0000 Subject: [PATCH 20/47] Bump minimatch from 3.0.4 to 3.1.2 Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2. - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2) --- updated-dependencies: - dependency-name: minimatch dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e5724d5..d4b43e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1517,9 +1517,9 @@ } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } From 874a54b34071180ea64bf699918884009a657e43 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Fri, 24 Nov 2023 12:39:26 +0000 Subject: [PATCH 21/47] upgrade nan and other dependencies --- .gitignore | 2 + .travis.yml | 8 +- package-lock.json | 3481 +++++++++++++++++++++++++--------------- package.json | 10 +- src/nodeJavaBridge.cpp | 4 +- 5 files changed, 2223 insertions(+), 1282 deletions(-) diff --git a/.gitignore b/.gitignore index d08236e..92159f5 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ node-java.cbp *.kdev4 */.kdev_include_paths .vscode +CMakeLists.txt +cmake-build-debug/ diff --git a/.travis.yml b/.travis.yml index 8a2eb92..704714b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,11 +4,11 @@ jdk: - openjdk9 - openjdk10 - openjdk11 + - openjdk21 env: - - NODE_VERSION=7 CC=clang CXX=clang++ - - NODE_VERSION=8 CC=clang CXX=clang++ - - NODE_VERSION=11 CC=clang CXX=clang++ - - NODE_VERSION=12 CC=clang CXX=clang++ + - NODE_VERSION=16 CC=clang CXX=clang++ + - NODE_VERSION=18 CC=clang CXX=clang++ + - NODE_VERSION=20 CC=clang CXX=clang++ before_install: - nvm install $NODE_VERSION before_script: diff --git a/package-lock.json b/package-lock.json index d4b43e2..2dec9ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1224 +1,1530 @@ { "name": "java", "version": "0.13.0", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "packages": { + "": { + "name": "java", + "version": "0.13.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.5", + "find-java-home": "^2.0.0", + "glob": "^10.3.10", + "lodash": "^4.17.21", + "nan": "^2.18.0", + "node-gyp": "^10.0.1" + }, + "devDependencies": { + "chalk": "2.4.1", + "nodeunit": "0.11.3", + "when": "3.7.8" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", + "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", + "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.4", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" + "engines": { + "node": ">=6.9.0" } }, - "@babel/generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", - "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, - "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, - "requires": { - "@babel/types": "^7.10.4" + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, - "requires": { - "@babel/types": "^7.11.0" + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/parser": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", - "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==", - "dev": true + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "node_modules/@babel/parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - } + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", + "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.4", + "@babel/generator": "^7.23.4", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.4", + "@babel/types": "^7.23.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "node_modules/@babel/types": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", + "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - } + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - } + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", + "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" } }, - "agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "requires": { - "humanize-ms": "^1.2.1" + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, - "aggregate-error": { + "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { + "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "ajv": { + "node_modules/ajv": { "version": "6.12.4", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "append-transform": { + "node_modules/append-transform": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", "dev": true, - "requires": { + "dependencies": { "default-require-extensions": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "archy": { + "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "arg": { + "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "argparse": { + "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "requires": { + "dependencies": { "sprintf-js": "~1.0.2" } }, - "asn1": { + "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, - "requires": { + "dependencies": { "safer-buffer": "~2.1.0" } }, - "assert-plus": { + "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "requires": { - "lodash": "^4.17.14" + "dev": true, + "engines": { + "node": ">=0.8" } }, - "asynckit": { + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "aws-sign2": { + "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "aws4": { + "node_modules/aws4": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", "dev": true }, - "balanced-match": { + "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "bcrypt-pbkdf": { + "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, - "requires": { + "dependencies": { "tweetnacl": "^0.14.3" } }, - "bind-obj-methods": { + "node_modules/bind-obj-methods": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz", "integrity": "sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw==", "dev": true }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { + "dev": true, + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "browser-process-hrtime": { + "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "buffer-from": { + "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", + "node_modules/cacache": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.0.tgz", + "integrity": "sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", + "ssri": "^10.0.0", "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "unique-filename": "^3.0.0" }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "caching-transform": { + "node_modules/caching-transform": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", "dev": true, - "requires": { + "dependencies": { "hasha": "^3.0.0", "make-dir": "^2.0.0", "package-hash": "^3.0.0", "write-file-atomic": "^2.4.2" + }, + "engines": { + "node": ">=6" } }, - "camelcase": { + "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "capture-stack-trace": { + "node_modules/capture-stack-trace": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "caseless": { + "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "chalk": { + "node_modules/chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "chownr": { + "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } }, - "clean-stack": { + "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } }, - "clean-yaml-object": { + "node_modules/clean-yaml-object": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "cliui": { + "node_modules/cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, - "requires": { + "dependencies": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", "wrap-ansi": "^5.1.0" } }, - "color-convert": { + "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { + "dependencies": { "color-name": "1.1.3" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "color-support": { + "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } }, - "combined-stream": { + "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "requires": { + "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "commondir": { + "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, - "convert-source-map": { + "node_modules/convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - }, "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } + "safe-buffer": "~5.1.1" } }, - "core-util-is": { + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "coveralls": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.0.tgz", - "integrity": "sha512-sHxOu2ELzW8/NC1UP5XVLbZDzO4S3VxfFye3XYCznopHy02YjNkHcj5bKaVw2O7hVaBdBjEdQGpie4II1mWhuQ==", + "node_modules/coveralls": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", + "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", "dev": true, - "requires": { + "dependencies": { "js-yaml": "^3.13.1", "lcov-parse": "^1.0.0", "log-driver": "^1.2.7", "minimist": "^1.2.5", "request": "^2.88.2" + }, + "bin": { + "coveralls": "bin/coveralls.js" + }, + "engines": { + "node": ">=6" } }, - "cp-file": { + "node_modules/cp-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "make-dir": "^2.0.0", "nested-error-stacks": "^2.0.0", "pify": "^4.0.1", "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=6" } }, - "cross-spawn": { + "node_modules/cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, - "requires": { + "dependencies": { "lru-cache": "^4.0.1", "which": "^1.2.9" - }, + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "dashdash": { + "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, - "requires": { + "dependencies": { "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" } }, - "debug": { + "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "decamelize": { + "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "default-require-extensions": { + "node_modules/default-require-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", "dev": true, - "requires": { + "dependencies": { "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "delayed-stream": { + "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "diff": { + "node_modules/diff": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true + "integrity": "sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "domain-browser": { + "node_modules/domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, - "ecc-jsbn": { + "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, - "requires": { + "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "ejs": { + "node_modules/ejs": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=0.10.0" + } }, - "emoji-regex": { + "node_modules/emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, - "encoding": { + "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "optional": true, - "requires": { + "dependencies": { "iconv-lite": "^0.6.2" } }, - "env-paths": { + "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } }, - "err-code": { + "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" }, - "error-ex": { + "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "es6-error": { + "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "esm": { + "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "esprima": { + "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "events-to-array": { + "node_modules/events-to-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", "dev": true }, - "exponential-backoff": { + "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" }, - "extend": { + "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "extsprintf": { + "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "dev": true, + "engines": [ + "node >=0.6.0" + ] }, - "fast-deep-equal": { + "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "find-cache-dir": { + "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, - "requires": { + "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "find-java-home": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-1.1.0.tgz", - "integrity": "sha512-bSTCKNZ193UM/+ZZoNDzICAEHcVywovkhsWCkZALjCvRXQ+zXTe/XATrrP4CpxkaP6YFhQJOpyRpH0P2U/woDA==", - "requires": { - "which": "~1.0.5", + "node_modules/find-java-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-2.0.0.tgz", + "integrity": "sha512-m4Cf5WM5Y9UupofsLgcJuY5oFXVfVnfHx43pg3HJoVdtY2PN4Wfs7ex9svf7W7eLTP+6wmyBToaqGOCffHBHVA==", + "dependencies": { + "which": "~1.0.5", "winreg": "~1.2.2" } }, - "find-up": { + "node_modules/find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, - "requires": { + "dependencies": { "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "foreground-child": { + "node_modules/foreground-child": { "version": "1.5.6", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, - "requires": { + "dependencies": { "cross-spawn": "^4", "signal-exit": "^3.0.0" } }, - "forever-agent": { + "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "form-data": { + "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, - "requires": { + "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, - "fs-exists-cached": { + "node_modules/fs-exists-cached": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", "dev": true }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "fs.realpath": { + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, - "function-loop": { + "node_modules/function-loop": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.2.tgz", "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==", "dev": true }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "getpass": { + "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, - "requires": { + "dependencies": { "assert-plus": "^1.0.0" } }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/glob/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "globals": { + "node_modules/glob/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/glob/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "graceful-fs": { + "node_modules/graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "har-schema": { + "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "har-validator": { + "node_modules/har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, - "requires": { + "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + "dev": true, + "engines": { + "node": ">=4" + } }, - "hasha": { + "node_modules/hasha": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", "dev": true, - "requires": { + "dependencies": { "is-stream": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "hosted-git-info": { + "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "html-escaper": { + "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-cache-semantics": { + "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, - "http-signature": { + "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, - "requires": { + "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", "debug": "4" + }, + "engines": { + "node": ">= 14" } }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { + "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "optional": true, - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } }, - "indent-string": { + "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { + "dev": true, + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "ip": { + "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } }, - "is-lambda": { + "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, - "is-stream": { + "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-typedarray": { + "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "isarray": { + "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "isstream": { + "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "istanbul-lib-coverage": { + "node_modules/istanbul-lib-coverage": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "istanbul-lib-hook": { + "node_modules/istanbul-lib-hook": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", "dev": true, - "requires": { + "dependencies": { "append-transform": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, - "istanbul-lib-instrument": { + "node_modules/istanbul-lib-instrument": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, - "requires": { + "dependencies": { "@babel/generator": "^7.4.0", "@babel/parser": "^7.4.3", "@babel/template": "^7.4.0", @@ -1227,595 +1533,685 @@ "istanbul-lib-coverage": "^2.0.5", "semver": "^6.0.0" }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "engines": { + "node": ">=6" } }, - "istanbul-lib-report": { + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, - "requires": { + "dependencies": { "istanbul-lib-coverage": "^2.0.5", "make-dir": "^2.1.0", "supports-color": "^6.1.0" }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "istanbul-lib-source-maps": { + "node_modules/istanbul-lib-source-maps": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^2.0.5", "make-dir": "^2.1.0", "rimraf": "^2.6.3", "source-map": "^0.6.1" }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "istanbul-reports": { + "node_modules/istanbul-reports": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, - "requires": { + "dependencies": { "html-escaper": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "js-tokens": { + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-yaml": { + "node_modules/js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, - "requires": { + "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsbn": { + "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, - "jsesc": { + "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } }, - "json-parse-better-errors": { + "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-schema-traverse": { + "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "json-stringify-safe": { + "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "jsprim": { + "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "requires": { + "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.4.0", "verror": "1.10.0" }, - "dependencies": { - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - } + "engines": { + "node": ">=0.6.0" } }, - "lcov-parse": { + "node_modules/jsprim/node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/lcov-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", - "dev": true + "dev": true, + "bin": { + "lcov-parse": "bin/cli.js" + } }, - "load-json-file": { + "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", "pify": "^3.0.0", "strip-bom": "^3.0.0" }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "engines": { + "node": ">=4" } }, - "locate-path": { + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "lodash.flattendeep": { + "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "log-driver": { + "node_modules/log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.6" + } }, - "lru-cache": { + "node_modules/lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, - "requires": { + "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" } }, - "make-dir": { + "node_modules/make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "requires": { + "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - } + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" } }, - "make-error": { + "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", + "node_modules/make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "ssri": "^10.0.0" }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - }, - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "merge-source-map": { + "node_modules/merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, - "requires": { - "source-map": "^0.6.1" - }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "source-map": "^0.6.1" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "mime-db": { + "node_modules/mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, - "requires": { + "dependencies": { "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { + "dev": true, + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "minipass": { + "node_modules/minipass": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } } }, - "minipass-collect": { + "node_modules/minipass-collect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "requires": { + "dependencies": { "minipass": "^3.0.0" }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", + "node_modules/minipass-collect/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dependencies": { + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "minipass-flush": { + "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "requires": { + "dependencies": { "minipass": "^3.0.0" }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "minipass-pipeline": { + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "requires": { + "dependencies": { "minipass": "^3.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "minipass-sized": { + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "requires": { + "dependencies": { "minipass": "^3.0.0" }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "engines": { + "node": ">=8" } }, - "minizlib": { - "version": "2.1.2", + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { + "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "mkdirp": { + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, - "requires": { + "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "ms": { + "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" }, - "negotiator": { + "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } }, - "nested-error-stacks": { + "node_modules/nested-error-stacks": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", "dev": true }, - "node-gyp": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", - "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", - "requires": { + "node_modules/node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", + "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", - "which": "^2.0.2" + "which": "^4.0.0" }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dependencies": { - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, - "nodeunit": { + "node_modules/nodeunit": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/nodeunit/-/nodeunit-0.11.3.tgz", "integrity": "sha512-gDNxrDWpx07BxYNO/jn1UrGI1vNhDQZrIFphbHMcTCDc5mrrqQBWfQMXPHJ5WSgbFwD1D6bv4HOsqtTrPG03AA==", + "deprecated": "you are strongly encouraged to use other testing options", "dev": true, - "requires": { + "dependencies": { "ejs": "^2.5.2", "tap": "^12.0.1" + }, + "bin": { + "nodeunit": "bin/nodeunit" } }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "requires": { - "abbrev": "^1.0.0" + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "normalize-package-data": { + "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "requires": { + "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - } } }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" } }, - "nyc": { + "node_modules/nyc": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", "dev": true, - "requires": { + "dependencies": { "archy": "^1.0.0", "caching-transform": "^3.0.2", "convert-source-map": "^1.6.0", @@ -1841,231 +2237,365 @@ "uuid": "^3.3.2", "yargs": "^13.2.2", "yargs-parser": "^13.0.0" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=6" } }, - "oauth-sign": { + "node_modules/nyc/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { + "dev": true, + "dependencies": { "wrappy": "1" } }, - "opener": { + "node_modules/opener": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", - "dev": true + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } }, - "os-homedir": { + "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "own-or": { + "node_modules/own-or": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", "integrity": "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=", "dev": true }, - "own-or-env": { + "node_modules/own-or-env": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.1.tgz", "integrity": "sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw==", "dev": true, - "requires": { + "dependencies": { "own-or": "^1.0.0" } }, - "p-limit": { + "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "requires": { + "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "p-map": { + "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "requires": { + "dependencies": { "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "package-hash": { + "node_modules/package-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^3.0.0", "lodash.flattendeep": "^4.4.0", "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, - "parse-json": { + "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, - "requires": { + "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "path-exists": { + "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-parse": { + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-type": { + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "requires": { + "dependencies": { "pify": "^3.0.0" }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" } }, - "performance-now": { + "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "pify": { + "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "pkg-dir": { + "node_modules/pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, - "requires": { + "dependencies": { "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "process-nextick-args": { + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, "optional": true }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - }, - "promise-retry": { + "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "requires": { + "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" } }, - "pseudomap": { + "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, - "psl": { + "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "punycode": { + "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "qs": { + "node_modules/qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + } }, - "read-pkg": { + "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, - "requires": { + "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "read-pkg-up": { + "node_modules/read-pkg-up": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, - "requires": { + "dependencies": { "find-up": "^3.0.0", "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "readable-stream": { + "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "optional": true, - "requires": { + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -2073,32 +2603,34 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - } } }, - "release-zalgo": { + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "optional": true + }, + "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, - "requires": { + "dependencies": { "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" } }, - "request": { + "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, - "requires": { + "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", "caseless": "~0.12.0", @@ -2119,211 +2651,298 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "require-main-filename": { + "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "resolve": { + "node_modules/resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, - "requires": { + "dependencies": { "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "retry": { + "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true }, - "semver": { + "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { + "dependencies": { "lru-cache": "^6.0.0" }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "set-blocking": { + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, - "smart-buffer": { + "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } }, - "socks": { + "node_modules/socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "requires": { + "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" } }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } }, - "source-map-support": { + "node_modules/source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, - "spawn-wrap": { + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-wrap": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz", "integrity": "sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==", "dev": true, - "requires": { + "dependencies": { "foreground-child": "^1.5.6", "mkdirp": "^0.5.0", "os-homedir": "^1.0.1", "rimraf": "^2.6.2", "signal-exit": "^3.0.2", "which": "^1.3.0" - }, + } + }, + "node_modules/spawn-wrap/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "spdx-correct": { + "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "requires": { + "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-exceptions": { + "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "spdx-expression-parse": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { + "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-license-ids": { + "node_modules/spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "sshpk": { + "node_modules/sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, - "requires": { + "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", @@ -2333,99 +2952,173 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "requires": { - "minipass": "^3.1.1" - }, + "node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "stack-utils": { + "node_modules/stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } }, - "string-width": { + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "optional": true + }, + "node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { + "dev": true, + "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - } + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { + "dev": true, + "dependencies": { "ansi-regex": "^4.1.0" }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - } + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" } }, - "strip-bom": { + "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "tap": { + "node_modules/tap": { "version": "12.7.0", "resolved": "https://registry.npmjs.org/tap/-/tap-12.7.0.tgz", "integrity": "sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==", "dev": true, - "requires": { + "dependencies": { "bind-obj-methods": "^2.0.0", "browser-process-hrtime": "^1.0.0", "capture-stack-trace": "^1.0.0", @@ -2460,69 +3153,126 @@ "typescript": "^3.3.3", "write-file-atomic": "^2.4.2", "yapool": "^1.0.0" + }, + "bin": { + "tap": "bin/run.js" + }, + "engines": { + "node": ">=4" } }, - "tap-mocha-reporter": { + "node_modules/tap-mocha-reporter": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz", "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==", "dev": true, - "requires": { + "dependencies": { "color-support": "^1.1.0", "debug": "^2.1.3", "diff": "^1.3.2", "escape-string-regexp": "^1.0.3", "glob": "^7.0.5", "js-yaml": "^3.3.1", - "readable-stream": "^2.1.5", "tap-parser": "^5.1.0", "unicode-length": "^1.0.0" }, + "bin": { + "tap-mocha-reporter": "index.js" + }, + "optionalDependencies": { + "readable-stream": "^2.1.5" + } + }, + "node_modules/tap-mocha-reporter/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "tap-parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", - "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", - "dev": true, - "requires": { - "events-to-array": "^1.0.1", - "js-yaml": "^3.2.7", - "readable-stream": "^2" - } - } + "ms": "2.0.0" + } + }, + "node_modules/tap-mocha-reporter/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tap-mocha-reporter/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/tap-mocha-reporter/node_modules/tap-parser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", + "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", + "dev": true, + "dependencies": { + "events-to-array": "^1.0.1", + "js-yaml": "^3.2.7" + }, + "bin": { + "tap-parser": "bin/cmd.js" + }, + "optionalDependencies": { + "readable-stream": "^2" } }, - "tap-parser": { + "node_modules/tap-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz", "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==", "dev": true, - "requires": { + "dependencies": { "events-to-array": "^1.0.1", "js-yaml": "^3.2.7", "minipass": "^2.2.0" + }, + "bin": { + "tap-parser": "bin/cmd.js" + } + }, + "node_modules/tap/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "tar": { + "node_modules/tar": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", - "requires": { + "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", @@ -2530,283 +3280,469 @@ "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, - "test-exclude": { + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/test-exclude": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3", "minimatch": "^3.0.4", "read-pkg-up": "^4.0.0", "require-main-filename": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "tmatch": { + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tmatch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", "integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==", "dev": true }, - "to-fast-properties": { + "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "tough-cookie": { + "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, - "requires": { + "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "trivial-deferred": { + "node_modules/trivial-deferred": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", "dev": true }, - "ts-node": { + "node_modules/ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", "dev": true, - "requires": { + "dependencies": { "arg": "^4.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "source-map-support": "^0.5.17", "yn": "3.1.1" }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" } }, - "tsame": { + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tsame": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.1.tgz", "integrity": "sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==", "dev": true }, - "tunnel-agent": { + "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "tweetnacl": { + "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, - "typescript": { + "node_modules/typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", - "dev": true + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, - "unicode-length": { + "node_modules/unicode-length": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz", "integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=", "dev": true, - "requires": { + "dependencies": { "punycode": "^1.3.2", "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } } }, - "unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "requires": { - "unique-slug": "^3.0.0" + "node_modules/unicode-length/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unicode-length/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/unicode-length/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "unique-slug": { + "node_modules/unique-filename": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "requires": { + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true, + "optional": true }, - "uuid": { + "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } }, - "validate-npm-package-license": { + "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { + "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "verror": { + "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, - "requires": { + "engines": [ + "node >=0.6.0" + ], + "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, - "when": { + "node_modules/when": { "version": "3.7.8", "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", "dev": true }, - "which": { + "node_modules/which": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=" + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "bin": { + "which": "bin/which" + } }, - "which-module": { + "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "winreg": { + "node_modules/winreg": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, - "write-file-atomic": { + "node_modules/write-file-atomic": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", "signal-exit": "^3.0.2" } }, - "y18n": { + "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, - "yallist": { + "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, - "yapool": { + "node_modules/yapool": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", "integrity": "sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=", "dev": true }, - "yargs": { + "node_modules/yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, - "requires": { + "dependencies": { "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", @@ -2819,21 +3755,24 @@ "yargs-parser": "^13.1.2" } }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "13.1.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, - "yn": { + "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } } } } diff --git a/package.json b/package.json index 194cb80..7cc8b63 100644 --- a/package.json +++ b/package.json @@ -26,12 +26,12 @@ "url": "https://github.com/joeferner/node-java.git" }, "dependencies": { - "async": "2.6.4", - "find-java-home": "1.1.0", - "glob": "7.1.6", + "async": "^3.2.5", + "find-java-home": "^2.0.0", + "glob": "^10.3.10", "lodash": "^4.17.21", - "nan": "2.14.1", - "node-gyp": "^9.1.0" + "nan": "^2.18.0", + "node-gyp": "^10.0.1" }, "devDependencies": { "chalk": "2.4.1", diff --git a/src/nodeJavaBridge.cpp b/src/nodeJavaBridge.cpp index 7dbdc40..5112440 100644 --- a/src/nodeJavaBridge.cpp +++ b/src/nodeJavaBridge.cpp @@ -3,7 +3,7 @@ #include "javaObject.h" extern "C" { - static void init(v8::Local target) { + static void init(v8::Local target, v8::Local, void*) { Java::Init(target); JavaObject::Init(target); } @@ -17,4 +17,4 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv return TRUE; } -#endif \ No newline at end of file +#endif From d22012ec9f14dc4e5c73cfd8225f3ff498a08a04 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Fri, 24 Nov 2023 12:48:49 +0000 Subject: [PATCH 22/47] git hub actions --- .gitattributes | 9 +++++++++ .github/workflows/master.yml | 23 +++++++++++++++++++++++ .github/workflows/pull-requests.yml | 24 ++++++++++++++++++++++++ .travis.yml | 20 -------------------- 4 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 .gitattributes create mode 100644 .github/workflows/master.yml create mode 100644 .github/workflows/pull-requests.yml delete mode 100644 .travis.yml diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..12b7161 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# These files will be normalized on commit (CRLF converted to LF) - asterisk is a wildcard +* text eol=lf + +# These files will NOT be normalized +*.png -text +*.gif -text +*.jpg -text +*.jpeg -text +*.ico -text diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml new file mode 100644 index 0000000..016bbb1 --- /dev/null +++ b/.github/workflows/master.yml @@ -0,0 +1,23 @@ +name: master +on: + push: + branches: + - master +jobs: + unit-test: + name: Unit Test + runs-on: ubuntu-latest + strategy: + matrix: + nodeVersion: [ 16, 18, 20 ] + jdkVersion: [ openjdk9, openjdk10, openjdk11, openjdk21 ] + steps: + - name: Checkout source code + uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.nodeVersion }} + - name: npm ci + run: npm ci + - name: Unit test + run: npm test diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml new file mode 100644 index 0000000..c5fd0d6 --- /dev/null +++ b/.github/workflows/pull-requests.yml @@ -0,0 +1,24 @@ +name: Pull Requests +on: + pull_request: + types: [opened, edited, reopened, synchronize] + branches: + - master +jobs: + unit-test: + name: Unit Test + runs-on: ubuntu-latest + strategy: + matrix: + nodeVersion: [ 16, 18, 20 ] + jdkVersion: [ openjdk9, openjdk10, openjdk11, openjdk21 ] + steps: + - name: Checkout source code + uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.nodeVersion }} + - name: npm ci + run: npm ci + - name: Unit test + run: npm test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 704714b..0000000 --- a/.travis.yml +++ /dev/null @@ -1,20 +0,0 @@ -language: java -sudo: false -jdk: - - openjdk9 - - openjdk10 - - openjdk11 - - openjdk21 -env: - - NODE_VERSION=16 CC=clang CXX=clang++ - - NODE_VERSION=18 CC=clang CXX=clang++ - - NODE_VERSION=20 CC=clang CXX=clang++ -before_install: - - nvm install $NODE_VERSION -before_script: - - npm install -script: - - npm test -notifications: - email: - on_success: "never" From 76f8573aea45b2b8bcc2cc786f195994373fd27f Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Fri, 24 Nov 2023 12:56:30 +0000 Subject: [PATCH 23/47] update readme --- LICENSE | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LICENSE b/LICENSE index 8dec2a0..cbe71a9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2013 Near Infinity Corporation +Copyright (c) 2023 Joe Ferner Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/README.md b/README.md index 2f6a9c2..6462c5f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -[![Build Status](https://travis-ci.com/joeferner/node-java.svg?branch=master)](https://travis-ci.com/joeferner/node-java) -# java + +[![master](https://github.com/joeferner/node-java/actions/workflows/master.yml/badge.svg)](https://github.com/joeferner/node-java/actions/workflows/master.yml) Bridge API to connect with existing Java APIs. From cc9c009aa393754b4118ed279e3f7a51cae3c4c3 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Fri, 24 Nov 2023 12:59:37 +0000 Subject: [PATCH 24/47] v0.14.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7cc8b63..fb0203b 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "jvm", "bridge" ], - "version": "0.13.0", + "version": "0.14.0", "engines": { "node": ">=7.0.0" }, From fad08791a9fdd414b90c09c20a11d59954b16c71 Mon Sep 17 00:00:00 2001 From: Steven Hargrove Date: Fri, 15 Dec 2023 15:46:36 -0500 Subject: [PATCH 25/47] removed dependency on lodash, removed pnpm-lock.json (#591) Co-authored-by: Steven Hargrove --- lib/nodeJavaBridge.js | 13 +- package-lock.json | 10 +- package.json | 1 - pnpm-lock.yaml | 2172 ----------------- test/importClass-test.js | 3 +- testAsyncOptions/testAllThreeSuffix.js | 21 +- .../testAsyncSuffixSyncDefault.js | 19 +- testAsyncOptions/testClientBeforeError.js | 3 +- .../testClientBeforeSyncThrows.js | 3 +- testAsyncOptions/testClientBeforeThrows.js | 3 +- testAsyncOptions/testClientPBeforeError.js | 3 +- testAsyncOptions/testClientPBeforeThrows.js | 3 +- testAsyncOptions/testDefacto.js | 23 +- testAsyncOptions/testDefactoPlusPromise.js | 23 +- testAsyncOptions/testDefault.js | 19 +- testAsyncOptions/testInvalidLaunch.js | 1 - testAsyncOptions/testNoAsync.js | 25 +- .../testSyncDefaultPlusPromise.js | 21 +- testAsyncOptions/testUnusableMethodName.js | 1 - testIntegration/poi/poi-3.9-20121203.jar | Bin 1869113 -> 1869093 bytes .../poi/poi-scratchpad-3.9-20121203.jar | Bin 1226511 -> 1226497 bytes 21 files changed, 86 insertions(+), 2281 deletions(-) delete mode 100644 pnpm-lock.yaml diff --git a/lib/nodeJavaBridge.js b/lib/nodeJavaBridge.js index 7bf2b1a..560b69e 100644 --- a/lib/nodeJavaBridge.js +++ b/lib/nodeJavaBridge.js @@ -2,7 +2,6 @@ process.env.PATH += require('../build/jvm_dll_path.json'); -var _ = require('lodash'); var async = require('async'); var path = require('path'); var fs = require('fs'); @@ -152,7 +151,7 @@ java.ensureJvm = function(callback) { // First see if the promise-style API should be used. // This must be done first in order to ensure the proper API is used. - if (_.isUndefined(callback) && java.asyncOptions && _.isFunction(java.asyncOptions.promisify)) { + if (typeof callback === 'undefined' && java.asyncOptions && typeof java.asyncOptions.promisify === 'function') { // Create a promisified version of this function. var launchJvmPromise = java.asyncOptions.promisify(java.ensureJvm.bind(java)); // Call the promisified function, returning its result, which should be a promise. @@ -160,7 +159,7 @@ java.ensureJvm = function(callback) { } // If we get here, callback must be a node-style callback function. If not, throw an error. - else if (!_.isFunction(callback)) { + else if (typeof callback !== 'function') { throw new Error('java.launchJvm(cb) requires its one argument to be a callback function.'); } @@ -196,7 +195,7 @@ java.onJvmCreated = function() { throw new Error('In asyncOptions, if either promiseSuffix or promisify is defined, both most be.'); } - if (_.isString(java.asyncOptions.ifReadOnlySuffix) && java.asyncOptions.ifReadOnlySuffix !== '') { + if (typeof java.asyncOptions.ifReadOnlySuffix === 'string' && java.asyncOptions.ifReadOnlySuffix !== '') { ifReadOnlySuffix = java.asyncOptions.ifReadOnlySuffix; } } else { @@ -272,17 +271,17 @@ java.import = function(name) { && ((modifiers & MODIFIER_STATIC) === MODIFIER_STATIC)) { var methodName = SyncCall(methods[i], 'getName')(); - if (_.isString(syncSuffix)) { + if (typeof syncSuffix === 'string') { var syncName = usableName(methodName + syncSuffix); result[syncName] = callStaticMethodSync.bind(java, name, methodName); } - if (_.isString(asyncSuffix)) { + if (typeof asyncSuffix === 'string') { var asyncName = usableName(methodName + asyncSuffix); result[asyncName] = callStaticMethod.bind(java, name, methodName); } - if (promisify && _.isString(promiseSuffix)) { + if (promisify && typeof promiseSuffix === 'string') { var promiseName = usableName(methodName + promiseSuffix); result[promiseName] = promisify(callStaticMethod.bind(java, name, methodName)); } diff --git a/package-lock.json b/package-lock.json index 2dec9ea..497e599 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,18 @@ { "name": "java", - "version": "0.13.0", + "version": "0.14.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "java", - "version": "0.13.0", + "version": "0.14.0", "hasInstallScript": true, "license": "MIT", "dependencies": { "async": "^3.2.5", "find-java-home": "^2.0.0", "glob": "^10.3.10", - "lodash": "^4.17.21", "nan": "^2.18.0", "node-gyp": "^10.0.1" }, @@ -1748,11 +1747,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", diff --git a/package.json b/package.json index fb0203b..e096d87 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,6 @@ "async": "^3.2.5", "find-java-home": "^2.0.0", "glob": "^10.3.10", - "lodash": "^4.17.21", "nan": "^2.18.0", "node-gyp": "^10.0.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index c237cd9..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,2172 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - async: - specifier: 2.6.4 - version: 2.6.4 - find-java-home: - specifier: 1.1.0 - version: 1.1.0 - glob: - specifier: 7.1.6 - version: 7.1.6 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - nan: - specifier: 2.14.1 - version: 2.14.1 - node-gyp: - specifier: ^9.1.0 - version: 9.1.0 - -devDependencies: - chalk: - specifier: 2.4.1 - version: 2.4.1 - nodeunit: - specifier: 0.11.3 - version: 0.11.3 - when: - specifier: 3.7.8 - version: 3.7.8 - -packages: - - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/generator@7.18.13: - resolution: {integrity: sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.13 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true - - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.18.9: - resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.18.13 - dev: true - - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.13 - dev: true - - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.13 - dev: true - - /@babel/helper-string-parser@7.18.10: - resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - chalk: 2.4.1 - js-tokens: 4.0.0 - dev: true - - /@babel/parser@7.18.13: - resolution: {integrity: sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.18.13 - dev: true - - /@babel/template@7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.13 - '@babel/types': 7.18.13 - dev: true - - /@babel/traverse@7.18.13: - resolution: {integrity: sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.13 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@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 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.18.13: - resolution: {integrity: sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.18.6 - to-fast-properties: 2.0.0 - dev: true - - /@gar/promisify@1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - dev: false - - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.15 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - - /@jridgewell/trace-mapping@0.3.15: - resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@npmcli/fs@2.1.2: - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.3.7 - dev: false - - /@npmcli/move-file@2.0.1: - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - dev: false - - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false - - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false - - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /agentkeepalive@4.2.1: - resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} - engines: {node: '>= 8.0.0'} - dependencies: - debug: 4.3.4 - depd: 1.1.2 - humanize-ms: 1.2.1 - transitivePeerDependencies: - - supports-color - dev: false - - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: false - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: true - - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /append-transform@1.0.0: - resolution: {integrity: sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==} - engines: {node: '>=4'} - dependencies: - default-require-extensions: 2.0.0 - dev: true - - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false - - /archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: true - - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.0 - dev: false - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - dev: true - - /async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - dependencies: - lodash: 4.17.21 - dev: false - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true - - /aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - dev: true - - /aws4@1.11.0: - resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - dependencies: - tweetnacl: 0.14.5 - dev: true - - /bind-obj-methods@2.0.2: - resolution: {integrity: sha512-bUkRdEOppT1Xg/jG0+bp0JSjUD9U0r7skxb/42WeBUjfBpW6COQTIgQmKX5J2Z3aMXcORKgN2N+d7IQwTK3pag==} - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: false - - /browser-process-hrtime@1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.0.3 - infer-owner: 1.0.4 - lru-cache: 7.14.0 - minipass: 3.3.4 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.1.11 - unique-filename: 2.0.0 - transitivePeerDependencies: - - bluebird - dev: false - - /caching-transform@3.0.2: - resolution: {integrity: sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==} - engines: {node: '>=6'} - dependencies: - hasha: 3.0.0 - make-dir: 2.1.0 - package-hash: 3.0.0 - write-file-atomic: 2.4.3 - dev: true - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - - /capture-stack-trace@1.0.1: - resolution: {integrity: sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==} - engines: {node: '>=0.10.0'} - dev: true - - /caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: true - - /chalk@2.4.1: - resolution: {integrity: sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: false - - /clean-yaml-object@0.1.0: - resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==} - engines: {node: '>=0.10.0'} - dev: true - - /cliui@5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 - dev: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true - - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false - - /convert-source-map@1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - requiresBuild: true - dev: true - optional: true - - /coveralls@3.1.1: - resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} - engines: {node: '>=6'} - hasBin: true - dependencies: - js-yaml: 3.14.1 - lcov-parse: 1.0.0 - log-driver: 1.2.7 - minimist: 1.2.6 - request: 2.88.2 - dev: true - - /cp-file@6.2.0: - resolution: {integrity: sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.10 - make-dir: 2.1.0 - nested-error-stacks: 2.1.1 - pify: 4.0.1 - safe-buffer: 5.2.1 - dev: true - - /cross-spawn@4.0.2: - resolution: {integrity: sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==} - dependencies: - lru-cache: 4.1.5 - which: 1.3.1 - dev: true - - /dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - dependencies: - assert-plus: 1.0.0 - dev: true - - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /default-require-extensions@2.0.0: - resolution: {integrity: sha512-B0n2zDIXpzLzKeoEozorDSa1cHc1t0NjmxP0zuAxbizNU2MBqYJJKYXrrFdKuQliojXynrxgd7l4ahfg/+aA5g==} - engines: {node: '>=4'} - dependencies: - strip-bom: 3.0.0 - dev: true - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false - - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: false - - /diff@1.4.0: - resolution: {integrity: sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w==} - engines: {node: '>=0.3.1'} - dev: true - - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true - - /domain-browser@1.2.0: - resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} - engines: {node: '>=0.4', npm: '>=1.2'} - dev: true - - /ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - dev: true - - /ejs@2.7.4: - resolution: {integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: true - - /emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - requiresBuild: true - dependencies: - iconv-lite: 0.6.3 - dev: false - optional: true - - /env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - dev: false - - /err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: false - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - dev: true - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - - /esm@3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - dev: true - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /events-to-array@1.1.2: - resolution: {integrity: sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==} - dev: true - - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true - - /extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - dev: true - - /find-java-home@1.1.0: - resolution: {integrity: sha512-bSTCKNZ193UM/+ZZoNDzICAEHcVywovkhsWCkZALjCvRXQ+zXTe/XATrrP4CpxkaP6YFhQJOpyRpH0P2U/woDA==} - dependencies: - which: 1.0.9 - winreg: 1.2.4 - dev: false - - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: true - - /foreground-child@1.5.6: - resolution: {integrity: sha512-3TOY+4TKV0Ml83PXJQY+JFQaHNV38lzQDIzzXYg1kWdBLenGgoZhAs0CKgzI31vi2pWEpQMq/Yi4bpKwCPkw7g==} - dependencies: - cross-spawn: 4.0.2 - signal-exit: 3.0.7 - dev: true - - /forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - dev: true - - /form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /fs-exists-cached@1.0.0: - resolution: {integrity: sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==} - dev: true - - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.4 - dev: false - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /function-loop@1.0.2: - resolution: {integrity: sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==} - dev: true - - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: false - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - dependencies: - assert-plus: 1.0.0 - dev: true - - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /glob@8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.0 - once: 1.4.0 - dev: false - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - - /har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - dev: true - - /har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - dev: true - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false - - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /hasha@3.0.0: - resolution: {integrity: sha512-w0Kz8lJFBoyaurBiNrIvxPqr/gJ6fOfSkpAPOepN3oECqGJag37xPbOv57izi/KP8auHgNYxn5fXtAb+1LsJ6w==} - engines: {node: '>=4'} - dependencies: - is-stream: 1.1.0 - dev: true - - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true - - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false - - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.17.0 - dev: true - - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - dependencies: - ms: 2.1.2 - dev: false - - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dependencies: - safer-buffer: 2.1.2 - dev: false - optional: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: false - - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: false - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: false - - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true - - /is-core-module@2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} - dependencies: - has: 1.0.3 - dev: true - - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: false - - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - requiresBuild: true - dev: true - optional: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: true - - /istanbul-lib-coverage@2.0.5: - resolution: {integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==} - engines: {node: '>=6'} - dev: true - - /istanbul-lib-hook@2.0.7: - resolution: {integrity: sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==} - engines: {node: '>=6'} - dependencies: - append-transform: 1.0.0 - dev: true - - /istanbul-lib-instrument@3.3.0: - resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} - engines: {node: '>=6'} - dependencies: - '@babel/generator': 7.18.13 - '@babel/parser': 7.18.13 - '@babel/template': 7.18.10 - '@babel/traverse': 7.18.13 - '@babel/types': 7.18.13 - istanbul-lib-coverage: 2.0.5 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report@2.0.8: - resolution: {integrity: sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==} - engines: {node: '>=6'} - dependencies: - istanbul-lib-coverage: 2.0.5 - make-dir: 2.1.0 - supports-color: 6.1.0 - dev: true - - /istanbul-lib-source-maps@3.0.6: - resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} - engines: {node: '>=6'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 2.0.5 - make-dir: 2.1.0 - rimraf: 2.7.1 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@2.2.7: - resolution: {integrity: sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==} - engines: {node: '>=6'} - dependencies: - html-escaper: 2.0.2 - dev: true - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - dev: true - - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true - - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - dev: true - - /jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - dev: true - - /lcov-parse@1.0.0: - resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} - hasBin: true - dev: true - - /load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.10 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: true - - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: true - - /lodash.flattendeep@4.4.0: - resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} - dev: true - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - - /log-driver@1.2.7: - resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==} - engines: {node: '>=0.8.6'} - dev: true - - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: false - - /lru-cache@7.14.0: - resolution: {integrity: sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==} - engines: {node: '>=12'} - dev: false - - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 5.7.2 - dev: true - - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - agentkeepalive: 4.2.1 - cacache: 16.1.3 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.14.0 - minipass: 3.3.4 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - - /merge-source-map@1.1.0: - resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} - dependencies: - source-map: 0.6.1 - dev: true - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - - /minimatch@5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimist@1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - dev: true - - /minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.4 - dev: false - - /minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.4 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: false - - /minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.4 - dev: false - - /minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.4 - dev: false - - /minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.4 - dev: false - - /minipass@2.9.0: - resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} - dependencies: - safe-buffer: 5.2.1 - yallist: 3.1.1 - dev: true - - /minipass@3.3.4: - resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: false - - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.4 - yallist: 4.0.0 - dev: false - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.6 - dev: true - - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /nan@2.14.1: - resolution: {integrity: sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==} - dev: false - - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false - - /nested-error-stacks@2.1.1: - resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - dev: true - - /node-gyp@9.1.0: - resolution: {integrity: sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==} - engines: {node: ^12.22 || ^14.13 || >=16} - hasBin: true - dependencies: - env-paths: 2.2.1 - glob: 7.1.6 - graceful-fs: 4.2.10 - make-fetch-happen: 10.2.1 - nopt: 5.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.3.7 - tar: 6.1.11 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - - /nodeunit@0.11.3: - resolution: {integrity: sha512-gDNxrDWpx07BxYNO/jn1UrGI1vNhDQZrIFphbHMcTCDc5mrrqQBWfQMXPHJ5WSgbFwD1D6bv4HOsqtTrPG03AA==} - deprecated: you are strongly encouraged to use other testing options - hasBin: true - dependencies: - ejs: 2.7.4 - tap: 12.7.0 - transitivePeerDependencies: - - supports-color - dev: true - - /nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: false - - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.1 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - dev: true - - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - dev: false - - /nyc@14.1.1: - resolution: {integrity: sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==} - engines: {node: '>=6'} - hasBin: true - dependencies: - archy: 1.0.0 - caching-transform: 3.0.2 - convert-source-map: 1.8.0 - cp-file: 6.2.0 - find-cache-dir: 2.1.0 - find-up: 3.0.0 - foreground-child: 1.5.6 - glob: 7.1.6 - istanbul-lib-coverage: 2.0.5 - istanbul-lib-hook: 2.0.7 - istanbul-lib-instrument: 3.3.0 - istanbul-lib-report: 2.0.8 - istanbul-lib-source-maps: 3.0.6 - istanbul-reports: 2.2.7 - js-yaml: 3.14.1 - make-dir: 2.1.0 - merge-source-map: 1.1.0 - resolve-from: 4.0.0 - rimraf: 2.7.1 - signal-exit: 3.0.7 - spawn-wrap: 1.4.3 - test-exclude: 5.2.3 - uuid: 3.4.0 - yargs: 13.3.2 - yargs-parser: 13.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - - /opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - dev: true - - /os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: true - - /own-or-env@1.0.2: - resolution: {integrity: sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==} - dependencies: - own-or: 1.0.0 - dev: true - - /own-or@1.0.0: - resolution: {integrity: sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==} - dev: true - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: false - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /package-hash@3.0.0: - resolution: {integrity: sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.10 - hasha: 3.0.0 - lodash.flattendeep: 4.4.0 - release-zalgo: 1.0.0 - dev: true - - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true - - /performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - dev: true - - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: true - - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true - - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - dev: true - - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - requiresBuild: true - dev: true - optional: true - - /promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dev: false - - /promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - dev: false - - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true - - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true - - /punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: true - - /punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - dev: true - - /qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - dev: true - - /read-pkg-up@4.0.0: - resolution: {integrity: sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - read-pkg: 3.0.0 - dev: true - - /read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: true - - /readable-stream@2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} - requiresBuild: true - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - optional: true - - /readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /release-zalgo@1.0.0: - resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} - engines: {node: '>=4'} - dependencies: - es6-error: 4.1.1 - dev: true - - /request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - dependencies: - aws-sign2: 0.7.0 - aws4: 1.11.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - dev: true - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true - - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.10.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: false - - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.1.6 - dev: true - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.1.6 - dev: false - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true - - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - - /semver@7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: false - - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: false - - /socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - socks: 2.7.0 - transitivePeerDependencies: - - supports-color - dev: false - - /socks@2.7.0: - resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - dependencies: - ip: 2.0.0 - smart-buffer: 4.2.0 - dev: false - - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /spawn-wrap@1.4.3: - resolution: {integrity: sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==} - dependencies: - foreground-child: 1.5.6 - mkdirp: 0.5.6 - os-homedir: 1.0.2 - rimraf: 2.7.1 - signal-exit: 3.0.7 - which: 1.3.1 - dev: true - - /spdx-correct@3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 - dev: true - - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 - dev: true - - /spdx-license-ids@3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} - dev: true - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - - /sshpk@1.17.0: - resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - dev: true - - /ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.4 - dev: false - - /stack-utils@1.0.5: - resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - dev: true - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - - /strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: true - - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - dependencies: - ansi-regex: 4.1.1 - dev: true - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - - /supports-color@6.1.0: - resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} - engines: {node: '>=6'} - dependencies: - has-flag: 3.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /tap-mocha-reporter@3.0.9: - resolution: {integrity: sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==} - hasBin: true - dependencies: - color-support: 1.1.3 - debug: 2.6.9 - diff: 1.4.0 - escape-string-regexp: 1.0.5 - glob: 7.1.6 - js-yaml: 3.14.1 - tap-parser: 5.4.0 - unicode-length: 1.0.3 - optionalDependencies: - readable-stream: 2.3.7 - transitivePeerDependencies: - - supports-color - dev: true - - /tap-parser@5.4.0: - resolution: {integrity: sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==} - hasBin: true - dependencies: - events-to-array: 1.1.2 - js-yaml: 3.14.1 - optionalDependencies: - readable-stream: 2.3.7 - dev: true - - /tap-parser@7.0.0: - resolution: {integrity: sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==} - hasBin: true - dependencies: - events-to-array: 1.1.2 - js-yaml: 3.14.1 - minipass: 2.9.0 - dev: true - - /tap@12.7.0: - resolution: {integrity: sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==} - engines: {node: '>=4'} - hasBin: true - dependencies: - bind-obj-methods: 2.0.2 - browser-process-hrtime: 1.0.0 - capture-stack-trace: 1.0.1 - clean-yaml-object: 0.1.0 - color-support: 1.1.3 - coveralls: 3.1.1 - domain-browser: 1.2.0 - esm: 3.2.25 - foreground-child: 1.5.6 - fs-exists-cached: 1.0.0 - function-loop: 1.0.2 - glob: 7.1.6 - isexe: 2.0.0 - js-yaml: 3.14.1 - minipass: 2.9.0 - mkdirp: 0.5.6 - nyc: 14.1.1 - opener: 1.5.2 - os-homedir: 1.0.2 - own-or: 1.0.0 - own-or-env: 1.0.2 - rimraf: 2.7.1 - signal-exit: 3.0.7 - source-map-support: 0.5.21 - stack-utils: 1.0.5 - tap-mocha-reporter: 3.0.9 - tap-parser: 7.0.0 - tmatch: 4.0.0 - trivial-deferred: 1.0.1 - ts-node: 8.10.2(typescript@3.9.10) - tsame: 2.0.1 - typescript: 3.9.10 - write-file-atomic: 2.4.3 - yapool: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /tar@6.1.11: - resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} - engines: {node: '>= 10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 3.3.4 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /test-exclude@5.2.3: - resolution: {integrity: sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==} - engines: {node: '>=6'} - dependencies: - glob: 7.1.6 - minimatch: 3.1.2 - read-pkg-up: 4.0.0 - require-main-filename: 2.0.0 - dev: true - - /tmatch@4.0.0: - resolution: {integrity: sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==} - dev: true - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - dependencies: - psl: 1.9.0 - punycode: 2.1.1 - dev: true - - /trivial-deferred@1.0.1: - resolution: {integrity: sha512-dagAKX7vaesNNAwOc9Np9C2mJ+7YopF4lk+jE2JML9ta4kZ91Y6UruJNH65bLRYoUROD8EY+Pmi44qQWwXR7sw==} - dev: true - - /ts-node@8.10.2(typescript@3.9.10): - resolution: {integrity: sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==} - engines: {node: '>=6.0.0'} - hasBin: true - peerDependencies: - typescript: '>=2.7' - dependencies: - arg: 4.1.3 - diff: 4.0.2 - make-error: 1.3.6 - source-map-support: 0.5.21 - typescript: 3.9.10 - yn: 3.1.1 - dev: true - - /tsame@2.0.1: - resolution: {integrity: sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==} - dev: true - - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - dev: true - - /typescript@3.9.10: - resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /unicode-length@1.0.3: - resolution: {integrity: sha512-rZKNhIqioUp7H49afr26tivLDCvUSqOXwmwEEnsCwnPX67S1CYbOL45Y5IP3K/XHN73/lg21HlrB8SNlYXKQTg==} - dependencies: - punycode: 1.4.1 - strip-ansi: 3.0.1 - dev: true - - /unique-filename@2.0.0: - resolution: {integrity: sha512-tpzoz2RpZ//6Zt4GPpOFTyrnfZuSvjIfe8lvx6Thp4yTQwJtAFwPlssEBE62VhGA2We5/COyNpcIu+OABu3/Yg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - unique-slug: 2.0.2 - dev: false - - /unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - dependencies: - imurmurhash: 0.1.4 - dev: false - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.1.1 - dev: true - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: true - - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 - dev: true - - /verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - dev: true - - /when@3.7.8: - resolution: {integrity: sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==} - dev: true - - /which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - dev: true - - /which@1.0.9: - resolution: {integrity: sha512-E87fdQ/eRJr9W1X4wTPejNy9zTW3FI2vpCZSJ/HAY+TkjKVC0TUm1jk6vn2Z7qay0DQy0+RBGdXxj+RmmiGZKQ==} - hasBin: true - dev: false - - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: false - - /winreg@1.2.4: - resolution: {integrity: sha512-IHpzORub7kYlb8A43Iig3reOvlcBJGX9gZ0WycHhghHtA65X0LYnMRuJs+aH1abVnMJztQkvQNlltnbPi5aGIA==} - dev: false - - /wrap-ansi@5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} - dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - dependencies: - graceful-fs: 4.2.10 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false - - /yapool@1.0.0: - resolution: {integrity: sha512-RONBZndo8Lo8pKPfORRxr2DIk2NZKIml654o4kaIu7RXVxQCKsAN6AqrcoZsI3h+2H5YO2mD/04Wy4LbAgd+Pg==} - dev: true - - /yargs-parser@13.1.2: - resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - - /yargs@13.3.2: - resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} - dependencies: - cliui: 5.0.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 13.1.2 - dev: true - - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true diff --git a/test/importClass-test.js b/test/importClass-test.js index b8507a3..1fc66d0 100644 --- a/test/importClass-test.js +++ b/test/importClass-test.js @@ -3,7 +3,6 @@ var java = require("../testHelpers").java; var nodeunit = require("nodeunit"); var util = require("util"); -var _ = require("lodash"); exports['Import Class'] = nodeunit.testCase({ tearDown: function (callback) { @@ -36,7 +35,7 @@ exports['Import Class'] = nodeunit.testCase({ test.strictEqual(TestEnum.foo.toStringSync(), "foo"); test.strictEqual(TestEnum.bar.toStringSync(), "bar"); - _.forEach(['name', 'arguments', 'caller'], function(prop) { + ['name', 'arguments', 'caller'].forEach(function(prop) { test.throws( function() { // The enum also defines 'name', 'caller', and 'attributes', but Javascript prevents us from using them, diff --git a/testAsyncOptions/testAllThreeSuffix.js b/testAsyncOptions/testAllThreeSuffix.js index 946e621..7f610ce 100644 --- a/testAsyncOptions/testAllThreeSuffix.js +++ b/testAsyncOptions/testAllThreeSuffix.js @@ -4,7 +4,6 @@ var java = require("../"); var assert = require("assert"); -var _ = require('lodash'); java.asyncOptions = { syncSuffix: "Sync", @@ -20,10 +19,10 @@ module.exports = { test.ok(arrayList); test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - test.ok(!_.isUndefined(arrayList.addSync), 'Expected `addSync` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.addAsync), 'Expected `addAsync` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.addPromise), 'Expected `addPromise` to be present, but it is NOT.'); - test.ok(_.isUndefined(arrayList.add), 'Expected `add` to NOT be present, but it is.'); + test.ok(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); + test.ok(typeof arrayList.addAsync !== 'undefined', 'Expected `addAsync` to be present, but it is NOT.'); + test.ok(typeof arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.'); + test.ok(typeof arrayList.add === 'undefined', 'Expected `add` to NOT be present, but it is.'); test.done(); }, @@ -43,12 +42,12 @@ module.exports = { var String = java.import("java.lang.String"); test.ok(String); - var api = _.functions(String); - test.ok(_.includes(api, 'formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); - test.ok(!_.includes(api, 'format'), 'Expected `format` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); + var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); + test.ok(api.includes('formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.'); + test.ok(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); + test.ok(!api.includes('format'), 'Expected `format` to NOT be present, but it is.'); + test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); test.done(); }, diff --git a/testAsyncOptions/testAsyncSuffixSyncDefault.js b/testAsyncOptions/testAsyncSuffixSyncDefault.js index 0e4bde6..784b54b 100644 --- a/testAsyncOptions/testAsyncSuffixSyncDefault.js +++ b/testAsyncOptions/testAsyncSuffixSyncDefault.js @@ -4,7 +4,6 @@ var java = require("../"); var assert = require("assert"); -var _ = require('lodash'); module.exports = { launch: function(test) { @@ -41,9 +40,9 @@ module.exports = { test.ok(arrayList); test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - test.ok(!_.isUndefined(arrayList.addAsync), 'Expected `addAsync` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.add), 'Expected `add` to be present, but it is NOT.'); - test.ok(_.isUndefined(arrayList.addPromise), 'Expected `addPromise` to NOT be present, but it is.'); + test.ok(typeof arrayList.addAsync !== 'undefined', 'Expected `addAsync` to be present, but it is NOT.'); + test.ok(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); + test.ok(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.'); test.done(); }, @@ -63,12 +62,12 @@ module.exports = { var String = java.import("java.lang.String"); test.ok(String); - var api = _.functions(String); - test.ok(_.includes(api, 'format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.'); - test.ok(!_.includes(api, 'formatSync'), 'Expected `formatSync` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); + var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); + test.ok(api.includes('formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.'); + test.ok(!api.includes('formatSync'), 'Expected `formatSync` to NOT be present, but it is.'); + test.ok(!api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); + test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); test.done(); }, diff --git a/testAsyncOptions/testClientBeforeError.js b/testAsyncOptions/testClientBeforeError.js index 6736fa1..cd3011a 100644 --- a/testAsyncOptions/testClientBeforeError.js +++ b/testAsyncOptions/testClientBeforeError.js @@ -1,6 +1,5 @@ // testClientBeforeError.js -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); @@ -22,7 +21,7 @@ module.exports = { java.registerClient(before); java.ensureJvm(function(err) { - test.ok(_.isObject(err)); + test.ok(err && typeof err === 'object'); test.ok(err instanceof Error); test.strictEqual(err.message, 'dummy error'); test.ok(!java.isJvmCreated()); diff --git a/testAsyncOptions/testClientBeforeSyncThrows.js b/testAsyncOptions/testClientBeforeSyncThrows.js index 1b98b60..8d5d4ba 100644 --- a/testAsyncOptions/testClientBeforeSyncThrows.js +++ b/testAsyncOptions/testClientBeforeSyncThrows.js @@ -1,6 +1,5 @@ // testClientBeforeSyncThrows.js -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); @@ -22,7 +21,7 @@ module.exports = { java.registerClient(before); java.ensureJvm(function(err) { - test.ok(_.isObject(err)); + test.ok(err && typeof err === 'object'); test.ok(err instanceof Error); test.strictEqual(err.message, 'dummy error'); test.ok(!java.isJvmCreated()); diff --git a/testAsyncOptions/testClientBeforeThrows.js b/testAsyncOptions/testClientBeforeThrows.js index ffcd8d9..79614aa 100644 --- a/testAsyncOptions/testClientBeforeThrows.js +++ b/testAsyncOptions/testClientBeforeThrows.js @@ -1,6 +1,5 @@ // testClientBeforeThrows.js -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); @@ -22,7 +21,7 @@ module.exports = { java.registerClient(before); java.ensureJvm(function(err) { - test.ok(_.isObject(err)); + test.ok(err && typeof err === 'object'); test.ok(err instanceof Error); test.strictEqual(err.message, 'dummy error'); test.ok(!java.isJvmCreated()); diff --git a/testAsyncOptions/testClientPBeforeError.js b/testAsyncOptions/testClientPBeforeError.js index cffed5a..33a02f2 100644 --- a/testAsyncOptions/testClientPBeforeError.js +++ b/testAsyncOptions/testClientPBeforeError.js @@ -1,6 +1,5 @@ // testClientPBeforeError.js -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); var when = require('when'); @@ -32,7 +31,7 @@ module.exports = { test.ok(false); }, function(err) { - test.ok(_.isObject(err)); + test.ok(err && typeof err === 'object'); test.ok(err instanceof Error); test.strictEqual(err.message, 'dummy error'); test.ok(!java.isJvmCreated()); diff --git a/testAsyncOptions/testClientPBeforeThrows.js b/testAsyncOptions/testClientPBeforeThrows.js index 219b92e..5d58dab 100644 --- a/testAsyncOptions/testClientPBeforeThrows.js +++ b/testAsyncOptions/testClientPBeforeThrows.js @@ -1,6 +1,5 @@ // testClientPBeforeThrows.js -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); var when = require('when'); @@ -32,7 +31,7 @@ module.exports = { test.ok(false); }, function(err) { - test.ok(_.isObject(err)); + test.ok(err && typeof err === 'object'); test.ok(err instanceof Error); test.strictEqual(err.message, 'dummy error'); test.ok(!java.isJvmCreated()); diff --git a/testAsyncOptions/testDefacto.js b/testAsyncOptions/testDefacto.js index e94e13b..314a8eb 100644 --- a/testAsyncOptions/testDefacto.js +++ b/testAsyncOptions/testDefacto.js @@ -2,7 +2,6 @@ // In the defacto case, the developer sets asyncOptions, but specifies the defacto standard behavior. -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); @@ -10,8 +9,8 @@ module.exports = { launch: function(test) { test.expect(9); - var api = _.functions(java); - test.ok(_.includes(api, 'isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); + var api = Object.keys(java).filter((key) => typeof java[key] === 'function'); + test.ok(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); test.ok(!java.isJvmCreated()); java.asyncOptions = { @@ -49,9 +48,9 @@ module.exports = { test.ok(arrayList); test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - test.ok(!_.isUndefined(arrayList.addSync), 'Expected `addSync` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.add), 'Expected `add` to be present, but it is NOT.'); - test.ok(_.isUndefined(arrayList.addPromise), 'Expected `addPromise` to NOT be present, but it is.'); + test.ok(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); + test.ok(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); + test.ok(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.'); test.done(); }, @@ -71,12 +70,12 @@ module.exports = { var String = java.import("java.lang.String"); test.ok(String); - var api = _.functions(String); - test.ok(_.includes(api, 'format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(!_.includes(api, 'formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); + var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); + test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); + test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); + test.ok(!api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); + test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); test.done(); }, diff --git a/testAsyncOptions/testDefactoPlusPromise.js b/testAsyncOptions/testDefactoPlusPromise.js index d6c3381..730c889 100644 --- a/testAsyncOptions/testDefactoPlusPromise.js +++ b/testAsyncOptions/testDefactoPlusPromise.js @@ -4,13 +4,12 @@ var java = require("../"); var assert = require("assert"); -var _ = require("lodash"); module.exports = { launch: function(test) { test.expect(7); - var api = _.functions(java); - test.ok(_.includes(api, 'isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); + var api = Object.keys(java).filter((key) => typeof java[key] === 'function'); + test.ok(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); test.ok(!java.isJvmCreated()); java.asyncOptions = { @@ -46,9 +45,9 @@ module.exports = { test.ok(arrayList); test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - test.ok(!_.isUndefined(arrayList.addSync), 'Expected `addSync` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.add), 'Expected `add` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.addPromise), 'Expected `addPromise` to be present, but it is NOT.'); + test.ok(arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); + test.ok(arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); + test.ok(arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.'); test.done(); }, @@ -68,12 +67,12 @@ module.exports = { var String = java.import("java.lang.String"); test.ok(String); - var api = _.functions(String); - test.ok(_.includes(api, 'format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); - test.ok(!_.includes(api, 'formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); + var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); + test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); + test.ok(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); + test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); + test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); test.done(); }, diff --git a/testAsyncOptions/testDefault.js b/testAsyncOptions/testDefault.js index 4bdc8e7..e58a773 100644 --- a/testAsyncOptions/testDefault.js +++ b/testAsyncOptions/testDefault.js @@ -3,7 +3,6 @@ // In the default case, the developer does not set asyncOptions. // We should get the defacto standard behavior. -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); @@ -16,9 +15,9 @@ module.exports = { test.ok(arrayList); test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - test.ok(!_.isUndefined(arrayList.addSync), 'Expected `addSync` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.add), 'Expected `add` to be present, but it is NOT.'); - test.ok(_.isUndefined(arrayList.addPromise), 'Expected `addPromise` to NOT be present, but it is.'); + test.ok(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); + test.ok(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); + test.ok(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.'); test.done(); }, @@ -38,12 +37,12 @@ module.exports = { var String = java.import("java.lang.String"); test.ok(String); - var api = _.functions(String); - test.ok(_.includes(api, 'format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(!_.includes(api, 'formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); + var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); + test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); + test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); + test.ok(!api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); + test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); test.done(); }, diff --git a/testAsyncOptions/testInvalidLaunch.js b/testAsyncOptions/testInvalidLaunch.js index 340212e..21c1bf3 100644 --- a/testAsyncOptions/testInvalidLaunch.js +++ b/testAsyncOptions/testInvalidLaunch.js @@ -1,6 +1,5 @@ // testInvalidLaunch.js -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); diff --git a/testAsyncOptions/testNoAsync.js b/testAsyncOptions/testNoAsync.js index 4f86a68..47f596c 100644 --- a/testAsyncOptions/testNoAsync.js +++ b/testAsyncOptions/testNoAsync.js @@ -4,14 +4,13 @@ var java = require("../"); var assert = require("assert"); -var _ = require('lodash'); var when = require('when'); module.exports = { launch: function(test) { test.expect(7); - var api = _.functions(java); - test.ok(_.includes(api, 'isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); + var api = Object.keys(java).filter((key) => typeof java[key] === 'function'); + test.ok(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); test.ok(!java.isJvmCreated()); java.asyncOptions = { @@ -52,10 +51,10 @@ module.exports = { test.ok(arrayList); test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - test.ok(!_.isUndefined(arrayList.addSync), 'Expected `addSync` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.addPromise), 'Expected `addPromise` to be present, but it is NOT.'); - test.ok(_.isUndefined(arrayList.add), 'Expected `add` to NOT be present, but it is.'); - test.ok(_.isUndefined(arrayList.addAsync), 'Expected `addAsync` to NOT be present, but it is.'); + test.ok(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); + test.ok(typeof arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.'); + test.ok(typeof arrayList.add === 'undefined', 'Expected `add` to NOT be present, but it is.'); + test.ok(typeof arrayList.addAsync === 'undefined', 'Expected `addAsync` to NOT be present, but it is.'); test.done(); }, @@ -75,12 +74,12 @@ module.exports = { var String = java.import("java.lang.String"); test.ok(String); - var api = _.functions(String); - test.ok(_.includes(api, 'formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); - test.ok(!_.includes(api, 'format'), 'Expected `format` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); + var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); + test.ok(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); + test.ok(!api.includes('format'), 'Expected `format` to NOT be present, but it is.'); + test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); + test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); test.done(); }, diff --git a/testAsyncOptions/testSyncDefaultPlusPromise.js b/testAsyncOptions/testSyncDefaultPlusPromise.js index ebd3062..113be49 100644 --- a/testAsyncOptions/testSyncDefaultPlusPromise.js +++ b/testAsyncOptions/testSyncDefaultPlusPromise.js @@ -5,7 +5,6 @@ var java = require("../"); var assert = require("assert"); -var _ = require('lodash'); java.asyncOptions = { syncSuffix: "", @@ -20,10 +19,10 @@ module.exports = { test.ok(arrayList); test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - test.ok(!_.isUndefined(arrayList.add), 'Expected `add` to be present, but it is NOT.'); - test.ok(!_.isUndefined(arrayList.addP), 'Expected `addP` to be present, but it is NOT.'); - test.ok(_.isUndefined(arrayList.addSync), 'Expected `addSync` to NOT be present, but it is.'); - test.ok(_.isUndefined(arrayList.addAsync), 'Expected `addAsync` to NOT be present, but it is.'); + test.ok(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); + test.ok(typeof arrayList.addP !== 'undefined', 'Expected `addP` to be present, but it is NOT.'); + test.ok(typeof arrayList.addSync === 'undefined', 'Expected `addSync` to NOT be present, but it is.'); + test.ok(typeof arrayList.addAsync === 'undefined', 'Expected `addAsync` to NOT be present, but it is.'); test.done(); }, @@ -44,12 +43,12 @@ module.exports = { var String = java.import("java.lang.String"); test.ok(String); - var api = _.functions(String); - test.ok(_.includes(api, 'format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(_.includes(api, 'formatP'), 'Expected `formatP` to be present, but it is NOT.'); - test.ok(!_.includes(api, 'formatSync'), 'Expected `formatSync` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!_.includes(api, 'formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); + var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); + test.ok(api.includes('formatP'), 'Expected `formatP` to be present, but it is NOT.'); + test.ok(!api.includes('formatSync'), 'Expected `formatSync` to NOT be present, but it is.'); + test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); + test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); test.done(); }, diff --git a/testAsyncOptions/testUnusableMethodName.js b/testAsyncOptions/testUnusableMethodName.js index a25e3df..1da67e4 100644 --- a/testAsyncOptions/testUnusableMethodName.js +++ b/testAsyncOptions/testUnusableMethodName.js @@ -7,7 +7,6 @@ // node-java attempts to set assign the static method to the .name property of constructor-like function. // As a workaround, node-java will append the `ifReadOnlySuffix` to the property name. -var _ = require('lodash'); var java = require("../"); var nodeunit = require("nodeunit"); diff --git a/testIntegration/poi/poi-3.9-20121203.jar b/testIntegration/poi/poi-3.9-20121203.jar index 0f462880ea30349656038eca3bc94320efef0179..c5d731b09835acd9ced33f5fd0e66d55f462b5b7 100644 GIT binary patch delta 199 zcmdnlRkXCLXv4hz&GY*YaWyB++MYCvvF}m)#~P;XA8VM)Y}zw+GH=h=$s#m$d$k{{ z=-Kv((riG?zI~!JNA|bve+4-&W^X@V%h~p6dsqRNzRmWwHC)&Cw8v#~12GQ}^8zv7 z_P9*`Bkb+Uh5SG)uwA)O@Re&j-*&<6eA|WmySK+V3A@C#FJ2(LeenX3GjZ(&|3!dU wbbG;nG25xz*G&=U7Hi+NN__jSRT7+@+mC#fsNLW0v{@2}rM5e5mi~Sb02Q5C3;+NC delta 239 zcmZ45RkX9KXv4gIM&8Zy`VVn2@-`>T+MY0rvF{NhZ~MC%rtR-)n9FQ{?3A6%+f#P3 z2u)?=-CpL$DtZur|)eh~o3gjj@~ From 85ddb6354647f3eec61f11d93b8e9177183e7d42 Mon Sep 17 00:00:00 2001 From: Marco Knol Date: Wed, 23 Apr 2025 15:19:27 +0200 Subject: [PATCH 26/47] feat: enable support for node v22 (#607) * feat: enable support for node v22 * refactor: fix indentations * feat: add node version 22 to unit-test strategy matrix * chore: downgrade chalk and other packages so it should work for all specified node versions --------- Co-authored-by: Marco Knol --- .github/workflows/master.yml | 2 +- .github/workflows/pull-requests.yml | 2 +- binding.gyp | 2 +- package-lock.json | 1700 ++++++++++++++++----------- package.json | 12 +- src/javaObject.cpp | 2 +- src/utils.cpp | 3 +- 7 files changed, 1033 insertions(+), 690 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 016bbb1..35faebd 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - nodeVersion: [ 16, 18, 20 ] + nodeVersion: [ 16, 18, 20, 22 ] jdkVersion: [ openjdk9, openjdk10, openjdk11, openjdk21 ] steps: - name: Checkout source code diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml index c5fd0d6..a7fdcfe 100644 --- a/.github/workflows/pull-requests.yml +++ b/.github/workflows/pull-requests.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - nodeVersion: [ 16, 18, 20 ] + nodeVersion: [ 16, 18, 20, 22 ] jdkVersion: [ openjdk9, openjdk10, openjdk11, openjdk21 ] steps: - name: Checkout source code diff --git a/binding.gyp b/binding.gyp index 0611750..5629c01 100644 --- a/binding.gyp +++ b/binding.gyp @@ -71,7 +71,7 @@ '<(javahome)/include/solaris', ], 'libraries': [ - '-L<(javalibdir)', + '-L<(javalibdir)', '-Wl,-rpath,<(javalibdir)', '-ljvm' ] diff --git a/package-lock.json b/package-lock.json index 497e599..a786f54 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,15 +10,15 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "async": "^3.2.5", + "async": "^3.2.6", "find-java-home": "^2.0.0", - "glob": "^10.3.10", - "nan": "^2.18.0", - "node-gyp": "^10.0.1" + "glob": "^10.4.5", + "nan": "^2.22.2", + "node-gyp": "^10.3.1" }, "devDependencies": { - "chalk": "2.4.1", - "nodeunit": "0.11.3", + "chalk": "2.4.2", + "nodeunit": "^0.11.3", "when": "3.7.8" }, "engines": { @@ -26,144 +26,66 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/types": "^7.27.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -172,34 +94,33 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -207,14 +128,14 @@ } }, "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -224,6 +145,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -237,9 +159,10 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -251,6 +174,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -261,12 +185,14 @@ "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -283,6 +209,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -297,6 +224,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -310,80 +238,85 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@npmcli/agent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", - "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "license": "ISC", "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.3" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -395,6 +328,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -404,17 +338,16 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dependencies": { - "debug": "^4.3.4" - }, + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", "engines": { "node": ">= 14" } @@ -423,6 +356,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -432,10 +366,11 @@ } }, "node_modules/ajv": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", - "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -451,6 +386,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -460,6 +396,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -472,6 +409,7 @@ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", "dev": true, + "license": "MIT", "dependencies": { "default-require-extensions": "^2.0.0" }, @@ -482,29 +420,33 @@ "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true, + "license": "MIT" }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } @@ -512,37 +454,42 @@ "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true, + "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.0", @@ -552,23 +499,26 @@ "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/bind-obj-methods": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz", - "integrity": "sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw==", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.2.tgz", + "integrity": "sha512-bUkRdEOppT1Xg/jG0+bp0JSjUD9U0r7skxb/42WeBUjfBpW6COQTIgQmKX5J2Z3aMXcORKgN2N+d7IQwTK3pag==", + "dev": true, + "license": "ISC" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -578,25 +528,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" }, "node_modules/cacache": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.0.tgz", - "integrity": "sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==", + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -609,17 +562,16 @@ } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -629,6 +581,7 @@ "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", "dev": true, + "license": "MIT", "dependencies": { "hasha": "^3.0.0", "make-dir": "^2.0.0", @@ -644,30 +597,37 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", + "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -677,10 +637,34 @@ "node": ">=4" } }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { "node": ">=10" } @@ -689,6 +673,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", "engines": { "node": ">=6" } @@ -696,8 +681,9 @@ "node_modules/clean-yaml-object": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "integrity": "sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -707,17 +693,42 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", "wrap-ansi": "^5.1.0" } }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -725,14 +736,16 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, + "license": "ISC", "bin": { "color-support": "bin.js" } @@ -742,6 +755,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -752,41 +766,38 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" }, "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "license": "MIT" }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT", + "optional": true }, "node_modules/coveralls": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "js-yaml": "^3.13.1", "lcov-parse": "^1.0.0", @@ -806,6 +817,7 @@ "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "make-dir": "^2.0.0", @@ -820,8 +832,9 @@ "node_modules/cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", "dev": true, + "license": "MIT", "dependencies": { "lru-cache": "^4.0.1", "which": "^1.2.9" @@ -832,6 +845,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -842,8 +856,9 @@ "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -870,8 +885,9 @@ "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -879,8 +895,9 @@ "node_modules/default-require-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "integrity": "sha512-B0n2zDIXpzLzKeoEozorDSa1cHc1t0NjmxP0zuAxbizNU2MBqYJJKYXrrFdKuQliojXynrxgd7l4ahfg/+aA5g==", "dev": true, + "license": "MIT", "dependencies": { "strip-bom": "^3.0.0" }, @@ -891,8 +908,9 @@ "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -911,6 +929,7 @@ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4", "npm": ">=1.2" @@ -919,13 +938,15 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -937,6 +958,7 @@ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "engines": { "node": ">=0.10.0" } @@ -945,12 +967,14 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -967,13 +991,15 @@ "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT" }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -982,15 +1008,17 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, "node_modules/esm": { @@ -998,6 +1026,7 @@ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1007,6 +1036,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1018,8 +1048,9 @@ "node_modules/events-to-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", - "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", - "dev": true + "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", + "dev": true, + "license": "ISC" }, "node_modules/exponential-backoff": { "version": "3.1.1", @@ -1030,34 +1061,39 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -1081,6 +1117,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -1091,8 +1128,9 @@ "node_modules/foreground-child": { "version": "1.5.6", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "integrity": "sha512-3TOY+4TKV0Ml83PXJQY+JFQaHNV38lzQDIzzXYg1kWdBLenGgoZhAs0CKgzI31vi2pWEpQMq/Yi4bpKwCPkw7g==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^4", "signal-exit": "^3.0.0" @@ -1101,8 +1139,9 @@ "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } @@ -1112,6 +1151,7 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1124,13 +1164,15 @@ "node_modules/fs-exists-cached": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", - "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", - "dev": true + "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==", + "dev": true, + "license": "ISC" }, "node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -1139,9 +1181,10 @@ } }, "node_modules/fs-minipass/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -1149,20 +1192,33 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function-loop": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.2.tgz", "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -1170,29 +1226,29 @@ "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -1201,14 +1257,16 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/glob/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1234,9 +1292,10 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1248,9 +1307,10 @@ } }, "node_modules/glob/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -1285,21 +1345,23 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true, + "license": "ISC", "engines": { "node": ">=4" } @@ -1310,6 +1372,7 @@ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "deprecated": "this library is no longer supported", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -1321,8 +1384,9 @@ "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -1330,8 +1394,9 @@ "node_modules/hasha": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", - "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "integrity": "sha512-w0Kz8lJFBoyaurBiNrIvxPqr/gJ6fOfSkpAPOepN3oECqGJag37xPbOv57izi/KP8auHgNYxn5fXtAb+1LsJ6w==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^1.0.1" }, @@ -1339,27 +1404,44 @@ "node": ">=4" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -1371,8 +1453,9 @@ "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -1384,11 +1467,12 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -1399,6 +1483,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -1419,6 +1504,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -1426,8 +1512,10 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1437,24 +1525,63 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -1462,13 +1589,15 @@ "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT" }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1476,14 +1605,16 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/isexe": { @@ -1494,14 +1625,16 @@ "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" }, "node_modules/istanbul-lib-coverage": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=6" } @@ -1511,6 +1644,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "append-transform": "^1.0.0" }, @@ -1523,6 +1657,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/generator": "^7.4.0", "@babel/parser": "^7.4.3", @@ -1541,6 +1676,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1550,6 +1686,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^2.0.5", "make-dir": "^2.1.0", @@ -1559,23 +1696,12 @@ "node": ">=6" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^2.0.5", @@ -1587,20 +1713,12 @@ "node": ">=6" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/istanbul-reports": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0" }, @@ -1609,15 +1727,13 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -1629,13 +1745,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1647,44 +1765,57 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -1695,17 +1826,12 @@ "node": ">=0.6.0" } }, - "node_modules/jsprim/node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "node_modules/lcov-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", - "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", + "integrity": "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "lcov-parse": "bin/cli.js" } @@ -1713,8 +1839,9 @@ "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -1728,8 +1855,9 @@ "node_modules/load-json-file/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -1739,6 +1867,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -1750,14 +1879,16 @@ "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true, + "license": "MIT" }, "node_modules/log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", "dev": true, + "license": "ISC", "engines": { "node": ">=0.8.6" } @@ -1767,6 +1898,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, + "license": "ISC", "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -1777,6 +1909,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -1790,6 +1923,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -1798,12 +1932,14 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/make-fetch-happen": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", - "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "license": "ISC", "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", @@ -1814,6 +1950,7 @@ "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", + "proc-log": "^4.2.0", "promise-retry": "^2.0.1", "ssri": "^10.0.0" }, @@ -1822,9 +1959,10 @@ } }, "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -1834,35 +1972,29 @@ "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "^0.6.1" } }, - "node_modules/merge-source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -1873,6 +2005,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1885,6 +2018,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1894,42 +2028,38 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "dev": true, + "license": "ISC", "dependencies": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">= 8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/minipass-collect/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -1943,9 +2073,10 @@ } }, "node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -1954,6 +2085,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -1965,6 +2097,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1975,12 +2108,14 @@ "node_modules/minipass-flush/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -1992,6 +2127,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2002,12 +2138,14 @@ "node_modules/minipass-pipeline/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -2019,6 +2157,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2029,18 +2168,21 @@ "node_modules/minipass-sized/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/minipass/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -2053,6 +2195,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2063,15 +2206,17 @@ "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" @@ -2083,28 +2228,32 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", + "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", + "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", + "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", + "dev": true, + "license": "MIT" }, "node_modules/node-gyp": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", - "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", + "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==", + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -2112,9 +2261,9 @@ "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5", - "tar": "^6.1.2", + "tar": "^6.2.1", "which": "^4.0.0" }, "bin": { @@ -2124,15 +2273,11 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/node-gyp/node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/node-gyp/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", "engines": { "node": ">=16" } @@ -2141,6 +2286,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -2157,6 +2303,7 @@ "integrity": "sha512-gDNxrDWpx07BxYNO/jn1UrGI1vNhDQZrIFphbHMcTCDc5mrrqQBWfQMXPHJ5WSgbFwD1D6bv4HOsqtTrPG03AA==", "deprecated": "you are strongly encouraged to use other testing options", "dev": true, + "license": "MIT", "dependencies": { "ejs": "^2.5.2", "tap": "^12.0.1" @@ -2166,9 +2313,10 @@ } }, "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "license": "ISC", "dependencies": { "abbrev": "^2.0.0" }, @@ -2184,6 +2332,7 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -2196,6 +2345,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -2205,6 +2355,7 @@ "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", "dev": true, + "license": "ISC", "dependencies": { "archy": "^1.0.0", "caching-transform": "^3.0.2", @@ -2243,7 +2394,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2264,6 +2417,7 @@ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } @@ -2271,17 +2425,19 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, + "license": "(WTFPL OR MIT)", "bin": { "opener": "bin/opener-bin.js" } @@ -2289,8 +2445,9 @@ "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2298,14 +2455,16 @@ "node_modules/own-or": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", - "integrity": "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=", - "dev": true + "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==", + "dev": true, + "license": "ISC" }, "node_modules/own-or-env": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.1.tgz", - "integrity": "sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz", + "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==", "dev": true, + "license": "ISC", "dependencies": { "own-or": "^1.0.0" } @@ -2315,6 +2474,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2330,6 +2490,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -2341,6 +2502,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -2356,6 +2518,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2365,6 +2528,7 @@ "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", "dev": true, + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^3.0.0", @@ -2375,11 +2539,18 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, + "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -2391,8 +2562,9 @@ "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -2400,8 +2572,9 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2418,35 +2591,36 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "engines": { - "node": "14 || >=16.14" - } + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -2456,6 +2630,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -2466,8 +2641,9 @@ "node_modules/path-type/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -2475,14 +2651,23 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2492,6 +2677,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, @@ -2500,9 +2686,10 @@ } }, "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -2512,12 +2699,14 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -2529,20 +2718,29 @@ "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true, + "license": "ISC" }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2552,6 +2750,7 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } @@ -2559,8 +2758,9 @@ "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, + "license": "MIT", "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", @@ -2575,6 +2775,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^3.0.0", "read-pkg": "^3.0.0" @@ -2584,10 +2785,11 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "core-util-is": "~1.0.0", @@ -2604,13 +2806,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, + "license": "ISC", "dependencies": { "es6-error": "^4.0.1" }, @@ -2624,6 +2828,7 @@ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, + "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2653,8 +2858,9 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2663,15 +2869,25 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { - "path-parse": "^1.0.6" + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2682,6 +2898,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -2690,6 +2907,7 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -2698,7 +2916,9 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2710,7 +2930,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2744,7 +2966,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -2753,12 +2976,10 @@ "devOptional": true }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2766,27 +2987,12 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -2808,70 +3014,77 @@ } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "license": "MIT", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" } }, - "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { + "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spawn-wrap": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz", "integrity": "sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^1.5.6", "mkdirp": "^0.5.0", @@ -2886,6 +3099,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2894,48 +3108,54 @@ } }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dev": true, + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -2957,9 +3177,10 @@ } }, "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -2968,20 +3189,25 @@ } }, "node_modules/ssri/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/string_decoder": { @@ -2989,6 +3215,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safe-buffer": "~5.1.0" @@ -2999,6 +3226,7 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/string-width": { @@ -3006,6 +3234,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -3020,6 +3249,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3032,12 +3262,14 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -3046,6 +3278,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3053,11 +3286,22 @@ "node": ">=8" } }, - "node_modules/strip-ansi": { + "node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -3065,11 +3309,25 @@ "node": ">=6" } }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3078,33 +3336,49 @@ } }, "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/tap": { @@ -3112,6 +3386,7 @@ "resolved": "https://registry.npmjs.org/tap/-/tap-12.7.0.tgz", "integrity": "sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==", "dev": true, + "license": "ISC", "dependencies": { "bind-obj-methods": "^2.0.0", "browser-process-hrtime": "^1.0.0", @@ -3160,6 +3435,7 @@ "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz", "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==", "dev": true, + "license": "ISC", "dependencies": { "color-support": "^1.1.0", "debug": "^2.1.3", @@ -3182,15 +3458,28 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/tap-mocha-reporter/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/tap-mocha-reporter/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3209,14 +3498,16 @@ "node_modules/tap-mocha-reporter/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" }, "node_modules/tap-mocha-reporter/node_modules/tap-parser": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", "dev": true, + "license": "MIT", "dependencies": { "events-to-array": "^1.0.1", "js-yaml": "^3.2.7" @@ -3233,6 +3524,7 @@ "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz", "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==", "dev": true, + "license": "MIT", "dependencies": { "events-to-array": "^1.0.1", "js-yaml": "^3.2.7", @@ -3246,7 +3538,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3263,9 +3557,10 @@ } }, "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -3282,6 +3577,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3293,6 +3589,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3304,6 +3601,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", "engines": { "node": ">=8" } @@ -3312,6 +3610,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -3322,13 +3621,15 @@ "node_modules/tar/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/test-exclude": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3", "minimatch": "^3.0.4", @@ -3343,7 +3644,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3363,22 +3666,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", "integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true, - "engines": { - "node": ">=4" - } + "license": "ISC" }, "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -3388,16 +3684,21 @@ } }, "node_modules/trivial-deferred": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", - "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.1.2.tgz", + "integrity": "sha512-vDPiDBC3hyP6O4JrJYMImW3nl3c03Tsj9fEXc7Qc/XKa1O7gf5ZtFfIR/E0dun9SnDHdwjna1Z2rSzYgqpxh/g==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 8" + } }, "node_modules/ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", "dev": true, + "license": "MIT", "dependencies": { "arg": "^4.1.0", "diff": "^4.0.1", @@ -3423,6 +3724,7 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -3431,13 +3733,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.1.tgz", "integrity": "sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -3448,14 +3752,16 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" }, "node_modules/typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3467,44 +3773,26 @@ "node_modules/unicode-length": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz", - "integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=", + "integrity": "sha512-rZKNhIqioUp7H49afr26tivLDCvUSqOXwmwEEnsCwnPX67S1CYbOL45Y5IP3K/XHN73/lg21HlrB8SNlYXKQTg==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^1.3.2", "strip-ansi": "^3.0.1" } }, - "node_modules/unicode-length/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/unicode-length/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/unicode-length/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -3516,6 +3804,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -3524,10 +3813,11 @@ } }, "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -3535,8 +3825,9 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/uuid": { @@ -3545,6 +3836,7 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, + "license": "MIT", "bin": { "uuid": "bin/uuid" } @@ -3554,6 +3846,7 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -3562,17 +3855,25 @@ "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT" + }, "node_modules/when": { "version": "3.7.8", "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", @@ -3588,10 +3889,11 @@ } }, "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" }, "node_modules/winreg": { "version": "1.2.4", @@ -3603,6 +3905,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -3617,6 +3920,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3633,6 +3937,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3647,6 +3952,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3657,17 +3963,20 @@ "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -3676,6 +3985,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3689,6 +3999,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3696,17 +4007,42 @@ "node": ">=8" } }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -3717,25 +4053,29 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "license": "ISC" }, "node_modules/yapool": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", - "integrity": "sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=", - "dev": true + "integrity": "sha512-RONBZndo8Lo8pKPfORRxr2DIk2NZKIml654o4kaIu7RXVxQCKsAN6AqrcoZsI3h+2H5YO2mD/04Wy4LbAgd+Pg==", + "dev": true, + "license": "ISC" }, "node_modules/yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -3754,6 +4094,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -3764,6 +4105,7 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } diff --git a/package.json b/package.json index e096d87..f6308b8 100644 --- a/package.json +++ b/package.json @@ -26,15 +26,15 @@ "url": "https://github.com/joeferner/node-java.git" }, "dependencies": { - "async": "^3.2.5", + "async": "^3.2.6", "find-java-home": "^2.0.0", - "glob": "^10.3.10", - "nan": "^2.18.0", - "node-gyp": "^10.0.1" + "glob": "^10.4.5", + "nan": "^2.22.2", + "node-gyp": "^10.3.1" }, "devDependencies": { - "chalk": "2.4.1", - "nodeunit": "0.11.3", + "chalk": "2.4.2", + "nodeunit": "^0.11.3", "when": "3.7.8" }, "scripts": { diff --git a/src/javaObject.cpp b/src/javaObject.cpp index 0d67aa8..338a86f 100644 --- a/src/javaObject.cpp +++ b/src/javaObject.cpp @@ -242,7 +242,7 @@ NAN_GETTER(JavaObject::fieldGetter) { jmethodID array_getLength = env->GetStaticMethodID(arrayClass, "getLength", "(Ljava/lang/Object;)I"); jint arrayLength = env->CallStaticIntMethod(arrayClass, array_getLength, self->m_obj); assertNoException(env); - info.GetReturnValue().Set(arrayLength); + info.GetReturnValue().Set(Nan::New(static_cast(arrayLength))); return; } } diff --git a/src/utils.cpp b/src/utils.cpp index 780a291..067511f 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -728,7 +728,8 @@ v8::Local javaToV8(Java* java, JNIEnv* env, jobject obj, DynamicProxy jmethodID integer_intValue = env->GetMethodID(integerClazz, "intValue", "()I"); jint result = env->CallIntMethod(obj, integer_intValue); checkJavaException(env); - return Nan::New(result); + // <-- use the Int32 factory, not the generic Integer one + return Nan::New(static_cast(result)); } case TYPE_SHORT: { From 3f998759ccd8298d9d018f86f817028cd6929eeb Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Thu, 1 May 2025 11:31:15 +0000 Subject: [PATCH 27/47] add .devcontainer --- .devcontainer/Dockerfile | 4 ++++ .devcontainer/devcontainer.json | 16 ++++++++++++++++ .gitattributes | 2 ++ 3 files changed, 22 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..cb144c8 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,4 @@ +FROM mcr.microsoft.com/devcontainers/javascript-node:22 + +RUN apt-get update +RUN apt-get install -y openjdk-17-jdk diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..031ae06 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,16 @@ +{ + "build": { + "dockerfile": "Dockerfile" + }, + "runArgs": [], + "customizations": { + "vscode": { + "extensions": [ + "streetsidesoftware.code-spell-checker", + "bierner.markdown-emoji", + "smulyono.reveal", + "ms-azuretools.vscode-docker" + ] + } + } +} \ No newline at end of file diff --git a/.gitattributes b/.gitattributes index 12b7161..424e53c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,3 +7,5 @@ *.jpg -text *.jpeg -text *.ico -text +*.jar -text +*.class -text From 250bc539c607b78f9ac633e811385f7a874711c9 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Thu, 1 May 2025 11:36:19 +0000 Subject: [PATCH 28/47] v0.15.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a786f54..ec4743c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "java", - "version": "0.14.0", + "version": "0.15.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "java", - "version": "0.14.0", + "version": "0.15.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index f6308b8..a5807d0 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "jvm", "bridge" ], - "version": "0.14.0", + "version": "0.15.0", "engines": { "node": ">=7.0.0" }, From c83670a597a8c2f207dcc792754ee751d0650028 Mon Sep 17 00:00:00 2001 From: jjuzna Date: Sat, 17 May 2025 21:11:51 +0200 Subject: [PATCH 29/47] Added stop() method to java object. (#555) * Added stop() method to java object. It breaks the internal indefinite loop and allows Node process to quit without SIGTERM. Solves bug #539 - The process refuses to quit. * Moved start of default loop on first Java instance creation. --------- Co-authored-by: jjuzna --- src/java.cpp | 15 ++++++++++++++- src/java.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/java.cpp b/src/java.cpp index fb5cfbd..990f5a9 100644 --- a/src/java.cpp +++ b/src/java.cpp @@ -22,6 +22,7 @@ #endif threadId v8ThreadId; +bool isDefaultLoopRunning = false; std::queue queue_dynamicProxyJsCallData; uv_mutex_t uvMutex_dynamicProxyJsCall; @@ -78,9 +79,9 @@ void uvAsyncCb_dynamicProxyJsCall(uv_async_t *handle) { Nan::HandleScope scope; v8ThreadId = my_getThreadId(); + isDefaultLoopRunning = false; //init as false uv_mutex_init(&uvMutex_dynamicProxyJsCall); - uv_async_init(uv_default_loop(), &uvAsync_dynamicProxyJsCall, uvAsyncCb_dynamicProxyJsCall); v8::Local t = Nan::New(New); s_ct.Reset(t); @@ -106,6 +107,7 @@ void uvAsyncCb_dynamicProxyJsCall(uv_async_t *handle) { Nan::SetPrototypeMethod(t, "getStaticFieldValue", getStaticFieldValue); Nan::SetPrototypeMethod(t, "setStaticFieldValue", setStaticFieldValue); Nan::SetPrototypeMethod(t, "instanceOf", instanceOf); + Nan::SetPrototypeMethod(t, "stop", stop); Nan::Set(target, Nan::New("Java").ToLocalChecked(), Nan::GetFunction(t).ToLocalChecked()); @@ -115,6 +117,11 @@ void uvAsyncCb_dynamicProxyJsCall(uv_async_t *handle) { NAN_METHOD(Java::New) { Nan::HandleScope scope; + if (!isDefaultLoopRunning) { + uv_async_init(uv_default_loop(), &uvAsync_dynamicProxyJsCall, uvAsyncCb_dynamicProxyJsCall); + isDefaultLoopRunning = true; + } + Java *self = new Java(); self->Wrap(info.This()); @@ -1239,6 +1246,12 @@ NAN_METHOD(Java::instanceOf) { info.GetReturnValue().Set(Nan::New(res)); } +NAN_METHOD(Java::stop) { + if (isDefaultLoopRunning) { + uv_close((uv_handle_t *)&uvAsync_dynamicProxyJsCall, NULL); + } +} + template std::string to_string(T value) { std::ostringstream os; diff --git a/src/java.h b/src/java.h index 7f03657..f3a0bc9 100644 --- a/src/java.h +++ b/src/java.h @@ -56,6 +56,7 @@ class Java : public Nan::ObjectWrap { static NAN_METHOD(getStaticFieldValue); static NAN_METHOD(setStaticFieldValue); static NAN_METHOD(instanceOf); + static NAN_METHOD(stop); static NAN_GETTER(AccessorProhibitsOverwritingGetter); static NAN_SETTER(AccessorProhibitsOverwritingSetter); v8::Local ensureJvm(); From db8ef0383aad1a779fd21dbc1006143e906ab02c Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Sat, 17 May 2025 19:29:17 +0000 Subject: [PATCH 30/47] update LICENSE year --- .gitignore | 1 - .vscode/settings.json | 5 +++++ LICENSE | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index 92159f5..219e043 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,5 @@ node-java.cbp *.iml *.kdev4 */.kdev_include_paths -.vscode CMakeLists.txt cmake-build-debug/ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d531f16 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "Ferner" + ] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE index cbe71a9..3e23b3e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2023 Joe Ferner +Copyright (c) 2025 Joe Ferner Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the From 2cb74c7b1f37a3519ba07144cb9e4a77dca8dd02 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Sat, 17 May 2025 19:50:46 +0000 Subject: [PATCH 31/47] switch to vitest --- .devcontainer/Dockerfile | 2 +- .devcontainer/devcontainer.json | 3 +- .github/workflows/master.yml | 2 +- .github/workflows/pull-requests.yml | 2 +- .vscode/settings.json | 22 +- README.md | 2 +- package-lock.json | 3881 ++++++----------- package.json | 2 +- src/methodCallBaton.cpp | 2 +- src/utils.cpp | 9 +- {test8 => test}/TestLambda$IntegerMath.class | Bin {test8 => test}/TestLambda.class | Bin {test8 => test}/TestLambda.java | 0 test/TestLambda.test.js | 26 + test/awt-test.js | 18 - test/awt.test.js | 18 + test/dynamicProxy-test.js | 298 -- test/dynamicProxy.test.js | 269 ++ test/importClass-test.js | 67 - test/importClass.test.js | 59 + test/instanceof-test.js | 32 - test/instanceof.test.js | 26 + test/java-ambiguousMethod-test.js | 106 - test/java-ambiguousMethod.test.js | 94 + test/java-callStaticMethod-test.js | 292 -- test/java-callStaticMethod.test.js | 292 ++ test/java-newInstance-test.js | 121 - test/java-newInstance.test.js | 121 + test/java-staticField-test.js | 45 - test/java-staticField.test.js | 38 + test/javaObject-test.js | 19 - test/javaObject.test.js | 18 + test/promises-test.js | 151 - test/promises.test.js | 74 + test/simple-test.js | 375 -- test/simple.test.js | 338 ++ test/utils-types-test.js | 70 - test/utils-types.test.js | 66 + test/varargs-test.js | 109 - test/varargs.test.js | 83 + test8/testLambda.js | 27 - testAsyncOptions/allThreeSuffix.test.js | 86 + .../asyncSuffixSyncDefault.test.js | 131 + testAsyncOptions/clientBeforeError.test.js | 29 + .../clientBeforeSyncThrows.test.js | 29 + testAsyncOptions/clientBeforeThrows.test.js | 29 + testAsyncOptions/clientPBeforeError.test.js | 40 + testAsyncOptions/clientPBeforeThrows.test.js | 40 + testAsyncOptions/defacto.test.js | 104 + testAsyncOptions/defactoPlusPromise.test.js | 115 + testAsyncOptions/default.test.js | 69 + testAsyncOptions/invalidLaunch.test.js | 51 + testAsyncOptions/noAsync.test.js | 104 + .../syncDefaultPlusPromise.test.js | 73 + testAsyncOptions/testAllThreeSuffix.js | 99 - .../testAsyncSuffixSyncDefault.js | 160 - testAsyncOptions/testClientBeforeError.js | 32 - .../testClientBeforeSyncThrows.js | 32 - testAsyncOptions/testClientBeforeThrows.js | 32 - testAsyncOptions/testClientPBeforeError.js | 43 - testAsyncOptions/testClientPBeforeThrows.js | 43 - testAsyncOptions/testDefacto.js | 115 - testAsyncOptions/testDefactoPlusPromise.js | 124 - testAsyncOptions/testDefault.js | 82 - testAsyncOptions/testInvalidLaunch.js | 58 - testAsyncOptions/testNoAsync.js | 115 - .../testSyncDefaultPlusPromise.js | 85 - testAsyncOptions/testUnusableMethodName.js | 161 - testAsyncOptions/unusableMethodName.test.js | 122 + testHelpers.js | 35 +- testRunner.js | 32 +- 71 files changed, 3859 insertions(+), 5590 deletions(-) rename {test8 => test}/TestLambda$IntegerMath.class (100%) rename {test8 => test}/TestLambda.class (100%) rename {test8 => test}/TestLambda.java (100%) create mode 100644 test/TestLambda.test.js delete mode 100644 test/awt-test.js create mode 100644 test/awt.test.js delete mode 100644 test/dynamicProxy-test.js create mode 100644 test/dynamicProxy.test.js delete mode 100644 test/importClass-test.js create mode 100644 test/importClass.test.js delete mode 100644 test/instanceof-test.js create mode 100644 test/instanceof.test.js delete mode 100644 test/java-ambiguousMethod-test.js create mode 100644 test/java-ambiguousMethod.test.js delete mode 100644 test/java-callStaticMethod-test.js create mode 100644 test/java-callStaticMethod.test.js delete mode 100644 test/java-newInstance-test.js create mode 100644 test/java-newInstance.test.js delete mode 100644 test/java-staticField-test.js create mode 100644 test/java-staticField.test.js delete mode 100644 test/javaObject-test.js create mode 100644 test/javaObject.test.js delete mode 100644 test/promises-test.js create mode 100644 test/promises.test.js delete mode 100644 test/simple-test.js create mode 100644 test/simple.test.js delete mode 100644 test/utils-types-test.js create mode 100644 test/utils-types.test.js delete mode 100644 test/varargs-test.js create mode 100644 test/varargs.test.js delete mode 100644 test8/testLambda.js create mode 100644 testAsyncOptions/allThreeSuffix.test.js create mode 100644 testAsyncOptions/asyncSuffixSyncDefault.test.js create mode 100644 testAsyncOptions/clientBeforeError.test.js create mode 100644 testAsyncOptions/clientBeforeSyncThrows.test.js create mode 100644 testAsyncOptions/clientBeforeThrows.test.js create mode 100644 testAsyncOptions/clientPBeforeError.test.js create mode 100644 testAsyncOptions/clientPBeforeThrows.test.js create mode 100644 testAsyncOptions/defacto.test.js create mode 100644 testAsyncOptions/defactoPlusPromise.test.js create mode 100644 testAsyncOptions/default.test.js create mode 100644 testAsyncOptions/invalidLaunch.test.js create mode 100644 testAsyncOptions/noAsync.test.js create mode 100644 testAsyncOptions/syncDefaultPlusPromise.test.js delete mode 100644 testAsyncOptions/testAllThreeSuffix.js delete mode 100644 testAsyncOptions/testAsyncSuffixSyncDefault.js delete mode 100644 testAsyncOptions/testClientBeforeError.js delete mode 100644 testAsyncOptions/testClientBeforeSyncThrows.js delete mode 100644 testAsyncOptions/testClientBeforeThrows.js delete mode 100644 testAsyncOptions/testClientPBeforeError.js delete mode 100644 testAsyncOptions/testClientPBeforeThrows.js delete mode 100644 testAsyncOptions/testDefacto.js delete mode 100644 testAsyncOptions/testDefactoPlusPromise.js delete mode 100644 testAsyncOptions/testDefault.js delete mode 100644 testAsyncOptions/testInvalidLaunch.js delete mode 100644 testAsyncOptions/testNoAsync.js delete mode 100644 testAsyncOptions/testSyncDefaultPlusPromise.js delete mode 100644 testAsyncOptions/testUnusableMethodName.js create mode 100644 testAsyncOptions/unusableMethodName.test.js diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index cb144c8..46e593f 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ FROM mcr.microsoft.com/devcontainers/javascript-node:22 RUN apt-get update -RUN apt-get install -y openjdk-17-jdk +RUN apt-get install -y openjdk-17-jdk gdb diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 031ae06..fb149f0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -9,7 +9,8 @@ "streetsidesoftware.code-spell-checker", "bierner.markdown-emoji", "smulyono.reveal", - "ms-azuretools.vscode-docker" + "ms-azuretools.vscode-docker", + "ms-vscode.cpptools-extension-pack" ] } } diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 35faebd..4fb4d56 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - nodeVersion: [ 16, 18, 20, 22 ] + nodeVersion: [ 18, 20, 22 ] jdkVersion: [ openjdk9, openjdk10, openjdk11, openjdk21 ] steps: - name: Checkout source code diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml index a7fdcfe..07e6902 100644 --- a/.github/workflows/pull-requests.yml +++ b/.github/workflows/pull-requests.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - nodeVersion: [ 16, 18, 20, 22 ] + nodeVersion: [ 18, 20, 22 ] jdkVersion: [ openjdk9, openjdk10, openjdk11, openjdk21 ] steps: - name: Checkout source code diff --git a/.vscode/settings.json b/.vscode/settings.json index d531f16..4f16494 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,25 @@ { "cSpell.words": [ - "Ferner" + "clazz", + "clazzclazz", + "Ferner", + "jarray", + "jboolean", + "jbyte", + "jchar", + "jclass", + "jdouble", + "jfloat", + "jint", + "jlong", + "jmethod", + "jobj", + "jobject", + "jshort", + "jsize", + "jthrowable", + "jvalue", + "Ljava", + "varargs" ] } \ No newline at end of file diff --git a/README.md b/README.md index 6462c5f..4be0944 100644 --- a/README.md +++ b/README.md @@ -904,7 +904,7 @@ Either `postInstall.js` didn't run or there was a problem detecting java. Try ru npm install node-gyp build --debug - gdb --args `which node` ./node_modules/.bin/nodeunit test + gdb --args "$(which node)" ./node_modules/.bin/vitest test ## License diff --git a/package-lock.json b/package-lock.json index ec4743c..25ace04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,127 +18,402 @@ }, "devDependencies": { "chalk": "2.4.2", - "nodeunit": "^0.11.3", + "vitest": "^3.1.3", "when": "3.7.8" }, "engines": { "node": ">=7.0.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", - "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/traverse": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", - "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.27.0", - "@babel/parser": "^7.27.0", - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, "node_modules/@isaacs/cliui": { @@ -237,41 +512,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -279,17 +519,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, "node_modules/@npmcli/agent": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", @@ -334,161 +563,473 @@ "node": ">=14" } }, - "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.0.tgz", + "integrity": "sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.0.tgz", + "integrity": "sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.0.tgz", + "integrity": "sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.0.tgz", + "integrity": "sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.0.tgz", + "integrity": "sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.0.tgz", + "integrity": "sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.0.tgz", + "integrity": "sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.0.tgz", + "integrity": "sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.0.tgz", + "integrity": "sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.0.tgz", + "integrity": "sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.0.tgz", + "integrity": "sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.0.tgz", + "integrity": "sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.0.tgz", + "integrity": "sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.0.tgz", + "integrity": "sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.0.tgz", + "integrity": "sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.0.tgz", + "integrity": "sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.0.tgz", + "integrity": "sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.0.tgz", + "integrity": "sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.0.tgz", + "integrity": "sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.0.tgz", + "integrity": "sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/expect": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz", + "integrity": "sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "@vitest/spy": "3.1.3", + "@vitest/utils": "3.1.3", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "node_modules/@vitest/mocker": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.3.tgz", + "integrity": "sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==", "dev": true, "license": "MIT", "dependencies": { - "default-require-extensions": "^2.0.0" + "@vitest/spy": "3.1.3", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "node_modules/@vitest/pretty-format": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz", + "integrity": "sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "node_modules/@vitest/runner": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.3.tgz", + "integrity": "sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.1.3", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@vitest/snapshot": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.3.tgz", + "integrity": "sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==", "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@vitest/pretty-format": "3.1.3", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/@vitest/spy": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.3.tgz", + "integrity": "sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": "~2.1.0" + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "node_modules/@vitest/utils": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz", + "integrity": "sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==", "dev": true, "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.3", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "license": "ISC", "engines": { - "node": ">=0.8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/aws4": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "license": "MIT" }, "node_modules/balanced-match": { @@ -496,48 +1037,16 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bind-obj-methods": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.2.tgz", - "integrity": "sha512-bUkRdEOppT1Xg/jG0+bp0JSjUD9U0r7skxb/42WeBUjfBpW6COQTIgQmKX5J2Z3aMXcORKgN2N+d7IQwTK3pag==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, "node_modules/cacache": { "version": "18.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", @@ -576,52 +1085,23 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/caching-transform": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", - "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, "license": "MIT", "dependencies": { - "hasha": "^3.0.0", - "make-dir": "^2.0.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.4.2" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/capture-stack-trace": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", - "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -660,6 +1140,16 @@ "node": ">=4" } }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -678,201 +1168,31 @@ "node": ">=6" } }, - "node_modules/clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "license": "ISC", "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "color-name": "1.1.3" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/coveralls": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", - "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "js-yaml": "^3.13.1", - "lcov-parse": "^1.0.0", - "log-driver": "^1.2.7", - "minimist": "^1.2.5", - "request": "^2.88.2" - }, - "bin": { - "coveralls": "bin/coveralls.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cp-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", - "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "make-dir": "^2.0.0", - "nested-error-stacks": "^2.0.0", - "pify": "^4.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, + "dependencies": { + "ms": "^2.1.3" + }, "engines": { "node": ">=6.0" }, @@ -882,57 +1202,14 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha512-B0n2zDIXpzLzKeoEozorDSa1cHc1t0NjmxP0zuAxbizNU2MBqYJJKYXrrFdKuQliojXynrxgd7l4ahfg/+aA5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.4", - "npm": ">=1.2" + "node": ">=6" } }, "node_modules/eastasianwidth": { @@ -941,35 +1218,6 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true, - "license": "MIT" - }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -994,113 +1242,90 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "license": "MIT" }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=8" - } - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@types/estree": "^1.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=12.0.0" } }, - "node_modules/events-to-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", - "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", - "dev": true, - "license": "ISC" - }, "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", "dev": true, "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "peerDependencies": { + "picomatch": "^3 || ^4" }, - "engines": { - "node": ">=6" + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, "node_modules/find-java-home": { @@ -1112,62 +1337,6 @@ "winreg": "~1.2.2" } }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/foreground-child": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha512-3TOY+4TKV0Ml83PXJQY+JFQaHNV38lzQDIzzXYg1kWdBLenGgoZhAs0CKgzI31vi2pWEpQMq/Yi4bpKwCPkw7g==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fs-exists-cached": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", - "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==", - "dev": true, - "license": "ISC" - }, "node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -1189,48 +1358,19 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function-loop": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.2.tgz", - "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==", - "dev": true, - "license": "ISC" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/glob": { @@ -1340,97 +1480,22 @@ "node": ">= 8" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/hasha": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", - "integrity": "sha512-w0Kz8lJFBoyaurBiNrIvxPqr/gJ6fOfSkpAPOepN3oECqGJag37xPbOv57izi/KP8auHgNYxn5fXtAb+1LsJ6w==", + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", - "dependencies": { - "is-stream": "^1.0.1" - }, "engines": { "node": ">=4" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", @@ -1450,22 +1515,6 @@ "node": ">= 14" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -1509,25 +1558,6 @@ "node": ">=8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, "node_modules/ip-address": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", @@ -1553,179 +1583,17 @@ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "license": "BSD-3-Clause" }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "license": "MIT" }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "append-transform": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -1741,200 +1609,23 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "license": "ISC" - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/lcov-parse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", - "integrity": "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "lcov-parse": "bin/cli.js" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, "license": "MIT" }, - "node_modules/log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=0.8.6" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, "node_modules/make-fetch-happen": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", @@ -1967,83 +1658,16 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "license": "MIT", + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "license": "ISC", "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "license": "ISC", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-collect/node_modules/minipass": { @@ -2171,13 +1795,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, - "node_modules/minipass/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -2209,23 +1826,11 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/nan": { "version": "2.22.2", @@ -2233,6 +1838,25 @@ "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", "license": "MIT" }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/negotiator": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", @@ -2242,13 +1866,6 @@ "node": ">= 0.6" } }, - "node_modules/nested-error-stacks": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", - "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", - "dev": true, - "license": "MIT" - }, "node_modules/node-gyp": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", @@ -2297,21 +1914,6 @@ "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/nodeunit": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/nodeunit/-/nodeunit-0.11.3.tgz", - "integrity": "sha512-gDNxrDWpx07BxYNO/jn1UrGI1vNhDQZrIFphbHMcTCDc5mrrqQBWfQMXPHJ5WSgbFwD1D6bv4HOsqtTrPG03AA==", - "deprecated": "you are strongly encouraged to use other testing options", - "dev": true, - "license": "MIT", - "dependencies": { - "ejs": "^2.5.2", - "tap": "^12.0.1" - }, - "bin": { - "nodeunit": "bin/nodeunit" - } - }, "node_modules/nopt": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", @@ -2327,177 +1929,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nyc": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", - "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", - "dev": true, - "license": "ISC", - "dependencies": { - "archy": "^1.0.0", - "caching-transform": "^3.0.2", - "convert-source-map": "^1.6.0", - "cp-file": "^6.2.0", - "find-cache-dir": "^2.1.0", - "find-up": "^3.0.0", - "foreground-child": "^1.5.6", - "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "merge-source-map": "^1.1.0", - "resolve-from": "^4.0.0", - "rimraf": "^2.6.3", - "signal-exit": "^3.0.2", - "spawn-wrap": "^1.4.2", - "test-exclude": "^5.2.3", - "uuid": "^3.3.2", - "yargs": "^13.2.2", - "yargs-parser": "^13.0.0" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/nyc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/own-or": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", - "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==", - "dev": true, - "license": "ISC" - }, - "node_modules/own-or-env": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz", - "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==", - "dev": true, - "license": "ISC", - "dependencies": { - "own-or": "^1.0.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -2513,72 +1944,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", - "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -2587,13 +1958,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -2625,36 +1989,23 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 14.16" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, - "license": "MIT" - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2662,27 +2013,46 @@ "dev": true, "license": "ISC" }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14" } }, "node_modules/proc-log": { @@ -2694,14 +2064,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -2715,265 +2077,60 @@ "node": ">=10" } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" + "engines": { + "node": ">= 4" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/rollup": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz", + "integrity": "sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "dev": true, - "license": "ISC", - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, - "license": "ISC" - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "@types/estree": "1.0.7" }, "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "rollup": "dist/bin/rollup" }, "engines": { - "node": "*" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.41.0", + "@rollup/rollup-android-arm64": "4.41.0", + "@rollup/rollup-darwin-arm64": "4.41.0", + "@rollup/rollup-darwin-x64": "4.41.0", + "@rollup/rollup-freebsd-arm64": "4.41.0", + "@rollup/rollup-freebsd-x64": "4.41.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.0", + "@rollup/rollup-linux-arm-musleabihf": "4.41.0", + "@rollup/rollup-linux-arm64-gnu": "4.41.0", + "@rollup/rollup-linux-arm64-musl": "4.41.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.0", + "@rollup/rollup-linux-riscv64-gnu": "4.41.0", + "@rollup/rollup-linux-riscv64-musl": "4.41.0", + "@rollup/rollup-linux-s390x-gnu": "4.41.0", + "@rollup/rollup-linux-x64-gnu": "4.41.0", + "@rollup/rollup-linux-x64-musl": "4.41.0", + "@rollup/rollup-win32-arm64-msvc": "4.41.0", + "@rollup/rollup-win32-ia32-msvc": "4.41.0", + "@rollup/rollup-win32-x64-msvc": "4.41.0", + "fsevents": "~2.3.2" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true + "optional": true }, "node_modules/semver": { "version": "7.7.1", @@ -2987,13 +2144,6 @@ "node": ">=10" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3013,10 +2163,10 @@ "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, "license": "ISC" }, @@ -3058,124 +2208,16 @@ "node": ">= 14" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spawn-wrap": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz", - "integrity": "sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "node_modules/spawn-wrap/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", - "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ssri": { "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", @@ -3197,52 +2239,19 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/stack-utils": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", - "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT", - "optional": true + "license": "MIT" }, - "node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } + "license": "MIT" }, "node_modules/string-width-cjs": { "name": "string-width", @@ -3259,301 +2268,44 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tap": { - "version": "12.7.0", - "resolved": "https://registry.npmjs.org/tap/-/tap-12.7.0.tgz", - "integrity": "sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==", - "dev": true, - "license": "ISC", - "dependencies": { - "bind-obj-methods": "^2.0.0", - "browser-process-hrtime": "^1.0.0", - "capture-stack-trace": "^1.0.0", - "clean-yaml-object": "^0.1.0", - "color-support": "^1.1.0", - "coveralls": "^3.0.2", - "domain-browser": "^1.2.0", - "esm": "^3.2.5", - "foreground-child": "^1.3.3", - "fs-exists-cached": "^1.0.0", - "function-loop": "^1.0.1", - "glob": "^7.1.3", - "isexe": "^2.0.0", - "js-yaml": "^3.13.1", - "minipass": "^2.3.5", - "mkdirp": "^0.5.1", - "nyc": "^14.0.0", - "opener": "^1.5.1", - "os-homedir": "^1.0.2", - "own-or": "^1.0.0", - "own-or-env": "^1.0.1", - "rimraf": "^2.6.3", - "signal-exit": "^3.0.0", - "source-map-support": "^0.5.10", - "stack-utils": "^1.0.2", - "tap-mocha-reporter": "^3.0.9", - "tap-parser": "^7.0.0", - "tmatch": "^4.0.0", - "trivial-deferred": "^1.0.1", - "ts-node": "^8.0.2", - "tsame": "^2.0.1", - "typescript": "^3.3.3", - "write-file-atomic": "^2.4.2", - "yapool": "^1.0.0" - }, - "bin": { - "tap": "bin/run.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tap-mocha-reporter": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz", - "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "color-support": "^1.1.0", - "debug": "^2.1.3", - "diff": "^1.3.2", - "escape-string-regexp": "^1.0.3", - "glob": "^7.0.5", - "js-yaml": "^3.3.1", - "tap-parser": "^5.1.0", - "unicode-length": "^1.0.0" - }, - "bin": { - "tap-mocha-reporter": "index.js" - }, - "optionalDependencies": { - "readable-stream": "^2.1.5" - } - }, - "node_modules/tap-mocha-reporter/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/tap-mocha-reporter/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/tap-mocha-reporter/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tap-mocha-reporter/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, - "node_modules/tap-mocha-reporter/node_modules/tap-parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", - "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", - "dev": true, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", - "dependencies": { - "events-to-array": "^1.0.1", - "js-yaml": "^3.2.7" - }, - "bin": { - "tap-parser": "bin/cmd.js" - }, - "optionalDependencies": { - "readable-stream": "^2" + "engines": { + "node": ">=8" } }, - "node_modules/tap-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz", - "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==", - "dev": true, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { - "events-to-array": "^1.0.1", - "js-yaml": "^3.2.7", - "minipass": "^2.2.0" + "ansi-regex": "^5.0.1" }, - "bin": { - "tap-parser": "bin/cmd.js" + "engines": { + "node": ">=8" } }, - "node_modules/tap/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, "node_modules/tar": { @@ -3624,170 +2376,67 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, - "node_modules/test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tmatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", - "integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==", - "dev": true, - "license": "ISC" - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } + "license": "MIT" }, - "node_modules/trivial-deferred": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.1.2.tgz", - "integrity": "sha512-vDPiDBC3hyP6O4JrJYMImW3nl3c03Tsj9fEXc7Qc/XKa1O7gf5ZtFfIR/E0dun9SnDHdwjna1Z2rSzYgqpxh/g==", + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 8" - } + "license": "MIT" }, - "node_modules/ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", "dev": true, "license": "MIT", "dependencies": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "fdir": "^6.4.4", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" }, - "peerDependencies": { - "typescript": ">=2.7" - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tsame": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.1.tgz", - "integrity": "sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==", - "dev": true, - "license": "ISC" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "node_modules/tinypool": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, + "license": "MIT", "engines": { - "node": "*" + "node": "^18.0.0 || >=20.0.0" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, + "license": "MIT", "engines": { - "node": ">=4.2.0" + "node": ">=14.0.0" } }, - "node_modules/unicode-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz", - "integrity": "sha512-rZKNhIqioUp7H49afr26tivLDCvUSqOXwmwEEnsCwnPX67S1CYbOL45Y5IP3K/XHN73/lg21HlrB8SNlYXKQTg==", + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, "license": "MIT", - "dependencies": { - "punycode": "^1.3.2", - "strip-ansi": "^3.0.1" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/unicode-length/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "license": "MIT" - }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -3812,67 +2461,159 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/vite": { + "version": "5.4.19", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", "dev": true, "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "node_modules/vite-node": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.3.tgz", + "integrity": "sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true, - "license": "MIT" + "node_modules/vitest": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.3.tgz", + "integrity": "sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.1.3", + "@vitest/mocker": "3.1.3", + "@vitest/pretty-format": "^3.1.3", + "@vitest/runner": "3.1.3", + "@vitest/snapshot": "3.1.3", + "@vitest/spy": "3.1.3", + "@vitest/utils": "3.1.3", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.13", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.3", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.3", + "@vitest/ui": "3.1.3", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } }, "node_modules/when": { "version": "3.7.8", @@ -3888,33 +2629,28 @@ "which": "bin/which" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/winreg": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", - "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" }, "engines": { - "node": ">=6" + "node": ">=8" } }, + "node_modules/winreg": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", + "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" + }, "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", @@ -4006,109 +2742,6 @@ "engines": { "node": ">=8" } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true, - "license": "ISC" - }, - "node_modules/yapool": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", - "integrity": "sha512-RONBZndo8Lo8pKPfORRxr2DIk2NZKIml654o4kaIu7RXVxQCKsAN6AqrcoZsI3h+2H5YO2mD/04Wy4LbAgd+Pg==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } } } } diff --git a/package.json b/package.json index a5807d0..4f4943f 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ }, "devDependencies": { "chalk": "2.4.2", - "nodeunit": "^0.11.3", + "vitest": "^3.1.3", "when": "3.7.8" }, "scripts": { diff --git a/src/methodCallBaton.cpp b/src/methodCallBaton.cpp index 8b4902e..c2a1015 100644 --- a/src/methodCallBaton.cpp +++ b/src/methodCallBaton.cpp @@ -115,7 +115,7 @@ v8::Local MethodCallBaton::resultsToV8(JNIEnv *env) { return scope.Escape(err); } - return scope.Escape(javaToV8(m_java, env, m_result)); + return scope.Escape(javaToV8(m_java, env, m_result)); } void NewInstanceBaton::ExecuteInternal(JNIEnv* env) { diff --git a/src/utils.cpp b/src/utils.cpp index 067511f..bd1c9bf 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -575,17 +575,10 @@ v8::Local javaArrayToV8(Java* java, JNIEnv* env, jobjectArray objArra case TYPE_BOOLEAN: { jboolean* elems = env->GetBooleanArrayElements((jbooleanArray)objArray, 0); -#if (NODE_VERSION_AT_LEAST(4, 0, 0)) - size_t byteLength = arraySize; - v8::Local ab = newArrayBuffer(elems, byteLength); - env->ReleaseBooleanArrayElements((jbooleanArray)objArray, elems, 0); - return v8::Uint8Array::New(ab, 0, arraySize); -#else for(jsize i=0; iSet(i, Nan::New(elems[i])); + result->Set(Nan::GetCurrentContext(), i, Nan::New(elems[i])); } env->ReleaseBooleanArrayElements((jbooleanArray)objArray, elems, 0); -#endif } break; diff --git a/test8/TestLambda$IntegerMath.class b/test/TestLambda$IntegerMath.class similarity index 100% rename from test8/TestLambda$IntegerMath.class rename to test/TestLambda$IntegerMath.class diff --git a/test8/TestLambda.class b/test/TestLambda.class similarity index 100% rename from test8/TestLambda.class rename to test/TestLambda.class diff --git a/test8/TestLambda.java b/test/TestLambda.java similarity index 100% rename from test8/TestLambda.java rename to test/TestLambda.java diff --git a/test/TestLambda.test.js b/test/TestLambda.test.js new file mode 100644 index 0000000..423170b --- /dev/null +++ b/test/TestLambda.test.js @@ -0,0 +1,26 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Java8', () => { + test('call methods of a class that uses lambda expressions', () => { + try { + const TestLambda = java.import('TestLambda'); + const lambda = new TestLambda(); + const sum = lambda.testLambdaAdditionSync(23, 42); + expect(sum).toBe(65); + const diff = lambda.testLambdaSubtractionSync(23, 42); + expect(diff).toBe(-19); + } + catch (err) { + const unsupportedVersion = java.instanceOf(err.cause, 'java.lang.UnsupportedClassVersionError'); + if (unsupportedVersion) { + console.log('JRE 1.8 not available'); + } else { + console.error('Java8 test failed with unknown error:', err); + throw err; + } + } + }); +}); diff --git a/test/awt-test.js b/test/awt-test.js deleted file mode 100644 index e0c4e3b..0000000 --- a/test/awt-test.js +++ /dev/null @@ -1,18 +0,0 @@ - -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); -var path = require('path'); - -exports['AWT'] = nodeunit.testCase({ - "calling AWT method (see issue 1)": function(test) { - var headlessVal = java.callStaticMethodSync("java.lang.System", "getProperty", "java.awt.headless"); - console.log("java.awt.headless =", headlessVal); - test.equal(headlessVal, 'true'); - var filename = path.join(path.dirname(__filename), "nodejs.png"); - var file = java.newInstanceSync("java.io.File", filename); - var image = java.callStaticMethodSync("javax.imageio.ImageIO", "read", file); - test.done(); - } -}); diff --git a/test/awt.test.js b/test/awt.test.js new file mode 100644 index 0000000..5d13d78 --- /dev/null +++ b/test/awt.test.js @@ -0,0 +1,18 @@ + +import path from 'node:path'; +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('AWT', () => { + test("calling AWT method (see issue 1)", () => { + const headlessVal = java.callStaticMethodSync("java.lang.System", "getProperty", "java.awt.headless"); + console.log("java.awt.headless =", headlessVal); + expect(headlessVal).toBe('true'); + const filename = path.join(path.dirname(__filename), "nodejs.png"); + const file = java.newInstanceSync("java.io.File", filename); + const image = java.callStaticMethodSync("javax.imageio.ImageIO", "read", file); + expect(image).toBeTruthy(); + }); +}); diff --git a/test/dynamicProxy-test.js b/test/dynamicProxy-test.js deleted file mode 100644 index aef5fab..0000000 --- a/test/dynamicProxy-test.js +++ /dev/null @@ -1,298 +0,0 @@ -'use strict'; - -var java = require("../testHelpers").java; -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Dynamic Proxy'] = nodeunit.testCase({ - "0 Arguments": function (test) { - var callCount = 0; - - var myProxy = java.newProxy('RunInterface$Interface0Arg', { - run: function () { - callCount++; - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - runInterface.run0ArgsSync(myProxy); - - test.equals(callCount, 2); - - test.done(); - }, - - "1 Arguments": function (test) { - var runData = ''; - - var myProxy = java.newProxy('RunInterface$Interface1Arg', { - run: function (str) { - runData += str; - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - runInterface.run1ArgsSync(myProxy); - - test.equals(runData, 'test1test1'); - - test.done(); - }, - - "1 Arguments with return data": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { - return i + 1; - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - var result = runInterface.runWithReturnSync(myProxy); - - test.equals(result, 43); - - test.done(); - }, - - "Listener test": function (test) { - var runData = ''; - - var myProxy = java.newProxy('ListenerInterface', { - onEvent: function (list, runtime) { - runData = 'onEvent'; - } - }); - - var listenerTester = java.newInstanceSync("ListenerTester"); - listenerTester.setListenerSync(myProxy); - listenerTester.raiseEventSync(); - - test.equals(runData, 'onEvent'); - - test.done(); - }, - - "thread": function (test) { - var callCount = 0; - - var myProxy = java.newProxy('java.lang.Runnable', { - run: function () { - callCount++; - } - }); - - var thread = java.newInstanceSync("java.lang.Thread", myProxy); - thread.startSync(); - - var timeout = 50; - - function waitForThread() { - if (callCount === 1) { - return test.done(); - } - timeout--; - if (timeout < 0) { - test.done(new Error("Timeout")); - } - setTimeout(waitForThread, 100); - } - - waitForThread(); - }, - - "thread issue #143": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { - return i - 1; - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - runInterface.runInAnotherThread(myProxy, function(err, result) { - test.equals(result, 45); - - test.done(); - }); - }, - - "java equals()": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - }); - - var runInterface = java.newInstanceSync("RunInterface"); - var result = runInterface.runEqualsSync(myProxy); - - test.equals(result, false); - - test.done(); - }, - - "java equals() same instance": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - }); - - var runInterface = java.newInstanceSync("RunInterface"); - runInterface.setInstanceSync(myProxy); - var result = runInterface.runEqualsInstanceSync(myProxy); - - test.equals(result, true); - - test.done(); - }, - - "java equals() different instance": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', {}); - var myProxy2 = java.newProxy('RunInterface$InterfaceWithReturn', {}); - - var runInterface = java.newInstanceSync("RunInterface"); - runInterface.setInstanceSync(myProxy); - var result = runInterface.runEqualsInstanceSync(myProxy2); - - test.equals(result, false); - - test.done(); - }, - - "js equals()": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - equals: function (obj) { - return true; - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - var result = runInterface.runEqualsSync(myProxy); - - test.equals(result, true); - - test.done(); - }, - - "java hashCode()": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - }); - - var runInterface = java.newInstanceSync("RunInterface"); - var result = runInterface.runHashCodeSync(myProxy); - var result2 = runInterface.runHashCodeSync(myProxy); - var systemHashCode = java.callStaticMethodSync("java.lang.System", "identityHashCode", myProxy); - - test.equals(result, result2); - test.equals(result, systemHashCode); - - test.done(); - }, - - "js hashCode()": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - hashCode: function() { - return 1234; - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - var result = runInterface.runHashCodeSync(myProxy); - - test.equals(result, 1234); - - test.done(); - }, - - "java toString()": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', {}); - - var runInterface = java.newInstanceSync("RunInterface"); - var result = runInterface.runToStringSync(myProxy); - - test.equals(result, "[object Object]"); - - test.done(); - }, - - "js toString()": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - toString: function() { - return "myRunInterface"; - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - var result = runInterface.runToStringSync(myProxy); - - test.equals(result, "myRunInterface"); - - test.done(); - }, - - "js string error": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { - throw 'myError'; - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - try { - runInterface.runWithReturnSync(myProxy); - test.fail("Exception was not thrown"); - } catch (e) { - test.equals(e.cause.getClassSync().getNameSync(), "java.lang.RuntimeException"); - test.ok(/Caused by: node\.NodeJsException:.*myError/.test(e.message)); - } - - test.done(); - }, - - "js Error": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { - throw new Error('newError'); - } - }); - - var runInterface = java.newInstanceSync("RunInterface"); - try { - runInterface.runWithReturnSync(myProxy); - test.fail("Exception was not thrown"); - } catch (e) { - test.equals(e.cause.getClassSync().getNameSync(), "java.lang.RuntimeException"); - test.ok(/Caused by: node\.NodeJsException:.*newError/.test(e.message)); - } - - test.done(); - }, - - "invocationHandler": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { - return i + 2; - } - }); - - var result = myProxy.invocationHandler.run(42); - - test.equals(result, 44); - - test.done(); - }, - - "unref": function (test) { - var myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { - return i + 1; - } - }); - - myProxy.unref(); - - try { - myProxy.invocationHandler.run(42); - } catch (e) { - test.equals(e.message, "dynamicProxyData has been destroyed or corrupted"); - } - - // call again - myProxy.unref(); - test.done(); - } -}); diff --git a/test/dynamicProxy.test.js b/test/dynamicProxy.test.js new file mode 100644 index 0000000..997a239 --- /dev/null +++ b/test/dynamicProxy.test.js @@ -0,0 +1,269 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Dynamic Proxy', () => { + test("0 Arguments", () => { + let callCount = 0; + + const myProxy = java.newProxy('RunInterface$Interface0Arg', { + run: function () { + callCount++; + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + runInterface.run0ArgsSync(myProxy); + + expect(callCount).toBe(2); + }); + + test("1 Arguments", () => { + let runData = ''; + + const myProxy = java.newProxy('RunInterface$Interface1Arg', { + run: function (str) { + runData += str; + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + runInterface.run1ArgsSync(myProxy); + + expect(runData).toBe('test1test1'); + }); + + test("1 Arguments with return data", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + run: function (i) { + return i + 1; + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + const result = runInterface.runWithReturnSync(myProxy); + + expect(result).toBe(43); + }); + + test("Listener test", () => { + let runData = ''; + + const myProxy = java.newProxy('ListenerInterface', { + onEvent: function (list, runtime) { + runData = 'onEvent'; + } + }); + + const listenerTester = java.newInstanceSync("ListenerTester"); + listenerTester.setListenerSync(myProxy); + listenerTester.raiseEventSync(); + + expect(runData).toBe('onEvent'); + }); + + test("thread", async () => { + await new Promise((resolve, reject) => { + let callCount = 0; + + const myProxy = java.newProxy('java.lang.Runnable', { + run: function () { + callCount++; + } + }); + + const thread = java.newInstanceSync("java.lang.Thread", myProxy); + thread.startSync(); + + let timeout = 50; + + function waitForThread() { + if (callCount === 1) { + return resolve(); + } + timeout--; + if (timeout < 0) { + return reject(new Error("Timeout")); + } + setTimeout(waitForThread, 100); + } + + waitForThread(); + }); + }); + + test("thread issue #143", async () => { + await new Promise(resolve => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + run: function (i) { + return i - 1; + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + runInterface.runInAnotherThread(myProxy, function (err, result) { + expect(result).toBe(45); + resolve(); + }); + }); + }); + + test("java equals()", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + }); + + const runInterface = java.newInstanceSync("RunInterface"); + const result = runInterface.runEqualsSync(myProxy); + + expect(result).toBe(false); + }); + + test("java equals() same instance", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + }); + + const runInterface = java.newInstanceSync("RunInterface"); + runInterface.setInstanceSync(myProxy); + const result = runInterface.runEqualsInstanceSync(myProxy); + + expect(result).toBe(true); + }); + + test("java equals() different instance", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', {}); + const myProxy2 = java.newProxy('RunInterface$InterfaceWithReturn', {}); + + const runInterface = java.newInstanceSync("RunInterface"); + runInterface.setInstanceSync(myProxy); + const result = runInterface.runEqualsInstanceSync(myProxy2); + + expect(result).toBe(false); + }); + + test("js equals()", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + equals: function (obj) { + return true; + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + const result = runInterface.runEqualsSync(myProxy); + + expect(result).toBe(true); + }); + + test("java hashCode()", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + }); + + const runInterface = java.newInstanceSync("RunInterface"); + const result = runInterface.runHashCodeSync(myProxy); + const result2 = runInterface.runHashCodeSync(myProxy); + const systemHashCode = java.callStaticMethodSync("java.lang.System", "identityHashCode", myProxy); + + expect(result).toBe(result2); + expect(result).toBe(systemHashCode); + }); + + test("js hashCode()", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + hashCode: function () { + return 1234; + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + const result = runInterface.runHashCodeSync(myProxy); + + expect(result).toBe(1234); + }); + + test("java toString()", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', {}); + + const runInterface = java.newInstanceSync("RunInterface"); + const result = runInterface.runToStringSync(myProxy); + + expect(result).toBe("[object Object]"); + }); + + test("js toString()", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + toString: function () { + return "myRunInterface"; + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + const result = runInterface.runToStringSync(myProxy); + + expect(result).toBe("myRunInterface"); + }); + + test("js string error", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + run: function (i) { + throw 'myError'; + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + try { + runInterface.runWithReturnSync(myProxy); + throw new Error("Exception was not thrown"); + } catch (e) { + expect(e.cause.getClassSync().getNameSync()).toBe("java.lang.RuntimeException"); + expect(e.message).toMatch(/Caused by: node\.NodeJsException:.*myError/); + } + }); + + test("js Error", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + run: function (i) { + throw new Error('newError'); + } + }); + + const runInterface = java.newInstanceSync("RunInterface"); + try { + runInterface.runWithReturnSync(myProxy); + throw new Error("Exception was not thrown"); + } catch (e) { + expect(e.cause.getClassSync().getNameSync()).toBe("java.lang.RuntimeException"); + expect(e.message).toMatch(/Caused by: node\.NodeJsException:.*newError/); + } + }); + + test("invocationHandler", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + run: function (i) { + return i + 2; + } + }); + + const result = myProxy.invocationHandler.run(42); + + expect(result).toBe(44); + }); + + test("unref", () => { + const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + run: function (i) { + return i + 1; + } + }); + + myProxy.unref(); + + try { + myProxy.invocationHandler.run(42); + } catch (e) { + expect(e.message).toBe("dynamicProxyData has been destroyed or corrupted"); + } + + // call again + myProxy.unref(); + }); +}); diff --git a/test/importClass-test.js b/test/importClass-test.js deleted file mode 100644 index 1fc66d0..0000000 --- a/test/importClass-test.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -var java = require("../testHelpers").java; -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Import Class'] = nodeunit.testCase({ - tearDown: function (callback) { - java.setStaticFieldValue("Test", "staticFieldInt", 42); - callback(); - }, - - "import": function (test) { - var Test = java.import('Test'); - test.equals(42, Test.staticFieldInt); - Test.staticFieldInt = 200; - test.equals(200, Test.staticFieldInt); - - test.equals(100, Test.staticMethodSync(99)); - Test.staticMethod(99, function (err, result) { - test.ok(!err); - test.equals(100, result); - - var testObj = new Test(5); - test.equals(5, testObj.getIntSync()); - test.done(); - }); - }, - - "import TestEnum with unsable name": function (test) { - test.expect(5); - var TestEnum = java.import('Test$Enum'); - - // 'foo' and 'bar' are valid enum names - test.strictEqual(TestEnum.foo.toStringSync(), "foo"); - test.strictEqual(TestEnum.bar.toStringSync(), "bar"); - - ['name', 'arguments', 'caller'].forEach(function(prop) { - test.throws( - function() { - // The enum also defines 'name', 'caller', and 'attributes', but Javascript prevents us from using them, - // since these are unwritable properties of Function. - var x = TestEnum[prop].toStringSync(); - }, - TypeError - ); - }); - test.done(); - }, - - "import TestEnum and use alternate name": function (test) { - test.expect(5); - var TestEnum = java.import('Test$Enum'); - - // 'foo' and 'bar' are valid enum names - test.strictEqual(TestEnum.foo.toStringSync(), "foo"); - test.strictEqual(TestEnum.bar.toStringSync(), "bar"); - - // 'name', 'caller', and 'arguments' are not, so we must use e.g. 'name_' to reference the enum. - // But note that the value is still e.g. "name". - test.strictEqual(TestEnum.name_.toStringSync(), "name"); - test.strictEqual(TestEnum.arguments_.toStringSync(), "arguments"); - test.strictEqual(TestEnum.caller_.toStringSync(), "caller"); - test.done(); - } - -}); diff --git a/test/importClass.test.js b/test/importClass.test.js new file mode 100644 index 0000000..7246671 --- /dev/null +++ b/test/importClass.test.js @@ -0,0 +1,59 @@ +import { afterEach, describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Import Class', () => { + afterEach(() => { + java.setStaticFieldValue("Test", "staticFieldInt", 42); + }); + + test("import", async () => { + const Test = java.import('Test'); + expect(Test.staticFieldInt).toBe(42); + Test.staticFieldInt = 200; + expect(Test.staticFieldInt).toBe(200); + + expect(Test.staticMethodSync(99)).toBe(100); + await new Promise(resolve => { + Test.staticMethod(99, (err, result) => { + expect(err).toBeFalsy(); + expect(result).toBe(100); + + const testObj = new Test(5); + expect(testObj.getIntSync()).toBe(5); + resolve(); + }); + }); + }); + + test("import TestEnum with unsable name", () => { + const TestEnum = java.import('Test$Enum'); + + // 'foo' and 'bar' are valid enum names + expect(TestEnum.foo.toStringSync()).toBe("foo"); + expect(TestEnum.bar.toStringSync()).toBe("bar"); + + ['name', 'arguments', 'caller'].forEach(function (prop) { + expect(() => { + // The enum also defines 'name', 'caller', and 'attributes', but Javascript prevents us from using them, + // since these are unwritable properties of Function. + const x = TestEnum[prop].toStringSync(); + }).toThrow(TypeError) + }); + }); + + test("import TestEnum and use alternate name", () => { + const TestEnum = java.import('Test$Enum'); + + // 'foo' and 'bar' are valid enum names + expect(TestEnum.foo.toStringSync()).toBe("foo"); + expect(TestEnum.bar.toStringSync()).toBe("bar"); + + // 'name', 'caller', and 'arguments' are not, so we must use e.g. 'name_' to reference the enum. + // But note that the value is still e.g. "name". + expect(TestEnum.name_.toStringSync()).toBe("name"); + expect(TestEnum.arguments_.toStringSync()).toBe("arguments"); + expect(TestEnum.caller_.toStringSync()).toBe("caller"); + }); +}); diff --git a/test/instanceof-test.js b/test/instanceof-test.js deleted file mode 100644 index f90720e..0000000 --- a/test/instanceof-test.js +++ /dev/null @@ -1,32 +0,0 @@ -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['instanceOf'] = nodeunit.testCase({ - "working": function(test) { - var subclass = java.newInstanceSync("Test$SubClass"); - if (!java.instanceOf(subclass, "Test$SuperClass")) { - test.fail(subclass.getNameSync() + " should be an instance of Test$SuperClass"); - } - test.done(); - }, - - "non-java object": function(test) { - if (java.instanceOf({}, "Test$SuperClass")) { - test.fail("javascript objects are not instances of anything"); - } - test.done(); - }, - - "bad type": function(test) { - var subclass = java.newInstanceSync("Test$SubClass"); - try { - java.instanceOf(subclass, "BadClassName"); - test.fail("should have thrown an exception.") - } catch (e) { - // OK - } - test.done(); - } -}); diff --git a/test/instanceof.test.js b/test/instanceof.test.js new file mode 100644 index 0000000..d04e33c --- /dev/null +++ b/test/instanceof.test.js @@ -0,0 +1,26 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('instanceOf', () => { + test("working", () => { + const subclass = java.newInstanceSync("Test$SubClass"); + if (!java.instanceOf(subclass, "Test$SuperClass")) { + throw new Error(subclass.getNameSync() + " should be an instance of Test$SuperClass"); + } + }); + + test("non-java object", () => { + if (java.instanceOf({}, "Test$SuperClass")) { + throw new Error("javascript objects are not instances of anything"); + } + }); + + test("bad type", () => { + const subclass = java.newInstanceSync("Test$SubClass"); + expect(() => { + java.instanceOf(subclass, "BadClassName"); + }).toThrow(); + }); +}); diff --git a/test/java-ambiguousMethod-test.js b/test/java-ambiguousMethod-test.js deleted file mode 100644 index 7dd0c14..0000000 --- a/test/java-ambiguousMethod-test.js +++ /dev/null @@ -1,106 +0,0 @@ -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Java - Call Ambiguous Method'] = nodeunit.testCase({ - "staticMethodAmbiguous (sync) - int passed to double": function(test) { - var result = java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Double;)I', 1); - test.equal(result, 1); - test.done(); - }, - - "staticMethodAmbiguous (sync) - double passed to int": function(test) { - var result = java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1.1); - test.equal(result, 2); - test.done(); - }, - - "staticMethodAmbiguous (sync) - method not found wrong argument type": function(test) { - try { - java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/String;)I', 1); - test.fail("should throw"); - } catch (e) { - console.log(e); - } - test.done(); - }, - - "staticMethodAmbiguous (sync) - method failed because argument count mismatch": function(test) { - try { - java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1, 2); - test.fail("should throw argument length mismatch"); - } catch (e) { - console.log(e); - } - test.done(); - }, - - "staticMethodAmbiguous - int passed to double": function(test) { - java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Double;)I', 1, function(err, result) { - test.ok(!err); - test.equal(result, 1); - test.done(); - }) - }, - - "staticMethodAmbiguous - double passed to int": function(test) { - java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1.1, function(err, result) { - test.ok(!err); - test.equal(result, 2); - test.done(); - }); - }, - - "staticMethodAmbiguous - method not found": function(test) { - java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/String;)I', 1, function(err, result) { - test.ok(err); - console.log(err); - test.done(); - }); - }, - - "staticMethodAmbiguous - method argument count mismatch": function(test) { - java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1, 2, function(err, result) { - test.ok(err); - console.log(err); - test.done(); - }); - }, - - "methodAmbiguous (sync) - int passed to double": function(test) { - var myTest = java.newInstanceSync("Test"); - var result = java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Double;)I', 1); - test.equal(result, 1); - test.done(); - }, - - "methodAmbiguous (sync) - double passed to int": function(test) { - var myTest = java.newInstanceSync("Test"); - var result = java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Integer;)I', 1.1); - test.equal(result, 2); - test.done(); - }, - - "methodAmbiguous (sync) - method not found wrong argument type": function(test) { - var myTest = java.newInstanceSync("Test"); - try { - java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/String;)I', 1); - test.fail("should throw"); - } catch (e) { - console.log(e); - } - test.done(); - }, - - "methodAmbiguous (sync) - method failed because argument count mismatch": function(test) { - var myTest = java.newInstanceSync("Test"); - try { - java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Integer;)I', 1, 2); - test.fail("should throw argument length mismatch"); - } catch (e) { - console.log(e); - } - test.done(); - } -}); diff --git a/test/java-ambiguousMethod.test.js b/test/java-ambiguousMethod.test.js new file mode 100644 index 0000000..efbdfa0 --- /dev/null +++ b/test/java-ambiguousMethod.test.js @@ -0,0 +1,94 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Java - Call Ambiguous Method', () => { + test("staticMethodAmbiguous (sync) - int passed to double", () => { + const result = java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Double;)I', 1); + expect(result).toBe(1); + }); + + test("staticMethodAmbiguous (sync) - double passed to int", () => { + const result = java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1.1); + expect(result).toBe(2); + }); + + test("staticMethodAmbiguous (sync) - method not found wrong argument type", () => { + expect(() => { + java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/String;)I', 1); + }).toThrow(); + }); + + test("staticMethodAmbiguous (sync) - method failed because argument count mismatch", () => { + expect(() => { + java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1, 2); + }).toThrow(); + }); + + test("staticMethodAmbiguous - int passed to double", async () => { + await new Promise(resolve => { + java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Double;)I', 1, function (err, result) { + expect(err).toBeFalsy(); + expect(result).toBe(1); + resolve(); + }); + }); + }); + + test("staticMethodAmbiguous - double passed to int", async () => { + await new Promise(resolve => { + java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1.1, function (err, result) { + expect(err).toBeFalsy(); + expect(result).toBe(2); + resolve(); + }); + }); + }); + + test("staticMethodAmbiguous - method not found", async () => { + await new Promise(resolve => { + java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/String;)I', 1, function (err, result) { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("staticMethodAmbiguous - method argument count mismatch", async () => { + await new Promise(resolve => { + java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1, 2, function (err, result) { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("methodAmbiguous (sync) - int passed to double", () => { + const myTest = java.newInstanceSync("Test"); + const result = java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Double;)I', 1); + expect(result).toBe(1); + }); + + test("methodAmbiguous (sync) - double passed to int", () => { + const myTest = java.newInstanceSync("Test"); + const result = java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Integer;)I', 1.1); + expect(result).toBe(2); + }); + + test("methodAmbiguous (sync) - method not found wrong argument type", () => { + const myTest = java.newInstanceSync("Test"); + expect(() => { + java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/String;)I', 1); + }).toThrow(); + }); + + test("methodAmbiguous (sync) - method failed because argument count mismatch", () => { + const myTest = java.newInstanceSync("Test"); + expect(() => { + java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Integer;)I', 1, 2); + }).toThrow(); + }); +}); diff --git a/test/java-callStaticMethod-test.js b/test/java-callStaticMethod-test.js deleted file mode 100644 index 0e9bf17..0000000 --- a/test/java-callStaticMethod-test.js +++ /dev/null @@ -1,292 +0,0 @@ -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Java - Call Static Method'] = nodeunit.testCase({ - "callStaticMethod": function(test) { - java.callStaticMethod("Test", "staticMethod", function(err, result) { - test.ok(result); - test.equal(result, "staticMethod called"); - test.done(); - }); - }, - - "callStaticMethod without a callback": function(test) { - var result = java.callStaticMethod("Test", "staticMethod"); - console.log("callStaticMethod without a callback result message", result); - test.done(); - }, - - "callStaticMethodSync": function(test) { - var result = java.callStaticMethodSync("Test", "staticMethod"); - test.ok(result); - test.equal(result, "staticMethod called"); - test.done(); - }, - - "callStaticMethod with args": function(test) { - java.callStaticMethod("Test", "staticMethod", 42, function(err, result) { - if (err) { - return test.done(err); - } - test.ok(result); - test.equal(result, 43); - test.done(); - }); - }, - - "callStaticMethodSync with args": function(test) { - var result = java.callStaticMethodSync("Test", "staticMethod", 42); - test.ok(result); - test.equal(result, 43); - test.done(); - }, - - "callStaticMethodSync with BigDecimal": function(test) { - var bigDecimal = java.newInstanceSync("java.math.BigDecimal", 100.1); - var result = java.callStaticMethodSync("Test", "staticBigDecimalToString", bigDecimal); - test.ok(result); - test.ok(Math.abs(parseFloat(result) - 100.1) < 0.0001); - test.done(); - }, - - "callStaticMethod bad class name": function(test) { - java.callStaticMethod("BadClassName", "staticMethod", function(err, result) { - test.ok(err); - test.ok(!result); - test.done(); - }); - }, - - - "callStaticMethodSync bad class name": function(test) { - test.throws(function() { - java.callStaticMethodSync("BadClassName", "staticMethod"); - }); - test.done(); - }, - - "callStaticMethod bad arg types": function(test) { - java.callStaticMethod("Test", "staticMethod", "z", function(err, result) { - test.ok(err); - test.ok(!result); - test.done(); - }); - }, - - "callStaticMethodSync bad arg types": function(test) { - test.throws(function() { - java.callStaticMethodSync("Test", "staticMethod", "z"); - }); - test.done(); - }, - - "callStaticMethod bad number of args": function(test) { - java.callStaticMethod("Test", "staticMethod", 42, "z", function(err, result) { - test.ok(err); - test.equals(undefined, result); - test.done(); - }); - }, - - "callStaticMethodSync bad number of args": function(test) { - test.throws(function() { - java.callStaticMethodSync("Test", "staticMethod", 42, "z"); - }); - test.done(); - }, - - "callStaticMethod bad method name": function(test) { - java.callStaticMethod("Test", "badMethodName", function(err, result) { - test.ok(err); - test.ok(!result); - test.done(); - }); - }, - - "callStaticMethodSync bad method name": function(test) { - test.throws(function() { - java.callStaticMethodSync("Test", "badMethodName"); - }); - test.done(); - }, - - "callStaticMethod exception thrown from method (sync)": function(test) { - var ex = java.newInstanceSync("java.lang.Exception", "my exception"); - var result; - try { - result = java.callStaticMethodSync("Test", "staticMethodThrows", ex); - } catch (err) { - test.ok(err); - test.equals('my exception', err.cause.getMessageSync()); - test.ok(err.toString().match(/my exception/)); - test.ok(!result); - test.done(); - } - }, - - "staticMethodThrows exception thrown from method (sync)": function(test) { - var ex = java.newInstanceSync("java.lang.Exception", "my exception"); - try { - java.callStaticMethodSync("Test", "staticMethodThrows", ex); - test.fail("should throw"); - } catch (err) { - test.ok(err.toString().match(/my exception/)); - } - test.done(); - }, - - "staticMethodThrows exception thrown from method": function(test) { - var ex = java.newInstanceSync("java.lang.Exception", "my exception"); - java.callStaticMethod("Test", "staticMethodThrows", ex, function(err, result) { - test.ok(err); - test.equals('my exception', err.cause.getMessageSync()); - test.ok(err.toString().match(/my exception/)); - test.ok(!result); - test.done(); - }); - }, - - "staticMethodThrowsNewException exception thrown from method (sync)": function(test) { - try { - java.callStaticMethodSync("Test", "staticMethodThrowsNewException"); - test.fail("should throw"); - } catch (err) { - test.ok(err.toString().match(/my exception/)); - } - test.done(); - }, - - "staticMethodThrowsNewException exception thrown from method": function(test) { - java.callStaticMethod("Test", "staticMethodThrowsNewException", function(err, result) { - test.ok(err); - test.equals('my exception', err.cause.getMessageSync()); - test.ok(err.toString().match(/my exception/)); - test.ok(!result); - test.done(); - }); - }, - - "methodThrows exception thrown from method (sync)": function(test) { - var ex = java.newInstanceSync("java.lang.Exception", "my exception"); - var myTest = java.newInstanceSync("Test"); - try { - myTest.methodThrowsSync(ex); - test.fail("should throw"); - } catch (err) { - test.ok(err.toString().match(/my exception/)); - } - test.done(); - }, - - "methodThrows exception thrown from method": function(test) { - var ex = java.newInstanceSync("java.lang.Exception", "my exception"); - var myTest = java.newInstanceSync("Test"); - return myTest.methodThrows(ex, function(err) { - test.ok(err.toString().match(/my exception/)); - test.done(); - }); - }, - - "methodThrowsNewException exception thrown from method (sync)": function(test) { - var myTest = java.newInstanceSync("Test"); - try { - myTest.methodThrowsNewExceptionSync(); - test.fail("should throw"); - } catch (err) { - test.ok(err.toString().match(/my exception/)); - } - test.done(); - }, - - "methodThrowsNewException exception thrown from method": function(test) { - var myTest = java.newInstanceSync("Test"); - return myTest.methodThrowsNewException(function(err) { - test.ok(err.toString().match(/my exception/)); - test.done(); - }); - }, - - "char array": function(test) { - var charArray = java.newArray("char", "hello world\n".split('')); - java.callStaticMethod("Test", "staticMethodCharArrayToString", charArray, function(err, result) { - if (err) { - return test.done(err); - } - test.ok(result); - test.equal(result, "hello world\n"); - test.done(); - }); - }, - - "String passed in for Object": function(test) { - java.callStaticMethod("Test", "static2Objects", "1", "2", function(err, result) { - if (err) { - return test.done(err); - } - test.equal(result, false); - test.done(); - }); - }, - - "java.lang.Long addition": function(test) { - var javaLong = java.newInstanceSync("java.lang.Long", 5); - test.equal(javaLong.toString(), '5'); - var result = javaLong + 1; - test.equal(result, 6); - test.done(); - }, - - "java.lang.Long calls (java Long)": function(test) { - var javaLong = java.newInstanceSync("java.lang.Long", 5); - java.callStaticMethod("Test", "staticMethodLongToString", javaLong, function(err, result) { - if (err) { - return test.done(err); - } - test.ok(result); - test.equal(result, "5"); - test.done(); - }); - }, - - "Call method that returns a long": function(test) { - java.callStaticMethod("Test", "staticMethodReturnLong", function(err, result) { - if (err) { - return test.done(err); - } - test.ok(result); - test.equal(result.longValue, "9223372036854775807"); - test.done(); - }); - }, - - "Call method with nested enum value": function(test) { - var Test = java.import("Test"); - Test.staticEnumToStringSync(Test.StaticEnum.Value1); - var str = Test.staticEnumToStringSync(Test.StaticEnum.Value1); // call it twice to ensure memo-ize is working - test.equal(str, "Value1"); - test.done(); - }, - - "Call static method with varargs": function(test) { - var Test = java.import("Test"); - - var str = Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a', 'b', 'c'])); - test.equal(str, "5abc"); - - str = Test.staticVarargsSync(5, 'a', 'b', 'c'); - test.equal(str, "5abc"); - - test.done(); - }, - - "Call static method named name_": function(test) { - test.expect(1); - var Test = java.import("Test"); - Test.name_(function(err) { - test.ifError(err); - test.done(); - }); - } -}); diff --git a/test/java-callStaticMethod.test.js b/test/java-callStaticMethod.test.js new file mode 100644 index 0000000..d6885e4 --- /dev/null +++ b/test/java-callStaticMethod.test.js @@ -0,0 +1,292 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Java - Call Static Method', () => { + test("callStaticMethod", async () => { + await new Promise(resolve => { + java.callStaticMethod("Test", "staticMethod", (err, result) => { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result).toBe("staticMethod called"); + resolve(); + }); + }); + }); + + test("callStaticMethod without a callback", () => { + const result = java.callStaticMethod("Test", "staticMethod"); + expect(result).toBe(`"Static method 'staticMethod' called without a callback did you mean to use the Sync version?"`); + }); + + test("callStaticMethodSync", () => { + const result = java.callStaticMethodSync("Test", "staticMethod"); + expect(result).toBeTruthy(); + expect(result).toBe("staticMethod called"); + }); + + test("callStaticMethod with args", async () => { + await new Promise(resolve => { + java.callStaticMethod("Test", "staticMethod", 42, (err, result) => { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result).toBe(43); + resolve(); + }); + }); + }); + + test("callStaticMethodSync with args", () => { + const result = java.callStaticMethodSync("Test", "staticMethod", 42); + expect(result).toBeTruthy(); + expect(result).toBe(43); + }); + + test("callStaticMethodSync with BigDecimal", () => { + const bigDecimal = java.newInstanceSync("java.math.BigDecimal", 100.1); + const result = java.callStaticMethodSync("Test", "staticBigDecimalToString", bigDecimal); + expect(result).toBeTruthy(); + expect(Math.abs(parseFloat(result) - 100.1) < 0.0001).toBeTruthy(); + }); + + test("callStaticMethod bad class name", async () => { + await new Promise(resolve => { + java.callStaticMethod("BadClassName", "staticMethod", function (err, result) { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + + test("callStaticMethodSync bad class name", () => { + expect(() => { + java.callStaticMethodSync("BadClassName", "staticMethod"); + }).toThrow(); + }); + + test("callStaticMethod bad arg types", async () => { + await new Promise(resolve => { + java.callStaticMethod("Test", "staticMethod", "z", function (err, result) { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("callStaticMethodSync bad arg types", () => { + expect(() => { + java.callStaticMethodSync("Test", "staticMethod", "z"); + }).toThrow(); + }); + + test("callStaticMethod bad number of args", async () => { + await new Promise(resolve => { + java.callStaticMethod("Test", "staticMethod", 42, "z", function (err, result) { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("callStaticMethodSync bad number of args", () => { + expect(() => { + java.callStaticMethodSync("Test", "staticMethod", 42, "z"); + }).toThrow(); + }); + + test("callStaticMethod bad method name", async () => { + await new Promise(resolve => { + java.callStaticMethod("Test", "badMethodName", function (err, result) { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("callStaticMethodSync bad method name", () => { + expect(() => { + java.callStaticMethodSync("Test", "badMethodName"); + }).toThrow(); + }); + + test("callStaticMethod exception thrown from method (sync)", () => { + const ex = java.newInstanceSync("java.lang.Exception", "my exception"); + let result; + try { + result = java.callStaticMethodSync("Test", "staticMethodThrows", ex); + throw new Error('expected error'); + } catch (err) { + expect(err.cause.getMessageSync()).toBe('my exception'); + expect(err.toString()).toMatch(/my exception/); + expect(result).toBeFalsy(); + } + }); + + test("staticMethodThrows exception thrown from method (sync)", () => { + const ex = java.newInstanceSync("java.lang.Exception", "my exception"); + try { + java.callStaticMethodSync("Test", "staticMethodThrows", ex); + throw new Error("should throw"); + } catch (err) { + expect(err.toString()).toMatch(/my exception/); + } + }); + + test("staticMethodThrows exception thrown from method", async () => { + const ex = java.newInstanceSync("java.lang.Exception", "my exception"); + await new Promise(resolve => { + java.callStaticMethod("Test", "staticMethodThrows", ex, function (err, result) { + expect(err).toBeTruthy(); + expect(err.cause.getMessageSync()).toBe('my exception'); + expect(err.toString()).toMatch(/my exception/); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("staticMethodThrowsNewException exception thrown from method (sync)", () => { + try { + java.callStaticMethodSync("Test", "staticMethodThrowsNewException"); + throw new Error("should throw"); + } catch (err) { + expect(err.toString()).toMatch(/my exception/); + } + }); + + test("staticMethodThrowsNewException exception thrown from method", async () => { + await new Promise(resolve => { + java.callStaticMethod("Test", "staticMethodThrowsNewException", function (err, result) { + expect(err).toBeTruthy(); + expect(err.cause.getMessageSync()).toBe('my exception'); + expect(err.toString()).toMatch(/my exception/); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("methodThrows exception thrown from method (sync)", () => { + const ex = java.newInstanceSync("java.lang.Exception", "my exception"); + const myTest = java.newInstanceSync("Test"); + try { + myTest.methodThrowsSync(ex); + throw new Error("should throw"); + } catch (err) { + expect(err.toString()).toMatch(/my exception/); + } + }); + + test("methodThrows exception thrown from method", async () => { + const ex = java.newInstanceSync("java.lang.Exception", "my exception"); + const myTest = java.newInstanceSync("Test"); + await new Promise(resolve => { + return myTest.methodThrows(ex, function (err) { + expect(err.toString()).toMatch(/my exception/); + resolve(); + }); + }); + }); + + test("methodThrowsNewException exception thrown from method (sync)", () => { + const myTest = java.newInstanceSync("Test"); + try { + myTest.methodThrowsNewExceptionSync(); + throw new Error("should throw"); + } catch (err) { + expect(err.toString()).toMatch(/my exception/); + } + }); + + test("methodThrowsNewException exception thrown from method", async () => { + const myTest = java.newInstanceSync("Test"); + await new Promise(resolve => { + myTest.methodThrowsNewException((err) => { + expect(err.toString()).toMatch(/my exception/); + resolve(); + }); + }); + }); + + test("char array", async () => { + const charArray = java.newArray("char", "hello world\n".split('')); + await new Promise(resolve => { + java.callStaticMethod("Test", "staticMethodCharArrayToString", charArray, function (err, result) { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result).toBe("hello world\n"); + resolve(); + }); + }); + }); + + test("String passed in for Object", async () => { + await new Promise(resolve => { + java.callStaticMethod("Test", "static2Objects", "1", "2", function (err, result) { + expect(err).toBeFalsy(); + expect(result).toBe(false); + resolve(); + }); + }); + }); + + test("java.lang.Long addition", () => { + const javaLong = java.newInstanceSync("java.lang.Long", 5); + expect(javaLong.toString()).toBe('5'); + const result = javaLong + 1; + expect(result).toBe(6); + }); + + test("java.lang.Long calls (java Long)", async () => { + const javaLong = java.newInstanceSync("java.lang.Long", 5); + await new Promise(resolve => { + java.callStaticMethod("Test", "staticMethodLongToString", javaLong, function (err, result) { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result).toBe("5"); + resolve(); + }); + }); + }); + + test("Call method that returns a long", () => { + java.callStaticMethod("Test", "staticMethodReturnLong", function (err, result) { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result.longValue).toBe("9223372036854775807"); + }); + }); + + test("Call method with nested enum value", () => { + const Test = java.import("Test"); + Test.staticEnumToStringSync(Test.StaticEnum.Value1); + const str = Test.staticEnumToStringSync(Test.StaticEnum.Value1); // call it twice to ensure memo-ize is working + expect(str).toBe("Value1"); + }); + + test("Call static method with varargs", () => { + const Test = java.import("Test"); + + let str = Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a', 'b', 'c'])); + expect(str).toBe("5abc"); + + str = Test.staticVarargsSync(5, 'a', 'b', 'c'); + expect(str).toBe("5abc"); + }); + + test("Call static method named name_", async () => { + await new Promise(resolve => { + const Test = java.import("Test"); + Test.name_((err) => { + expect(err).toBeFalsy(); + resolve(); + }); + }); + }); +}); diff --git a/test/java-newInstance-test.js b/test/java-newInstance-test.js deleted file mode 100644 index 393bafb..0000000 --- a/test/java-newInstance-test.js +++ /dev/null @@ -1,121 +0,0 @@ - -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Java - New Instance'] = nodeunit.testCase({ - "newInstance": function(test) { - java.newInstance("Test", function(err, result) { - test.ok(result); - test.equal(result.getClassSync().toStringSync(), "class Test"); - test.ok(result.getInt); - test.ok(result.getIntSync); - test.ok(!result.staticMethod); - test.ok(!result.staticMethodSync); - test.equal(result.nonstaticInt, 42); - test.done(); - }); - }, - - "newInstanceSync": function(test) { - var result = java.newInstanceSync("Test"); - test.ok(result); - test.equal(result.getClassSync().toStringSync(), "class Test"); - test.done(); - }, - - "newInstance with args": function(test) { - java.newInstance("Test", 42, function(err, result) { - test.ok(result); - test.equal(result.getIntSync(), 42); - test.done(); - }); - }, - - "newInstanceSync with args": function(test) { - var result = java.newInstanceSync("Test", 42); - test.ok(result); - test.equal(result.getIntSync(), 42); - test.done(); - }, - - "newInstance bad class name": function(test) { - java.newInstance("BadClassName", function(err, result) { - test.ok(err); - test.ok(!result); - test.done(); - }); - }, - - "newInstanceSync bad class name": function(test) { - test.throws(function() { - java.newInstanceSync("BadClassName"); - }); - test.done(); - }, - - "newInstance bad arg types": function(test) { - java.newInstance("Test", 'a', function(err, result) { - test.ok(err); - test.ok(!result); - test.done(); - }); - }, - - "newInstanceSync bad arg types": function(test) { - test.throws(function() { - java.newInstanceSync("Test", 'a'); - }); - test.done(); - }, - - "newInstance bad number of args": function(test) { - java.newInstance("Test", 42, 15, function(err, result) { - test.ok(err); - test.ok(!result); - test.done(); - }); - }, - - "newInstanceSync bad number of args": function(test) { - test.throws(function() { - java.newInstanceSync("Test", 42, 15); - }); - test.done(); - }, - - "newInstance exception thrown from constructor": function(test) { - var ex = java.newInstanceSync("java.lang.Exception", "my exception"); - java.newInstance("TestExceptions", ex, function(err, result) { - test.ok(err); - test.ok(err.toString().match(/my exception/)); - test.ok(!result); - test.done(); - }); - }, - - "newInstanceSync exception thrown from constructor": function(test) { - var ex = java.newInstanceSync("java.lang.Exception", "my exception"); - try { - java.newInstanceSync("TestExceptions", ex); - test.fail("should throw"); - } catch(err) { - test.ok(err.toString().match(/my exception/)); - } - test.done(); - }, - - "newInstanceSync with varargs": function(test) { - var result = java.newInstanceSync("Test", 42, java.newArray('java.lang.String', ["a", "b"])); - test.ok(result); - - result = java.newInstanceSync("Test", 42, "a"); - test.ok(result); - - result = java.newInstanceSync("Test", 42, "a", "b", "c"); - test.ok(result); - - test.done(); - } -}); diff --git a/test/java-newInstance.test.js b/test/java-newInstance.test.js new file mode 100644 index 0000000..2e7c4df --- /dev/null +++ b/test/java-newInstance.test.js @@ -0,0 +1,121 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Java - New Instance', () => { + test("newInstance", async () => { + await new Promise(resolve => { + java.newInstance("Test", (err, result) => { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result.getClassSync().toStringSync()).toBe("class Test"); + expect(result.getInt).toBeTruthy(); + expect(result.getIntSync).toBeTruthy(); + expect(result.staticMethod).toBeFalsy(); + expect(result.staticMethodSync).toBeFalsy(); + expect(result.nonstaticInt).toBe(42); + resolve(); + }); + }); + }); + + test("newInstanceSync", () => { + const result = java.newInstanceSync("Test"); + expect(result).toBeTruthy(); + expect(result.getClassSync().toStringSync()).toBe("class Test"); + }); + + test("newInstance with args", async () => { + await new Promise(resolve => { + java.newInstance("Test", 42, function (err, result) { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result.getIntSync()).toBe(42); + resolve(); + }); + }) + }); + + test("newInstanceSync with args", () => { + const result = java.newInstanceSync("Test", 42); + expect(result).toBeTruthy(); + expect(result.getIntSync()).toBe(42); + }); + + test("newInstance bad class name", async () => { + await new Promise(resolve => { + java.newInstance("BadClassName", (err, result) => { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("newInstanceSync bad class name", () => { + expect(() => { + java.newInstanceSync("BadClassName"); + }).toThrow(); + }); + + test("newInstance bad arg types", async () => { + await new Promise(resolve => { + java.newInstance("Test", 'a', function (err, result) { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("newInstanceSync bad arg types", () => { + expect(() => { + java.newInstanceSync("Test", 'a'); + }).toThrow(); + }); + + test("newInstance bad number of args", async () => { + await new Promise(resolve => { + java.newInstance("Test", 42, 15, function (err, result) { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("newInstanceSync bad number of args", () => { + expect(() => { + java.newInstanceSync("Test", 42, 15); + }).toThrow(); + }); + + test("newInstance exception thrown from constructor", async () => { + const ex = java.newInstanceSync("java.lang.Exception", "my exception"); + await new Promise(resolve => { + java.newInstance("TestExceptions", ex, function (err, result) { + expect(err).toBeTruthy(); + expect(err.toString()).toMatch(/my exception/); + expect(result).toBeFalsy(); + resolve(); + }); + }); + }); + + test("newInstanceSync exception thrown from constructor", () => { + const ex = java.newInstanceSync("java.lang.Exception", "my exception"); + expect(() => java.newInstanceSync("TestExceptions", ex)).toThrowError(/my exception/); + }); + + test("newInstanceSync with varargs", () => { + let result = java.newInstanceSync("Test", 42, java.newArray('java.lang.String', ["a", "b"])); + expect(result).toBeTruthy(); + + result = java.newInstanceSync("Test", 42, "a"); + expect(result).toBeTruthy(); + + result = java.newInstanceSync("Test", 42, "a", "b", "c"); + expect(result).toBeTruthy(); + }); +}); diff --git a/test/java-staticField-test.js b/test/java-staticField-test.js deleted file mode 100644 index d3f4fad..0000000 --- a/test/java-staticField-test.js +++ /dev/null @@ -1,45 +0,0 @@ - -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Java - Static Field'] = nodeunit.testCase({ - tearDown: function (callback) { - java.setStaticFieldValue("Test", "staticFieldInt", 42); - callback(); - }, - - "getStaticFieldValue int": function(test) { - var val = java.getStaticFieldValue("Test", "staticFieldInt"); - test.equal(val, 42); - test.done(); - }, - - "setStaticFieldValue int": function(test) { - java.setStaticFieldValue("Test", "staticFieldInt", 112); - var val = java.getStaticFieldValue("Test", "staticFieldInt"); - test.equal(val, 112); - test.done(); - }, - - "getStaticFieldValue double": function(test) { - var val = java.getStaticFieldValue("Test", "staticFieldDouble"); - test.equal(val, 42.5); - test.done(); - }, - - "setStaticFieldValue double": function(test) { - java.setStaticFieldValue("Test", "staticFieldDouble", 112.12); - var val = java.getStaticFieldValue("Test", "staticFieldDouble"); - test.equal(val, 112.12); - test.done(); - }, - - "setStaticFieldValue double (set int)": function(test) { - java.setStaticFieldValue("Test", "staticFieldDouble", 112); - var val = java.getStaticFieldValue("Test", "staticFieldDouble"); - test.equal(val, 112); - test.done(); - }, -}); diff --git a/test/java-staticField.test.js b/test/java-staticField.test.js new file mode 100644 index 0000000..1abe110 --- /dev/null +++ b/test/java-staticField.test.js @@ -0,0 +1,38 @@ +import { afterEach, describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Java - Static Field', () => { + afterEach(() => { + java.setStaticFieldValue("Test", "staticFieldInt", 42); + }); + + test("getStaticFieldValue int", () => { + const val = java.getStaticFieldValue("Test", "staticFieldInt"); + expect(val).toBe(42); + }); + + test("setStaticFieldValue int", () => { + java.setStaticFieldValue("Test", "staticFieldInt", 112); + const val = java.getStaticFieldValue("Test", "staticFieldInt"); + expect(val).toBe(112); + }); + + test("getStaticFieldValue double", () => { + const val = java.getStaticFieldValue("Test", "staticFieldDouble"); + expect(val).toBe(42.5); + }); + + test("setStaticFieldValue double", () => { + java.setStaticFieldValue("Test", "staticFieldDouble", 112.12); + const val = java.getStaticFieldValue("Test", "staticFieldDouble"); + expect(val).toBe(112.12); + }); + + test("setStaticFieldValue double (set int)", () => { + java.setStaticFieldValue("Test", "staticFieldDouble", 112); + const val = java.getStaticFieldValue("Test", "staticFieldDouble"); + expect(val).toBe(112); + }); +}); diff --git a/test/javaObject-test.js b/test/javaObject-test.js deleted file mode 100644 index c99ec95..0000000 --- a/test/javaObject-test.js +++ /dev/null @@ -1,19 +0,0 @@ - -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Java Object'] = nodeunit.testCase({ - setUp: function(callback) { - this.testObj = java.newInstanceSync("Test"); - callback(); - }, - - "field": function(test) { - test.equal(this.testObj.nonstaticInt, 42); - this.testObj.nonstaticInt = 112; - test.equal(this.testObj.nonstaticInt, 112); - test.done(); - } -}); diff --git a/test/javaObject.test.js b/test/javaObject.test.js new file mode 100644 index 0000000..24ad054 --- /dev/null +++ b/test/javaObject.test.js @@ -0,0 +1,18 @@ +import { beforeEach, describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Java Object', () => { + let testObj; + + beforeEach(() => { + testObj = java.newInstanceSync("Test"); + }) + + test("field", () => { + expect(testObj.nonstaticInt).toBe(42); + testObj.nonstaticInt = 112; + expect(testObj.nonstaticInt).toBe(112); + }); +}); diff --git a/test/promises-test.js b/test/promises-test.js deleted file mode 100644 index 9bf8248..0000000 --- a/test/promises-test.js +++ /dev/null @@ -1,151 +0,0 @@ -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -function isOpenJDK() { - var javaVendor = java.callStaticMethodSync('java.lang.System', 'getProperty', 'java.vendor'); - var javaVersion = java.callStaticMethodSync('java.lang.System', 'getProperty', 'java.version'); - return /Sun Microsystems Inc/.test(javaVendor) && /^1\.6/.test(javaVersion); -} - -exports['Promises'] = nodeunit.testCase({ - "create an instance of a class and call methods (getClassPromise & getNamePromise)": function(test) { - // Adapted from a test in simple-test.js - java.newInstance("java.util.ArrayList", function(err, list) { - test.ifError(err); - test.ok(list); - list.getClassPromise() - .then(function(clazz) { - test.ok(clazz); - return clazz.getNamePromise(); - }) - .then(function(name) { - test.strictEqual(name, "java.util.ArrayList"); - }) - .catch(function(err) { - test.ifError(err); - }) - .then(function() { - test.expect(4); - test.done(); - }); - }); - }, - - "import and execute promisified static method": function (test) { - var Test = java.import('Test'); - Test.staticMethodPromise(99) - .then(function (result) { - test.strictEqual(100, result); - }) - .catch(function (err) { - test.ifError(err); - }) - .then(function() { - test.expect(1); - test.done(); - }); - }, - - "run promisified method of Java module (newInstancePromise)": function (test) { - java.newInstancePromise("java.util.ArrayList") - .then(function(list) { - test.ok(list); - return list.getClassPromise(); - }) - .then(function(clazz) { - test.ok(clazz); - return clazz.getNamePromise(); - }) - .then(function(name) { - test.strictEqual(name, "java.util.ArrayList"); - }) - .catch(function(err) { - test.ifError(err); - }) - .then(function() { - test.expect(3); - test.done(); - }); - }, - - "run chained promisified methods (of class java.util.ArrayList)": function (test) { - var openJDK = isOpenJDK(); - if (openJDK) { - // This test exposes a latent node-java bug with OpenJDK 1.6. - // See https://github.com/joeferner/node-java/issues/186 - // For now, we simply don't run this test on OpenJDK 1.6. - test.done(); - return; - } - var list; - var it; - var expectException = false; - java.newInstancePromise("java.util.ArrayList") - .then(function(_list) { - test.ok(_list); - list = _list; - return list.getClassPromise(); - }) - .then(function(clazz) { - test.ok(clazz); - return clazz.getNamePromise(); - }) - .then(function(name) { - test.strictEqual(name, "java.util.ArrayList"); - }) - .then(function() { - return list.addPromise('hello'); - }) - .then(function() { - return list.addPromise('world'); - }) - .then(function() { - return list.addPromise('boo'); - }) - .then(function() { - return list.iteratorPromise(); - }) - .then(function(_it) { - test.ok(_it); - it = _it; - return it.nextPromise(); - }) - .then(function(val) { - test.ok(val); - console.log(typeof val, val); - test.strictEqual(val, 'hello'); // java.lang.InternalError exception thrown here with OpenJDK - return it.nextPromise(); - }) - .then(function(val) { - test.ok(val); - console.log(typeof val, val); - test.strictEqual(val, 'world'); - return it.nextPromise(); - }) - .then(function(val) { - test.ok(val); - console.log(typeof val, val); - test.strictEqual(val, 'boo'); - return it.hasNextPromise(); - }) - .then(function(more) { - console.log(typeof more, more); - test.strictEqual(more, false); - expectException = true; - return it.nextPromise(); - }) - .catch(function(err) { - console.log("DEBUG: expectException is %s. err = %s", - expectException, err); - test.ok(expectException); - }) - .then(function() { - test.expect(12); - test.done(); - }); - } - -}); - diff --git a/test/promises.test.js b/test/promises.test.js new file mode 100644 index 0000000..ceebc43 --- /dev/null +++ b/test/promises.test.js @@ -0,0 +1,74 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Promises', () => { + test("create an instance of a class and call methods (getClassPromise & getNamePromise)", async () => { + // Adapted from a test in simple-test.js + const list = await java.newInstancePromise("java.util.ArrayList"); + expect(list).toBeTruthy(); + + const clazz = await list.getClassPromise(); + expect(clazz).toBeTruthy(); + + const name = await clazz.getNamePromise(); + expect(name).toBe("java.util.ArrayList"); + }); + + test("import and execute promisified static method", async () => { + var Test = java.import('Test'); + const result = await Test.staticMethodPromise(99); + expect(result).toBe(100); + }); + + test("run promisified method of Java module (newInstancePromise)", async () => { + const list = await java.newInstancePromise("java.util.ArrayList"); + expect(list).toBeTruthy(); + + const clazz = await list.getClassPromise(); + expect(clazz).toBeTruthy(); + + const name = await clazz.getNamePromise(); + expect(name).toBe("java.util.ArrayList"); + }); + + test("run chained promisified methods (of class java.util.ArrayList)", async () => { + const list = await java.newInstancePromise("java.util.ArrayList"); + expect(list).toBeTruthy(); + + const clazz = await list.getClassPromise(); + expect(clazz).toBeTruthy(); + + const name = await clazz.getNamePromise(); + expect(name).toBe("java.util.ArrayList"); + + await list.addPromise('hello'); + await list.addPromise('world'); + await list.addPromise('boo'); + const it = await list.iteratorPromise(); + expect(it).toBeTruthy(); + + let val = await it.nextPromise(); + expect(val).toBeTruthy(); + console.log(typeof val, val); + expect(val).toBe('hello'); // java.lang.InternalError exception thrown here with OpenJDK + + val = await it.nextPromise(); + expect(val).toBeTruthy(); + console.log(typeof val, val); + expect(val).toBe('world'); + + val = await it.nextPromise(); + expect(val).toBeTruthy(); + console.log(typeof val, val); + expect(val).toBe('boo'); + + const more = await it.hasNextPromise(); + console.log(typeof more, more); + expect(more).toBeFalsy(false); + + expect(async () => await it.nextPromise()).rejects.toThrowError(); + }); +}); + diff --git a/test/simple-test.js b/test/simple-test.js deleted file mode 100644 index bcf87a8..0000000 --- a/test/simple-test.js +++ /dev/null @@ -1,375 +0,0 @@ -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Simple'] = nodeunit.testCase({ - "test classpath commons lang": function(test) { - var result = java.callStaticMethodSync("org.apache.commons.lang3.ObjectUtils", "toString", "test"); - console.log("org.apache.commons.lang3.ObjectUtils.toString:", result); - test.equal(result, "test"); - test.done(); - }, - - "test adding to classpath after other calls are made": function(test) { - java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); - try { - console.log('classpath', java.classpath); - java.classpath = ["test/"]; - test.fail("Exception should be thrown"); - } catch (e) { - // ok - } - test.done(); - }, - - "test changing options after other calls are made": function(test) { - java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); - try { - console.log('options', java.options); - java.options = ["newoption"]; - test.fail("Exception should be thrown"); - } catch (e) { - // ok - } - test.done(); - }, - - "test changing nativeBindingLocation after other calls are made": function(test) { - java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); - try { - console.log('nativeBindingLocation', java.nativeBindingLocation); - java.nativeBindingLocation = "newNativeBindingLocation"; - test.fail("Exception should be thrown"); - } catch (e) { - // ok - } - test.done(); - }, - - "test static calls": function(test) { - var result = java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); - console.log("currentTimeMillis:", result); - test.ok(result); - test.done(); - }, - - "test static calls single argument": function(test) { - var result = java.callStaticMethodSync("java.lang.System", "getProperty", "os.version"); - console.log("os.version:", result); - test.ok(result); - test.done(); - }, - - "test method does not exists (sync)": function(test) { - test.throws( - function() { - java.callStaticMethodSync("java.lang.System", "badMethod"); - } - ); - test.done(); - }, - - "test method does not exists (async)": function(test) { - java.callStaticMethod("java.lang.System", "badMethod", function(err, result) { - if (err) { - test.done(); - return; - } - test.done(new Error("should throw exception")); - }); - }, - - "create an instance of a class and call methods (getName) (async)": function(test) { - java.newInstance("java.util.ArrayList", function(err, list) { - if (err) { - console.log(err); - return; - } - test.ok(list); - if (list) { - list.getClass(function(err, result) { - if (err) { - console.log(err); - return; - } - result.getName(function(err, result) { - if (err) { - console.log(err); - return; - } - test.equal(result, "java.util.ArrayList"); - test.done(); - }); - }); - } - }); - }, - - "create an instance of a class and call methods (getName) (sync)": function(test) { - var list = java.newInstanceSync("java.util.ArrayList"); - test.equal(list.sizeSync(), 0); - list.addSync("hello"); - list.addSync("world"); - test.equal(list.sizeSync(), 2); - var item0 = list.getSync(0); - test.equal(item0, "hello"); - var clazz = list.getClassSync(); - var result = clazz.getNameSync(); - test.equal(result, "java.util.ArrayList"); - test.done(); - }, - - "create an instance of a class and call methods (size) (async)": function(test) { - java.newInstance("java.util.ArrayList", function(err, list) { - if (err) { - console.log(err); - return; - } - test.ok(list); - if (list) { - list.size(function(err, result) { - if (err) { - console.log(err); - return; - } - test.equal(result, 0); - test.done(); - }); - } - }); - }, - - "passing objects to methods": function(test) { - var dataArray = "hello world\n".split('').map(function(c) { return java.newByte(c.charCodeAt(0)); }); - var data = java.newArray("byte", dataArray); - //console.log("data", data.toStringSync()); - var stream = java.newInstanceSync("java.io.ByteArrayInputStream", data); - //console.log("stream", stream); - var reader = java.newInstanceSync("java.io.InputStreamReader", stream); - //console.log("reader", reader); - var bufferedReader = java.newInstanceSync("java.io.BufferedReader", reader); - var str = bufferedReader.readLineSync(); - console.log("bufferedReader.readLineSync", str); - test.equal(str, "hello world"); - test.done(); - }, - - "method returning an array of ints sync": function(test) { - var arr = java.callStaticMethodSync("Test", "getArrayOfInts"); - console.log(arr); - test.done(); - }, - - "method returning an array of bytes sync": function(test) { - var arr = java.callStaticMethodSync("Test", "getArrayOfBytes"); - console.log(arr); - test.done(); - }, - - "method returning an array of bools sync": function(test) { - var arr = java.callStaticMethodSync("Test", "getArrayOfBools"); - console.log(arr); - test.done(); - }, - - "method returning an array of doubles sync": function(test) { - var arr = java.callStaticMethodSync("Test", "getArrayOfDoubles"); - console.log(arr); - test.done(); - }, - - "method returning an array of floats sync": function(test) { - var arr = java.callStaticMethodSync("Test", "getArrayOfFloats"); - console.log(arr); - test.done(); - }, - - "method returning an array of longs sync": function(test) { - var arr = java.callStaticMethodSync("Test", "getArrayOfLongs"); - arr = arr.map(function(l) { - return l.toStringSync(); - }); - console.log(arr); - test.done(); - }, - - "method returning a string (Unicode BMP)": function(test) { - var s = java.callStaticMethodSync("Test", "getUnicodeBMP"); - console.log(s); - test.equal("\u2605", s); - test.done(); - }, - - "method returning a string (Unicode SMP)": function(test) { - var s = java.callStaticMethodSync("Test", "getUnicodeSMP"); - console.log(s); - // The below string is U+1F596, represented as surrogate pairs - test.equal("\uD83D\uDD96", s); - test.done(); - }, - - "method returning a string (NULL char)": function(test) { - var s = java.callStaticMethodSync("Test", "getUnicodeNull"); - console.log(s); - test.equal("\0", s); - test.done(); - }, - - "method taking a byte": function(test) { - var b = java.newByte(1); - test.equal('java.lang.Byte', b.getClassSync().getNameSync()); - test.equal('1', b.toStringSync()); - var r = java.callStaticMethodSync("Test", "staticByte", b); - console.log(r); - test.equal(r, 1); - test.done(); - }, - - "method taking a short": function(test) { - var s = java.newShort(1); - test.equal('java.lang.Short', s.getClassSync().getNameSync()); - test.equal('1', s.toStringSync()); - var r = java.callStaticMethodSync("Test", "staticShort", s); - console.log(r); - test.equal(r, 1); - test.done(); - }, - - "method taking a double": function(test) { - var s = java.newDouble(3.14); - test.equal('java.lang.Double', s.getClassSync().getNameSync()); - test.equal('3.14', s.toStringSync()); - var r = java.callStaticMethodSync("Test", "staticDouble", s); - console.log(r); - test.ok(Math.abs(r - 3.14) < 0.0001, r + " != 3.14"); - test.done(); - }, - - "method taking a float": function(test) { - var s = java.newFloat(3.14); - test.equal('java.lang.Float', s.getClassSync().getNameSync()); - test.equal('3.14', s.toStringSync()); - var r = java.callStaticMethodSync("Test", "staticFloat", s); - console.log(r); - test.ok(Math.abs(r - 3.14) < 0.0001, r + " != 3.14"); - test.done(); - }, - - "method taking a long": function(test) { - var l = java.newLong(1); - test.equal('java.lang.Long', l.getClassSync().getNameSync()); - test.equal('1', l.toStringSync()); - var r = java.callStaticMethodSync("Test", "staticLong", l); - console.log(r); - test.equal(r, 1); - test.done(); - }, - - "method taking a char (number)": function(test) { - var ch = java.newChar(97); // 'a' - test.equal('java.lang.Character', ch.getClassSync().getNameSync()); - test.equal('a', ch.toStringSync()); - var r = java.callStaticMethodSync("Test", "staticChar", ch); - console.log(r); - test.equal(r, 97); - test.done(); - }, - - "method taking a char (string)": function(test) { - var ch = java.newChar('a'); - test.equal('java.lang.Character', ch.getClassSync().getNameSync()); - test.equal('a', ch.toStringSync()); - var r = java.callStaticMethodSync("Test", "staticChar", ch); - console.log(r); - test.equal(r, 97); - test.done(); - }, - - "method taking a string (Unicode BMP)": function(test) { - var s = "\u2605"; - var r = java.callStaticMethodSync("Test", "staticString", s); - console.log(r); - test.equal(r, s); - test.done(); - }, - - "method taking a string (Unicode SMP)": function(test) { - // The below string is U+1F596, represented as surrogate pairs - var s = "\uD83D\uDD96"; - var r = java.callStaticMethodSync("Test", "staticString", s); - console.log(r); - test.equal(r, s); - test.done(); - }, - - "method taking a string (with null char)": function(test) { - var s = "\0"; - var r = java.callStaticMethodSync("Test", "staticString", s); - console.log(r); - test.equal(r, s); - test.done(); - }, - - "new boolean array object": function(test) { - var booleanArray = java.newArray("java.lang.Boolean", [true, false]); - var r = java.callStaticMethodSync("Test", "staticBooleanArray", booleanArray); - test.equal(r.length, 2); - test.equal(r[0], true); - test.equal(r[1], false); - test.done(); - }, - "new byte array object": function(test) { - var byteArray = java.newArray("byte", [1, 2, 3]); - test.equal(byteArray.length, 3); - test.equal(byteArray[0], 1); - test.equal(byteArray[1], 2); - test.equal(byteArray[2], 3); - test.done(); - }, - "new boolean array": function(test) { - var booleanArray = java.newArray("boolean", [true, false]); - var r = java.callStaticMethodSync("Test", "staticBooleanArray", booleanArray); - test.equal(r.length, 2); - test.equal(r[0], true); - test.equal(r[1], false); - test.done(); - }, - - "new int array": function(test) { - var intArray = java.newArray("int", [1, 2]); - var r = java.callStaticMethodSync("Test", "staticIntArray", intArray); - test.equal(r.length, 2); - test.equal(r[0], 1); - test.equal(r[1], 2); - test.done(); - }, - - "new double array": function(test) { - var doubleArray = java.newArray("double", [1.2, 4]); - var r = java.callStaticMethodSync("Test", "staticDoubleArray", doubleArray); - test.equal(r.length, 2); - test.equal(r[0], 1.2); - test.equal(r[1], 4); - test.done(); - }, - - "new short array objects": function(test) { - var shortArray = java.newArray("java.lang.Short", [1, 2].map(function(c) { return java.newShort(c); })); - var r = java.callStaticMethodSync("Test", "staticShortArray", shortArray); - test.equal(r.length, 2); - test.equal(r[0], 1); - test.equal(r[1], 2); - test.done(); - }, - - "new short array": function(test) { - var shortArray = java.newArray("short", [1, 2]); - var r = java.callStaticMethodSync("Test", "staticShortArray", shortArray); - test.equal(r.length, 2); - test.equal(r[0], 1); - test.equal(r[1], 2); - test.done(); - } -}); - diff --git a/test/simple.test.js b/test/simple.test.js new file mode 100644 index 0000000..fc908cc --- /dev/null +++ b/test/simple.test.js @@ -0,0 +1,338 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('Simple', () => { + test("test classpath commons lang", () => { + const result = java.callStaticMethodSync("org.apache.commons.lang3.ObjectUtils", "toString", "test"); + console.log("org.apache.commons.lang3.ObjectUtils.toString:", result); + expect(result).toBe("test"); + }); + + test("test adding to classpath after other calls are made", () => { + java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); + try { + console.log('classpath', java.classpath); + java.classpath = ["test/"]; + throw new Error("Exception should be thrown"); + } catch (e) { + // ok + } + }); + + test("test changing options after other calls are made", () => { + java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); + try { + console.log('options', java.options); + java.options = ["newoption"]; + throw new Error("Exception should be thrown"); + } catch (e) { + // ok + } + }); + + test("test changing nativeBindingLocation after other calls are made", () => { + java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); + try { + console.log('nativeBindingLocation', java.nativeBindingLocation); + java.nativeBindingLocation = "newNativeBindingLocation"; + throw new Error("Exception should be thrown"); + } catch (e) { + // ok + } + }); + + test("test static calls", () => { + const result = java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); + console.log("currentTimeMillis:", result); + expect(result).toBeTruthy(); + }); + + test("test static calls single argument", () => { + const result = java.callStaticMethodSync("java.lang.System", "getProperty", "os.version"); + console.log("os.version:", result); + expect(result).toBeTruthy(); + }); + + test("test method does not exists (sync)", () => { + expect(() => { + java.callStaticMethodSync("java.lang.System", "badMethod"); + }).toThrow(); + }); + + test("test method does not exists (async)", () => { + java.callStaticMethod("java.lang.System", "badMethod", function (err, result) { + if (err) { + + return; + } + test.done(new Error("should throw exception")); + }); + }); + + test("create an instance of a class and call methods (getName) (async)", async () => { + await new Promise(resolve => { + java.newInstance("java.util.ArrayList", (err, list) => { + expect(err).toBeFalsy(); + expect(list).toBeTruthy(); + list.getClass((err, result) => { + expect(err).toBeFalsy(); + result.getName((err, result) => { + expect(err).toBeFalsy(); + expect(result).toBe("java.util.ArrayList"); + resolve(); + }); + }); + }); + }); + }); + + test("create an instance of a class and call methods (getName) (sync)", () => { + const list = java.newInstanceSync("java.util.ArrayList"); + expect(list.sizeSync()).toBe(0); + list.addSync("hello"); + list.addSync("world"); + expect(list.sizeSync()).toBe(2); + const item0 = list.getSync(0); + expect(item0).toBe("hello"); + const clazz = list.getClassSync(); + const result = clazz.getNameSync(); + expect(result).toBe("java.util.ArrayList"); + }); + + test("create an instance of a class and call methods (size) (async)", async () => { + await new Promise((resolve) => { + java.newInstance("java.util.ArrayList", (err, list) => { + expect(err).toBeFalsy(); + expect(list).toBeTruthy(); + list.size((err, result) => { + expect(err).toBeFalsy(); + expect(result).toBe(0); + resolve(); + }); + }); + }) + }); + + test("passing objects to methods", () => { + const dataArray = "hello world\n".split('').map(function (c) { return java.newByte(c.charCodeAt(0)); }); + const data = java.newArray("byte", dataArray); + const stream = java.newInstanceSync("java.io.ByteArrayInputStream", data); + const reader = java.newInstanceSync("java.io.InputStreamReader", stream); + const bufferedReader = java.newInstanceSync("java.io.BufferedReader", reader); + const str = bufferedReader.readLineSync(); + expect(str).toBe("hello world"); + }); + + test("method returning an array of ints sync", () => { + const arr = java.callStaticMethodSync("Test", "getArrayOfInts"); + expect(arr.length).toBe(5); + expect(arr[0]).toBe(1); + expect(arr[1]).toBe(2); + expect(arr[2]).toBe(3); + expect(arr[3]).toBe(4); + expect(arr[4]).toBe(5); + }); + + test("method returning an array of bytes sync", () => { + const arr = java.callStaticMethodSync("Test", "getArrayOfBytes"); + expect(arr.length).toBe(5); + expect(arr[0]).toBe(1); + expect(arr[1]).toBe(2); + expect(arr[2]).toBe(3); + expect(arr[3]).toBe(4); + expect(arr[4]).toBe(5); + }); + + test("method returning an array of bools sync", () => { + const arr = java.callStaticMethodSync("Test", "getArrayOfBools"); + expect(arr.length).toBe(5); + expect(arr[0]).toBe(true); + expect(arr[1]).toBe(true); + expect(arr[2]).toBe(false); + expect(arr[3]).toBe(true); + expect(arr[4]).toBe(false); + }); + + test("method returning an array of doubles sync", () => { + const arr = java.callStaticMethodSync("Test", "getArrayOfDoubles"); + expect(arr.length).toBe(5); + expect(arr[0]).toBe(1); + expect(arr[1]).toBe(2); + expect(arr[2]).toBe(3); + expect(arr[3]).toBe(4); + expect(arr[4]).toBe(5); + }); + + test("method returning an array of floats sync", () => { + const arr = java.callStaticMethodSync("Test", "getArrayOfFloats"); + expect(arr.length).toBe(5); + expect(arr[0]).toBe(1); + expect(arr[1]).toBe(2); + expect(arr[2]).toBe(3); + expect(arr[3]).toBe(4); + expect(arr[4]).toBe(5); + }); + + test("method returning an array of longs sync", () => { + let arr = java.callStaticMethodSync("Test", "getArrayOfLongs"); + arr = arr.map(function (l) { + return l.toStringSync(); + }); + expect(arr.length).toBe(5); + expect(arr[0]).toBe('9223372036854775807'); + expect(arr[1]).toBe('-9223372036854775808'); + expect(arr[2]).toBe('3'); + expect(arr[3]).toBe('4'); + expect(arr[4]).toBe('5'); + }); + + test("method returning a string (Unicode BMP)", () => { + const s = java.callStaticMethodSync("Test", "getUnicodeBMP"); + expect(s).toBe("\u2605"); + }); + + test("method returning a string (Unicode SMP)", () => { + const s = java.callStaticMethodSync("Test", "getUnicodeSMP"); + // The below string is U+1F596, represented as surrogate pairs + expect(s).toBe("\uD83D\uDD96"); + }); + + test("method returning a string (NULL char)", () => { + const s = java.callStaticMethodSync("Test", "getUnicodeNull"); + expect(s).toBe("\0"); + }); + + test("method taking a byte", () => { + const b = java.newByte(1); + expect(b.getClassSync().getNameSync()).toBe('java.lang.Byte'); + expect(b.toStringSync()).toBe('1'); + const r = java.callStaticMethodSync("Test", "staticByte", b); + expect(r).toBe(1); + }); + + test("method taking a short", () => { + const s = java.newShort(1); + expect(s.getClassSync().getNameSync()).toBe('java.lang.Short'); + expect(s.toStringSync()).toBe('1'); + const r = java.callStaticMethodSync("Test", "staticShort", s); + expect(r).toBe(1); + }); + + test("method taking a double", () => { + const s = java.newDouble(3.14); + expect(s.getClassSync().getNameSync()).toBe('java.lang.Double'); + expect(s.toStringSync()).toBe('3.14'); + const r = java.callStaticMethodSync("Test", "staticDouble", s); + expect(Math.abs(r - 3.14) < 0.0001, r + " != 3.14").toBeTruthy(); + }); + + test("method taking a float", () => { + const s = java.newFloat(3.14); + expect(s.getClassSync().getNameSync()).toBe('java.lang.Float'); + expect(s.toStringSync()).toBe('3.14'); + const r = java.callStaticMethodSync("Test", "staticFloat", s); + expect(Math.abs(r - 3.14) < 0.0001, r + " != 3.14").toBeTruthy(); + }); + + test("method taking a long", () => { + const l = java.newLong(1); + expect(l.getClassSync().getNameSync()).toBe('java.lang.Long'); + expect(l.toStringSync()).toBe('1'); + const r = java.callStaticMethodSync("Test", "staticLong", l); + expect(r).toBe(1); + }); + + test("method taking a char (number)", () => { + const ch = java.newChar(97); // 'a' + expect(ch.getClassSync().getNameSync()).toBe('java.lang.Character'); + expect(ch.toStringSync()).toBe('a'); + const r = java.callStaticMethodSync("Test", "staticChar", ch); + expect(r).toBe(97); + }); + + test("method taking a char (string)", () => { + const ch = java.newChar('a'); + expect(ch.getClassSync().getNameSync()).toBe('java.lang.Character'); + expect(ch.toStringSync()).toBe('a'); + const r = java.callStaticMethodSync("Test", "staticChar", ch); + expect(r).toBe(97); + }); + + test("method taking a string (Unicode BMP)", () => { + const s = "\u2605"; + const r = java.callStaticMethodSync("Test", "staticString", s); + expect(r).toBe(s); + }); + + test("method taking a string (Unicode SMP)", () => { + // The below string is U+1F596, represented as surrogate pairs + const s = "\uD83D\uDD96"; + const r = java.callStaticMethodSync("Test", "staticString", s); + expect(r).toBe(s); + }); + + test("method taking a string (with null char)", () => { + const s = "\0"; + const r = java.callStaticMethodSync("Test", "staticString", s); + expect(r).toBe(s); + }); + + test("new boolean array object", () => { + const booleanArray = java.newArray("java.lang.Boolean", [true, false]); + const r = java.callStaticMethodSync("Test", "staticBooleanArray", booleanArray); + expect(r.length).toBe(2); + expect(r[0]).toBe(true); + expect(r[1]).toBe(false); + }); + + test("new byte array object", () => { + const byteArray = java.newArray("byte", [1, 2, 3]); + expect(byteArray.length).toBe(3); + expect(byteArray[0]).toBe(1); + expect(byteArray[1]).toBe(2); + expect(byteArray[2]).toBe(3); + }); + + test("new boolean array", () => { + const booleanArray = java.newArray("boolean", [true, false]); + const r = java.callStaticMethodSync("Test", "staticBooleanArray", booleanArray); + expect(r.length).toBe(2); + expect(r[0]).toBe(true); + expect(r[1]).toBe(false); + }); + + test("new int array", () => { + const intArray = java.newArray("int", [1, 2]); + const r = java.callStaticMethodSync("Test", "staticIntArray", intArray); + expect(r.length).toBe(2); + expect(r[0]).toBe(1); + expect(r[1]).toBe(2); + }); + + test("new double array", () => { + const doubleArray = java.newArray("double", [1.2, 4]); + const r = java.callStaticMethodSync("Test", "staticDoubleArray", doubleArray); + expect(r.length).toBe(2); + expect(r[0]).toBe(1.2); + expect(r[1]).toBe(4); + }); + + test("new short array objects", () => { + const shortArray = java.newArray("java.lang.Short", [1, 2].map(function (c) { return java.newShort(c); })); + const r = java.callStaticMethodSync("Test", "staticShortArray", shortArray); + expect(r.length).toBe(2); + expect(r[0]).toBe(1); + expect(r[1]).toBe(2); + }); + + test("new short array", () => { + const shortArray = java.newArray("short", [1, 2]); + const r = java.callStaticMethodSync("Test", "staticShortArray", shortArray); + expect(r.length).toBe(2); + expect(r[0]).toBe(1); + expect(r[1]).toBe(2); + }); +}); + diff --git a/test/utils-types-test.js b/test/utils-types-test.js deleted file mode 100644 index 327e7d3..0000000 --- a/test/utils-types-test.js +++ /dev/null @@ -1,70 +0,0 @@ - -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Utils - Types'] = nodeunit.testCase({ - "Array of Objects": function(test) { - var val = java.getStaticFieldValue("Test", "staticArrayObjects"); - test.equal(null, val); - - java.setStaticFieldValue("Test", "staticArrayObjects", java.newArray("Test", [ - java.newInstanceSync("Test", 1), - java.newInstanceSync("Test", 2), - java.newInstanceSync("Test", 3) - ])); - - val = java.getStaticFieldValue("Test", "staticArrayObjects"); - test.ok(val); - test.equal(val.length, 3); - test.equal(val[0].getIntSync(), 1); - test.equal(val[1].getIntSync(), 2); - test.equal(val[2].getIntSync(), 3); - test.done(); - }, - - "Static Method Overload": function(test) { - var result = java.callStaticMethodSync("Test", "staticMethodOverload", "a"); - test.equal(result, 1); - result = java.callStaticMethodSync("Test", "staticMethodOverload", 1); - test.equal(result, 2); - result = java.callStaticMethodSync("Test", "staticMethodOverload", java.newInstanceSync("Test$SuperClass")); - test.equal(result, 3); - result = java.callStaticMethodSync("Test", "staticMethodOverload", java.newInstanceSync("Test$SubClass")); - test.equal(result, 4); - test.done(); - }, - - "Method Overload": function(test) { - var testObj = java.newInstanceSync("Test"); - var result = testObj.methodOverloadSync("a"); - test.equal(result, 1); - result = testObj.methodOverloadSync(1); - test.equal(result, 2); - result = testObj.methodOverloadSync(java.newInstanceSync("Test$SuperClass")); - test.equal(result, 3); - result = testObj.methodOverloadSync(java.newInstanceSync("Test$SubClass")); - test.equal(result, 4); - test.done(); - }, - - "Char array": function(test) { - var originalArray = "hello 世界\n".split(''); - var Arrays = java.import("java.util.Arrays"); - var arr1 = java.newArray("char", originalArray); - var list = Arrays.asListSync(arr1); - var arr2 = list.toArraySync(); - test.equal(arr2.length, 1); - test.equal(arr2[0].length, 9); - var isTypedArrayReturn = !(typeof arr2[0][0] === 'string'); - for(var i=0; i { + test("Array of Objects", () => { + let val = java.getStaticFieldValue("Test", "staticArrayObjects"); + expect(val).toBeNull(); + + java.setStaticFieldValue("Test", "staticArrayObjects", java.newArray("Test", [ + java.newInstanceSync("Test", 1), + java.newInstanceSync("Test", 2), + java.newInstanceSync("Test", 3) + ])); + + val = java.getStaticFieldValue("Test", "staticArrayObjects"); + expect(val).toBeTruthy(); + expect(val.length).toBe(3); + expect(val[0].getIntSync()).toBe(1); + expect(val[1].getIntSync()).toBe(2); + expect(val[2].getIntSync()).toBe(3); + }); + + test("Static Method Overload", () => { + let result = java.callStaticMethodSync("Test", "staticMethodOverload", "a"); + expect(result).toBe(1); + result = java.callStaticMethodSync("Test", "staticMethodOverload", 1); + expect(result).toBe(2); + result = java.callStaticMethodSync("Test", "staticMethodOverload", java.newInstanceSync("Test$SuperClass")); + expect(result).toBe(3); + result = java.callStaticMethodSync("Test", "staticMethodOverload", java.newInstanceSync("Test$SubClass")); + expect(result).toBe(4); + }); + + test("Method Overload", () => { + const testObj = java.newInstanceSync("Test"); + let result = testObj.methodOverloadSync("a"); + expect(result).toBe(1); + result = testObj.methodOverloadSync(1); + expect(result).toBe(2); + result = testObj.methodOverloadSync(java.newInstanceSync("Test$SuperClass")); + expect(result).toBe(3); + result = testObj.methodOverloadSync(java.newInstanceSync("Test$SubClass")); + expect(result).toBe(4); + }); + + test("Char array", () => { + const originalArray = "hello 世界\n".split(''); + const Arrays = java.import("java.util.Arrays"); + const arr1 = java.newArray("char", originalArray); + const list = Arrays.asListSync(arr1); + const arr2 = list.toArraySync(); + expect(arr2.length).toBe(1); + expect(arr2[0].length).toBe(9); + const isTypedArrayReturn = !(typeof arr2[0][0] === 'string'); + for (let i = 0; i < originalArray.length; i++) { + if (isTypedArrayReturn) { + expect(arr2[0][i]).toBe(originalArray[i].charCodeAt(0)); + } else { + expect(arr2[0][i]).toBe(originalArray[i]); + } + } + }); +}); diff --git a/test/varargs-test.js b/test/varargs-test.js deleted file mode 100644 index 3db1776..0000000 --- a/test/varargs-test.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict'; - -var java = require('../testHelpers').java; - -var nodeunit = require('nodeunit'); -var util = require('util'); - -exports['varargs'] = nodeunit.testCase({ - - 'array signature inferrence': function(test) { - test.expect(9); - var Test = java.import('Test'); - test.strictEqual(Test.varArgsSignatureSync([]), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync(['a', 'b']), 'String...'); - test.strictEqual(Test.varArgsSignatureSync([1, 2]), 'Integer...'); - test.strictEqual(Test.varArgsSignatureSync([1.1, 2]), 'Number...'); - test.strictEqual(Test.varArgsSignatureSync([1.1, 'a']), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync([true, 'a']), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync([true, 1]), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync([true, 1.1]), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync([true, false]), 'Boolean...'); - test.done(); - }, - - 'variadic signature inferrence': function(test) { - test.expect(9); - var Test = java.import('Test'); - test.strictEqual(Test.varArgsSignatureSync(), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync('a', 'b'), 'String...'); - test.strictEqual(Test.varArgsSignatureSync(1, 2), 'Integer...'); - test.strictEqual(Test.varArgsSignatureSync(1.1, 2), 'Number...'); - test.strictEqual(Test.varArgsSignatureSync(1.1, 'a'), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync(true, 'a'), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync(true, 1), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync(true, 1.1), 'Object...'); - test.strictEqual(Test.varArgsSignatureSync(true, false), 'Boolean...'); - test.done(); - }, - - 'variadic no args': function(test) { - test.expect(1); - var String = java.import('java.lang.String'); - test.strictEqual(String.formatSync('nothing'), 'nothing'); - test.done(); - }, - - 'variadic one args': function(test) { - test.expect(1); - var String = java.import('java.lang.String'); - test.strictEqual(String.formatSync('%s', 'hello'), 'hello'); - test.done(); - }, - - 'variadic two args': function(test) { - test.expect(1); - var String = java.import('java.lang.String'); - test.strictEqual(String.formatSync('%s--%s', 'hello', 'world'), 'hello--world'); - test.done(); - }, - - 'newArray(Object) no args passed': function(test) { - test.expect(1); - var String = java.import('java.lang.String'); - test.strictEqual(String.formatSync('nothing', java.newArray('java.lang.Object', [])), 'nothing'); - test.done(); - }, - - 'newArray(Object) one args': function(test) { - test.expect(1); - var String = java.import('java.lang.String'); - test.strictEqual(String.formatSync('%s', java.newArray('java.lang.Object', ['hello'])), 'hello'); - test.done(); - }, - - 'newArray(Object) two args': function(test) { - test.expect(1); - var String = java.import('java.lang.String'); - test.strictEqual(String.formatSync('%s--%s', java.newArray('java.lang.Object', ['hello', 'world'])), 'hello--world'); - test.done(); - }, - - 'Call static method with variadic varargs': function(test) { - test.expect(4); - var Test = java.import('Test'); - test.equal(Test.staticVarargsSync(5), '5'); - test.equal(Test.staticVarargsSync(5, 'a'), '5a'); - test.equal(Test.staticVarargsSync(5, 'a', 'b'), '5ab'); - test.equal(Test.staticVarargsSync(5, 'a', 'b', 'c'), '5abc'); - test.done(); - }, - - 'Call static varargs method with plain array': function(test) { - test.expect(3); - var Test = java.import('Test'); - test.equal(Test.staticVarargsSync(5, ['a']), '5a'); - test.equal(Test.staticVarargsSync(5, ['a', 'b']), '5ab'); - test.equal(Test.staticVarargsSync(5, ['a', 'b', 'c']), '5abc'); - test.done(); - }, - - 'Call static varags method with newArray': function(test) { - test.expect(2); - var Test = java.import('Test'); - test.equal(Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a'])), '5a'); - test.equal(Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a', 'b', 'c'])), '5abc'); - test.done(); - } - -}); diff --git a/test/varargs.test.js b/test/varargs.test.js new file mode 100644 index 0000000..a7f69e7 --- /dev/null +++ b/test/varargs.test.js @@ -0,0 +1,83 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava(); + +describe('varargs', () => { + test('array signature inference', () => { + const Test = java.import('Test'); + expect(Test.varArgsSignatureSync([])).toBe('Object...'); + expect(Test.varArgsSignatureSync(['a', 'b'])).toBe('String...'); + expect(Test.varArgsSignatureSync([1, 2])).toBe('Integer...'); + expect(Test.varArgsSignatureSync([1.1, 2])).toBe('Number...'); + expect(Test.varArgsSignatureSync([1.1, 'a'])).toBe('Object...'); + expect(Test.varArgsSignatureSync([true, 'a'])).toBe('Object...'); + expect(Test.varArgsSignatureSync([true, 1])).toBe('Object...'); + expect(Test.varArgsSignatureSync([true, 1.1])).toBe('Object...'); + expect(Test.varArgsSignatureSync([true, false])).toBe('Boolean...'); + }); + + test('variadic signature inference', () => { + const Test = java.import('Test'); + expect(Test.varArgsSignatureSync()).toBe('Object...'); + expect(Test.varArgsSignatureSync('a', 'b')).toBe('String...'); + expect(Test.varArgsSignatureSync(1, 2)).toBe('Integer...'); + expect(Test.varArgsSignatureSync(1.1, 2)).toBe('Number...'); + expect(Test.varArgsSignatureSync(1.1, 'a')).toBe('Object...'); + expect(Test.varArgsSignatureSync(true, 'a')).toBe('Object...'); + expect(Test.varArgsSignatureSync(true, 1)).toBe('Object...'); + expect(Test.varArgsSignatureSync(true, 1.1)).toBe('Object...'); + expect(Test.varArgsSignatureSync(true, false)).toBe('Boolean...'); + }); + + test('variadic no args', () => { + const String = java.import('java.lang.String'); + expect(String.formatSync('nothing')).toBe('nothing'); + }); + + test('variadic one args', () => { + const String = java.import('java.lang.String'); + expect(String.formatSync('%s', 'hello')).toBe('hello'); + }); + + test('variadic two args', () => { + const String = java.import('java.lang.String'); + expect(String.formatSync('%s--%s', 'hello', 'world')).toBe('hello--world'); + }); + + test('newArray(Object) no args passed', () => { + const String = java.import('java.lang.String'); + expect(String.formatSync('nothing', java.newArray('java.lang.Object', []))).toBe('nothing'); + }); + + test('newArray(Object) one args', () => { + const String = java.import('java.lang.String'); + expect(String.formatSync('%s', java.newArray('java.lang.Object', ['hello']))).toBe('hello'); + }); + + test('newArray(Object) two args', () => { + const String = java.import('java.lang.String'); + expect(String.formatSync('%s--%s', java.newArray('java.lang.Object', ['hello', 'world']))).toBe('hello--world'); + }); + + test('Call static method with variadic varargs', () => { + const Test = java.import('Test'); + expect(Test.staticVarargsSync(5)).toBe('5'); + expect(Test.staticVarargsSync(5, 'a')).toBe('5a'); + expect(Test.staticVarargsSync(5, 'a', 'b')).toBe('5ab'); + expect(Test.staticVarargsSync(5, 'a', 'b', 'c')).toBe('5abc'); + }); + + test('Call static varargs method with plain array', () => { + const Test = java.import('Test'); + expect(Test.staticVarargsSync(5, ['a'])).toBe('5a'); + expect(Test.staticVarargsSync(5, ['a', 'b'])).toBe('5ab'); + expect(Test.staticVarargsSync(5, ['a', 'b', 'c'])).toBe('5abc'); + }); + + test('Call static varags method with newArray', () => { + const Test = java.import('Test'); + expect(Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a']))).toBe('5a'); + expect(Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a', 'b', 'c']))).toBe('5abc'); + }); +}); diff --git a/test8/testLambda.js b/test8/testLambda.js deleted file mode 100644 index 994ad02..0000000 --- a/test8/testLambda.js +++ /dev/null @@ -1,27 +0,0 @@ -var java = require("../testHelpers").java; - -var nodeunit = require("nodeunit"); -var util = require("util"); - -exports['Java8'] = nodeunit.testCase({ - "call methods of a class that uses lambda expressions": function(test) { - try { - var TestLambda = java.import('TestLambda'); - var lambda = new TestLambda(); - var sum = lambda.testLambdaAdditionSync(23, 42); - test.equal(sum, 65); - var diff = lambda.testLambdaSubtractionSync(23, 42); - test.equal(diff, -19); - } - catch (err) { - var unsupportedVersion = java.instanceOf(err.cause, 'java.lang.UnsupportedClassVersionError'); - test.ok(unsupportedVersion); - if (unsupportedVersion) - console.log('JRE 1.8 not available'); - else - console.error('Java8 test failed with unknown error:', err); - } - test.done(); - } -}); - diff --git a/testAsyncOptions/allThreeSuffix.test.js b/testAsyncOptions/allThreeSuffix.test.js new file mode 100644 index 0000000..6a0dd13 --- /dev/null +++ b/testAsyncOptions/allThreeSuffix.test.js @@ -0,0 +1,86 @@ +// All three variants have non-empty suffix, i.e a suffix is required for any variant. + +import { getJava } from "../testHelpers"; +import { describe, test, expect } from "vitest"; + +const java = getJava({ + syncSuffix: "Sync", + asyncSuffix: "Async", + promiseSuffix: 'Promise', + promisify: require('when/node').lift // https://github.com/cujojs/when +}); + +describe('allThreeSuffix', () => { + test('api', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + expect(arrayList).toBeDefined(); + expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); + + expect(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.addAsync !== 'undefined', 'Expected `addAsync` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.add === 'undefined', 'Expected `add` to NOT be present, but it is.').toBeTruthy(); + }); + + test('importClass', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + const ArrayList = java.import("java.util.ArrayList"); + expect(ArrayList).toBeTruthy(); + const arrayList = new ArrayList(); + expect(arrayList).toBeTruthy(); + expect(arrayList.sizeSync()).toBe(0); + }); + + test('staticAPI', () => { + const String = java.import("java.lang.String"); + expect(String).toBeTruthy(); + + const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.').toBeTruthy(); + expect(!api.includes('format'), 'Expected `format` to NOT be present, but it is.').toBeTruthy(); + expect(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeTruthy(); + }); + + test('syncCalls', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.addSync("hello"); + arrayList.addSync("world"); + expect(arrayList.sizeSync()).toBe(2); + }); + + test('staticSyncCalls', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Among other things, java.import creates Sync functions for static methods. + const String = java.import("java.lang.String"); + expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + }); + + test('asyncCalls', async () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + await new Promise(resolve => { + arrayList.addAsync("hello", function (err, result) { + expect(err).toBeUndefined(); + arrayList.addAsync("world", function (err, result) { + expect(err).toBeUndefined(); + arrayList.sizeAsync(function (err, size) { + expect(err).toBeUndefined(); + expect(size).toBe(2); + resolve(); + }); + }); + }); + }); + }); + + test('promiseCalls', async () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + await arrayList.addPromise("hello") + .then(() => { return arrayList.addPromise("world"); }) + .then(() => { return arrayList.sizePromise(); }) + .then((size) => { + expect(size).toBe(2); + }); + }); +}); \ No newline at end of file diff --git a/testAsyncOptions/asyncSuffixSyncDefault.test.js b/testAsyncOptions/asyncSuffixSyncDefault.test.js new file mode 100644 index 0000000..67e8d24 --- /dev/null +++ b/testAsyncOptions/asyncSuffixSyncDefault.test.js @@ -0,0 +1,131 @@ +// Use "Async" for the asyncSuffix, and "" for the syncSuffix. + +import { beforeAll, describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('asyncSuffixSyncDefault', () => { + beforeAll(async () => { + await new Promise(resolve => { + java.asyncOptions = { + syncSuffix: "", + asyncSuffix: "Async", + ifReadOnlySuffix: "_alt" + }; + + function before(callback) { + java.classpath.push('test/'); + expect(java.isJvmCreated()).toBeFalsy(); + callback(); + } + + function after(callback) { + expect(java.isJvmCreated()).toBeTruthy(); + callback(); + } + + java.registerClient(before, after); + + java.ensureJvm(function (err) { + expect(err).toBeNull(); + expect(java.isJvmCreated()).toBeTruthy(); + resolve(); + }); + }); + }); + + test('api', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + expect(arrayList).toBeTruthy(); + expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); + + expect(typeof arrayList.addAsync !== 'undefined', 'Expected `addAsync` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.').toBeTruthy(); + }); + + test('importClass', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + const ArrayList = java.import("java.util.ArrayList"); + expect(ArrayList).toBeTruthy(); + const arrayList = new ArrayList(); + expect(arrayList).toBeTruthy(); + expect(arrayList.size()).toBe(0); + }); + + test('staticAPI', () => { + const String = java.import("java.lang.String"); + expect(String).toBeTruthy(); + + const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.').toBeTruthy(); + expect(!api.includes('formatSync'), 'Expected `formatSync` to NOT be present, but it is.').toBeTruthy(); + expect(!api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.').toBeTruthy(); + expect(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeTruthy(); + }); + + test('syncCalls', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.add("hello"); + arrayList.add("world"); + expect(arrayList.size()).toBe(2); + }); + + test('staticSyncCalls', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Among other things, java.import creates Sync functions for static methods. + const String = java.import("java.lang.String"); + expect(String.format('%s--%s', "hello", "world")).toBe("hello--world"); + }); + + test('asyncCalls', async () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + await new Promise(resolve => { + arrayList.addAsync("hello", function (err, result) { + expect(err).toBeUndefined(); + arrayList.addAsync("world", function (err, result) { + expect(err).toBeUndefined(); + arrayList.sizeAsync(function (err, size) { + expect(err).toBeUndefined(); + expect(size).toBe(2); + resolve(); + }); + }); + }); + }); + }); + + // See testUnusableMethodName.js for the purpose of these last two tests. + // In that test, Test.name_alt() is an async method. + // In this test, it is a sync method. + test('unusableMethodNameThrows', () => { + const Test = java.import("Test"); + expect(Test).toBeTruthy(); + expect(() => Test.name()).toThrowError(TypeError); + }); + + test('alternateMethodNameWorks', () => { + const Test = java.import("Test"); + expect(Test).toBeTruthy(); + expect(Test.name_alt()).toBe("name"); + expect(Test.caller_alt()).toBe("caller"); + expect(Test.arguments_alt()).toBe("arguments"); + }); + + test('reservedFieldName', () => { + const TestEnum = java.import("Test$Enum"); + expect(TestEnum).toBeTruthy(); + + // 'foo' and 'bar' are valid enum names + expect(TestEnum.foo.toString()).toBe("foo"); + expect(TestEnum.bar.toString()).toBe("bar"); + + // TestEnum.name is actually the name of the proxy constructor function. + expect(TestEnum.name).toBe("javaClassConstructorProxy"); + + // Instead we need to access TestEnum.name_alt + expect(TestEnum.name_alt.toString()).toBe("name"); + expect(TestEnum.caller_alt.toString()).toBe("caller"); + expect(TestEnum.arguments_alt.toString()).toBe("arguments"); + }); +}); \ No newline at end of file diff --git a/testAsyncOptions/clientBeforeError.test.js b/testAsyncOptions/clientBeforeError.test.js new file mode 100644 index 0000000..24b165f --- /dev/null +++ b/testAsyncOptions/clientBeforeError.test.js @@ -0,0 +1,29 @@ +import { describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('clientBeforeError', () => { + test('clientBeforeError', async () => { + await new Promise(resolve => { + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "Sync", + }; + + function before(callback) { + expect(java.isJvmCreated()).toBeFalsy(); + callback(new Error('dummy error')); + } + + java.registerClient(before); + + java.ensureJvm(function (err) { + expect(err && typeof err === 'object').toBeTruthy(); + expect(err).toBeInstanceOf(Error); + expect(err.message).toBe('dummy error'); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + }); + }); + }); +}); diff --git a/testAsyncOptions/clientBeforeSyncThrows.test.js b/testAsyncOptions/clientBeforeSyncThrows.test.js new file mode 100644 index 0000000..43fa427 --- /dev/null +++ b/testAsyncOptions/clientBeforeSyncThrows.test.js @@ -0,0 +1,29 @@ +import { describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('clientBeforeSyncThrows', () => { + test('clientBeforeSyncThrows', async () => { + await new Promise(resolve => { + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "Sync", + }; + + function before() { + expect(java.isJvmCreated()).toBeFalsy(); + throw new Error('dummy error'); + } + + java.registerClient(before); + + java.ensureJvm(function (err) { + expect(err && typeof err === 'object').toBeTruthy(); + expect(err).instanceOf(Error); + expect(err.message).toBe('dummy error'); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + }); + }); + }); +}); \ No newline at end of file diff --git a/testAsyncOptions/clientBeforeThrows.test.js b/testAsyncOptions/clientBeforeThrows.test.js new file mode 100644 index 0000000..9072cb6 --- /dev/null +++ b/testAsyncOptions/clientBeforeThrows.test.js @@ -0,0 +1,29 @@ +import { describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('clientBeforeThrows', () => { + test('clientBeforeThrows', async () => { + await new Promise(resolve => { + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "Sync", + }; + + function before(callback) { + expect(java.isJvmCreated()).toBeFalsy(); + throw new Error('dummy error'); + } + + java.registerClient(before); + + java.ensureJvm(function (err) { + expect(err && typeof err === 'object').toBeTruthy(); + expect(err).instanceOf(Error); + expect(err.message).toBe('dummy error'); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + }); + }); + }); +}); \ No newline at end of file diff --git a/testAsyncOptions/clientPBeforeError.test.js b/testAsyncOptions/clientPBeforeError.test.js new file mode 100644 index 0000000..ee5037c --- /dev/null +++ b/testAsyncOptions/clientPBeforeError.test.js @@ -0,0 +1,40 @@ +import { describe, expect, test } from "vitest"; +import when from 'when'; +import { java } from "../testHelpers"; + +describe('clientPBeforeError', () => { + test('clientPBeforeError', async () => { + await new Promise((resolve) => { + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "Sync", + promiseSuffix: 'Promise', + promisify: require('when/node').lift // https://github.com/cujojs/when + }; + + function beforeP() { + var promise = when.promise((_resolve, reject) => { + expect(java.isJvmCreated()).toBeFalsy(); + reject(new Error('dummy error')); + }); + return promise; + } + + java.registerClientP(beforeP); + + java.ensureJvm().done( + () => { + throw new Error('expect error'); + }, + (err) => { + expect(err && typeof err === 'object').toBeTruthy(); + expect(err).instanceOf(Error); + expect(err.message).toBe('dummy error'); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + } + ); + }); + }); +}); diff --git a/testAsyncOptions/clientPBeforeThrows.test.js b/testAsyncOptions/clientPBeforeThrows.test.js new file mode 100644 index 0000000..d731cde --- /dev/null +++ b/testAsyncOptions/clientPBeforeThrows.test.js @@ -0,0 +1,40 @@ +import { describe, expect, test } from "vitest"; +import when from 'when'; +import { java } from "../testHelpers"; + +describe('clientPBeforeThrows', () => { + test('clientPBeforeThrows', async () => { + await new Promise(resolve => { + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "Sync", + promiseSuffix: 'Promise', + promisify: require('when/node').lift // https://github.com/cujojs/when + }; + + function beforeP() { + var promise = when.promise(function (resolve, reject) { + expect(java.isJvmCreated()).toBeFalsy(); + throw new Error('dummy error'); + }); + return promise; + } + + java.registerClientP(beforeP); + + java.ensureJvm().done( + () => { + throw new Error('expected error'); + }, + (err) => { + expect(err && typeof err === 'object').toBeTruthy(); + expect(err).instanceOf(Error); + expect(err.message).toBe('dummy error'); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + } + ); + }); + }); +}); diff --git a/testAsyncOptions/defacto.test.js b/testAsyncOptions/defacto.test.js new file mode 100644 index 0000000..5364bb6 --- /dev/null +++ b/testAsyncOptions/defacto.test.js @@ -0,0 +1,104 @@ +// In the defacto case, the developer sets asyncOptions, but specifies the defacto standard behavior. + +import { beforeAll, describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('defacto', () => { + beforeAll(async () => { + await new Promise(resolve => { + const api = Object.keys(java).filter((key) => typeof java[key] === 'function'); + expect(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.').toBeTruthy(); + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "Sync", + asyncSuffix: "" + }; + + function before() { + expect(java.isJvmCreated()).toBeFalsy(); + } + + function after() { + expect(java.isJvmCreated()).toBeTruthy(); + } + + java.registerClient(before, after); + java.registerClient(undefined, after); + java.registerClient(before, undefined); + + java.ensureJvm(function (err) { + expect(err).toBeFalsy(); + expect(java.isJvmCreated()).toBeTruthy(); + + // Verify that ensureJvm is idempotent + java.ensureJvm(function (err) { + expect(err).toBeFalsy(); + resolve(); + }); + }); + }); + }); + + test('api', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + expect(arrayList).toBeTruthy(); + expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); + + expect(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.').toBeTruthy(); + }); + + test('importClass', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + const ArrayList = java.import("java.util.ArrayList"); + expect(ArrayList).toBeTruthy(); + const arrayList = new ArrayList(); + expect(arrayList).toBeTruthy(); + expect(arrayList.sizeSync()).toBe(0); + }); + + test('staticAPI', () => { + const String = java.import("java.lang.String"); + expect(String).toBeTruthy(); + + const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + }); + + test('syncCalls', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.addSync("hello"); + arrayList.addSync("world"); + expect(arrayList.sizeSync()).toBe(2); + }); + + test('staticSyncCalls', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Among other things, java.import creates Sync functions for static methods. + const String = java.import("java.lang.String"); + expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + }); + + test('asyncCalls', async () => { + await new Promise(resolve => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.add("hello", function (err, result) { + expect(err).toBeFalsy(); + arrayList.add("world", function (err, result) { + expect(err).toBeFalsy(); + arrayList.size(function (err, size) { + expect(err).toBeFalsy(); + expect(size).toBe(2); + resolve(); + }); + }); + }); + }); + }); +}); diff --git a/testAsyncOptions/defactoPlusPromise.test.js b/testAsyncOptions/defactoPlusPromise.test.js new file mode 100644 index 0000000..4da19c4 --- /dev/null +++ b/testAsyncOptions/defactoPlusPromise.test.js @@ -0,0 +1,115 @@ +// The defacto case but with promises also enabled. + +import { beforeAll, describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('defactoPlusPromise', () => { + beforeAll(async () => { + await new Promise(resolve => { + const api = Object.keys(java).filter((key) => typeof java[key] === 'function'); + expect(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.').toBeTruthy(); + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "Sync", + asyncSuffix: "", + promiseSuffix: 'Promise', + promisify: require('when/node').lift // https://github.com/cujojs/when + }; + + function before(callback) { + expect(java.isJvmCreated()).toBeFalsy(); + callback(); + } + + function after(callback) { + expect(java.isJvmCreated()).toBeTruthy(); + callback(); + } + + java.registerClient(before, after); + java.registerClient(null, after); + java.registerClient(before); + + java.ensureJvm().done(function () { + expect(java.isJvmCreated()).toBeTruthy(); + resolve(); + }); + }); + }); + + test('api', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + expect(arrayList).toBeTruthy(); + expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); + + expect(arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); + expect(arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); + expect(arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.').toBeTruthy(); + }); + + test('importClass', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + const ArrayList = java.import("java.util.ArrayList"); + expect(ArrayList).toBeTruthy(); + const arrayList = new ArrayList(); + expect(arrayList).toBeTruthy(); + expect(arrayList.sizeSync()).toBe(0); + }); + + test('staticAPI', () => { + const String = java.import("java.lang.String"); + expect(String).toBeTruthy(); + + const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + }); + + test('syncCalls', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.addSync("hello"); + arrayList.addSync("world"); + expect(arrayList.sizeSync()).toBe(2); + }); + + test('staticSyncCalls', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Among other things, java.import creates Sync functions for static methods. + const String = java.import("java.lang.String"); + expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + }); + + test('asyncCalls', async () => { + await new Promise(resolve => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.add("hello", function (err, result) { + expect(err).toBeFalsy(); + arrayList.add("world", function (err, result) { + expect(err).toBeFalsy(); + arrayList.size(function (err, size) { + expect(err).toBeFalsy(); + expect(size).toBe(2); + resolve(); + }); + }); + }); + }); + }); + + test('promiseCalls', async () => { + await new Promise(resolve => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.addPromise("hello") + .then(() => { return arrayList.addPromise("world"); }) + .then(() => { return arrayList.sizePromise(); }) + .then((size) => { + expect(size).toBe(2); + resolve(); + }); + }); + }); +}); \ No newline at end of file diff --git a/testAsyncOptions/default.test.js b/testAsyncOptions/default.test.js new file mode 100644 index 0000000..dfe147f --- /dev/null +++ b/testAsyncOptions/default.test.js @@ -0,0 +1,69 @@ +// In the default case, the developer does not set asyncOptions. +// We should get the defacto standard behavior. + +import { describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('default', () => { + test('api', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + expect(arrayList).toBeTruthy(); + expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); + + expect(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.').toBeTruthy(); + }); + + test('importClass', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + const ArrayList = java.import("java.util.ArrayList"); + expect(ArrayList).toBeTruthy(); + const arrayList = new ArrayList(); + expect(arrayList).toBeTruthy(); + expect(arrayList.sizeSync()).toBe(0); + }); + + test('staticAPI', () => { + const String = java.import("java.lang.String"); + expect(String).toBeTruthy(); + + const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + }); + + test('syncCalls', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.addSync("hello"); + arrayList.addSync("world"); + expect(arrayList.sizeSync()).toBe(2); + }); + + test('staticSyncCalls', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Among other things, java.import creates Sync functions for static methods. + const String = java.import("java.lang.String"); + expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + }); + + test('asyncCalls', async () => { + await new Promise(resolve => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.add("hello", function (err, result) { + expect(err).toBeFalsy(); + arrayList.add("world", function (err, result) { + expect(err).toBeFalsy(); + arrayList.size(function (err, size) { + expect(err).toBeFalsy(); + expect(size).toBe(2); + resolve(); + }); + }); + }); + }); + }); +}); \ No newline at end of file diff --git a/testAsyncOptions/invalidLaunch.test.js b/testAsyncOptions/invalidLaunch.test.js new file mode 100644 index 0000000..d88f181 --- /dev/null +++ b/testAsyncOptions/invalidLaunch.test.js @@ -0,0 +1,51 @@ +import { describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('invalidLaunch', () => { + test('failedLaunch', () => { + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "Sync", + asyncSuffix: "" + }; + + // First show that if asyncOptions.promisify is undefined, using the promise variant of ensureJvm throws an error. + expect(() => { java.ensureJvm(); }).toThrow(/requires its one argument to be a callback function/); + + expect(java.isJvmCreated()).toBeFalsy(); + }); + + test('callbackNotAFunction', () => { + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "", + promiseSuffix: 'P', + promisify: require('when/node').lift // https://github.com/cujojs/when + }; + + expect(() => { java.ensureJvm('foo') }).toThrow(/requires its one argument to be a callback function/); + + expect(java.isJvmCreated()).toBeFalsy(); + }); + + test('jvmCanStillBeLaunched', async () => { + // None of the previous tests should have caused the JVM to be created, so it should still be possible to create one. + + expect(java.isJvmCreated()).toBeFalsy(); + + java.asyncOptions = { + syncSuffix: "", + promiseSuffix: 'P', + promisify: require('when/node').lift // https://github.com/cujojs/when + }; + + await new Promise(resolve => { + java.ensureJvm().done(function () { + expect(java.isJvmCreated()).toBeTruthy(); + resolve(); + }); + }); + }); +}); \ No newline at end of file diff --git a/testAsyncOptions/noAsync.test.js b/testAsyncOptions/noAsync.test.js new file mode 100644 index 0000000..7b57fbd --- /dev/null +++ b/testAsyncOptions/noAsync.test.js @@ -0,0 +1,104 @@ +// Just Sync and Promise, both with a non-empty suffix. + +import { beforeAll, describe, expect, test } from "vitest"; +import when from 'when'; +import { java } from "../testHelpers"; + +describe('noAsync', () => { + beforeAll(async () => { + var api = Object.keys(java).filter((key) => typeof java[key] === 'function'); + expect(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.').toBeTruthy(); + expect(java.isJvmCreated()).toBeFalsy(); + + function before() { + var promise = when.promise(function (resolve) { + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + }); + return promise; + } + + function after() { + var promise = when.promise(function (resolve) { + expect(java.isJvmCreated()).toBeTruthy(); + resolve(); + }); + return promise; + } + + java.asyncOptions = { + syncSuffix: "Sync", + promiseSuffix: 'Promise', + promisify: require('when/node').lift + }; + java.registerClientP(before, after); + java.registerClientP(null, after); + java.registerClientP(before); + + await new Promise(resolve => { + java.ensureJvm().done(function () { + expect(java.isJvmCreated()).toBeTruthy(); + resolve(); + }); + }); + }); + + test('api', () => { + var arrayList = java.newInstanceSync("java.util.ArrayList"); + expect(arrayList).toBeTruthy(); + expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); + + expect(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.add === 'undefined', 'Expected `add` to NOT be present, but it is.').toBeTruthy(); + expect(typeof arrayList.addAsync === 'undefined', 'Expected `addAsync` to NOT be present, but it is.').toBeTruthy(); + }); + + test('importClass', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + var ArrayList = java.import("java.util.ArrayList"); + expect(ArrayList).toBeTruthy(); + var arrayList = new ArrayList(); + expect(arrayList).toBeTruthy(); + expect(arrayList.sizeSync()).toBe(0); + }); + + test('staticAPI', () => { + var String = java.import("java.lang.String"); + expect(String).toBeTruthy(); + + var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('format'), 'Expected `format` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + }); + + test('syncCalls', () => { + var arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.addSync("hello"); + arrayList.addSync("world"); + expect(arrayList.sizeSync()).toBe(2); + }); + + test('sStaticSyncCalls', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Among other things, java.import creates Sync functions for static methods. + var String = java.import("java.lang.String"); + expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + }); + + test('promiseCalls', async () => { + var arrayList = java.newInstanceSync("java.util.ArrayList"); + await new Promise(resolve => { + arrayList.addPromise("hello") + .then(() => { return arrayList.addPromise("world"); }) + .then(() => { return arrayList.sizePromise(); }) + .then((size) => { + expect(size).toBe(2); + resolve(); + }); + }); + }); +}); \ No newline at end of file diff --git a/testAsyncOptions/syncDefaultPlusPromise.test.js b/testAsyncOptions/syncDefaultPlusPromise.test.js new file mode 100644 index 0000000..18ee86e --- /dev/null +++ b/testAsyncOptions/syncDefaultPlusPromise.test.js @@ -0,0 +1,73 @@ +// Just Sync and Promise, with Sync the default (i.e. no suffix). +// This is the configuration that RedSeal wants for use with Tinkerpop/Gremlin. + +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +const java = getJava({ + syncSuffix: "", + promiseSuffix: 'P', + promisify: require('when/node').lift // https://github.com/cujojs/when +}); + +describe('syncDefaultPlusPromise', () => { + test('api', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + expect(arrayList).toBeTruthy(); + expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); + + expect(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.addP !== 'undefined', 'Expected `addP` to be present, but it is NOT.').toBeTruthy(); + expect(typeof arrayList.addSync === 'undefined', 'Expected `addSync` to NOT be present, but it is.').toBeTruthy(); + expect(typeof arrayList.addAsync === 'undefined', 'Expected `addAsync` to NOT be present, but it is.').toBeTruthy(); + }); + + test('importClass', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // This test verifies the import runs without error. + const ArrayList = java.import("java.util.ArrayList"); + expect(ArrayList).toBeTruthy(); + const arrayList = new ArrayList(); + expect(arrayList).toBeTruthy(); + expect(arrayList.size()).toBe(0); + }); + + test('staticAPI', () => { + const String = java.import("java.lang.String"); + expect(String).toBeTruthy(); + + const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); + expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatP'), 'Expected `formatP` to be present, but it is NOT.').toBeTruthy(); + expect(api.includes('formatSync'), 'Expected `formatSync` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); + expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + }); + + test('syncCalls', () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + arrayList.add("hello"); + arrayList.add("world"); + expect(arrayList.size()).toBe(2); + }); + + test('staticSyncCalls', () => { + // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Among other things, java.import creates Sync functions for static methods. + const String = java.import("java.lang.String"); + expect(String.format('%s--%s', "hello", "world")).toBe("hello--world"); + }); + + test('promiseCalls', async () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + await new Promise(resolve => { + arrayList.addP("hello") + .then(() => { return arrayList.addP("world"); }) + .then(() => { return arrayList.sizeP(); }) + .then((size) => { + expect(size).toBe(2); + resolve(); + }); + }); + }); +}); diff --git a/testAsyncOptions/testAllThreeSuffix.js b/testAsyncOptions/testAllThreeSuffix.js deleted file mode 100644 index 7f610ce..0000000 --- a/testAsyncOptions/testAllThreeSuffix.js +++ /dev/null @@ -1,99 +0,0 @@ -// testAllThreeSuffix.js - -// All three variants have non-empty suffix, i.e a suffix is required for any variant. - -var java = require("../"); -var assert = require("assert"); - -java.asyncOptions = { - syncSuffix: "Sync", - asyncSuffix: "Async", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when -}; - -module.exports = { - testAPI: function(test) { - test.expect(6); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - test.ok(arrayList); - test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - - test.ok(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); - test.ok(typeof arrayList.addAsync !== 'undefined', 'Expected `addAsync` to be present, but it is NOT.'); - test.ok(typeof arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.'); - test.ok(typeof arrayList.add === 'undefined', 'Expected `add` to NOT be present, but it is.'); - test.done(); - }, - - testImportClass: function(test) { - test.expect(3); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - var ArrayList = java.import("java.util.ArrayList"); - test.ok(ArrayList); - var arrayList = new ArrayList(); - test.ok(arrayList); - test.strictEqual(arrayList.sizeSync(), 0); - test.done(); - }, - - testStaticAPI: function(test) { - test.expect(6); - var String = java.import("java.lang.String"); - test.ok(String); - - var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(api.includes('formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.'); - test.ok(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); - test.ok(!api.includes('format'), 'Expected `format` to NOT be present, but it is.'); - test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); - test.done(); - }, - - testSyncCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addSync("hello"); - arrayList.addSync("world"); - test.strictEqual(arrayList.sizeSync(), 2); - test.done(); - }, - - testStaticSyncCalls: function(test) { - test.expect(1); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - // Among other things, java.import creates Sync functions for static methods. - var String = java.import("java.lang.String"); - test.strictEqual(String.formatSync('%s--%s', "hello", "world"), "hello--world"); - test.done(); - }, - - testAsyncCalls: function(test) { - test.expect(4); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addAsync("hello", function(err, result) { - test.ifError(err); - arrayList.addAsync("world", function(err, result) { - test.ifError(err); - arrayList.sizeAsync(function(err, size) { - test.ifError(err); - test.strictEqual(size, 2); - test.done(); - }); - }); - }); - }, - - testPromiseCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addPromise("hello") - .then(function () { return arrayList.addPromise("world"); }) - .then(function () { return arrayList.sizePromise(); }) - .then(function (size) { - test.strictEqual(size, 2); - test.done(); - }); - } -} diff --git a/testAsyncOptions/testAsyncSuffixSyncDefault.js b/testAsyncOptions/testAsyncSuffixSyncDefault.js deleted file mode 100644 index 784b54b..0000000 --- a/testAsyncOptions/testAsyncSuffixSyncDefault.js +++ /dev/null @@ -1,160 +0,0 @@ -// testAsyncSuffixSyncDefault.js - -// Use "Async" for the asyncSuffix, and "" for the syncSuffix. - -var java = require("../"); -var assert = require("assert"); - -module.exports = { - launch: function(test) { - test.expect(4); - java.asyncOptions = { - syncSuffix: "", - asyncSuffix: "Async", - ifReadOnlySuffix: "_alt" - }; - - function before(callback) { - java.classpath.push('test/'); - test.ok(!java.isJvmCreated()); - callback(); - } - - function after(callback) { - test.ok(java.isJvmCreated()); - callback(); - } - - java.registerClient(before, after); - - java.ensureJvm(function(err) { - test.ifError(err); - test.ok(java.isJvmCreated()); - test.done(); - }); - }, - - testAPI: function(test) { - test.expect(5); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - test.ok(arrayList); - test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - - test.ok(typeof arrayList.addAsync !== 'undefined', 'Expected `addAsync` to be present, but it is NOT.'); - test.ok(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); - test.ok(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.'); - test.done(); - }, - - testImportClass: function(test) { - test.expect(3); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - var ArrayList = java.import("java.util.ArrayList"); - test.ok(ArrayList); - var arrayList = new ArrayList(); - test.ok(arrayList); - test.strictEqual(arrayList.size(), 0); - test.done(); - }, - - testStaticAPI: function(test) { - test.expect(6); - var String = java.import("java.lang.String"); - test.ok(String); - - var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(api.includes('formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.'); - test.ok(!api.includes('formatSync'), 'Expected `formatSync` to NOT be present, but it is.'); - test.ok(!api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); - test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); - test.done(); - }, - - testSyncCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello"); - arrayList.add("world"); - test.strictEqual(arrayList.size(), 2); - test.done(); - }, - - testStaticSyncCalls: function(test) { - test.expect(1); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - // Among other things, java.import creates Sync functions for static methods. - var String = java.import("java.lang.String"); - test.strictEqual(String.format('%s--%s', "hello", "world"), "hello--world"); - test.done(); - }, - - testAsyncCalls: function(test) { - test.expect(4); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addAsync("hello", function(err, result) { - test.ifError(err); - arrayList.addAsync("world", function(err, result) { - test.ifError(err); - arrayList.sizeAsync(function(err, size) { - test.ifError(err); - test.strictEqual(size, 2); - test.done(); - }); - }); - }); - }, - - // See testUnusableMethodName.js for the purpose of these last two tests. - // In that test, Test.name_alt() is an async method. - // In this test, it is a sync method. - testUnusableMethodNameThrows: function(test) { - test.expect(1); - var Test = java.import("Test"); - test.ok(Test); - test.throws( - function() { - Test.name(); - }, - function(err) { - if (err instanceof TypeError) { - test.done(); - return true; - } else { - test.done(err); - return false; - } - } - ); - }, - - testAlternateMethodNameWorks: function(test) { - test.expect(4); - var Test = java.import("Test"); - test.ok(Test); - test.strictEqual(Test.name_alt(), "name"); - test.strictEqual(Test.caller_alt(), "caller"); - test.strictEqual(Test.arguments_alt(), "arguments"); - test.done(); - }, - - testReservedFieldName: function(test) { - test.expect(7); - var TestEnum = java.import("Test$Enum"); - test.ok(TestEnum); - - // 'foo' and 'bar' are valid enum names - test.strictEqual(TestEnum.foo.toString(), "foo"); - test.strictEqual(TestEnum.bar.toString(), "bar"); - - // TestEnum.name is actually the name of the proxy constructor function. - test.strictEqual(TestEnum.name, "javaClassConstructorProxy"); - - // Instead we need to acccess TestEnum.name_alt - test.strictEqual(TestEnum.name_alt.toString(), "name"); - test.strictEqual(TestEnum.caller_alt.toString(), "caller"); - test.strictEqual(TestEnum.arguments_alt.toString(), "arguments"); - - test.done(); - }, -} diff --git a/testAsyncOptions/testClientBeforeError.js b/testAsyncOptions/testClientBeforeError.js deleted file mode 100644 index cd3011a..0000000 --- a/testAsyncOptions/testClientBeforeError.js +++ /dev/null @@ -1,32 +0,0 @@ -// testClientBeforeError.js - -var java = require("../"); -var nodeunit = require("nodeunit"); - -module.exports = { - - clientBeforeError: function(test) { - test.expect(6); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - }; - - function before(callback) { - test.ok(!java.isJvmCreated()); - callback(new Error('dummy error')); - } - - java.registerClient(before); - - java.ensureJvm(function(err) { - test.ok(err && typeof err === 'object'); - test.ok(err instanceof Error); - test.strictEqual(err.message, 'dummy error'); - test.ok(!java.isJvmCreated()); - test.done(); - }); - } - -} diff --git a/testAsyncOptions/testClientBeforeSyncThrows.js b/testAsyncOptions/testClientBeforeSyncThrows.js deleted file mode 100644 index 8d5d4ba..0000000 --- a/testAsyncOptions/testClientBeforeSyncThrows.js +++ /dev/null @@ -1,32 +0,0 @@ -// testClientBeforeSyncThrows.js - -var java = require("../"); -var nodeunit = require("nodeunit"); - -module.exports = { - - clientBeforeSyncThrows: function(test) { - test.expect(6); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - }; - - function before() { - test.ok(!java.isJvmCreated()); - throw new Error('dummy error'); - } - - java.registerClient(before); - - java.ensureJvm(function(err) { - test.ok(err && typeof err === 'object'); - test.ok(err instanceof Error); - test.strictEqual(err.message, 'dummy error'); - test.ok(!java.isJvmCreated()); - test.done(); - }); - } - -} diff --git a/testAsyncOptions/testClientBeforeThrows.js b/testAsyncOptions/testClientBeforeThrows.js deleted file mode 100644 index 79614aa..0000000 --- a/testAsyncOptions/testClientBeforeThrows.js +++ /dev/null @@ -1,32 +0,0 @@ -// testClientBeforeThrows.js - -var java = require("../"); -var nodeunit = require("nodeunit"); - -module.exports = { - - clientBeforeThrows: function(test) { - test.expect(6); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - }; - - function before(callback) { - test.ok(!java.isJvmCreated()); - throw new Error('dummy error'); - } - - java.registerClient(before); - - java.ensureJvm(function(err) { - test.ok(err && typeof err === 'object'); - test.ok(err instanceof Error); - test.strictEqual(err.message, 'dummy error'); - test.ok(!java.isJvmCreated()); - test.done(); - }); - } - -} diff --git a/testAsyncOptions/testClientPBeforeError.js b/testAsyncOptions/testClientPBeforeError.js deleted file mode 100644 index 33a02f2..0000000 --- a/testAsyncOptions/testClientPBeforeError.js +++ /dev/null @@ -1,43 +0,0 @@ -// testClientPBeforeError.js - -var java = require("../"); -var nodeunit = require("nodeunit"); -var when = require('when'); - -module.exports = { - - clientPBeforeError: function(test) { - test.expect(6); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when - }; - - function beforeP() { - var promise = when.promise(function(resolve, reject) { - test.ok(!java.isJvmCreated()); - reject(new Error('dummy error')); - }); - return promise; - } - - java.registerClientP(beforeP); - - java.ensureJvm().done( - function () { - test.ok(false); - }, - function(err) { - test.ok(err && typeof err === 'object'); - test.ok(err instanceof Error); - test.strictEqual(err.message, 'dummy error'); - test.ok(!java.isJvmCreated()); - test.done(); - } - ); - } - -} diff --git a/testAsyncOptions/testClientPBeforeThrows.js b/testAsyncOptions/testClientPBeforeThrows.js deleted file mode 100644 index 5d58dab..0000000 --- a/testAsyncOptions/testClientPBeforeThrows.js +++ /dev/null @@ -1,43 +0,0 @@ -// testClientPBeforeThrows.js - -var java = require("../"); -var nodeunit = require("nodeunit"); -var when = require('when'); - -module.exports = { - - clientPBeforeThrows: function(test) { - test.expect(6); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when - }; - - function beforeP() { - var promise = when.promise(function(resolve, reject) { - test.ok(!java.isJvmCreated()); - throw new Error('dummy error'); - }); - return promise; - } - - java.registerClientP(beforeP); - - java.ensureJvm().done( - function () { - test.ok(false); - }, - function(err) { - test.ok(err && typeof err === 'object'); - test.ok(err instanceof Error); - test.strictEqual(err.message, 'dummy error'); - test.ok(!java.isJvmCreated()); - test.done(); - } - ); - } - -} diff --git a/testAsyncOptions/testDefacto.js b/testAsyncOptions/testDefacto.js deleted file mode 100644 index 314a8eb..0000000 --- a/testAsyncOptions/testDefacto.js +++ /dev/null @@ -1,115 +0,0 @@ -// testDefacto.js - -// In the defacto case, the developer sets asyncOptions, but specifies the defacto standard behavior. - -var java = require("../"); -var nodeunit = require("nodeunit"); - -module.exports = { - - launch: function(test) { - test.expect(9); - var api = Object.keys(java).filter((key) => typeof java[key] === 'function'); - test.ok(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - asyncSuffix: "" - }; - - function before() { - test.ok(!java.isJvmCreated()); - } - - function after() { - test.ok(java.isJvmCreated()); - } - - java.registerClient(before, after); - java.registerClient(undefined, after); - java.registerClient(before, undefined); - - java.ensureJvm(function(err) { - test.ifError(err); - test.ok(java.isJvmCreated()); - - // Verify that ensureJvm is idempotent - java.ensureJvm(function(err) { - test.ifError(err); - test.done(); - }); - }); - }, - - testAPI: function(test) { - test.expect(5); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - test.ok(arrayList); - test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - - test.ok(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); - test.ok(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); - test.ok(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.'); - test.done(); - }, - - testImportClass: function(test) { - test.expect(3); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - var ArrayList = java.import("java.util.ArrayList"); - test.ok(ArrayList); - var arrayList = new ArrayList(); - test.ok(arrayList); - test.strictEqual(arrayList.sizeSync(), 0); - test.done(); - }, - - testStaticAPI: function(test) { - test.expect(6); - var String = java.import("java.lang.String"); - test.ok(String); - - var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); - test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); - test.done(); - }, - - testSyncCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addSync("hello"); - arrayList.addSync("world"); - test.strictEqual(arrayList.sizeSync(), 2); - test.done(); - }, - - testStaticSyncCalls: function(test) { - test.expect(1); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - // Among other things, java.import creates Sync functions for static methods. - var String = java.import("java.lang.String"); - test.strictEqual(String.formatSync('%s--%s', "hello", "world"), "hello--world"); - test.done(); - }, - - testAsyncCalls: function(test) { - test.expect(4); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function(err, result) { - test.ifError(err); - arrayList.add("world", function(err, result) { - test.ifError(err); - arrayList.size(function(err, size) { - test.ifError(err); - test.strictEqual(size, 2); - test.done(); - }); - }); - }); - } -} diff --git a/testAsyncOptions/testDefactoPlusPromise.js b/testAsyncOptions/testDefactoPlusPromise.js deleted file mode 100644 index 730c889..0000000 --- a/testAsyncOptions/testDefactoPlusPromise.js +++ /dev/null @@ -1,124 +0,0 @@ -// testDefactoPlusPromise.js - -// The defacto case but with promises also enabled. - -var java = require("../"); -var assert = require("assert"); - -module.exports = { - launch: function(test) { - test.expect(7); - var api = Object.keys(java).filter((key) => typeof java[key] === 'function'); - test.ok(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - asyncSuffix: "", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when - }; - - function before(callback) { - test.ok(!java.isJvmCreated()); - callback(); - } - - function after(callback) { - test.ok(java.isJvmCreated()); - callback(); - } - - java.registerClient(before, after); - java.registerClient(null, after); - java.registerClient(before); - - java.ensureJvm().done(function() { - test.ok(java.isJvmCreated()); - test.done(); - }); - }, - - testAPI: function(test) { - test.expect(5); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - test.ok(arrayList); - test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - - test.ok(arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); - test.ok(arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); - test.ok(arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.'); - test.done(); - }, - - testImportClass: function(test) { - test.expect(3); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - var ArrayList = java.import("java.util.ArrayList"); - test.ok(ArrayList); - var arrayList = new ArrayList(); - test.ok(arrayList); - test.strictEqual(arrayList.sizeSync(), 0); - test.done(); - }, - - testStaticAPI: function(test) { - test.expect(6); - var String = java.import("java.lang.String"); - test.ok(String); - - var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); - test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); - test.done(); - }, - - testSyncCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addSync("hello"); - arrayList.addSync("world"); - test.strictEqual(arrayList.sizeSync(), 2); - test.done(); - }, - - testStaticSyncCalls: function(test) { - test.expect(1); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - // Among other things, java.import creates Sync functions for static methods. - var String = java.import("java.lang.String"); - test.strictEqual(String.formatSync('%s--%s', "hello", "world"), "hello--world"); - test.done(); - }, - - testAsyncCalls: function(test) { - test.expect(4); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function(err, result) { - test.ifError(err); - arrayList.add("world", function(err, result) { - test.ifError(err); - arrayList.size(function(err, size) { - test.ifError(err); - test.strictEqual(size, 2); - test.done(); - }); - }); - }); - }, - - testPromiseCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addPromise("hello") - .then(function () { return arrayList.addPromise("world"); }) - .then(function () { return arrayList.sizePromise(); }) - .then(function (size) { - test.strictEqual(size, 2); - test.done(); - }); - } -} diff --git a/testAsyncOptions/testDefault.js b/testAsyncOptions/testDefault.js deleted file mode 100644 index e58a773..0000000 --- a/testAsyncOptions/testDefault.js +++ /dev/null @@ -1,82 +0,0 @@ -// testDefault.js - -// In the default case, the developer does not set asyncOptions. -// We should get the defacto standard behavior. - -var java = require("../"); -var nodeunit = require("nodeunit"); - -java.asyncOptions = undefined; - -module.exports = { - testAPI: function(test) { - test.expect(5); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - test.ok(arrayList); - test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - - test.ok(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); - test.ok(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); - test.ok(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.'); - test.done(); - }, - - testImportClass: function(test) { - test.expect(3); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - var ArrayList = java.import("java.util.ArrayList"); - test.ok(ArrayList); - var arrayList = new ArrayList(); - test.ok(arrayList); - test.strictEqual(arrayList.sizeSync(), 0); - test.done(); - }, - - testStaticAPI: function(test) { - test.expect(6); - var String = java.import("java.lang.String"); - test.ok(String); - - var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.'); - test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); - test.done(); - }, - - testSyncCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addSync("hello"); - arrayList.addSync("world"); - test.strictEqual(arrayList.sizeSync(), 2); - test.done(); - }, - - testStaticSyncCalls: function(test) { - test.expect(1); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - // Among other things, java.import creates Sync functions for static methods. - var String = java.import("java.lang.String"); - test.strictEqual(String.formatSync('%s--%s', "hello", "world"), "hello--world"); - test.done(); - }, - - testAsyncCalls: function(test) { - test.expect(4); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function(err, result) { - test.ifError(err); - arrayList.add("world", function(err, result) { - test.ifError(err); - arrayList.size(function(err, size) { - test.ifError(err); - test.strictEqual(size, 2); - test.done(); - }); - }); - }); - } -} diff --git a/testAsyncOptions/testInvalidLaunch.js b/testAsyncOptions/testInvalidLaunch.js deleted file mode 100644 index 21c1bf3..0000000 --- a/testAsyncOptions/testInvalidLaunch.js +++ /dev/null @@ -1,58 +0,0 @@ -// testInvalidLaunch.js - -var java = require("../"); -var nodeunit = require("nodeunit"); - -module.exports = { - - failedLaunch: function(test) { - test.expect(3); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - asyncSuffix: "" - }; - - // First show that if asyncOptions.promisify is undefined, using the promise variant of ensureJvm throws an error. - test.throws(function() { java.ensureJvm(); }, Error, /requires its one argument to be a callback function/); - - test.ok(!java.isJvmCreated()); - test.done(); - }, - - callbackNotAFunction: function(test) { - test.expect(3); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "", - promiseSuffix: 'P', - promisify: require('when/node').lift // https://github.com/cujojs/when - }; - - test.throws(function() { java.ensureJvm('foo'); }, Error, /requires its one argument to be a callback function/); - - test.ok(!java.isJvmCreated()); - test.done(); - }, - - jvmCanStillBeLaunched: function(test) { - // None of the previous tests should have caused the JVM to be created, so it should still be possible to create one. - - test.expect(2); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "", - promiseSuffix: 'P', - promisify: require('when/node').lift // https://github.com/cujojs/when - }; - - java.ensureJvm().done(function() { - test.ok(java.isJvmCreated()); - test.done(); - }); - } - -} diff --git a/testAsyncOptions/testNoAsync.js b/testAsyncOptions/testNoAsync.js deleted file mode 100644 index 47f596c..0000000 --- a/testAsyncOptions/testNoAsync.js +++ /dev/null @@ -1,115 +0,0 @@ -// testNoAsync.js - -// Just Sync and Promise, both with a non-empty suffix. - -var java = require("../"); -var assert = require("assert"); -var when = require('when'); - -module.exports = { - launch: function(test) { - test.expect(7); - var api = Object.keys(java).filter((key) => typeof java[key] === 'function'); - test.ok(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.'); - test.ok(!java.isJvmCreated()); - - java.asyncOptions = { - syncSuffix: "Sync", - promiseSuffix: 'Promise', - promisify: require('when/node').lift - }; - - function before() { - var promise = when.promise(function(resolve, reject) { - test.ok(!java.isJvmCreated()); - resolve(); - }); - return promise; - } - - function after() { - var promise = when.promise(function(resolve, reject) { - test.ok(java.isJvmCreated()); - resolve(); - }); - return promise; - } - - java.registerClientP(before, after); - java.registerClientP(null, after); - java.registerClientP(before); - - java.ensureJvm().done(function() { - test.ok(java.isJvmCreated()); - test.done(); - }); - }, - - testAPI: function(test) { - test.expect(6); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - test.ok(arrayList); - test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - - test.ok(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.'); - test.ok(typeof arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.'); - test.ok(typeof arrayList.add === 'undefined', 'Expected `add` to NOT be present, but it is.'); - test.ok(typeof arrayList.addAsync === 'undefined', 'Expected `addAsync` to NOT be present, but it is.'); - test.done(); - }, - - testImportClass: function(test) { - test.expect(3); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - var ArrayList = java.import("java.util.ArrayList"); - test.ok(ArrayList); - var arrayList = new ArrayList(); - test.ok(arrayList); - test.strictEqual(arrayList.sizeSync(), 0); - test.done(); - }, - - testStaticAPI: function(test) { - test.expect(6); - var String = java.import("java.lang.String"); - test.ok(String); - - var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - test.ok(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.'); - test.ok(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.'); - test.ok(!api.includes('format'), 'Expected `format` to NOT be present, but it is.'); - test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); - test.done(); - }, - - testSyncCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addSync("hello"); - arrayList.addSync("world"); - test.strictEqual(arrayList.sizeSync(), 2); - test.done(); - }, - - testStaticSyncCalls: function(test) { - test.expect(1); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - // Among other things, java.import creates Sync functions for static methods. - var String = java.import("java.lang.String"); - test.strictEqual(String.formatSync('%s--%s', "hello", "world"), "hello--world"); - test.done(); - }, - - testPromiseCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addPromise("hello") - .then(function () { return arrayList.addPromise("world"); }) - .then(function () { return arrayList.sizePromise(); }) - .then(function (size) { - test.strictEqual(size, 2); - test.done(); - }); - } -} diff --git a/testAsyncOptions/testSyncDefaultPlusPromise.js b/testAsyncOptions/testSyncDefaultPlusPromise.js deleted file mode 100644 index 113be49..0000000 --- a/testAsyncOptions/testSyncDefaultPlusPromise.js +++ /dev/null @@ -1,85 +0,0 @@ -// testSyncDefaultPlusPromise.js - -// Just Sync and Promise, with Sync the default (i.e. no suffix). -// This is the configuration that RedSeal wants for use with Tinkerpop/Gremlin. - -var java = require("../"); -var assert = require("assert"); - -java.asyncOptions = { - syncSuffix: "", - promiseSuffix: 'P', - promisify: require('when/node').lift // https://github.com/cujojs/when -}; - -module.exports = { - testAPI: function(test) { - test.expect(6); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - test.ok(arrayList); - test.ok(java.instanceOf(arrayList, "java.util.ArrayList")); - - test.ok(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.'); - test.ok(typeof arrayList.addP !== 'undefined', 'Expected `addP` to be present, but it is NOT.'); - test.ok(typeof arrayList.addSync === 'undefined', 'Expected `addSync` to NOT be present, but it is.'); - test.ok(typeof arrayList.addAsync === 'undefined', 'Expected `addAsync` to NOT be present, but it is.'); - test.done(); - }, - - testImportClass: function(test) { - test.expect(3); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - // This test verifies the import runs without error. - var ArrayList = java.import("java.util.ArrayList"); - test.ok(ArrayList); - var arrayList = new ArrayList(); - test.ok(arrayList); - test.strictEqual(arrayList.size(), 0); - test.done(); - }, - - testStaticAPI: function(test) { - test.expect(6); - var String = java.import("java.lang.String"); - test.ok(String); - - var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - test.ok(api.includes('format'), 'Expected `format` to be present, but it is NOT.'); - test.ok(api.includes('formatP'), 'Expected `formatP` to be present, but it is NOT.'); - test.ok(!api.includes('formatSync'), 'Expected `formatSync` to NOT be present, but it is.'); - test.ok(!api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.'); - test.ok(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.'); - test.done(); - }, - - testSyncCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello"); - arrayList.add("world"); - test.strictEqual(arrayList.size(), 2); - test.done(); - }, - - testStaticSyncCalls: function(test) { - test.expect(1); - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - // Among other things, java.import creates Sync functions for static methods. - var String = java.import("java.lang.String"); - test.strictEqual(String.format('%s--%s', "hello", "world"), "hello--world"); - test.done(); - }, - - testPromiseCalls: function(test) { - test.expect(1); - var arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addP("hello") - .then(function () { return arrayList.addP("world"); }) - .then(function () { return arrayList.sizeP(); }) - .then(function (size) { - test.strictEqual(size, 2); - test.done(); - }); - } - -} diff --git a/testAsyncOptions/testUnusableMethodName.js b/testAsyncOptions/testUnusableMethodName.js deleted file mode 100644 index 1da67e4..0000000 --- a/testAsyncOptions/testUnusableMethodName.js +++ /dev/null @@ -1,161 +0,0 @@ -// testUnusableMethodName.js - -// For any function, the property 'name' is an unwritable property. -// The value returned by java.import() is a constructor-like function that has the shape of the class. -// In particular, any static methods of the class will be added as properties of the function. -// If a class has a static method named 'name', then an exception woudld be thrown when -// node-java attempts to set assign the static method to the .name property of constructor-like function. -// As a workaround, node-java will append the `ifReadOnlySuffix` to the property name. - -var java = require("../"); -var nodeunit = require("nodeunit"); - -module.exports = { - - launch: function(test) { - test.expect(4); - java.asyncOptions = { - syncSuffix: "Sync", - asyncSuffix: "", - ifReadOnlySuffix: "_alt" - }; - - function before(callback) { - java.classpath.push('test/'); - test.ok(!java.isJvmCreated()); - callback(); - } - - function after(callback) { - test.ok(java.isJvmCreated()); - callback(); - } - - java.registerClient(before, after); - - java.ensureJvm(function(err) { - test.ifError(err); - test.ok(java.isJvmCreated()); - test.done(); - }); - }, - - testUnusableMethodName_nameThrows: function(test) { - test.expect(1); - var Test = java.import("Test"); - test.ok(Test); - test.throws( - function() { - Test.name(function(err) { - test.fail(); // should not get here - }); - }, - function(err) { - if (err instanceof TypeError) { - test.done(); - return true; - } else { - test.done(err); - return false; - } - } - ); - }, - - testUnusableMethodName_callerThrows: function(test) { - test.expect(1); - var Test = java.import("Test"); - test.ok(Test); - test.throws( - function() { - Test.caller(function(err) { - test.fail(); // should not get here - }); - }, - function(err) { - if (err instanceof TypeError) { - test.done(); - return true; - } else { - test.done(err); - return false; - } - } - ); - }, - - testUnusableMethodName_argumentsThrows: function(test) { - test.expect(1); - var Test = java.import("Test"); - test.ok(Test); - test.throws( - function() { - Test.arguments(function(err) { - test.fail(); // should not get here - }); - }, - function(err) { - if (err instanceof TypeError) { - test.done(); - return true; - } else { - test.done(err); - return false; - } - } - ); - }, - - testAlternateMethodName_name_altWorks: function(test) { - test.expect(3); - var Test = java.import("Test"); - test.ok(Test); - Test.name_alt(function(err, val) { - test.ifError(err); - test.strictEqual(val, "name"); - test.done(); - }); - }, - - testAlternateMethodName_caller_altWorks: function(test) { - test.expect(3); - var Test = java.import("Test"); - test.ok(Test); - Test.caller_alt(function(err, val) { - test.ifError(err); - test.strictEqual(val, "caller"); - test.done(); - }); - }, - - testAlternateMethodName_arguments_altWorks: function(test) { - test.expect(3); - var Test = java.import("Test"); - test.ok(Test); - Test.arguments_alt(function(err, val) { - test.ifError(err); - test.strictEqual(val, "arguments"); - test.done(); - }); - }, - - testReservedFieldName: function(test) { - test.expect(7); - var TestEnum = java.import("Test$Enum"); - test.ok(TestEnum); - - // 'foo' and 'bar' are valid enum names - test.strictEqual(TestEnum.foo.toStringSync(), "foo"); - test.strictEqual(TestEnum.bar.toStringSync(), "bar"); - - // TestEnum.name is actually the name of the proxy constructor function. - test.strictEqual(TestEnum.name, "javaClassConstructorProxy"); - - // Instead we need to acccess TestEnum.name_alt - test.strictEqual(TestEnum.name_alt.toString(), "name"); - test.strictEqual(TestEnum.caller_alt.toString(), "caller"); - test.strictEqual(TestEnum.arguments_alt.toString(), "arguments"); - - test.done(); - }, -} diff --git a/testAsyncOptions/unusableMethodName.test.js b/testAsyncOptions/unusableMethodName.test.js new file mode 100644 index 0000000..30ed983 --- /dev/null +++ b/testAsyncOptions/unusableMethodName.test.js @@ -0,0 +1,122 @@ +// For any function, the property 'name' is an unwritable property. +// The value returned by java.import() is a constructor-like function that has the shape of the class. +// In particular, any static methods of the class will be added as properties of the function. +// If a class has a static method named 'name', then an exception woudld be thrown when +// node-java attempts to set assign the static method to the .name property of constructor-like function. +// As a workaround, node-java will append the `ifReadOnlySuffix` to the property name. + +import { beforeAll, describe, expect, test } from "vitest"; +import { java } from "../testHelpers"; + +describe('unusableMethodName', () => { + beforeAll(async () => { + await new Promise(resolve => { + function before(callback) { + java.classpath.push('test/'); + expect(java.isJvmCreated()).toBeFalsy(); + callback(); + } + + function after(callback) { + expect(java.isJvmCreated()).toBeTruthy(); + callback(); + } + + java.asyncOptions = { + syncSuffix: "Sync", + asyncSuffix: "", + ifReadOnlySuffix: "_alt" + } + java.registerClient(before, after); + + java.ensureJvm(function (err) { + expect(err).toBeFalsy(); + expect(java.isJvmCreated()).toBeTruthy(); + resolve(); + }); + }); + }); + + test('unusableMethodName_nameThrows', () => { + var Test = java.import("Test"); + expect(Test).toBeTruthy(); + expect(() => { + Test.name(function (_err) { + throw new Error('should not get here'); + }); + }).toThrowError(TypeError); + }); + + test('unusableMethodName_callerThrows', () => { + var Test = java.import("Test"); + expect(Test).toBeTruthy(); + expect(() => { + Test.caller(function (_err) { + throw new Error('should not get here'); + }); + }).toThrowError(TypeError); + }); + + test('unusableMethodName_argumentsThrows', () => { + var Test = java.import("Test"); + expect(Test).toBeTruthy(); + expect(() => { + Test.arguments(function (_err) { + throw new Error('should not get here'); + }); + }).toThrowError(TypeError); + }); + + test('alternateMethodName_name_altWorks', async () => { + var Test = java.import("Test"); + expect(Test).toBeTruthy(); + await new Promise(resolve => { + Test.name_alt(function (err, val) { + expect(err).toBeFalsy(); + expect(val).toBe("name"); + resolve(); + }); + }); + }); + + test('alternateMethodName_caller_altWorks', async () => { + var Test = java.import("Test"); + expect(Test).toBeTruthy(); + await new Promise(resolve => { + Test.caller_alt(function (err, val) { + expect(err).toBeFalsy(); + expect(val).toBe("caller"); + resolve(); + }); + }); + }); + + test('alternateMethodName_arguments_altWorks', async () => { + var Test = java.import("Test"); + expect(Test).toBeTruthy(); + await new Promise(resolve => { + Test.arguments_alt(function (err, val) { + expect(err).toBeFalsy(); + expect(val).toBe("arguments"); + resolve(); + }); + }); + }); + + test('reservedFieldName', () => { + var TestEnum = java.import("Test$Enum"); + expect(TestEnum).toBeTruthy(); + + // 'foo' and 'bar' are valid enum names + expect(TestEnum.foo.toStringSync()).toBe("foo"); + expect(TestEnum.bar.toStringSync()).toBe("bar"); + + // TestEnum.name is actually the name of the proxy constructor function. + expect(TestEnum.name).toBe("javaClassConstructorProxy"); + + // Instead we need to access TestEnum.name_alt + expect(TestEnum.name_alt.toString()).toBe("name"); + expect(TestEnum.caller_alt.toString()).toBe("caller"); + expect(TestEnum.arguments_alt.toString()).toBe("arguments"); + }); +}); \ No newline at end of file diff --git a/testHelpers.js b/testHelpers.js index 01d5b68..7149b01 100644 --- a/testHelpers.js +++ b/testHelpers.js @@ -1,4 +1,4 @@ -var java = require("./"); +export const java = require("./"); java.options.push("-Djava.awt.headless=true"); //java.options.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005'); @@ -6,27 +6,16 @@ java.classpath.push("test/"); java.classpath.push("test/commons-lang3-3.1.jar"); java.classpath.push("test8/"); -function promisifyQ(f) { - // Q doesn't provide a promisify function that works directly on a method. - // The .denodeify() (aka .nfbind()) function requires a bound function. - return function(/* arguments */) { - return require('q').nbind(f, this).apply(undefined, arguments); - } -} - -java.asyncOptions = { - syncSuffix: "Sync", - asyncSuffix: "", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when +export function getJava(asyncOptions) { + java.asyncOptions = asyncOptions ?? { + syncSuffix: "Sync", + asyncSuffix: "", + promiseSuffix: 'Promise', + promisify: require('when/node').lift // https://github.com/cujojs/when + }; + // force initialization + java.import("java.util.ArrayList"); -// We've tested with 5 different Promises/A+ implementations: -// promisify: require('bluebird').promisify // https://github.com/petkaantonov/bluebird/ -// promisify: require('promise').denodeify // https://github.com/then/promise -// promisify: require('vow-node').promisify // https://github.com/dfilatov/vow-node -// promisify: require('when/node').lift // https://github.com/cujojs/when -// promisify: promisifyQ // https://github.com/kriskowal/q requires wrapper promisifyQ. -}; - -module.exports.java = java; + return java; +} diff --git a/testRunner.js b/testRunner.js index 7a990e6..b47d5ee 100644 --- a/testRunner.js +++ b/testRunner.js @@ -1,38 +1,38 @@ // testRunner.js -// This is a custom test runner. All tests are run with nodeunit, but in separate +// This is a custom test runner. All tests are run with vitest, but in separate // processes, which allows us to test java with different configuration options. -var async = require('async'); -var chalk = require('chalk'); -var childProcess = require('child_process'); -var glob = require('glob'); -var path = require('path'); +const async = require('async'); +const chalk = require('chalk'); +const childProcess = require('child_process'); +const glob = require('glob'); +const path = require('path'); -var tests = glob.sync(path.join('testAsyncOptions', '*.js')); +const tests = glob.sync(path.join('testAsyncOptions', '*.test.js')).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase())); -tests.unshift('test test8'); // Arrange to run the primary tests first, in a single process +tests.unshift('test'); // Arrange to run the primary tests first, in a single process function runTest(testArgs, done) { - var cmd = 'node_modules/.bin/nodeunit '; - if(process.platform == "win32") - cmd = 'node_modules\\.bin\\nodeunit '; - cmd += testArgs; + const vitest = path.join('node_modules', '.bin', 'vitest'); + const cmd = testArgs === 'test' ? `vitest --dir test` : `${vitest} ${testArgs}`; + console.log(`running "${cmd}"...`); childProcess.exec(cmd, function (error, stdout, stderr) { - // It appears that nodeunit merges error output into the stdout - // so these three lines are probably useless. var errText = stderr.toString(); - if (errText !== '') + if (errText !== '') { console.error(chalk.bold.red(errText)); + } process.stdout.write(stdout.toString()); done(error); }); } -async.eachSeries(tests, runTest, function(err) { +async.eachSeries(tests, runTest, function (err) { if (err) { console.error(chalk.bold.red(err)); process.exit(1); + return; } + console.log(chalk.green('Tests completed successfully!')); }); From 3c359054bdd73c0b86e95ad2eda0311e20008934 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 18 May 2025 17:14:49 +0000 Subject: [PATCH 32/47] Bump esbuild and vite Bumps [esbuild](https://github.com/evanw/esbuild) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). These dependencies needed to be updated together. Updates `esbuild` from 0.21.5 to 0.25.4 - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.21.5...v0.25.4) Updates `vite` from 5.4.19 to 6.3.5 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.3.5/packages/vite) --- updated-dependencies: - dependency-name: esbuild dependency-version: 0.25.4 dependency-type: indirect - dependency-name: vite dependency-version: 6.3.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 307 +++++++++++++++++++++++++++------------------- 1 file changed, 179 insertions(+), 128 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25ace04..ec23bb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,9 +26,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", "cpu": [ "ppc64" ], @@ -39,13 +39,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", "cpu": [ "arm" ], @@ -56,13 +56,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", "cpu": [ "arm64" ], @@ -73,13 +73,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", "cpu": [ "x64" ], @@ -90,13 +90,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", "cpu": [ "arm64" ], @@ -107,13 +107,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", "cpu": [ "x64" ], @@ -124,13 +124,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", "cpu": [ "arm64" ], @@ -141,13 +141,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", "cpu": [ "x64" ], @@ -158,13 +158,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", "cpu": [ "arm" ], @@ -175,13 +175,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", "cpu": [ "arm64" ], @@ -192,13 +192,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", "cpu": [ "ia32" ], @@ -209,13 +209,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", "cpu": [ "loong64" ], @@ -226,13 +226,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", "cpu": [ "mips64el" ], @@ -243,13 +243,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", "cpu": [ "ppc64" ], @@ -260,13 +260,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", "cpu": [ "riscv64" ], @@ -277,13 +277,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", "cpu": [ "s390x" ], @@ -294,13 +294,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", "cpu": [ "x64" ], @@ -311,13 +311,30 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", "cpu": [ "x64" ], @@ -328,13 +345,30 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", "cpu": [ "x64" ], @@ -345,13 +379,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", "cpu": [ "x64" ], @@ -362,13 +396,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", "cpu": [ "arm64" ], @@ -379,13 +413,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", "cpu": [ "ia32" ], @@ -396,13 +430,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", "cpu": [ "x64" ], @@ -413,7 +447,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@isaacs/cliui": { @@ -1250,9 +1284,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1260,32 +1294,34 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.4", + "@esbuild/android-arm": "0.25.4", + "@esbuild/android-arm64": "0.25.4", + "@esbuild/android-x64": "0.25.4", + "@esbuild/darwin-arm64": "0.25.4", + "@esbuild/darwin-x64": "0.25.4", + "@esbuild/freebsd-arm64": "0.25.4", + "@esbuild/freebsd-x64": "0.25.4", + "@esbuild/linux-arm": "0.25.4", + "@esbuild/linux-arm64": "0.25.4", + "@esbuild/linux-ia32": "0.25.4", + "@esbuild/linux-loong64": "0.25.4", + "@esbuild/linux-mips64el": "0.25.4", + "@esbuild/linux-ppc64": "0.25.4", + "@esbuild/linux-riscv64": "0.25.4", + "@esbuild/linux-s390x": "0.25.4", + "@esbuild/linux-x64": "0.25.4", + "@esbuild/netbsd-arm64": "0.25.4", + "@esbuild/netbsd-x64": "0.25.4", + "@esbuild/openbsd-arm64": "0.25.4", + "@esbuild/openbsd-x64": "0.25.4", + "@esbuild/sunos-x64": "0.25.4", + "@esbuild/win32-arm64": "0.25.4", + "@esbuild/win32-ia32": "0.25.4", + "@esbuild/win32-x64": "0.25.4" } }, "node_modules/estree-walker": { @@ -2462,21 +2498,24 @@ } }, "node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -2485,19 +2524,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.4.0" + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -2518,6 +2563,12 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, From 9f34ffdd7bb4862ce04edf11f1e20730b966ba40 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Sun, 18 May 2025 17:32:08 +0000 Subject: [PATCH 33/47] fix c++ warnings --- .vscode/c_cpp_properties.json | 19 +++++++++++++++++++ src/utils.cpp | 27 ++++++++++++++++++++++----- 2 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 .vscode/c_cpp_properties.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..5c437f5 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,19 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**", + "/usr/local/include/node", + "/usr/lib/jvm/java-17-openjdk-amd64/include/", + "/usr/lib/jvm/java-17-openjdk-amd64/include/linux" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "c17", + "cppStandard": "gnu++17", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/src/utils.cpp b/src/utils.cpp index bd1c9bf..39c543d 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -11,6 +11,13 @@ jobject v8ToJava_javaObject(JNIEnv* env, v8::Local obj); jobject v8ToJava_javaLong(JNIEnv* env, v8::Local obj); +bool hasSetFailed(Nan::Maybe v) { + if (v.IsNothing()) { + return false; + } + return v.ToChecked() == false; +} + void javaReflectionGetMethods(JNIEnv *env, jclass clazz, std::list* methods, bool includeStatic) { jclass clazzclazz = env->FindClass("java/lang/Class"); jmethodID clazz_getMethods = env->GetMethodID(clazzclazz, "getMethods", "()[Ljava/lang/reflect/Method;"); @@ -452,7 +459,9 @@ v8::Local javaExceptionToV8(Java* java, JNIEnv* env, jthrowable ex, c msg << "\n" << javaExceptionToString(env, ex); v8::Local v8ex = v8::Exception::Error(Nan::New(msg.str().c_str()).ToLocalChecked()); - ((v8::Object*)*v8ex)->Set(Nan::GetCurrentContext(), Nan::New("cause").ToLocalChecked(), javaToV8(java, env, ex)); + if (hasSetFailed(((v8::Object*)*v8ex)->Set(Nan::GetCurrentContext(), Nan::New("cause").ToLocalChecked(), javaToV8(java, env, ex)))) { + return v8::Exception::Error(Nan::New("could not set cause").ToLocalChecked()); + } return v8ex; } @@ -576,7 +585,9 @@ v8::Local javaArrayToV8(Java* java, JNIEnv* env, jobjectArray objArra { jboolean* elems = env->GetBooleanArrayElements((jbooleanArray)objArray, 0); for(jsize i=0; iSet(Nan::GetCurrentContext(), i, Nan::New(elems[i])); + if(hasSetFailed(result->Set(Nan::GetCurrentContext(), i, Nan::New(elems[i])))) { + return v8::Exception::Error(Nan::New("set array element failed").ToLocalChecked()); + } } env->ReleaseBooleanArrayElements((jbooleanArray)objArray, elems, 0); } @@ -638,7 +649,9 @@ v8::Local javaArrayToV8(Java* java, JNIEnv* env, jobjectArray objArra jlong* elems = env->GetLongArrayElements((jlongArray)objArray, 0); for(jsize i=0; iSet(Nan::GetCurrentContext(), i, JavaObject::New(java, obj)); + if(hasSetFailed(result->Set(Nan::GetCurrentContext(), i, JavaObject::New(java, obj)))) { + return v8::Exception::Error(Nan::New("could not set array element").ToLocalChecked()); + } } env->ReleaseLongArrayElements((jlongArray)objArray, elems, 0); } @@ -648,7 +661,9 @@ v8::Local javaArrayToV8(Java* java, JNIEnv* env, jobjectArray objArra for(jsize i=0; iGetObjectArrayElement(objArray, i); v8::Local item = javaToV8(java, env, obj); - result->Set(Nan::GetCurrentContext(), i, item); + if(hasSetFailed(result->Set(Nan::GetCurrentContext(), i, item))) { + return v8::Exception::Error(Nan::New("could not set array element").ToLocalChecked()); + } } break; } @@ -711,7 +726,9 @@ v8::Local javaToV8(Java* java, JNIEnv* env, jobject obj, DynamicProxy std::string strValue = javaObjectToString(env, obj); v8::Local v8Result = Nan::New((double)result); v8::NumberObject* v8ResultNumberObject = v8::NumberObject::Cast(*v8Result); - v8ResultNumberObject->Set(Nan::GetCurrentContext(), Nan::New("longValue").ToLocalChecked(), Nan::New(strValue.c_str()).ToLocalChecked()); + if(hasSetFailed(v8ResultNumberObject->Set(Nan::GetCurrentContext(), Nan::New("longValue").ToLocalChecked(), Nan::New(strValue.c_str()).ToLocalChecked()))) { + return v8::Exception::Error(Nan::New("could not set longValue").ToLocalChecked()); + } SetHiddenValue(v8ResultNumberObject, Nan::New(V8_HIDDEN_MARKER_JAVA_LONG).ToLocalChecked(), Nan::New(true)); return v8Result; } From 381f10b3e752d737473e9b73678c9aa39400c2c4 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Sun, 18 May 2025 17:45:47 +0000 Subject: [PATCH 34/47] prettier and lint --- .clang-format | 2 + .devcontainer/Dockerfile | 2 +- .github/workflows/master.yml | 6 + .github/workflows/pull-requests.yml | 6 + .prettierignore | 23 + .prettierrc | 10 + eslint.config.mjs | 25 + examples/lucene/example.js | 84 +- examples/mixJavaAndNode/runMyClass.js | 8 +- findJavaHome.js | 6 +- index.js | 1 - lib/nodeJavaBridge.js | 290 ++--- package-lock.json | 1038 ++++++++++++++++- package.json | 10 +- postInstall.js | 77 +- src/java.cpp | 464 ++++---- src/java.h | 22 +- src/javaObject.cpp | 126 +- src/javaObject.h | 23 +- src/javaScope.cpp | 4 +- src/methodCallBaton.cpp | 92 +- src/methodCallBaton.h | 26 +- src/nodeJavaBridge.cpp | 14 +- src/node_NodeDynamicProxyClass.h | 6 +- src/utils.cpp | 774 ++++++------ src/utils.h | 173 +-- test/TestLambda.test.js | 15 +- test/awt.test.js | 7 +- test/dynamicProxy.test.js | 97 +- test/importClass.test.js | 16 +- test/instanceof.test.js | 2 +- test/java-ambiguousMethod.test.js | 34 +- test/java-callStaticMethod.test.js | 51 +- test/java-newInstance.test.js | 22 +- test/java-staticField.test.js | 2 +- test/javaObject.test.js | 4 +- test/promises.test.js | 19 +- test/simple.test.js | 88 +- test/utils-types.test.js | 21 +- test/varargs.test.js | 112 +- testAsyncOptions/allThreeSuffix.test.js | 64 +- .../asyncSuffixSyncDefault.test.js | 57 +- testAsyncOptions/clientBeforeError.test.js | 12 +- .../clientBeforeSyncThrows.test.js | 14 +- testAsyncOptions/clientBeforeThrows.test.js | 16 +- testAsyncOptions/clientPBeforeError.test.js | 20 +- testAsyncOptions/clientPBeforeThrows.test.js | 22 +- testAsyncOptions/defacto.test.js | 51 +- testAsyncOptions/defactoPlusPromise.test.js | 67 +- testAsyncOptions/default.test.js | 45 +- testAsyncOptions/invalidLaunch.test.js | 30 +- testAsyncOptions/noAsync.test.js | 84 +- .../syncDefaultPlusPromise.test.js | 53 +- testAsyncOptions/unusableMethodName.test.js | 52 +- testHelpers.js | 4 +- testIntegration/jdbc/enduranceTest.js | 89 +- testIntegration/jdbc/enduranceTestAsync.js | 127 +- testIntegration/poi/poi-3.9-20121203.jar | Bin 1869093 -> 1869113 bytes .../poi/poi-scratchpad-3.9-20121203.jar | Bin 1226497 -> 1226511 bytes testIntegration/poi/poiTest.js | 25 +- testIntegration/webkit/main.js | 6 +- testRunner.js | 26 +- 62 files changed, 2912 insertions(+), 1754 deletions(-) create mode 100644 .clang-format create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 eslint.config.mjs diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..173f8a6 --- /dev/null +++ b/.clang-format @@ -0,0 +1,2 @@ +BasedOnStyle: LLVM +ColumnLimit: 120 diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 46e593f..af983c7 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ FROM mcr.microsoft.com/devcontainers/javascript-node:22 RUN apt-get update -RUN apt-get install -y openjdk-17-jdk gdb +RUN apt-get install -y openjdk-17-jdk gdb clang-format diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 4fb4d56..074ca8e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -19,5 +19,11 @@ jobs: node-version: ${{ matrix.nodeVersion }} - name: npm ci run: npm ci + - name: npm run format-cpp + run: npm run format-cpp + - name: npm run format + run: npm run format + - name: npm run lint + run: npm run lint - name: Unit test run: npm test diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml index 07e6902..e45d238 100644 --- a/.github/workflows/pull-requests.yml +++ b/.github/workflows/pull-requests.yml @@ -20,5 +20,11 @@ jobs: node-version: ${{ matrix.nodeVersion }} - name: npm ci run: npm ci + - name: npm run format-cpp + run: npm run format-cpp + - name: npm run format + run: npm run format + - name: npm run lint + run: npm run lint - name: Unit test run: npm test diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..60c971c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,23 @@ +**/*.cpp +**/*.h +**/*.ppt +**/*.jar +**/*.class +**/*.java +**/*.sh +**/*.html +**/*.json +**/*.png +**/*.md +**/*.rule +**/*.rules +**/*.gyp +**/*.yml +**/Dockerfile +.clang-format +.prettierrc +.prettierignore +.npmignore +.gitignore +.gitattributes +LICENSE diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..53fee0e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "parser": "typescript", + "semi": true, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false, + "printWidth": 120, + "endOfLine": "lf" +} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..68c91e1 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,25 @@ +import js from "@eslint/js"; +import globals from "globals"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + { + files: ["**/*.{js,mjs,cjs}"], + plugins: { js }, + extends: ["js/recommended"], + languageOptions: { globals: globals.node }, + rules: { + "no-var": ["error"], + curly: ["error"], + "no-unused-vars": [ + "warn", + { + varsIgnorePattern: "^_", + argsIgnorePattern: "^_", + caughtErrorsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + }, + ], + }, + }, +]); diff --git a/examples/lucene/example.js b/examples/lucene/example.js index f347811..b531969 100755 --- a/examples/lucene/example.js +++ b/examples/lucene/example.js @@ -1,60 +1,74 @@ #!/usr/bin/env node -var java = require("../../"); +const java = require("../../"); java.classpath.push("./lucene-lib/lucene-core-7.4.0.jar"); java.classpath.push("./lucene-lib/lucene-analyzers-common-7.4.0.jar"); java.classpath.push("./lucene-lib/lucene-queryparser-7.4.0.jar"); +const idx = java.newInstanceSync("org.apache.lucene.store.RAMDirectory"); +const analyzer = java.newInstanceSync("org.apache.lucene.analysis.standard.StandardAnalyzer"); +const writerConfig = java.newInstanceSync("org.apache.lucene.index.IndexWriterConfig", analyzer); +const writer = java.newInstanceSync("org.apache.lucene.index.IndexWriter", idx, writerConfig); +const queryParser = java.newInstanceSync("org.apache.lucene.queryparser.classic.QueryParser", "content", analyzer); -var idx = java.newInstanceSync("org.apache.lucene.store.RAMDirectory"); -var analyzer = java.newInstanceSync("org.apache.lucene.analysis.standard.StandardAnalyzer"); -var writerConfig = java.newInstanceSync("org.apache.lucene.index.IndexWriterConfig", analyzer); -var writer = java.newInstanceSync("org.apache.lucene.index.IndexWriter", idx, writerConfig); -var queryParser = java.newInstanceSync("org.apache.lucene.queryparser.classic.QueryParser", "content", analyzer); - -writer.addDocumentSync(createDocument("Theodore Roosevelt", - "It behooves every man to remember that the work of the " + - "critic, is of altogether secondary importance, and that, " + - "in the end, progress is accomplished by the man who does " + - "things.")); -writer.addDocumentSync(createDocument("Friedrich Hayek", - "The case for individual freedom rests largely on the " + - "recognition of the inevitable and universal ignorance " + - "of all of us concerning a great many of the factors on " + - "which the achievements of our ends and welfare depend.")); -writer.addDocumentSync(createDocument("Ayn Rand", - "There is nothing to take a man's freedom away from " + - "him, save other men. To be free, a man must be free " + - "of his brothers.")); -writer.addDocumentSync(createDocument("Mohandas Gandhi", - "Freedom is not worth having if it does not connote " + - "freedom to err.")); +writer.addDocumentSync( + createDocument( + "Theodore Roosevelt", + "It behooves every man to remember that the work of the " + + "critic, is of altogether secondary importance, and that, " + + "in the end, progress is accomplished by the man who does " + + "things." + ) +); +writer.addDocumentSync( + createDocument( + "Friedrich Hayek", + "The case for individual freedom rests largely on the " + + "recognition of the inevitable and universal ignorance " + + "of all of us concerning a great many of the factors on " + + "which the achievements of our ends and welfare depend." + ) +); +writer.addDocumentSync( + createDocument( + "Ayn Rand", + "There is nothing to take a man's freedom away from " + + "him, save other men. To be free, a man must be free " + + "of his brothers." + ) +); +writer.addDocumentSync( + createDocument("Mohandas Gandhi", "Freedom is not worth having if it does not connote " + "freedom to err.") +); writer.closeSync(); -var searcher = java.newInstanceSync("org.apache.lucene.search.IndexSearcher", java.callStaticMethodSync("org.apache.lucene.index.DirectoryReader", "open", idx)); +const searcher = java.newInstanceSync( + "org.apache.lucene.search.IndexSearcher", + java.callStaticMethodSync("org.apache.lucene.index.DirectoryReader", "open", idx) +); search(searcher, "freedom"); search(searcher, "free"); search(searcher, "progress or achievements"); function createDocument(title, content) { - var fieldStoreYes = java.callStaticMethodSync("org.apache.lucene.document.Field$Store", "valueOf", "YES"); - var doc = java.newInstanceSync("org.apache.lucene.document.Document"); + const fieldStoreYes = java.callStaticMethodSync("org.apache.lucene.document.Field$Store", "valueOf", "YES"); + const doc = java.newInstanceSync("org.apache.lucene.document.Document"); doc.addSync(java.newInstanceSync("org.apache.lucene.document.TextField", "title", title, fieldStoreYes)); doc.addSync(java.newInstanceSync("org.apache.lucene.document.TextField", "content", content, fieldStoreYes)); return doc; } function search(searcher, queryString) { - var query = queryParser.parseSync(queryString); - var topDocs = searcher.searchSync(query, 10); - - console.log("Found " + topDocs.totalHits + " hits for query \"" + queryString + "\"."); - var scoreDocs = topDocs.scoreDocs; - for(var i=0; i { + cb(); + }, + (err) => { + cb(err); + } + ); + } else { cb(); } - } - catch (err) { + } catch (err) { cb(err); } } @@ -147,20 +164,19 @@ function initializeAll(done) { // This function may be called multiple times -- the 2nd and subsequent calls are no-ops. // However, once this method has been called (or the JVM is launched as a side effect of calling other java // methods), then clients can no longer use the registerClient API. -java.ensureJvm = function(callback) { - +java.ensureJvm = function (callback) { // First see if the promise-style API should be used. // This must be done first in order to ensure the proper API is used. - if (typeof callback === 'undefined' && java.asyncOptions && typeof java.asyncOptions.promisify === 'function') { + if (typeof callback === "undefined" && java.asyncOptions && typeof java.asyncOptions.promisify === "function") { // Create a promisified version of this function. - var launchJvmPromise = java.asyncOptions.promisify(java.ensureJvm.bind(java)); + const launchJvmPromise = java.asyncOptions.promisify(java.ensureJvm.bind(java)); // Call the promisified function, returning its result, which should be a promise. return launchJvmPromise(); } // If we get here, callback must be a node-style callback function. If not, throw an error. - else if (typeof callback !== 'function') { - throw new Error('java.launchJvm(cb) requires its one argument to be a callback function.'); + else if (typeof callback !== "function") { + throw new Error("java.launchJvm(cb) requires its one argument to be a callback function."); } // Now check if the JVM has already been created. If so, we assume that the jvm was already successfully @@ -173,39 +189,39 @@ java.ensureJvm = function(callback) { else { return setImmediate(initializeAll, callback); } -} +}; -java.onJvmCreated = function() { +java.onJvmCreated = function () { if (java.asyncOptions) { syncSuffix = java.asyncOptions.syncSuffix; asyncSuffix = java.asyncOptions.asyncSuffix; - if (typeof syncSuffix !== 'string') { - throw new Error('In asyncOptions, syncSuffix must be defined and must a string'); + if (typeof syncSuffix !== "string") { + throw new Error("In asyncOptions, syncSuffix must be defined and must a string"); } - var promiseSuffix = java.asyncOptions.promiseSuffix; - var promisify = java.asyncOptions.promisify; - if (typeof promiseSuffix === 'string' && typeof promisify === 'function') { - var methods = ['newInstance', 'callMethod', 'callStaticMethod']; + const promiseSuffix = java.asyncOptions.promiseSuffix; + const promisify = java.asyncOptions.promisify; + if (typeof promiseSuffix === "string" && typeof promisify === "function") { + const methods = ["newInstance", "callMethod", "callStaticMethod"]; methods.forEach(function (name) { java[name + promiseSuffix] = promisify(java[name]); }); - } else if (typeof promiseSuffix === 'undefined' && typeof promisify === 'undefined') { + } else if (typeof promiseSuffix === "undefined" && typeof promisify === "undefined") { // no promises } else { - throw new Error('In asyncOptions, if either promiseSuffix or promisify is defined, both most be.'); + throw new Error("In asyncOptions, if either promiseSuffix or promisify is defined, both most be."); } - if (typeof java.asyncOptions.ifReadOnlySuffix === 'string' && java.asyncOptions.ifReadOnlySuffix !== '') { + if (typeof java.asyncOptions.ifReadOnlySuffix === "string" && java.asyncOptions.ifReadOnlySuffix !== "") { ifReadOnlySuffix = java.asyncOptions.ifReadOnlySuffix; } } else { - syncSuffix = 'Sync'; - asyncSuffix = ''; + syncSuffix = "Sync"; + asyncSuffix = ""; } -} +}; -var MODIFIER_PUBLIC = 1; -var MODIFIER_STATIC = 8; +const MODIFIER_PUBLIC = 1; +const MODIFIER_STATIC = 8; function isWritable(prop) { // If the property has no descriptor, or wasn't explicitly marked as not writable or not configurable, assume it is. @@ -213,10 +229,12 @@ function isWritable(prop) { // (e.g. for either .caller or .arguments). // It may be that checking desc.configurable is sufficient, but the specification doesn't make this definitive, // and there is no harm in checking both. - if (prop === 'caller' || prop === 'arguments') { return false; } + if (prop === "caller" || prop === "arguments") { + return false; + } - var desc = Object.getOwnPropertyDescriptor(function() {}, prop) || {}; - return desc.writable !== false && desc.configurable !== false; + const desc = Object.getOwnPropertyDescriptor(function () {}, prop) || {}; + return desc.writable !== false && desc.configurable !== false; } function usableName(name) { @@ -226,89 +244,93 @@ function usableName(name) { return name; } -java.import = function(name) { - var clazz = java.findClassSync(name); // TODO: change to Class.forName when classloader issue is resolved. - var result = function javaClassConstructorProxy() { - var args = [name]; - for (var i = 0; i < arguments.length; i++) { +java.import = function (name) { + const clazz = java.findClassSync(name); // TODO: change to Class.forName when classloader issue is resolved. + const result = function javaClassConstructorProxy() { + const args = [name]; + for (let i = 0; i < arguments.length; i++) { args.push(arguments[i]); } return newInstanceSync.apply(java, args); }; - var i; result.class = clazz; // copy static fields - var fields = SyncCall(clazz, 'getDeclaredFields')(); - for (i = 0; i < fields.length; i++) { - var modifiers = SyncCall(fields[i], 'getModifiers')(); - if (((modifiers & MODIFIER_PUBLIC) === MODIFIER_PUBLIC) - && ((modifiers & MODIFIER_STATIC) === MODIFIER_STATIC)) { - var fieldName = SyncCall(fields[i], 'getName')(); - var jsfieldName = usableName(fieldName); - result.__defineGetter__(jsfieldName, function(name, fieldName) { - return java.getStaticFieldValue(name, fieldName); - }.bind(this, name, fieldName)); - result.__defineSetter__(jsfieldName, function(name, fieldName, val) { - java.setStaticFieldValue(name, fieldName, val); - }.bind(this, name, fieldName)); + const fields = SyncCall(clazz, "getDeclaredFields")(); + for (let i = 0; i < fields.length; i++) { + const modifiers = SyncCall(fields[i], "getModifiers")(); + if ((modifiers & MODIFIER_PUBLIC) === MODIFIER_PUBLIC && (modifiers & MODIFIER_STATIC) === MODIFIER_STATIC) { + const fieldName = SyncCall(fields[i], "getName")(); + const jsfieldName = usableName(fieldName); + result.__defineGetter__( + jsfieldName, + function (name, fieldName) { + return java.getStaticFieldValue(name, fieldName); + }.bind(this, name, fieldName) + ); + result.__defineSetter__( + jsfieldName, + function (name, fieldName, val) { + java.setStaticFieldValue(name, fieldName, val); + }.bind(this, name, fieldName) + ); } } - var promisify = undefined; - var promiseSuffix; + let promisify = undefined; + let promiseSuffix; if (java.asyncOptions && java.asyncOptions.promisify) { promisify = java.asyncOptions.promisify; promiseSuffix = java.asyncOptions.promiseSuffix; } // copy static methods - var methods = SyncCall(clazz, 'getDeclaredMethods')(); - for (i = 0; i < methods.length; i++) { - var modifiers = SyncCall(methods[i], 'getModifiers')(); - if (((modifiers & MODIFIER_PUBLIC) === MODIFIER_PUBLIC) - && ((modifiers & MODIFIER_STATIC) === MODIFIER_STATIC)) { - var methodName = SyncCall(methods[i], 'getName')(); - - if (typeof syncSuffix === 'string') { - var syncName = usableName(methodName + syncSuffix); + const methods = SyncCall(clazz, "getDeclaredMethods")(); + for (let i = 0; i < methods.length; i++) { + const modifiers = SyncCall(methods[i], "getModifiers")(); + if ((modifiers & MODIFIER_PUBLIC) === MODIFIER_PUBLIC && (modifiers & MODIFIER_STATIC) === MODIFIER_STATIC) { + const methodName = SyncCall(methods[i], "getName")(); + + if (typeof syncSuffix === "string") { + const syncName = usableName(methodName + syncSuffix); result[syncName] = callStaticMethodSync.bind(java, name, methodName); } - if (typeof asyncSuffix === 'string') { - var asyncName = usableName(methodName + asyncSuffix); + if (typeof asyncSuffix === "string") { + const asyncName = usableName(methodName + asyncSuffix); result[asyncName] = callStaticMethod.bind(java, name, methodName); } - if (promisify && typeof promiseSuffix === 'string') { - var promiseName = usableName(methodName + promiseSuffix); + if (promisify && typeof promiseSuffix === "string") { + const promiseName = usableName(methodName + promiseSuffix); result[promiseName] = promisify(callStaticMethod.bind(java, name, methodName)); } } } // copy static classes/enums - var classes = SyncCall(clazz, 'getDeclaredClasses')(); - for (i = 0; i < classes.length; i++) { - var modifiers = SyncCall(classes[i], 'getModifiers')(); - if (((modifiers & MODIFIER_PUBLIC) === MODIFIER_PUBLIC) - && ((modifiers & MODIFIER_STATIC) === MODIFIER_STATIC)) { - var className = SyncCall(classes[i], 'getName')(); - var simpleName = SyncCall(classes[i], 'getSimpleName')(); + const classes = SyncCall(clazz, "getDeclaredClasses")(); + for (let i = 0; i < classes.length; i++) { + const modifiers = SyncCall(classes[i], "getModifiers")(); + if ((modifiers & MODIFIER_PUBLIC) === MODIFIER_PUBLIC && (modifiers & MODIFIER_STATIC) === MODIFIER_STATIC) { + const className = SyncCall(classes[i], "getName")(); + const simpleName = SyncCall(classes[i], "getSimpleName")(); Object.defineProperty(result, simpleName, { - get: function(result, simpleName, className) { - var c = java.import(className); + get: function (result, simpleName, className) { + const c = java.import(className); // memoize the import - var d = Object.getOwnPropertyDescriptor(result, simpleName); - d.get = function(c) { return c; }.bind(null, c); + const d = Object.getOwnPropertyDescriptor(result, simpleName); + d.get = function (c) { + return c; + }.bind(null, c); Object.defineProperty(result, simpleName, d); return c; }.bind(this, result, simpleName, className), enumerable: true, - configurable: true + configurable: true, }); } } diff --git a/package-lock.json b/package-lock.json index ec23bb1..a596ce1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,11 @@ "node-gyp": "^10.3.1" }, "devDependencies": { + "@eslint/js": "^9.27.0", "chalk": "2.4.2", + "eslint": "^9.27.0", + "globals": "^16.1.0", + "prettier": "^3.5.3", "vitest": "^3.1.3", "when": "3.7.8" }, @@ -450,6 +454,226 @@ "node": ">=18" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", + "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz", + "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", + "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.14.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -884,6 +1108,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, "node_modules/@vitest/expect": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz", @@ -1006,6 +1237,29 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/agent-base": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", @@ -1028,6 +1282,23 @@ "node": ">=8" } }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1050,6 +1321,13 @@ "node": ">=4" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -1071,6 +1349,17 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -1119,6 +1408,16 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/chai": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", @@ -1219,6 +1518,42 @@ "dev": true, "license": "MIT" }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -1246,6 +1581,13 @@ "node": ">=6" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1324,6 +1666,217 @@ "@esbuild/win32-x64": "0.25.4" } }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz", + "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.27.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -1334,6 +1887,16 @@ "@types/estree": "^1.0.0" } }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expect-type": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", @@ -1349,6 +1912,27 @@ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, "node_modules/fdir": { "version": "6.4.4", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", @@ -1364,6 +1948,19 @@ } } }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/find-java-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-2.0.0.tgz", @@ -1373,6 +1970,44 @@ "winreg": "~1.2.2" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, "node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -1429,6 +2064,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1438,20 +2086,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/glob/node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/glob/node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -1502,18 +2136,17 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "node_modules/globals": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.1.0.tgz", + "integrity": "sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/graceful-fs": { @@ -1577,6 +2210,33 @@ "node": ">=0.10.0" } }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -1619,6 +2279,29 @@ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "license": "BSD-3-Clause" }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -1628,7 +2311,8 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/jackspeak": { "version": "3.4.3", @@ -1645,6 +2329,87 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/loupe": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", @@ -1694,6 +2459,19 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/minipass-collect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", @@ -1893,6 +2671,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, "node_modules/negotiator": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", @@ -1965,6 +2750,56 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -1986,6 +2821,29 @@ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -2091,6 +2949,32 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/proc-log": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", @@ -2113,6 +2997,26 @@ "node": ">=10" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -2344,6 +3248,42 @@ "node": ">=8" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", @@ -2473,6 +3413,19 @@ "node": ">=14.0.0" } }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -2497,6 +3450,16 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/vite": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", @@ -2702,6 +3665,16 @@ "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", "integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs=" }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", @@ -2793,6 +3766,19 @@ "engines": { "node": ">=8" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 4f4943f..1d20298 100644 --- a/package.json +++ b/package.json @@ -33,14 +33,22 @@ "node-gyp": "^10.3.1" }, "devDependencies": { + "@eslint/js": "^9.27.0", "chalk": "2.4.2", + "eslint": "^9.27.0", + "globals": "^16.1.0", + "prettier": "^3.5.3", "vitest": "^3.1.3", "when": "3.7.8" }, "scripts": { "install": "node-gyp rebuild", "test": "node testRunner.js", - "postinstall": "node postInstall.js" + "postinstall": "node postInstall.js", + "lint": "eslint --ext js,ts,tsx --report-unused-disable-directives --max-warnings 0 .", + "format": "prettier --write .", + "format-cpp": "clang-format --version; find src/ -iname '*.h' -o -iname '*.cpp' | xargs clang-format -i", + "precommit": "npm run format-cpp && npm run format && npm run lint && npm test" }, "main": "./index.js" } diff --git a/postInstall.js b/postInstall.js index 2701913..7a61dec 100644 --- a/postInstall.js +++ b/postInstall.js @@ -1,69 +1,60 @@ -var glob = require('glob'); -var fs = require('fs'); -var path = require('path'); -var os = require('os'); - -require('find-java-home')(function(err, home){ - var dll; - var dylib; - var so,soFiles; - var binary; - - if(home){ - dll = glob.sync('**/jvm.dll', {cwd: home})[0]; - dylib = glob.sync('**/libjli.dylib', {cwd: home})[0]; - soFiles = glob.sync('**/libjvm.so', {cwd: home}); - - if(soFiles.length>0) +const glob = require("glob"); +const fs = require("fs"); +const path = require("path"); +const os = require("os"); + +require("find-java-home")((err, home) => { + if (home) { + const dll = glob.sync("**/jvm.dll", { cwd: home })[0]; + const dylib = glob.sync("**/libjli.dylib", { cwd: home })[0]; + const soFiles = glob.sync("**/libjvm.so", { cwd: home }); + + let so; + if (soFiles.length > 0) { so = getCorrectSoForPlatform(soFiles); + } - binary = dll || dylib || so; + const binary = dll ?? dylib ?? so; fs.writeFileSync( - path.resolve(__dirname, './build/jvm_dll_path.json'), - binary - ? JSON.stringify( - path.delimiter - + path.dirname(path.resolve(home, binary)) - ) - : '""' + path.resolve(__dirname, "./build/jvm_dll_path.json"), + binary ? JSON.stringify(path.delimiter + path.dirname(path.resolve(home, binary))) : '""' ); } }); -function getCorrectSoForPlatform(soFiles){ - var so = _getCorrectSoForPlatform(soFiles); +function getCorrectSoForPlatform(soFiles) { + let so = _getCorrectSoForPlatform(soFiles); if (so) { so = removeDuplicateJre(so); } return so; } -function removeDuplicateJre(filePath){ - while(filePath.indexOf('jre/jre')>=0){ - filePath = filePath.replace('jre/jre','jre'); +function removeDuplicateJre(filePath) { + while (filePath.indexOf("jre/jre") >= 0) { + filePath = filePath.replace("jre/jre", "jre"); } return filePath; } -function _getCorrectSoForPlatform(soFiles){ - - var architectureFolderNames = { - 'ia32': 'i386', - 'x64': 'amd64' +function _getCorrectSoForPlatform(soFiles) { + const architectureFolderNames = { + ia32: "i386", + x64: "amd64", }; - if(os.platform() != 'sunos') + if (os.platform() != "sunos") { return soFiles[0]; + } - var requiredFolderName = architectureFolderNames[os.arch()]; - - for (var i = 0; i < soFiles.length; i++) { - var so = soFiles[i]; + const requiredFolderName = architectureFolderNames[os.arch()]; - if(so.indexOf('server')>0) - if(so.indexOf(requiredFolderName)>0) - return so; + for (let i = 0; i < soFiles.length; i++) { + const so = soFiles[i]; + if (so.indexOf("server") > 0 && so.indexOf(requiredFolderName) > 0) { + return so; + } } return soFiles[0]; diff --git a/src/java.cpp b/src/java.cpp index 990f5a9..17743cc 100644 --- a/src/java.cpp +++ b/src/java.cpp @@ -2,23 +2,23 @@ #include #ifdef WIN32 #else - #include +#include #endif #include "javaObject.h" #include "javaScope.h" #include "methodCallBaton.h" #include "node_NodeDynamicProxyClass.h" +#include #include #include #include -#include #define DYNAMIC_PROXY_JS_ERROR -4 #ifdef WIN32 - typedef long threadId; +typedef long threadId; #else - typedef pthread_t threadId; +typedef pthread_t threadId; #endif threadId v8ThreadId; @@ -61,7 +61,7 @@ void uvAsyncCb_dynamicProxyJsCall(uv_async_t *handle) { DynamicProxyJsCallData *callData; do { uv_mutex_lock(&uvMutex_dynamicProxyJsCall); - if(!queue_dynamicProxyJsCallData.empty()) { + if (!queue_dynamicProxyJsCallData.empty()) { callData = queue_dynamicProxyJsCallData.front(); queue_dynamicProxyJsCallData.pop(); } else { @@ -69,17 +69,17 @@ void uvAsyncCb_dynamicProxyJsCall(uv_async_t *handle) { } uv_mutex_unlock(&uvMutex_dynamicProxyJsCall); - if(callData) { + if (callData) { EIO_CallJs(callData); } - } while(callData); + } while (callData); } /*static*/ void Java::Init(v8::Local target) { Nan::HandleScope scope; v8ThreadId = my_getThreadId(); - isDefaultLoopRunning = false; //init as false + isDefaultLoopRunning = false; // init as false uv_mutex_init(&uvMutex_dynamicProxyJsCall); @@ -127,7 +127,8 @@ NAN_METHOD(Java::New) { Nan::Set(self->handle(), Nan::New("classpath").ToLocalChecked(), Nan::New()); Nan::Set(self->handle(), Nan::New("options").ToLocalChecked(), Nan::New()); - Nan::Set(self->handle(), Nan::New("nativeBindingLocation").ToLocalChecked(), Nan::New("Not Set").ToLocalChecked()); + Nan::Set(self->handle(), Nan::New("nativeBindingLocation").ToLocalChecked(), + Nan::New("Not Set").ToLocalChecked()); Nan::Set(self->handle(), Nan::New("asyncOptions").ToLocalChecked(), Nan::Null()); info.GetReturnValue().Set(info.This()); @@ -144,12 +145,10 @@ Java::Java() { doPromise = false; } -Java::~Java() { - this->destroyJVM(&this->m_jvm, &this->m_env); -} +Java::~Java() { this->destroyJVM(&this->m_jvm, &this->m_env); } v8::Local Java::ensureJvm() { - if(!m_jvm) { + if (!m_jvm) { v8::Local result = createJVM(&this->m_jvm, &this->m_env); assert(result->IsNull()); return result; @@ -158,7 +157,7 @@ v8::Local Java::ensureJvm() { return Nan::Null(); } -void Java::configureAsync(v8::Local& asyncOptions) { +void Java::configureAsync(v8::Local &asyncOptions) { v8::Local asyncOptionsObj = asyncOptions.As(); m_SyncSuffix = "invalid"; @@ -168,7 +167,8 @@ void Java::configureAsync(v8::Local& asyncOptions) { doAsync = false; doPromise = false; - v8::MaybeLocal maybeSuffixValue = Nan::Get(asyncOptionsObj, Nan::New("syncSuffix").ToLocalChecked()); + v8::MaybeLocal maybeSuffixValue = + Nan::Get(asyncOptionsObj, Nan::New("syncSuffix").ToLocalChecked()); v8::Local suffixValue; if (maybeSuffixValue.ToLocal(&suffixValue) && suffixValue->IsString()) { v8::Local suffix = suffixValue->ToString(Nan::GetCurrentContext()).ToLocalChecked(); @@ -190,7 +190,8 @@ void Java::configureAsync(v8::Local& asyncOptions) { v8::Local suffix = suffixValue->ToString(Nan::GetCurrentContext()).ToLocalChecked(); Nan::Utf8String utf8(suffix); m_PromiseSuffix.assign(*utf8); - v8::MaybeLocal maybePromisify = Nan::Get(asyncOptionsObj, Nan::New("promisify").ToLocalChecked()); + v8::MaybeLocal maybePromisify = + Nan::Get(asyncOptionsObj, Nan::New("promisify").ToLocalChecked()); v8::Local promisify; if (maybePromisify.ToLocal(&promisify) && !promisify->IsFunction()) { fprintf(stderr, "asyncOptions.promisify must be a function"); @@ -212,8 +213,9 @@ void Java::configureAsync(v8::Local& asyncOptions) { m_asyncOptions.Reset(asyncOptionsObj); } -v8::Local Java::createJVM(JavaVM** jvm, JNIEnv** env) { - v8::MaybeLocal maybeAsyncOptions = Nan::Get(this->handle(), Nan::New("asyncOptions").ToLocalChecked()); +v8::Local Java::createJVM(JavaVM **jvm, JNIEnv **env) { + v8::MaybeLocal maybeAsyncOptions = + Nan::Get(this->handle(), Nan::New("asyncOptions").ToLocalChecked()); v8::Local asyncOptions; if (maybeAsyncOptions.ToLocal(&asyncOptions) && asyncOptions->IsObject()) { configureAsync(asyncOptions); @@ -223,23 +225,24 @@ v8::Local Java::createJVM(JavaVM** jvm, JNIEnv** env) { std::ostringstream classPath; classPath << "-Djava.class.path="; - v8::MaybeLocal maybeClassPathValue = Nan::Get(this->handle(), Nan::New("classpath").ToLocalChecked()); + v8::MaybeLocal maybeClassPathValue = + Nan::Get(this->handle(), Nan::New("classpath").ToLocalChecked()); v8::Local classPathValue; - if(!maybeClassPathValue.ToLocal(&classPathValue) || !classPathValue->IsArray()) { + if (!maybeClassPathValue.ToLocal(&classPathValue) || !classPathValue->IsArray()) { return Nan::TypeError("Classpath must be an array"); } v8::Local classPathArrayTemp = v8::Local::Cast(classPathValue); m_classPathArray.Reset(classPathArrayTemp); - for(uint32_t i=0; iLength(); i++) { - if(i != 0) { - #ifdef WIN32 - classPath << ";"; - #else - classPath << ":"; - #endif + for (uint32_t i = 0; i < classPathArrayTemp->Length(); i++) { + if (i != 0) { +#ifdef WIN32 + classPath << ";"; +#else + classPath << ":"; +#endif } v8::Local arrayItemValue = classPathArrayTemp->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); - if(!arrayItemValue->IsString()) { + if (!arrayItemValue->IsString()) { return Nan::TypeError("Classpath must only contain strings"); } v8::Local arrayItem = arrayItemValue->ToString(Nan::GetCurrentContext()).ToLocalChecked(); @@ -248,13 +251,16 @@ v8::Local Java::createJVM(JavaVM** jvm, JNIEnv** env) { } // set the native binding location - v8::Local v8NativeBindingLocation = Nan::Get(this->handle(), Nan::New("nativeBindingLocation").ToLocalChecked()).FromMaybe(v8::Local()); + v8::Local v8NativeBindingLocation = + Nan::Get(this->handle(), Nan::New("nativeBindingLocation").ToLocalChecked()) + .FromMaybe(v8::Local()); Nan::Utf8String nativeBindingLocationStr(v8NativeBindingLocation); s_nativeBindingLocation = *nativeBindingLocationStr; // get other options - v8::Local optionsValue = Nan::Get(this->handle(), Nan::New("options").ToLocalChecked()).FromMaybe(v8::Local()); - if(!optionsValue->IsArray()) { + v8::Local optionsValue = + Nan::Get(this->handle(), Nan::New("options").ToLocalChecked()).FromMaybe(v8::Local()); + if (!optionsValue->IsArray()) { return Nan::TypeError("options must be an array"); } v8::Local optionsArrayTemp = v8::Local::Cast(optionsValue); @@ -262,18 +268,18 @@ v8::Local Java::createJVM(JavaVM** jvm, JNIEnv** env) { // create vm options int vmOptionsCount = optionsArrayTemp->Length() + 1; - JavaVMOption* vmOptions = new JavaVMOption[vmOptionsCount]; - //printf("classPath: %s\n", classPath.str().c_str()); + JavaVMOption *vmOptions = new JavaVMOption[vmOptionsCount]; + // printf("classPath: %s\n", classPath.str().c_str()); vmOptions[0].optionString = strdup(classPath.str().c_str()); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < optionsArrayTemp->Length(); i++) { v8::Local arrayItemValue = optionsArrayTemp->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); - if(!arrayItemValue->IsString()) { + if (!arrayItemValue->IsString()) { delete[] vmOptions; return Nan::TypeError("options must only contain strings"); } v8::Local arrayItem = arrayItemValue->ToString(Nan::GetCurrentContext()).ToLocalChecked(); Nan::Utf8String arrayItemStr(arrayItem); - vmOptions[i+1].optionString = strdup(*arrayItemStr); + vmOptions[i + 1].optionString = strdup(*arrayItemStr); } JavaVMInitArgs args; @@ -297,22 +303,29 @@ v8::Local Java::createJVM(JavaVM** jvm, JNIEnv** env) { args.options = vmOptions; args.nOptions = vmOptionsCount; - JavaVM* jvmTemp; + JavaVM *jvmTemp; JNI_CreateJavaVM(&jvmTemp, (void **)env, &args); *jvm = jvmTemp; - delete [] vmOptions; + delete[] vmOptions; m_classLoader = getSystemClassLoader(*env); - v8::Local onJvmCreated = Nan::Get(this->handle(), Nan::New("onJvmCreated").ToLocalChecked()).FromMaybe(v8::Local()); - - // TODO: this handles sets put doesn't prevent modifing the underlying data. So java.classpath.push will still work which is invalid. - Nan::SetAccessor(this->handle(), Nan::New("classpath").ToLocalChecked(), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); - Nan::SetAccessor(this->handle(), Nan::New("options").ToLocalChecked(), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); - Nan::SetAccessor(this->handle(), Nan::New("nativeBindingLocation").ToLocalChecked(), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); - Nan::SetAccessor(this->handle(), Nan::New("asyncOptions").ToLocalChecked(), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); - Nan::SetAccessor(this->handle(), Nan::New("onJvmCreated").ToLocalChecked(), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); + v8::Local onJvmCreated = + Nan::Get(this->handle(), Nan::New("onJvmCreated").ToLocalChecked()).FromMaybe(v8::Local()); + + // TODO: this handles sets put doesn't prevent modifing the underlying data. So java.classpath.push will still work + // which is invalid. + Nan::SetAccessor(this->handle(), Nan::New("classpath").ToLocalChecked(), + AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); + Nan::SetAccessor(this->handle(), Nan::New("options").ToLocalChecked(), AccessorProhibitsOverwritingGetter, + AccessorProhibitsOverwritingSetter); + Nan::SetAccessor(this->handle(), Nan::New("nativeBindingLocation").ToLocalChecked(), + AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); + Nan::SetAccessor(this->handle(), Nan::New("asyncOptions").ToLocalChecked(), + AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); + Nan::SetAccessor(this->handle(), Nan::New("onJvmCreated").ToLocalChecked(), + AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter); if (onJvmCreated->IsFunction()) { v8::Local onJvmCreatedFunc = onJvmCreated.As(); @@ -324,22 +337,22 @@ v8::Local Java::createJVM(JavaVM** jvm, JNIEnv** env) { } NAN_GETTER(Java::AccessorProhibitsOverwritingGetter) { - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); Nan::HandleScope scope; Nan::Utf8String nameStr(property); - if(!strcmp("classpath", *nameStr)) { + if (!strcmp("classpath", *nameStr)) { info.GetReturnValue().Set(Nan::New(self->m_classPathArray)); return; - } else if(!strcmp("options", *nameStr)) { + } else if (!strcmp("options", *nameStr)) { info.GetReturnValue().Set(Nan::New(self->m_optionsArray)); return; - } else if(!strcmp("nativeBindingLocation", *nameStr)) { + } else if (!strcmp("nativeBindingLocation", *nameStr)) { info.GetReturnValue().Set(Nan::New(Java::s_nativeBindingLocation.c_str()).ToLocalChecked()); return; - } else if(!strcmp("asyncOptions", *nameStr)) { + } else if (!strcmp("asyncOptions", *nameStr)) { info.GetReturnValue().Set(Nan::New(self->m_asyncOptions)); return; - } else if(!strcmp("onJvmCreated", *nameStr)) { + } else if (!strcmp("onJvmCreated", *nameStr)) { // There is no good reason to get onJvmCreated, so just fall through to error below. } @@ -355,7 +368,7 @@ NAN_SETTER(Java::AccessorProhibitsOverwritingSetter) { Nan::ThrowError(errStr.str().c_str()); } -void Java::destroyJVM(JavaVM** jvm, JNIEnv** env) { +void Java::destroyJVM(JavaVM **jvm, JNIEnv **env) { (*jvm)->DestroyJavaVM(); *jvm = NULL; *env = NULL; @@ -363,17 +376,18 @@ void Java::destroyJVM(JavaVM** jvm, JNIEnv** env) { NAN_METHOD(Java::getClassLoader) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); jclass classClazz = env->FindClass("java/lang/ClassLoader"); - jmethodID class_getClassLoader = env->GetStaticMethodID(classClazz, "getSystemClassLoader", "()Ljava/lang/ClassLoader;"); + jmethodID class_getClassLoader = + env->GetStaticMethodID(classClazz, "getSystemClassLoader", "()Ljava/lang/ClassLoader;"); jobject classLoader = env->CallStaticObjectMethod(classClazz, class_getClassLoader); checkJavaException(env); @@ -383,13 +397,13 @@ NAN_METHOD(Java::getClassLoader) { NAN_METHOD(Java::newInstance) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -401,7 +415,7 @@ NAN_METHOD(Java::newInstance) { // find class jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { EXCEPTION_CALL_CALLBACK(self, "Could not find class " << className.c_str()); info.GetReturnValue().SetUndefined(); return; @@ -410,7 +424,7 @@ NAN_METHOD(Java::newInstance) { // get method jobjectArray methodArgs = v8ToJava(env, info, argsStart, argsEnd); jobject method = javaFindConstructor(env, clazz, methodArgs); - if(method == NULL) { + if (method == NULL) { std::string msg = methodNotFoundToString(env, clazz, className, true, info, argsStart, argsEnd); EXCEPTION_CALL_CALLBACK(self, msg); info.GetReturnValue().SetUndefined(); @@ -418,21 +432,22 @@ NAN_METHOD(Java::newInstance) { } // run - NewInstanceBaton* baton = new NewInstanceBaton(self, clazz, method, methodArgs, callback); + NewInstanceBaton *baton = new NewInstanceBaton(self, clazz, method, methodArgs, callback); baton->run(); - END_CALLBACK_FUNCTION("\"Constructor for class '" << className << "' called without a callback did you mean to use the Sync version?\""); + END_CALLBACK_FUNCTION("\"Constructor for class '" + << className << "' called without a callback did you mean to use the Sync version?\""); } NAN_METHOD(Java::newInstanceSync) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -443,7 +458,7 @@ NAN_METHOD(Java::newInstanceSync) { // find class jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { std::ostringstream errStr; errStr << "Could not create class " << className.c_str(); return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -452,17 +467,17 @@ NAN_METHOD(Java::newInstanceSync) { // find method jobjectArray methodArgs = v8ToJava(env, info, argsStart, argsEnd); jobject method = javaFindConstructor(env, clazz, methodArgs); - if(method == NULL) { + if (method == NULL) { std::string msg = methodNotFoundToString(env, clazz, className, true, info, argsStart, argsEnd); return Nan::ThrowError(javaExceptionToV8(self, env, msg)); } // run v8::Local callback = Nan::Null(); - NewInstanceBaton* baton = new NewInstanceBaton(self, clazz, method, methodArgs, callback); + NewInstanceBaton *baton = new NewInstanceBaton(self, clazz, method, methodArgs, callback); v8::Local result = baton->runSync(); delete baton; - if(result->IsNativeError()) { + if (result->IsNativeError()) { return Nan::ThrowError(result); } info.GetReturnValue().Set(result); @@ -470,13 +485,13 @@ NAN_METHOD(Java::newInstanceSync) { NAN_METHOD(Java::newProxy) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -484,7 +499,7 @@ NAN_METHOD(Java::newProxy) { ARGS_FRONT_STRING(interfaceName); ARGS_FRONT_OBJECT(functions); - DynamicProxyData* dynamicProxyData = new DynamicProxyData(); + DynamicProxyData *dynamicProxyData = new DynamicProxyData(); dynamicProxyData->markerStart = DYNAMIC_PROXY_DATA_MARKER_START; dynamicProxyData->markerEnd = DYNAMIC_PROXY_DATA_MARKER_END; dynamicProxyData->java = self; @@ -494,7 +509,7 @@ NAN_METHOD(Java::newProxy) { // find NodeDynamicProxyClass std::string className = "node.NodeDynamicProxyClass"; jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { std::ostringstream errStr; errStr << "Could not create class node/NodeDynamicProxyClass"; delete dynamicProxyData; @@ -504,10 +519,11 @@ NAN_METHOD(Java::newProxy) { // find constructor jclass objectClazz = env->FindClass("java/lang/Object"); jobjectArray methodArgs = env->NewObjectArray(2, objectClazz, NULL); - env->SetObjectArrayElement(methodArgs, 0, v8ToJava(env, Nan::New(s_nativeBindingLocation.c_str()).ToLocalChecked())); + env->SetObjectArrayElement(methodArgs, 0, + v8ToJava(env, Nan::New(s_nativeBindingLocation.c_str()).ToLocalChecked())); env->SetObjectArrayElement(methodArgs, 1, longToJavaLongObj(env, (jlong)dynamicProxyData)); jobject method = javaFindConstructor(env, clazz, methodArgs); - if(method == NULL) { + if (method == NULL) { std::ostringstream errStr; errStr << "Could not find constructor for class node/NodeDynamicProxyClass"; return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -515,20 +531,21 @@ NAN_METHOD(Java::newProxy) { // create the NodeDynamicProxyClass jclass constructorClazz = env->FindClass("java/lang/reflect/Constructor"); - jmethodID constructor_newInstance = env->GetMethodID(constructorClazz, "newInstance", "([Ljava/lang/Object;)Ljava/lang/Object;"); + jmethodID constructor_newInstance = + env->GetMethodID(constructorClazz, "newInstance", "([Ljava/lang/Object;)Ljava/lang/Object;"); - //printf("invoke: %s\n", javaMethodCallToString(env, m_method, constructor_newInstance, m_args).c_str()); + // printf("invoke: %s\n", javaMethodCallToString(env, m_method, constructor_newInstance, m_args).c_str()); // run constructor jobject dynamicProxy = env->CallObjectMethod(method, constructor_newInstance, methodArgs); - if(env->ExceptionCheck()) { + if (env->ExceptionCheck()) { std::ostringstream errStr; errStr << "Error creating class"; return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); } jclass dynamicInterface = javaFindClass(env, interfaceName); - if(dynamicInterface == NULL) { + if (dynamicInterface == NULL) { std::ostringstream errStr; errStr << "Could not find interface "; errStr << interfaceName; @@ -536,7 +553,7 @@ NAN_METHOD(Java::newProxy) { } jclass classClazz = env->FindClass("java/lang/Class"); jobjectArray classArray = env->NewObjectArray(1, classClazz, NULL); - if(classArray == NULL) { + if (classArray == NULL) { std::ostringstream errStr; errStr << "Could not create class array for Proxy"; return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -547,7 +564,7 @@ NAN_METHOD(Java::newProxy) { jobject classLoader = env->CallObjectMethod(dynamicInterface, class_getClassLoader); assertNoException(env); - if(classLoader == NULL) { + if (classLoader == NULL) { jclass objectClazz = env->FindClass("java/lang/Object"); jmethodID object_getClass = env->GetMethodID(objectClazz, "getClass", "()Ljava/lang/Class;"); jobject jobjClass = env->CallObjectMethod(dynamicProxy, object_getClass); @@ -555,7 +572,7 @@ NAN_METHOD(Java::newProxy) { classLoader = env->CallObjectMethod(jobjClass, class_getClassLoader); checkJavaException(env); } - if(classLoader == NULL) { + if (classLoader == NULL) { std::ostringstream errStr; errStr << "Could not get classloader for Proxy"; return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -563,9 +580,12 @@ NAN_METHOD(Java::newProxy) { // create proxy instance jclass proxyClass = env->FindClass("java/lang/reflect/Proxy"); - jmethodID proxy_newProxyInstance = env->GetStaticMethodID(proxyClass, "newProxyInstance", "(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;"); - jobject proxyInstance = env->CallStaticObjectMethod(proxyClass, proxy_newProxyInstance, classLoader, classArray, dynamicProxy); - if(env->ExceptionCheck()) { + jmethodID proxy_newProxyInstance = env->GetStaticMethodID( + proxyClass, "newProxyInstance", + "(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;"); + jobject proxyInstance = + env->CallStaticObjectMethod(proxyClass, proxy_newProxyInstance, classLoader, classArray, dynamicProxy); + if (env->ExceptionCheck()) { std::ostringstream errStr; errStr << "Error creating java.lang.reflect.Proxy"; return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -579,13 +599,13 @@ NAN_METHOD(Java::newProxy) { NAN_METHOD(Java::callStaticMethod) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -598,7 +618,7 @@ NAN_METHOD(Java::callStaticMethod) { // find class jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { EXCEPTION_CALL_CALLBACK(self, "Could not create class " << className.c_str()); info.GetReturnValue().SetUndefined(); return; @@ -607,7 +627,7 @@ NAN_METHOD(Java::callStaticMethod) { // find method jobjectArray methodArgs = v8ToJava(env, info, argsStart, argsEnd); jobject method = javaFindMethod(env, clazz, methodName, methodArgs); - if(method == NULL) { + if (method == NULL) { std::string msg = methodNotFoundToString(env, clazz, methodName, false, info, argsStart, argsEnd); EXCEPTION_CALL_CALLBACK(self, msg); info.GetReturnValue().SetUndefined(); @@ -615,21 +635,22 @@ NAN_METHOD(Java::callStaticMethod) { } // run - StaticMethodCallBaton* baton = new StaticMethodCallBaton(self, clazz, method, methodArgs, callback); + StaticMethodCallBaton *baton = new StaticMethodCallBaton(self, clazz, method, methodArgs, callback); baton->run(); - END_CALLBACK_FUNCTION("\"Static method '" << methodName << "' called without a callback did you mean to use the Sync version?\""); + END_CALLBACK_FUNCTION("\"Static method '" << methodName + << "' called without a callback did you mean to use the Sync version?\""); } NAN_METHOD(Java::callStaticMethodSync) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -641,7 +662,7 @@ NAN_METHOD(Java::callStaticMethodSync) { // find class jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { std::ostringstream errStr; errStr << "Could not create class " << className.c_str(); return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -650,17 +671,17 @@ NAN_METHOD(Java::callStaticMethodSync) { // find method jobjectArray methodArgs = v8ToJava(env, info, argsStart, argsEnd); jobject method = javaFindMethod(env, clazz, methodName, methodArgs); - if(method == NULL) { + if (method == NULL) { std::string msg = methodNotFoundToString(env, clazz, methodName, false, info, argsStart, argsEnd); return Nan::ThrowError(javaExceptionToV8(self, env, msg)); } // run v8::Local callback = Nan::Null(); - StaticMethodCallBaton* baton = new StaticMethodCallBaton(self, clazz, method, methodArgs, callback); + StaticMethodCallBaton *baton = new StaticMethodCallBaton(self, clazz, method, methodArgs, callback); v8::Local result = baton->runSync(); delete baton; - if(result->IsNativeError()) { + if (result->IsNativeError()) { Nan::ThrowError(result); return; } @@ -669,13 +690,13 @@ NAN_METHOD(Java::callStaticMethodSync) { NAN_METHOD(Java::callMethodSync) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -685,23 +706,23 @@ NAN_METHOD(Java::callMethodSync) { ARGS_FRONT_OBJECT(instanceObj); ARGS_FRONT_STRING(methodName); - JavaObject* javaObj = Nan::ObjectWrap::Unwrap(instanceObj); + JavaObject *javaObj = Nan::ObjectWrap::Unwrap(instanceObj); // find method jclass clazz = javaObj->getClass(); jobjectArray methodArgs = v8ToJava(env, info, argsStart, argsEnd); jobject method = javaFindMethod(env, clazz, methodName, methodArgs); - if(method == NULL) { + if (method == NULL) { std::string msg = methodNotFoundToString(env, clazz, methodName, false, info, argsStart, argsEnd); return Nan::ThrowError(javaExceptionToV8(self, env, msg)); } // run v8::Local callback = Nan::Null(); - InstanceMethodCallBaton* baton = new InstanceMethodCallBaton(self, javaObj, method, methodArgs, callback); + InstanceMethodCallBaton *baton = new InstanceMethodCallBaton(self, javaObj, method, methodArgs, callback); v8::Local result = baton->runSync(); delete baton; - if(result->IsNativeError()) { + if (result->IsNativeError()) { return Nan::ThrowError(result); } info.GetReturnValue().Set(result); @@ -709,13 +730,13 @@ NAN_METHOD(Java::callMethodSync) { NAN_METHOD(Java::callMethod) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -726,13 +747,13 @@ NAN_METHOD(Java::callMethod) { ARGS_FRONT_STRING(methodName); ARGS_BACK_CALLBACK(); - JavaObject* javaObj = Nan::ObjectWrap::Unwrap(instanceObj); + JavaObject *javaObj = Nan::ObjectWrap::Unwrap(instanceObj); // find method jclass clazz = javaObj->getClass(); jobjectArray methodArgs = v8ToJava(env, info, argsStart, argsEnd); jobject method = javaFindMethod(env, clazz, methodName, methodArgs); - if(method == NULL) { + if (method == NULL) { std::string msg = methodNotFoundToString(env, clazz, methodName, false, info, argsStart, argsEnd); EXCEPTION_CALL_CALLBACK(self, msg); info.GetReturnValue().SetUndefined(); @@ -740,21 +761,22 @@ NAN_METHOD(Java::callMethod) { } // run - InstanceMethodCallBaton* baton = new InstanceMethodCallBaton(self, javaObj, method, methodArgs, callback); + InstanceMethodCallBaton *baton = new InstanceMethodCallBaton(self, javaObj, method, methodArgs, callback); baton->run(); - END_CALLBACK_FUNCTION("\"method '" << methodName << "' called without a callback did you mean to use the Sync version?\""); + END_CALLBACK_FUNCTION("\"method '" << methodName + << "' called without a callback did you mean to use the Sync version?\""); } NAN_METHOD(Java::findClassSync) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -764,7 +786,7 @@ NAN_METHOD(Java::findClassSync) { // find class jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { std::ostringstream errStr; errStr << "Could not create class " << className.c_str(); return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -777,13 +799,13 @@ NAN_METHOD(Java::findClassSync) { NAN_METHOD(Java::newArray) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -792,18 +814,18 @@ NAN_METHOD(Java::newArray) { ARGS_FRONT_CLASSNAME(); // argument - array - if(info.Length() < argsStart+1 || !info[argsStart]->IsArray()) { + if (info.Length() < argsStart + 1 || !info[argsStart]->IsArray()) { std::ostringstream errStr; - errStr << "Argument " << (argsStart+1) << " must be an array"; + errStr << "Argument " << (argsStart + 1) << " must be an array"; return Nan::ThrowError(Nan::TypeError(errStr.str().c_str())); } v8::Local arrayObj = v8::Local::Cast(info[argsStart]); // find class and method jarray results; - if(strcmp(className.c_str(), "byte") == 0) { + if (strcmp(className.c_str(), "byte") == 0) { results = env->NewByteArray(arrayObj->Length()); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < arrayObj->Length(); i++) { v8::Local item = arrayObj->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); jobject val = v8ToJava(env, item); jclass byteClazz = env->FindClass("java/lang/Byte"); @@ -815,9 +837,9 @@ NAN_METHOD(Java::newArray) { } } - else if(strcmp(className.c_str(), "char") == 0) { + else if (strcmp(className.c_str(), "char") == 0) { results = env->NewCharArray(arrayObj->Length()); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < arrayObj->Length(); i++) { v8::Local item = arrayObj->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); jobject val = v8ToJava(env, item); jclass stringClazz = env->FindClass("java/lang/String"); @@ -829,9 +851,9 @@ NAN_METHOD(Java::newArray) { } } - else if(strcmp(className.c_str(), "short") == 0) { + else if (strcmp(className.c_str(), "short") == 0) { results = env->NewShortArray(arrayObj->Length()); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < arrayObj->Length(); i++) { v8::Local item = arrayObj->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); jobject val = v8ToJava(env, item); jclass shortClazz = env->FindClass("java/lang/Short"); @@ -843,9 +865,9 @@ NAN_METHOD(Java::newArray) { } } - else if(strcmp(className.c_str(), "double") == 0) { + else if (strcmp(className.c_str(), "double") == 0) { results = env->NewDoubleArray(arrayObj->Length()); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < arrayObj->Length(); i++) { v8::Local item = arrayObj->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); jobject val = v8ToJava(env, item); jclass doubleClazz = env->FindClass("java/lang/Double"); @@ -857,9 +879,9 @@ NAN_METHOD(Java::newArray) { } } - else if(strcmp(className.c_str(), "int") == 0) { + else if (strcmp(className.c_str(), "int") == 0) { results = env->NewIntArray(arrayObj->Length()); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < arrayObj->Length(); i++) { v8::Local item = arrayObj->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); jobject val = v8ToJava(env, item); jclass integerClazz = env->FindClass("java/lang/Integer"); @@ -871,9 +893,9 @@ NAN_METHOD(Java::newArray) { } } - else if(strcmp(className.c_str(), "float") == 0) { + else if (strcmp(className.c_str(), "float") == 0) { results = env->NewFloatArray(arrayObj->Length()); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < arrayObj->Length(); i++) { v8::Local item = arrayObj->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); jobject val = v8ToJava(env, item); jclass floatClazz = env->FindClass("java/lang/Float"); @@ -885,9 +907,9 @@ NAN_METHOD(Java::newArray) { } } - else if(strcmp(className.c_str(), "boolean") == 0) { + else if (strcmp(className.c_str(), "boolean") == 0) { results = env->NewBooleanArray(arrayObj->Length()); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < arrayObj->Length(); i++) { v8::Local item = arrayObj->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); jobject val = v8ToJava(env, item); jclass booleanClazz = env->FindClass("java/lang/Boolean"); @@ -899,10 +921,9 @@ NAN_METHOD(Java::newArray) { } } - else - { + else { jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { std::ostringstream errStr; errStr << "Could not create class " << className.c_str(); return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -911,11 +932,11 @@ NAN_METHOD(Java::newArray) { // create array results = env->NewObjectArray(arrayObj->Length(), clazz, NULL); - for(uint32_t i=0; iLength(); i++) { + for (uint32_t i = 0; i < arrayObj->Length(); i++) { v8::Local item = arrayObj->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); jobject val = v8ToJava(env, item); env->SetObjectArrayElement((jobjectArray)results, i, val); - if(env->ExceptionOccurred()) { + if (env->ExceptionOccurred()) { std::ostringstream errStr; Nan::Utf8String valStr(item); errStr << "Could not add item \"" << *valStr << "\" to array."; @@ -929,21 +950,21 @@ NAN_METHOD(Java::newArray) { NAN_METHOD(Java::newByte) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); - if(info.Length() != 1) { + if (info.Length() != 1) { return Nan::ThrowError(Nan::TypeError("newByte only takes 1 argument")); } // argument - value - if(!info[0]->IsNumber()) { + if (!info[0]->IsNumber()) { return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number")); } @@ -959,21 +980,21 @@ NAN_METHOD(Java::newByte) { NAN_METHOD(Java::newShort) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); - if(info.Length() != 1) { + if (info.Length() != 1) { return Nan::ThrowError(Nan::TypeError("newShort only takes 1 argument")); } // argument - value - if(!info[0]->IsNumber()) { + if (!info[0]->IsNumber()) { return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number")); } @@ -988,21 +1009,21 @@ NAN_METHOD(Java::newShort) { NAN_METHOD(Java::newLong) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); - if(info.Length() != 1) { + if (info.Length() != 1) { return Nan::ThrowError(Nan::TypeError("newLong only takes 1 argument")); } // argument - value - if(!info[0]->IsNumber()) { + if (!info[0]->IsNumber()) { return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number")); } @@ -1017,26 +1038,26 @@ NAN_METHOD(Java::newLong) { NAN_METHOD(Java::newChar) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); - if(info.Length() != 1) { + if (info.Length() != 1) { return Nan::ThrowError(Nan::TypeError("newChar only takes 1 argument")); } // argument - value jchar charVal; - if(info[0]->IsNumber()) { + if (info[0]->IsNumber()) { charVal = (jchar)Nan::To(info[0]).FromJust(); - } else if(info[0]->IsString()) { + } else if (info[0]->IsString()) { v8::Local val = info[0]->ToString(Nan::GetCurrentContext()).ToLocalChecked(); - if(val->Length() != 1) { + if (val->Length() != 1) { return Nan::ThrowError(Nan::TypeError("Argument 1 must be a string of 1 character.")); } std::string strVal = std::string(*Nan::Utf8String(val)); @@ -1054,18 +1075,18 @@ NAN_METHOD(Java::newChar) { NAN_METHOD(Java::newFloat) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); - if(info.Length() != 1) { + if (info.Length() != 1) { return Nan::ThrowError(Nan::TypeError("newFloat only takes 1 argument")); - } else if(!info[0]->IsNumber()) { + } else if (!info[0]->IsNumber()) { return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number")); } jfloat val = (jfloat)Nan::To(info[0]).FromJust(); @@ -1079,18 +1100,18 @@ NAN_METHOD(Java::newFloat) { NAN_METHOD(Java::newDouble) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); - if(info.Length() != 1) { + if (info.Length() != 1) { return Nan::ThrowError(Nan::TypeError("newDouble only takes 1 argument")); - } else if(!info[0]->IsNumber()) { + } else if (!info[0]->IsNumber()) { return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number")); } @@ -1105,13 +1126,13 @@ NAN_METHOD(Java::newDouble) { NAN_METHOD(Java::getStaticFieldValue) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -1122,7 +1143,7 @@ NAN_METHOD(Java::getStaticFieldValue) { // find the class jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { std::ostringstream errStr; errStr << "Could not create class " << className.c_str(); return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -1130,7 +1151,7 @@ NAN_METHOD(Java::getStaticFieldValue) { // get the field jobject field = javaFindField(env, clazz, fieldName); - if(field == NULL) { + if (field == NULL) { std::ostringstream errStr; errStr << "Could not find field \"" << fieldName.c_str() << "\" on class \"" << className.c_str() << "\""; return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -1141,7 +1162,7 @@ NAN_METHOD(Java::getStaticFieldValue) { // get field value jobject val = env->CallObjectMethod(field, field_get, NULL); - if(env->ExceptionOccurred()) { + if (env->ExceptionOccurred()) { std::ostringstream errStr; errStr << "Could not get field " << fieldName.c_str() << " on class " << className.c_str(); return Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -1152,13 +1173,13 @@ NAN_METHOD(Java::getStaticFieldValue) { NAN_METHOD(Java::setStaticFieldValue) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -1168,9 +1189,9 @@ NAN_METHOD(Java::setStaticFieldValue) { ARGS_FRONT_STRING(fieldName); // argument - new value - if(info.Length() < argsStart+1) { + if (info.Length() < argsStart + 1) { std::ostringstream errStr; - errStr << "setStaticFieldValue requires " << (argsStart+1) << " arguments"; + errStr << "setStaticFieldValue requires " << (argsStart + 1) << " arguments"; Nan::ThrowError(Nan::TypeError(errStr.str().c_str())); return; } @@ -1179,7 +1200,7 @@ NAN_METHOD(Java::setStaticFieldValue) { // find the class jclass clazz = javaFindClass(env, className); - if(clazz == NULL) { + if (clazz == NULL) { std::ostringstream errStr; errStr << "Could not create class " << className.c_str(); Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -1188,7 +1209,7 @@ NAN_METHOD(Java::setStaticFieldValue) { // get the field jobject field = javaFindField(env, clazz, fieldName); - if(field == NULL) { + if (field == NULL) { std::ostringstream errStr; errStr << "Could not find field \"" << fieldName.c_str() << "\" on class \"" << className.c_str() << "\""; Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -1198,11 +1219,11 @@ NAN_METHOD(Java::setStaticFieldValue) { jclass fieldClazz = env->FindClass("java/lang/reflect/Field"); jmethodID field_set = env->GetMethodID(fieldClazz, "set", "(Ljava/lang/Object;Ljava/lang/Object;)V"); - //printf("newValue: %s\n", javaObjectToString(env, newValue).c_str()); + // printf("newValue: %s\n", javaObjectToString(env, newValue).c_str()); // set field value env->CallObjectMethod(field, field_set, NULL, newValue); - if(env->ExceptionOccurred()) { + if (env->ExceptionOccurred()) { std::ostringstream errStr; errStr << "Could not set field " << fieldName.c_str() << " on class " << className.c_str(); Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -1214,13 +1235,13 @@ NAN_METHOD(Java::setStaticFieldValue) { NAN_METHOD(Java::instanceOf) { Nan::HandleScope scope; - Java* self = Nan::ObjectWrap::Unwrap(info.This()); + Java *self = Nan::ObjectWrap::Unwrap(info.This()); v8::Local ensureJvmResults = self->ensureJvm(); - if(!ensureJvmResults->IsNull()) { + if (!ensureJvmResults->IsNull()) { info.GetReturnValue().Set(ensureJvmResults); return; } - JNIEnv* env = self->getJavaEnv(); + JNIEnv *env = self->getJavaEnv(); JavaScope javaScope(env); int argsStart = 0; @@ -1235,7 +1256,7 @@ NAN_METHOD(Java::instanceOf) { } jclass clazz = javaFindClass(env, className); - if(!clazz) { + if (!clazz) { std::ostringstream errStr; errStr << "Could not find class " << className.c_str(); Nan::ThrowError(javaExceptionToV8(self, env, errStr.str())); @@ -1252,25 +1273,24 @@ NAN_METHOD(Java::stop) { } } -template -std::string to_string(T value) { +template std::string to_string(T value) { std::ostringstream os; os << value; return os.str(); } void EIO_CallJs(DynamicProxyJsCallData *callData) { - DynamicProxyData* dynamicProxyData = callData->dynamicProxyData; + DynamicProxyData *dynamicProxyData = callData->dynamicProxyData; assert(callData->done == 0); - if(!dynamicProxyDataVerify(dynamicProxyData)) { + if (!dynamicProxyDataVerify(dynamicProxyData)) { return; } callData->result = NULL; - JNIEnv* env; - int ret = dynamicProxyData->java->getJvm()->GetEnv((void**)&env, JNI_BEST_VERSION); + JNIEnv *env; + int ret = dynamicProxyData->java->getJvm()->GetEnv((void **)&env, JNI_BEST_VERSION); if (ret != JNI_OK) { callData->throwableClass = "java/lang/IllegalStateException"; callData->throwableMessage = "Could not retrieve JNIEnv: jvm->GetEnv returned " + to_string(ret); @@ -1279,23 +1299,26 @@ void EIO_CallJs(DynamicProxyJsCallData *callData) { } Nan::HandleScope scope; - v8::Array* v8Args; + v8::Array *v8Args; v8::Local fn; - v8::Local* argv; + v8::Local *argv; int argc; int i; v8::Local v8Result; jobject javaResult; v8::Local dynamicProxyDataFunctions = Nan::New(dynamicProxyData->functions); - v8::Local fnObj = dynamicProxyDataFunctions->Get(Nan::GetCurrentContext(), Nan::New(callData->methodName.c_str()).ToLocalChecked()).ToLocalChecked(); - if(fnObj->IsUndefined() || fnObj->IsNull()) { + v8::Local fnObj = + dynamicProxyDataFunctions + ->Get(Nan::GetCurrentContext(), Nan::New(callData->methodName.c_str()).ToLocalChecked()) + .ToLocalChecked(); + if (fnObj->IsUndefined() || fnObj->IsNull()) { callData->throwableClass = "java/lang/NoSuchMethodError"; callData->throwableMessage = "Could not find js function " + callData->methodName; callData->done = DYNAMIC_PROXY_JS_ERROR; return; } - if(!fnObj->IsFunction()) { + if (!fnObj->IsFunction()) { callData->throwableClass = "java/lang/IllegalStateException"; callData->throwableMessage = callData->methodName + " is not a function"; callData->done = DYNAMIC_PROXY_JS_ERROR; @@ -1304,14 +1327,14 @@ void EIO_CallJs(DynamicProxyJsCallData *callData) { fn = fnObj.As(); - if(callData->args) { + if (callData->args) { v8Args = v8::Array::Cast(*javaArrayToV8(dynamicProxyData->java, env, callData->args)); argc = v8Args->Length(); } else { argc = 0; } argv = new v8::Local[argc]; - for(i=0; iGet(Nan::GetCurrentContext(), i).ToLocalChecked(); } @@ -1328,12 +1351,12 @@ void EIO_CallJs(DynamicProxyJsCallData *callData) { return; } - if(!dynamicProxyDataVerify(dynamicProxyData)) { + if (!dynamicProxyDataVerify(dynamicProxyData)) { return; } javaResult = v8ToJava(env, v8Result); - if(javaResult == NULL) { + if (javaResult == NULL) { callData->result = NULL; } else { callData->result = env->NewGlobalRef(javaResult); @@ -1342,7 +1365,7 @@ void EIO_CallJs(DynamicProxyJsCallData *callData) { callData->done = true; } -void throwNewThrowable(JNIEnv* env, const char * excClassName, std::string msg) { +void throwNewThrowable(JNIEnv *env, const char *excClassName, std::string msg) { jclass newExcCls = env->FindClass(excClassName); jthrowable throwable = env->ExceptionOccurred(); if (throwable != NULL) { @@ -1351,12 +1374,13 @@ void throwNewThrowable(JNIEnv* env, const char * excClassName, std::string msg) env->ThrowNew(newExcCls, msg.c_str()); } -JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jobject src, jlong ptr, jobject method, jobjectArray args) { +JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jobject src, jlong ptr, jobject method, + jobjectArray args) { threadId myThreadId = my_getThreadId(); bool hasArgsGlobalRef = false; - DynamicProxyData* dynamicProxyData = (DynamicProxyData*)ptr; + DynamicProxyData *dynamicProxyData = (DynamicProxyData *)ptr; // args needs to be global, you can't send env across thread boundaries DynamicProxyJsCallData callData; @@ -1372,12 +1396,12 @@ JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jo callData.methodName = javaObjectToString(env, env->CallObjectMethod(method, method_getName)); assertNoException(env); - if(v8ThreadIdEquals(myThreadId, v8ThreadId)) { + if (v8ThreadIdEquals(myThreadId, v8ThreadId)) { EIO_CallJs(&callData); } else { if (args) { // if args is not null and we have to kick this across the thread boundary, make it a global ref - callData.args = (jobjectArray) env->NewGlobalRef(args); + callData.args = (jobjectArray)env->NewGlobalRef(args); hasArgsGlobalRef = true; } @@ -1386,15 +1410,15 @@ JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jo uv_mutex_unlock(&uvMutex_dynamicProxyJsCall); uv_async_send(&uvAsync_dynamicProxyJsCall); - while(!callData.done) { + while (!callData.done) { my_sleep(100); } } - if(!dynamicProxyDataVerify(dynamicProxyData)) { + if (!dynamicProxyDataVerify(dynamicProxyData)) { throwNewThrowable(env, "java/lang/IllegalStateException", "dynamicProxyData was corrupted"); } - if(hasArgsGlobalRef) { + if (hasArgsGlobalRef) { env->DeleteGlobalRef(callData.args); } @@ -1403,7 +1427,7 @@ JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jo } jobject result = NULL; - if(callData.result) { + if (callData.result) { // need to retain a local ref so that we can return it, otherwise the returned object gets corrupted result = env->NewLocalRef(callData.result); env->DeleteGlobalRef(callData.result); @@ -1412,6 +1436,6 @@ JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jo } JNIEXPORT void JNICALL Java_node_NodeDynamicProxyClass_unref(JNIEnv *env, jobject src, jlong ptr) { - DynamicProxyData* dynamicProxyData = (DynamicProxyData*)ptr; + DynamicProxyData *dynamicProxyData = (DynamicProxyData *)ptr; unref(dynamicProxyData); } diff --git a/src/java.h b/src/java.h index f3a0bc9..83c5cfc 100644 --- a/src/java.h +++ b/src/java.h @@ -2,11 +2,11 @@ #ifndef _node_java_h_ #define _node_java_h_ -#include -#include #include -#include #include +#include +#include +#include #ifdef JNI_VERSION_1_8 #define JNI_BEST_VERSION JNI_VERSION_1_8 @@ -17,8 +17,10 @@ class Java : public Nan::ObjectWrap { public: static void Init(v8::Local target); - JavaVM* getJvm() { return m_jvm; } - JNIEnv* getJavaEnv() { return m_env; } // can only be used safely by the main thread as this is the thread it belongs to + JavaVM *getJvm() { return m_jvm; } + JNIEnv *getJavaEnv() { + return m_env; + } // can only be used safely by the main thread as this is the thread it belongs to jobject getClassLoader() { return m_classLoader; } public: @@ -32,9 +34,9 @@ class Java : public Nan::ObjectWrap { private: Java(); ~Java(); - v8::Local createJVM(JavaVM** jvm, JNIEnv** env); - void destroyJVM(JavaVM** jvm, JNIEnv** env); - void configureAsync(v8::Local& asyncOptions); + v8::Local createJVM(JavaVM **jvm, JNIEnv **env); + void destroyJVM(JavaVM **jvm, JNIEnv **env); + void configureAsync(v8::Local &asyncOptions); static NAN_METHOD(New); static NAN_METHOD(getClassLoader); @@ -62,8 +64,8 @@ class Java : public Nan::ObjectWrap { v8::Local ensureJvm(); static Nan::Persistent s_ct; - JavaVM* m_jvm; - JNIEnv* m_env; // can only be used safely by the main thread as this is the thread it belongs to + JavaVM *m_jvm; + JNIEnv *m_env; // can only be used safely by the main thread as this is the thread it belongs to jobject m_classLoader; std::string m_classPath; static std::string s_nativeBindingLocation; diff --git a/src/javaObject.cpp b/src/javaObject.cpp index 338a86f..d938426 100644 --- a/src/javaObject.cpp +++ b/src/javaObject.cpp @@ -2,13 +2,12 @@ #include "java.h" #include "javaScope.h" #include "utils.h" -#include #include +#include -/*static*/ std::map*> JavaObject::sFunctionTemplates; +/*static*/ std::map *> JavaObject::sFunctionTemplates; -/*static*/ void JavaObject::Init(v8::Local target) { -} +/*static*/ void JavaObject::Init(v8::Local target) {} /*static*/ v8::Local JavaObject::New(Java *java, jobject obj) { Nan::EscapableHandleScope scope; @@ -28,18 +27,24 @@ className = "nodeJava_" + className; v8::Local promisify; - if(java->DoPromise()) { - v8::Local asyncOptions = java->handle()->Get(Nan::GetCurrentContext(), Nan::New("asyncOptions").ToLocalChecked()).ToLocalChecked().As(); - v8::Local promisifyValue = asyncOptions->Get(Nan::GetCurrentContext(), Nan::New("promisify").ToLocalChecked()).ToLocalChecked(); + if (java->DoPromise()) { + v8::Local asyncOptions = + java->handle() + ->Get(Nan::GetCurrentContext(), Nan::New("asyncOptions").ToLocalChecked()) + .ToLocalChecked() + .As(); + v8::Local promisifyValue = + asyncOptions->Get(Nan::GetCurrentContext(), Nan::New("promisify").ToLocalChecked()) + .ToLocalChecked(); promisify = promisifyValue.As(); } v8::Local funcTemplate; - if(sFunctionTemplates.find(className) != sFunctionTemplates.end()) { - //printf("existing className: %s\n", className.c_str()); + if (sFunctionTemplates.find(className) != sFunctionTemplates.end()) { + // printf("existing className: %s\n", className.c_str()); funcTemplate = Nan::New(*sFunctionTemplates[className]); } else { - //printf("create className: %s\n", className.c_str()); + // printf("create className: %s\n", className.c_str()); funcTemplate = Nan::New(); funcTemplate->InstanceTemplate()->SetInternalFieldCount(1); @@ -50,7 +55,7 @@ javaReflectionGetMethods(env, objClazz, &methods, false); jclass methodClazz = env->FindClass("java/lang/reflect/Method"); jmethodID method_getName = env->GetMethodID(methodClazz, "getName", "()Ljava/lang/String;"); - for(std::list::iterator it = methods.begin(); it != methods.end(); ++it) { + for (std::list::iterator it = methods.begin(); it != methods.end(); ++it) { jstring methodNameJava = (jstring)env->CallObjectMethod(*it, method_getName); assertNoException(env); std::string methodNameStr = javaToString(env, methodNameJava); @@ -58,27 +63,29 @@ v8::Local baseMethodName = Nan::New(methodNameStr.c_str()).ToLocalChecked(); std::string methodNameAsyncStr = methodNameStr; - const char* methodNameAsync = methodNameAsyncStr.append(java->AsyncSuffix()).c_str(); + const char *methodNameAsync = methodNameAsyncStr.append(java->AsyncSuffix()).c_str(); v8::Local methodCallTemplate = Nan::New(methodCall, baseMethodName); Nan::SetPrototypeTemplate(funcTemplate, methodNameAsync, methodCallTemplate); std::string methodNameSyncStr = methodNameStr; - const char* methodNameSync = methodNameSyncStr.append(java->SyncSuffix()).c_str(); - v8::Local methodCallSyncTemplate = Nan::New(methodCallSync, baseMethodName); + const char *methodNameSync = methodNameSyncStr.append(java->SyncSuffix()).c_str(); + v8::Local methodCallSyncTemplate = + Nan::New(methodCallSync, baseMethodName); Nan::SetPrototypeTemplate(funcTemplate, methodNameSync, methodCallSyncTemplate); if (java->DoPromise()) { v8::Local recv = Nan::New(); - v8::Local argv[] = { methodCallTemplate->GetFunction(Nan::GetCurrentContext()).ToLocalChecked() }; + v8::Local argv[] = {methodCallTemplate->GetFunction(Nan::GetCurrentContext()).ToLocalChecked()}; v8::Local result = Nan::Call(promisify, recv, 1, argv).FromMaybe(v8::Local()); if (!result->IsFunction()) { fprintf(stderr, "Promisified result is not a function -- asyncOptions.promisify must return a function.\n"); assert(result->IsFunction()); } v8::Local promFunction = result.As(); - v8::Local promFunctionTemplate = Nan::New(methodCallPromise, promFunction); + v8::Local promFunctionTemplate = + Nan::New(methodCallPromise, promFunction); std::string methodNamePromiseStr = methodNameStr; - const char* methodNamePromise = methodNamePromiseStr.append(java->PromiseSuffix()).c_str(); + const char *methodNamePromise = methodNamePromiseStr.append(java->PromiseSuffix()).c_str(); Nan::SetPrototypeTemplate(funcTemplate, methodNamePromise, promFunctionTemplate); } } @@ -88,7 +95,7 @@ javaReflectionGetFields(env, objClazz, &fields); jclass fieldClazz = env->FindClass("java/lang/reflect/Field"); jmethodID field_getName = env->GetMethodID(fieldClazz, "getName", "()Ljava/lang/String;"); - for(std::list::iterator it = fields.begin(); it != fields.end(); ++it) { + for (std::list::iterator it = fields.begin(); it != fields.end(); ++it) { jstring fieldNameJava = (jstring)env->CallObjectMethod(*it, field_getName); checkJavaException(env); std::string fieldNameStr = javaToString(env, fieldNameJava); @@ -100,21 +107,22 @@ // copy array methods to template jmethodID class_isArray = env->GetMethodID(classClazz, "isArray", "()Z"); jboolean isArray = env->CallBooleanMethod(objClazz, class_isArray); - if(isArray) { + if (isArray) { v8::Local fieldName = Nan::New("length").ToLocalChecked(); Nan::SetAccessor(funcTemplate->InstanceTemplate(), fieldName, fieldGetter, NULL); Nan::SetIndexedPropertyHandler(funcTemplate->InstanceTemplate(), indexGetter); } - Nan::Persistent* persistentFuncTemplate = new Nan::Persistent(); + Nan::Persistent *persistentFuncTemplate = new Nan::Persistent(); persistentFuncTemplate->Reset(funcTemplate); sFunctionTemplates[className] = persistentFuncTemplate; } v8::Local ctor = Nan::GetFunction(funcTemplate).ToLocalChecked(); v8::Local javaObjectObj = Nan::NewInstance(ctor).ToLocalChecked(); - SetHiddenValue(javaObjectObj, Nan::New(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked(), Nan::New(true)); + SetHiddenValue(javaObjectObj, Nan::New(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked(), + Nan::New(true)); JavaObject *self = new JavaObject(java, obj); self->Wrap(javaObjectObj); @@ -136,7 +144,7 @@ JavaObject::~JavaObject() { NAN_METHOD(JavaObject::methodCall) { Nan::HandleScope scope; - JavaObject* self = Nan::ObjectWrap::Unwrap(info.This()); + JavaObject *self = Nan::ObjectWrap::Unwrap(info.This()); JNIEnv *env = self->m_java->getJavaEnv(); JavaScope javaScope(env); @@ -149,14 +157,14 @@ NAN_METHOD(JavaObject::methodCall) { // arguments ARGS_BACK_CALLBACK(); - if(!callbackProvided && methodNameStr == "toString") { + if (!callbackProvided && methodNameStr == "toString") { return methodCallSync(info); } jobjectArray methodArgs = v8ToJava(env, info, argsStart, argsEnd); jobject method = javaFindMethod(env, self->m_class, methodNameStr, methodArgs); - if(method == NULL) { + if (method == NULL) { std::string msg = methodNotFoundToString(env, self->m_class, methodNameStr, false, info, argsStart, argsEnd); EXCEPTION_CALL_CALLBACK(self->m_java, msg); info.GetReturnValue().SetUndefined(); @@ -164,15 +172,16 @@ NAN_METHOD(JavaObject::methodCall) { } // run - InstanceMethodCallBaton* baton = new InstanceMethodCallBaton(self->m_java, self, method, methodArgs, callback); + InstanceMethodCallBaton *baton = new InstanceMethodCallBaton(self->m_java, self, method, methodArgs, callback); baton->run(); - END_CALLBACK_FUNCTION("\"Method '" << methodNameStr << "' called without a callback did you mean to use the Sync version?\""); + END_CALLBACK_FUNCTION("\"Method '" << methodNameStr + << "' called without a callback did you mean to use the Sync version?\""); } NAN_METHOD(JavaObject::methodCallSync) { Nan::HandleScope scope; - JavaObject* self = Nan::ObjectWrap::Unwrap(info.This()); + JavaObject *self = Nan::ObjectWrap::Unwrap(info.This()); JNIEnv *env = self->m_java->getJavaEnv(); JavaScope javaScope(env); @@ -185,7 +194,7 @@ NAN_METHOD(JavaObject::methodCallSync) { jobjectArray methodArgs = v8ToJava(env, info, argsStart, argsEnd); jobject method = javaFindMethod(env, self->m_class, methodNameStr, methodArgs); - if(method == NULL) { + if (method == NULL) { std::string msg = methodNotFoundToString(env, self->m_class, methodNameStr, false, info, argsStart, argsEnd); v8::Local ex = javaExceptionToV8(self->m_java, env, msg); Nan::ThrowError(ex); @@ -194,11 +203,11 @@ NAN_METHOD(JavaObject::methodCallSync) { // run v8::Local callback = Nan::Undefined(); - InstanceMethodCallBaton* baton = new InstanceMethodCallBaton(self->m_java, self, method, methodArgs, callback); + InstanceMethodCallBaton *baton = new InstanceMethodCallBaton(self->m_java, self, method, methodArgs, callback); v8::Local result = baton->runSync(); delete baton; - if(result->IsNativeError()) { + if (result->IsNativeError()) { Nan::ThrowError(result); return; } @@ -209,15 +218,15 @@ NAN_METHOD(JavaObject::methodCallSync) { NAN_METHOD(JavaObject::methodCallPromise) { Nan::HandleScope scope; v8::Local fn = info.Data().As(); - v8::Local* argv = new v8::Local[info.Length()]; - for (int i = 0 ; i < info.Length(); i++) { + v8::Local *argv = new v8::Local[info.Length()]; + for (int i = 0; i < info.Length(); i++) { argv[i] = info[i]; } - + v8::MaybeLocal result = Nan::Call(fn, info.This(), info.Length(), argv); - + delete[] argv; - + if (!result.IsEmpty()) { info.GetReturnValue().Set(result.ToLocalChecked()); } @@ -225,19 +234,19 @@ NAN_METHOD(JavaObject::methodCallPromise) { NAN_GETTER(JavaObject::fieldGetter) { Nan::HandleScope scope; - JavaObject* self = Nan::ObjectWrap::Unwrap(info.This()); + JavaObject *self = Nan::ObjectWrap::Unwrap(info.This()); JNIEnv *env = self->m_java->getJavaEnv(); JavaScope javaScope(env); Nan::Utf8String propertyCStr(property); std::string propertyStr = *propertyCStr; jobject field = javaFindField(env, self->m_class, propertyStr); - if(field == NULL) { - if(propertyStr == "length") { + if (field == NULL) { + if (propertyStr == "length") { jclass classClazz = env->FindClass("java/lang/Class"); jmethodID class_isArray = env->GetMethodID(classClazz, "isArray", "()Z"); jboolean isArray = env->CallBooleanMethod(self->m_class, class_isArray); - if(isArray) { + if (isArray) { jclass arrayClass = env->FindClass("java/lang/reflect/Array"); jmethodID array_getLength = env->GetStaticMethodID(arrayClass, "getLength", "(Ljava/lang/Object;)I"); jint arrayLength = env->CallStaticIntMethod(arrayClass, array_getLength, self->m_obj); @@ -259,7 +268,7 @@ NAN_GETTER(JavaObject::fieldGetter) { // get field value jobject val = env->CallObjectMethod(field, field_get, self->m_obj); - if(env->ExceptionOccurred()) { + if (env->ExceptionOccurred()) { std::ostringstream errStr; errStr << "Could not get field " << propertyStr; v8::Local ex = javaExceptionToV8(self->m_java, env, errStr.str()); @@ -274,7 +283,7 @@ NAN_GETTER(JavaObject::fieldGetter) { NAN_SETTER(JavaObject::fieldSetter) { Nan::HandleScope scope; - JavaObject* self = Nan::ObjectWrap::Unwrap(info.This()); + JavaObject *self = Nan::ObjectWrap::Unwrap(info.This()); JNIEnv *env = self->m_java->getJavaEnv(); JavaScope javaScope(env); @@ -283,7 +292,7 @@ NAN_SETTER(JavaObject::fieldSetter) { Nan::Utf8String propertyCStr(property); std::string propertyStr = *propertyCStr; jobject field = javaFindField(env, self->m_class, propertyStr); - if(field == NULL) { + if (field == NULL) { std::ostringstream errStr; errStr << "Could not find field \"" << propertyStr << "\" for set"; v8::Local error = javaExceptionToV8(self->m_java, env, errStr.str()); @@ -294,11 +303,11 @@ NAN_SETTER(JavaObject::fieldSetter) { jclass fieldClazz = env->FindClass("java/lang/reflect/Field"); jmethodID field_set = env->GetMethodID(fieldClazz, "set", "(Ljava/lang/Object;Ljava/lang/Object;)V"); - //printf("newValue: %s\n", javaObjectToString(env, newValue).c_str()); + // printf("newValue: %s\n", javaObjectToString(env, newValue).c_str()); // set field value env->CallObjectMethod(field, field_set, self->m_obj, newValue); - if(env->ExceptionOccurred()) { + if (env->ExceptionOccurred()) { std::ostringstream errStr; errStr << "Could not set field " << propertyStr; v8::Local error = javaExceptionToV8(self->m_java, env, errStr.str()); @@ -309,7 +318,7 @@ NAN_SETTER(JavaObject::fieldSetter) { NAN_INDEX_GETTER(JavaObject::indexGetter) { Nan::HandleScope scope; - JavaObject* self = Nan::ObjectWrap::Unwrap(info.This()); + JavaObject *self = Nan::ObjectWrap::Unwrap(info.This()); JNIEnv *env = self->m_java->getJavaEnv(); JavaScope javaScope(env); @@ -344,30 +353,31 @@ NAN_INDEX_GETTER(JavaObject::indexGetter) { Nan::SetAccessor(t->InstanceTemplate(), fieldName, invocationHandlerGetter); } -v8::Local JavaProxyObject::New(Java *java, jobject obj, DynamicProxyData* dynamicProxyData) { +v8::Local JavaProxyObject::New(Java *java, jobject obj, DynamicProxyData *dynamicProxyData) { Nan::EscapableHandleScope scope; v8::Local ctor = Nan::New(s_proxyCt)->GetFunction(Nan::GetCurrentContext()).ToLocalChecked(); v8::Local javaObjectObj = Nan::NewInstance(ctor).ToLocalChecked(); - SetHiddenValue(javaObjectObj, Nan::New(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked(), Nan::New(true)); + SetHiddenValue(javaObjectObj, Nan::New(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked(), + Nan::New(true)); JavaProxyObject *self = new JavaProxyObject(java, obj, dynamicProxyData); self->Wrap(javaObjectObj); return scope.Escape(javaObjectObj); } -JavaProxyObject::JavaProxyObject(Java *java, jobject obj, DynamicProxyData* dynamicProxyData) : JavaObject(java, obj) { +JavaProxyObject::JavaProxyObject(Java *java, jobject obj, DynamicProxyData *dynamicProxyData) : JavaObject(java, obj) { m_dynamicProxyData = dynamicProxyData; } JavaProxyObject::~JavaProxyObject() { - if(dynamicProxyDataVerify(m_dynamicProxyData)) { + if (dynamicProxyDataVerify(m_dynamicProxyData)) { unref(m_dynamicProxyData); } } NAN_METHOD(JavaProxyObject::doUnref) { - JavaProxyObject* self = Nan::ObjectWrap::Unwrap(info.This()); + JavaProxyObject *self = Nan::ObjectWrap::Unwrap(info.This()); if (dynamicProxyDataVerify(self->m_dynamicProxyData)) { unref(self->m_dynamicProxyData); } @@ -375,12 +385,12 @@ NAN_METHOD(JavaProxyObject::doUnref) { } NAN_GETTER(JavaProxyObject::invocationHandlerGetter) { - Nan::HandleScope scope; - - JavaProxyObject* self = Nan::ObjectWrap::Unwrap(info.This()); - if (!dynamicProxyDataVerify(self->m_dynamicProxyData)) { - Nan::ThrowError("dynamicProxyData has been destroyed or corrupted"); - return; - } - info.GetReturnValue().Set(Nan::New(self->m_dynamicProxyData->functions)); + Nan::HandleScope scope; + + JavaProxyObject *self = Nan::ObjectWrap::Unwrap(info.This()); + if (!dynamicProxyDataVerify(self->m_dynamicProxyData)) { + Nan::ThrowError("dynamicProxyData has been destroyed or corrupted"); + return; + } + info.GetReturnValue().Set(Nan::New(self->m_dynamicProxyData->functions)); } diff --git a/src/javaObject.h b/src/javaObject.h index 14b5dfd..b3dc652 100644 --- a/src/javaObject.h +++ b/src/javaObject.h @@ -2,20 +2,20 @@ #ifndef _javaobject_h_ #define _javaobject_h_ -#include -#include +#include "methodCallBaton.h" #include #include #include -#include "methodCallBaton.h" +#include +#include class Java; class JavaObject : public Nan::ObjectWrap { public: static void Init(v8::Local target); - static v8::Local New(Java* java, jobject obj); - static v8::Local NewProxy(Java* java, jobject obj, DynamicProxyData* dynamicProxyData); + static v8::Local New(Java *java, jobject obj); + static v8::Local NewProxy(Java *java, jobject obj, DynamicProxyData *dynamicProxyData); jobject getObject() { return m_obj; } jclass getClass() { return m_class; } @@ -24,7 +24,7 @@ class JavaObject : public Nan::ObjectWrap { void Unref() { Nan::ObjectWrap::Unref(); } protected: - JavaObject(Java* java, jobject obj); + JavaObject(Java *java, jobject obj); ~JavaObject(); private: @@ -35,8 +35,8 @@ class JavaObject : public Nan::ObjectWrap { static NAN_SETTER(fieldSetter); static NAN_INDEX_GETTER(indexGetter); - static std::map*> sFunctionTemplates; - Java* m_java; + static std::map *> sFunctionTemplates; + Java *m_java; jobject m_obj; jclass m_class; }; @@ -44,17 +44,16 @@ class JavaObject : public Nan::ObjectWrap { class JavaProxyObject : public JavaObject { public: static void init(); - static v8::Local New(Java* java, jobject obj, DynamicProxyData* dynamicProxyData); + static v8::Local New(Java *java, jobject obj, DynamicProxyData *dynamicProxyData); private: - JavaProxyObject(Java* java, jobject obj, DynamicProxyData* dynamicProxyData); + JavaProxyObject(Java *java, jobject obj, DynamicProxyData *dynamicProxyData); ~JavaProxyObject(); static NAN_METHOD(doUnref); static NAN_GETTER(invocationHandlerGetter); static Nan::Persistent s_proxyCt; - DynamicProxyData* m_dynamicProxyData; + DynamicProxyData *m_dynamicProxyData; }; #endif - diff --git a/src/javaScope.cpp b/src/javaScope.cpp index 7074fb6..5c8b46b 100644 --- a/src/javaScope.cpp +++ b/src/javaScope.cpp @@ -7,9 +7,7 @@ JavaScope::JavaScope(JNIEnv *env) { m_env->PushLocalFrame(LOCAL_FRAME_SIZE); } -JavaScope::~JavaScope() { - m_env->PopLocalFrame(m_result); -} +JavaScope::~JavaScope() { m_env->PopLocalFrame(m_result); } jobject JavaScope::Close(jobject result) { m_result = result; diff --git a/src/methodCallBaton.cpp b/src/methodCallBaton.cpp index c2a1015..7f2d183 100644 --- a/src/methodCallBaton.cpp +++ b/src/methodCallBaton.cpp @@ -6,15 +6,15 @@ jmethodID MethodCallBaton::m_methodInvokeMethodId = 0; -Nan::Callback* toNanCallback(v8::Local& callback) { - if(callback->IsFunction()) { +Nan::Callback *toNanCallback(v8::Local &callback) { + if (callback->IsFunction()) { return new Nan::Callback(callback.As()); } return NULL; } -MethodCallBaton::MethodCallBaton(Java* java, jobject method, jarray args, v8::Local& callback) : - Nan::AsyncWorker(toNanCallback(callback)) { +MethodCallBaton::MethodCallBaton(Java *java, jobject method, jarray args, v8::Local &callback) + : Nan::AsyncWorker(toNanCallback(callback)) { JNIEnv *env = java->getJavaEnv(); m_java = java; m_args = (jarray)env->NewGlobalRef(args); @@ -26,12 +26,12 @@ MethodCallBaton::MethodCallBaton(Java* java, jobject method, jarray args, v8::Lo MethodCallBaton::~MethodCallBaton() { JNIEnv *env = m_java->getJavaEnv(); - if(m_result) { + if (m_result) { env->DeleteGlobalRef(m_result); m_result = NULL; } - if(m_error) { + if (m_error) { env->DeleteGlobalRef(m_error); m_error = NULL; } @@ -44,26 +44,25 @@ MethodCallBaton::~MethodCallBaton() { } jmethodID MethodCallBaton::getMethodInvokeMethodId(JNIEnv *env) { - if(m_methodInvokeMethodId == 0) { + if (m_methodInvokeMethodId == 0) { jclass methodClazz = env->FindClass("java/lang/reflect/Method"); - m_methodInvokeMethodId = env->GetMethodID(methodClazz, "invoke", "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); + m_methodInvokeMethodId = + env->GetMethodID(methodClazz, "invoke", "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); } return m_methodInvokeMethodId; } -void MethodCallBaton::run() { - Nan::AsyncQueueWorker(this); -} +void MethodCallBaton::run() { Nan::AsyncQueueWorker(this); } v8::Local MethodCallBaton::runSync() { - JNIEnv* env = m_java->getJavaEnv(); + JNIEnv *env = m_java->getJavaEnv(); ExecuteInternal(env); return resultsToV8(env); } // called by NanAsyncWorker. This will be on a worker thread void MethodCallBaton::Execute() { - JNIEnv* env = javaGetEnv(this->m_java->getJvm(), this->m_java->getClassLoader()); + JNIEnv *env = javaGetEnv(this->m_java->getJvm(), this->m_java->getClassLoader()); JavaScope javaScope(env); ExecuteInternal(env); } @@ -72,20 +71,15 @@ void MethodCallBaton::Execute() { void MethodCallBaton::WorkComplete() { Nan::HandleScope scope; - if(callback) { - JNIEnv* env = javaGetEnv(this->m_java->getJvm(), this->m_java->getClassLoader()); + if (callback) { + JNIEnv *env = javaGetEnv(this->m_java->getJvm(), this->m_java->getClassLoader()); JavaScope javaScope(env); v8::Local result = resultsToV8(env); if (result->IsNativeError()) { - v8::Local argv[] = { - result - }; + v8::Local argv[] = {result}; callback->Call(1, argv, async_resource); } else { - v8::Local argv[] = { - Nan::Undefined(), - result - }; + v8::Local argv[] = {Nan::Undefined(), result}; callback->Call(2, argv, async_resource); } @@ -97,7 +91,7 @@ void MethodCallBaton::WorkComplete() { v8::Local MethodCallBaton::resultsToV8(JNIEnv *env) { Nan::EscapableHandleScope scope; - if(m_error) { + if (m_error) { jthrowable cause = m_error; // if we've caught an InvocationTargetException exception, @@ -118,14 +112,15 @@ v8::Local MethodCallBaton::resultsToV8(JNIEnv *env) { return scope.Escape(javaToV8(m_java, env, m_result)); } -void NewInstanceBaton::ExecuteInternal(JNIEnv* env) { +void NewInstanceBaton::ExecuteInternal(JNIEnv *env) { jclass batonClazz = env->FindClass("node/MethodCallBaton"); - jmethodID newInstance = env->GetStaticMethodID(batonClazz, "newInstance", "(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;"); + jmethodID newInstance = env->GetStaticMethodID( + batonClazz, "newInstance", "(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;"); jarray args = javaGetArgsForConstructor(env, m_method, m_args); jobject result = env->CallStaticObjectMethod(batonClazz, newInstance, m_method, args); - if(env->ExceptionCheck()) { + if (env->ExceptionCheck()) { jthrowable ex = env->ExceptionOccurred(); env->ExceptionClear(); m_error = (jthrowable)env->NewGlobalRef(ex); @@ -136,7 +131,7 @@ void NewInstanceBaton::ExecuteInternal(JNIEnv* env) { m_result = env->NewGlobalRef(result); } -void StaticMethodCallBaton::ExecuteInternal(JNIEnv* env) { +void StaticMethodCallBaton::ExecuteInternal(JNIEnv *env) { /* printf("calling %s\n", javaObjectToString(env, m_method).c_str()); printf("arguments\n"); @@ -148,12 +143,14 @@ void StaticMethodCallBaton::ExecuteInternal(JNIEnv* env) { */ jclass batonClazz = env->FindClass("node/MethodCallBaton"); - jmethodID invokeMethod = env->GetStaticMethodID(batonClazz, env->GetVersion() >= 0x90000 ? "invokeMethod9" : "invokeMethod", "(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); + jmethodID invokeMethod = + env->GetStaticMethodID(batonClazz, env->GetVersion() >= 0x90000 ? "invokeMethod9" : "invokeMethod", + "(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); jarray args = javaGetArgsForMethod(env, m_method, m_args); jobject result = env->CallStaticObjectMethod(batonClazz, invokeMethod, m_method, NULL, args); - if(env->ExceptionCheck()) { + if (env->ExceptionCheck()) { jthrowable ex = env->ExceptionOccurred(); env->ExceptionClear(); m_error = (jthrowable)env->NewGlobalRef(ex); @@ -164,7 +161,7 @@ void StaticMethodCallBaton::ExecuteInternal(JNIEnv* env) { m_result = env->NewGlobalRef(result); } -void InstanceMethodCallBaton::ExecuteInternal(JNIEnv* env) { +void InstanceMethodCallBaton::ExecuteInternal(JNIEnv *env) { /* printf("calling %s\n", javaObjectToString(env, m_method).c_str()); printf("arguments\n"); @@ -174,12 +171,14 @@ void InstanceMethodCallBaton::ExecuteInternal(JNIEnv* env) { */ jclass batonClazz = env->FindClass("node/MethodCallBaton"); - jmethodID invokeMethod = env->GetStaticMethodID(batonClazz, env->GetVersion() >= 0x90000 ? "invokeMethod9" : "invokeMethod", "(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); + jmethodID invokeMethod = + env->GetStaticMethodID(batonClazz, env->GetVersion() >= 0x90000 ? "invokeMethod9" : "invokeMethod", + "(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"); jarray args = javaGetArgsForMethod(env, m_method, m_args); jobject result = env->CallStaticObjectMethod(batonClazz, invokeMethod, m_method, m_javaObject->getObject(), args); - if(env->ExceptionCheck()) { + if (env->ExceptionCheck()) { jthrowable ex = env->ExceptionOccurred(); env->ExceptionClear(); m_error = (jthrowable)env->NewGlobalRef(ex); @@ -187,19 +186,16 @@ void InstanceMethodCallBaton::ExecuteInternal(JNIEnv* env) { return; } - if(result == NULL) { + if (result == NULL) { m_result = NULL; } else { m_result = env->NewGlobalRef(result); } } -NewInstanceBaton::NewInstanceBaton( - Java* java, - jclass clazz, - jobject method, - jarray args, - v8::Local& callback) : MethodCallBaton(java, method, args, callback) { +NewInstanceBaton::NewInstanceBaton(Java *java, jclass clazz, jobject method, jarray args, + v8::Local &callback) + : MethodCallBaton(java, method, args, callback) { JNIEnv *env = m_java->getJavaEnv(); m_clazz = (jclass)env->NewGlobalRef(clazz); } @@ -210,12 +206,9 @@ NewInstanceBaton::~NewInstanceBaton() { m_clazz = NULL; } -StaticMethodCallBaton::StaticMethodCallBaton( - Java* java, - jclass clazz, - jobject method, - jarray args, - v8::Local& callback) : MethodCallBaton(java, method, args, callback) { +StaticMethodCallBaton::StaticMethodCallBaton(Java *java, jclass clazz, jobject method, jarray args, + v8::Local &callback) + : MethodCallBaton(java, method, args, callback) { JNIEnv *env = m_java->getJavaEnv(); m_clazz = (jclass)env->NewGlobalRef(clazz); } @@ -226,12 +219,9 @@ StaticMethodCallBaton::~StaticMethodCallBaton() { m_clazz = NULL; } -InstanceMethodCallBaton::InstanceMethodCallBaton( - Java* java, - JavaObject* obj, - jobject method, - jarray args, - v8::Local& callback) : MethodCallBaton(java, method, args, callback) { +InstanceMethodCallBaton::InstanceMethodCallBaton(Java *java, JavaObject *obj, jobject method, jarray args, + v8::Local &callback) + : MethodCallBaton(java, method, args, callback) { m_javaObject = obj; m_javaObject->Ref(); } diff --git a/src/methodCallBaton.h b/src/methodCallBaton.h index 504d00d..ee4102f 100644 --- a/src/methodCallBaton.h +++ b/src/methodCallBaton.h @@ -3,18 +3,18 @@ #define _methodcallbaton_h_ #include "utils.h" -#include -#include -#include #include #include +#include +#include +#include class Java; class JavaObject; class MethodCallBaton : public Nan::AsyncWorker { public: - MethodCallBaton(Java* java, jobject method, jarray args, v8::Local& callback); + MethodCallBaton(Java *java, jobject method, jarray args, v8::Local &callback); virtual ~MethodCallBaton(); void run(); @@ -24,10 +24,10 @@ class MethodCallBaton : public Nan::AsyncWorker { v8::Local resultsToV8(JNIEnv *env); virtual void Execute(); virtual void WorkComplete(); - virtual void ExecuteInternal(JNIEnv* env) = 0; + virtual void ExecuteInternal(JNIEnv *env) = 0; static jmethodID getMethodInvokeMethodId(JNIEnv *env); - Java* m_java; + Java *m_java; jthrowable m_error; std::string m_errorString; jarray m_args; @@ -40,33 +40,33 @@ class MethodCallBaton : public Nan::AsyncWorker { class InstanceMethodCallBaton : public MethodCallBaton { public: - InstanceMethodCallBaton(Java* java, JavaObject* obj, jobject method, jarray args, v8::Local& callback); + InstanceMethodCallBaton(Java *java, JavaObject *obj, jobject method, jarray args, v8::Local &callback); virtual ~InstanceMethodCallBaton(); protected: - virtual void ExecuteInternal(JNIEnv* env); + virtual void ExecuteInternal(JNIEnv *env); - JavaObject* m_javaObject; + JavaObject *m_javaObject; }; class NewInstanceBaton : public MethodCallBaton { public: - NewInstanceBaton(Java* java, jclass clazz, jobject method, jarray args, v8::Local& callback); + NewInstanceBaton(Java *java, jclass clazz, jobject method, jarray args, v8::Local &callback); virtual ~NewInstanceBaton(); protected: - virtual void ExecuteInternal(JNIEnv* env); + virtual void ExecuteInternal(JNIEnv *env); jclass m_clazz; }; class StaticMethodCallBaton : public MethodCallBaton { public: - StaticMethodCallBaton(Java* java, jclass clazz, jobject method, jarray args, v8::Local& callback); + StaticMethodCallBaton(Java *java, jclass clazz, jobject method, jarray args, v8::Local &callback); virtual ~StaticMethodCallBaton(); protected: - virtual void ExecuteInternal(JNIEnv* env); + virtual void ExecuteInternal(JNIEnv *env); jclass m_clazz; }; diff --git a/src/nodeJavaBridge.cpp b/src/nodeJavaBridge.cpp index 5112440..55b6bb4 100644 --- a/src/nodeJavaBridge.cpp +++ b/src/nodeJavaBridge.cpp @@ -3,18 +3,16 @@ #include "javaObject.h" extern "C" { - static void init(v8::Local target, v8::Local, void*) { - Java::Init(target); - JavaObject::Init(target); - } +static void init(v8::Local target, v8::Local, void *) { + Java::Init(target); + JavaObject::Init(target); +} - NODE_MODULE(nodejavabridge_bindings, init); +NODE_MODULE(nodejavabridge_bindings, init); } #ifdef WIN32 -BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { - return TRUE; -} +BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; } #endif diff --git a/src/node_NodeDynamicProxyClass.h b/src/node_NodeDynamicProxyClass.h index 93b414d..d201a5d 100644 --- a/src/node_NodeDynamicProxyClass.h +++ b/src/node_NodeDynamicProxyClass.h @@ -12,16 +12,14 @@ extern "C" { * Method: callJs * Signature: (JLjava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; */ -JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs - (JNIEnv *, jobject, jlong, jobject, jobjectArray); +JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *, jobject, jlong, jobject, jobjectArray); /* * Class: node_NodeDynamicProxyClass * Method: unref * Signature: (J)V */ -JNIEXPORT void JNICALL Java_node_NodeDynamicProxyClass_unref - (JNIEnv *, jobject, jlong); +JNIEXPORT void JNICALL Java_node_NodeDynamicProxyClass_unref(JNIEnv *, jobject, jlong); #ifdef __cplusplus } diff --git a/src/utils.cpp b/src/utils.cpp index 39c543d..8b3784c 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -1,15 +1,15 @@ #include "utils.h" -#include +#include "java.h" +#include "javaObject.h" #include -#include #include -#include "javaObject.h" -#include "java.h" +#include +#include #define MODIFIER_STATIC 9 -jobject v8ToJava_javaObject(JNIEnv* env, v8::Local obj); -jobject v8ToJava_javaLong(JNIEnv* env, v8::Local obj); +jobject v8ToJava_javaObject(JNIEnv *env, v8::Local obj); +jobject v8ToJava_javaLong(JNIEnv *env, v8::Local obj); bool hasSetFailed(Nan::Maybe v) { if (v.IsNothing()) { @@ -18,7 +18,7 @@ bool hasSetFailed(Nan::Maybe v) { return v.ToChecked() == false; } -void javaReflectionGetMethods(JNIEnv *env, jclass clazz, std::list* methods, bool includeStatic) { +void javaReflectionGetMethods(JNIEnv *env, jclass clazz, std::list *methods, bool includeStatic) { jclass clazzclazz = env->FindClass("java/lang/Class"); jmethodID clazz_getMethods = env->GetMethodID(clazzclazz, "getMethods", "()[Ljava/lang/reflect/Method;"); jclass methodClazz = env->FindClass("java/lang/reflect/Method"); @@ -27,31 +27,32 @@ void javaReflectionGetMethods(JNIEnv *env, jclass clazz, std::list* met jobjectArray methodObjects = (jobjectArray)env->CallObjectMethod(clazz, clazz_getMethods); checkJavaException(env); jsize methodCount = env->GetArrayLength(methodObjects); - for(jsize i=0; iGetObjectArrayElement(methodObjects, i); jint methodModifiers = env->CallIntMethod(method, method_getModifiers); assertNoException(env); - if(!includeStatic && (methodModifiers & MODIFIER_STATIC) == MODIFIER_STATIC) { + if (!includeStatic && (methodModifiers & MODIFIER_STATIC) == MODIFIER_STATIC) { continue; } methods->push_back(method); } } -void javaReflectionGetConstructors(JNIEnv *env, jclass clazz, std::list* methods) { +void javaReflectionGetConstructors(JNIEnv *env, jclass clazz, std::list *methods) { jclass clazzclazz = env->FindClass("java/lang/Class"); - jmethodID clazz_getConstructors = env->GetMethodID(clazzclazz, "getConstructors", "()[Ljava/lang/reflect/Constructor;"); + jmethodID clazz_getConstructors = + env->GetMethodID(clazzclazz, "getConstructors", "()[Ljava/lang/reflect/Constructor;"); jobjectArray constructorObjects = (jobjectArray)env->CallObjectMethod(clazz, clazz_getConstructors); checkJavaException(env); jsize constructorCount = env->GetArrayLength(constructorObjects); - for(jsize i=0; iGetObjectArrayElement(constructorObjects, i); methods->push_back(constructor); } } -void javaReflectionGetFields(JNIEnv *env, jclass clazz, std::list* fields) { +void javaReflectionGetFields(JNIEnv *env, jclass clazz, std::list *fields) { jclass clazzclazz = env->FindClass("java/lang/Class"); jmethodID clazz_getFields = env->GetMethodID(clazzclazz, "getFields", "()[Ljava/lang/reflect/Field;"); jclass fieldClazz = env->FindClass("java/lang/reflect/Field"); @@ -60,11 +61,11 @@ void javaReflectionGetFields(JNIEnv *env, jclass clazz, std::list* fiel jobjectArray fieldObjects = (jobjectArray)env->CallObjectMethod(clazz, clazz_getFields); assertNoException(env); jsize fieldCount = env->GetArrayLength(fieldObjects); - for(jsize i=0; iGetObjectArrayElement(fieldObjects, i); jint fieldModifiers = env->CallIntMethod(field, field_getModifiers); checkJavaException(env); - if((fieldModifiers & MODIFIER_STATIC) == MODIFIER_STATIC) { + if ((fieldModifiers & MODIFIER_STATIC) == MODIFIER_STATIC) { continue; } fields->push_back(field); @@ -79,10 +80,10 @@ std::string javaToString(JNIEnv *env, jstring str) { jbyteArray stringJbytes = (jbyteArray)env->CallObjectMethod(str, methodId, charsetName); env->DeleteLocalRef(charsetName); - jbyte* pBytes = env->GetByteArrayElements(stringJbytes, NULL); + jbyte *pBytes = env->GetByteArrayElements(stringJbytes, NULL); const jsize length = env->GetArrayLength(stringJbytes); - std::string results((const char*)pBytes, length); + std::string results((const char *)pBytes, length); env->ReleaseByteArrayElements(stringJbytes, pBytes, JNI_ABORT); env->DeleteLocalRef(stringJbytes); @@ -91,15 +92,15 @@ std::string javaToString(JNIEnv *env, jstring str) { } std::string javaArrayToString(JNIEnv *env, jobjectArray arr) { - if(arr == NULL) { + if (arr == NULL) { return "(null)"; } std::ostringstream result; result << "["; jsize count = env->GetArrayLength(arr); - for(jsize i=0; iGetObjectArrayElement(arr, i); @@ -110,7 +111,7 @@ std::string javaArrayToString(JNIEnv *env, jobjectArray arr) { } std::string javaObjectToString(JNIEnv *env, jobject obj) { - if(obj == NULL) { + if (obj == NULL) { return "(null)"; } jclass objClazz = env->GetObjectClass(obj); @@ -133,8 +134,8 @@ std::string javaMethodCallToString(JNIEnv *env, jobject obj, jmethodID methodId, result << temp; result << ": ("; jsize arraySize = env->GetArrayLength(args); - for(int i=0; iGetObjectArrayElement((jobjectArray)args, i); @@ -145,20 +146,21 @@ std::string javaMethodCallToString(JNIEnv *env, jobject obj, jmethodID methodId, return result.str(); } -JNIEnv* javaGetEnv(JavaVM* jvm, jobject classLoader) { +JNIEnv *javaGetEnv(JavaVM *jvm, jobject classLoader) { JNIEnv *env = NULL; - int ret = jvm->GetEnv((void**)&env, JNI_BEST_VERSION); + int ret = jvm->GetEnv((void **)&env, JNI_BEST_VERSION); if (ret == JNI_EDETACHED) { JavaVMAttachArgs attachArgs; attachArgs.version = JNI_BEST_VERSION; attachArgs.name = NULL; attachArgs.group = NULL; - jvm->AttachCurrentThread((void**)&env, &attachArgs); + jvm->AttachCurrentThread((void **)&env, &attachArgs); jclass threadClazz = env->FindClass("java/lang/Thread"); jmethodID thread_currentThread = env->GetStaticMethodID(threadClazz, "currentThread", "()Ljava/lang/Thread;"); - jmethodID thread_setContextClassLoader = env->GetMethodID(threadClazz, "setContextClassLoader", "(Ljava/lang/ClassLoader;)V"); + jmethodID thread_setContextClassLoader = + env->GetMethodID(threadClazz, "setContextClassLoader", "(Ljava/lang/ClassLoader;)V"); jobject currentThread = env->CallStaticObjectMethod(threadClazz, thread_currentThread); checkJavaException(env); env->CallObjectMethod(currentThread, thread_setContextClassLoader, classLoader); @@ -174,7 +176,8 @@ JNIEnv* javaGetEnv(JavaVM* jvm, jobject classLoader) { jobject getSystemClassLoader(JNIEnv *env) { jclass threadClazz = env->FindClass("java/lang/Thread"); jmethodID thread_currentThread = env->GetStaticMethodID(threadClazz, "currentThread", "()Ljava/lang/Thread;"); - jmethodID thread_getContextClassLoader = env->GetMethodID(threadClazz, "getContextClassLoader", "()Ljava/lang/ClassLoader;"); + jmethodID thread_getContextClassLoader = + env->GetMethodID(threadClazz, "getContextClassLoader", "()Ljava/lang/ClassLoader;"); jobject currentThread = env->CallStaticObjectMethod(threadClazz, thread_currentThread); checkJavaException(env); jobject result = env->CallObjectMethod(currentThread, thread_getContextClassLoader); @@ -188,60 +191,62 @@ jvalueType javaGetType(JNIEnv *env, jclass type) { jboolean isArray = env->CallBooleanMethod(type, class_isArray); assertNoException(env); - if(isArray) { + if (isArray) { return TYPE_ARRAY; } else { // TODO: has to be a better way std::string str = javaObjectToString(env, type); const char *typeStr = str.c_str(); - //printf("javaGetType: %s\n", typeStr); - if(strcmp(typeStr, "void") == 0) { + // printf("javaGetType: %s\n", typeStr); + if (strcmp(typeStr, "void") == 0) { return TYPE_VOID; - } else if(strcmp(typeStr, "char") == 0 || strcmp(typeStr, "class java.lang.Character") == 0) { + } else if (strcmp(typeStr, "char") == 0 || strcmp(typeStr, "class java.lang.Character") == 0) { return TYPE_CHAR; - } else if(strcmp(typeStr, "int") == 0 || strcmp(typeStr, "class java.lang.Integer") == 0) { + } else if (strcmp(typeStr, "int") == 0 || strcmp(typeStr, "class java.lang.Integer") == 0) { return TYPE_INT; - } else if(strcmp(typeStr, "double") == 0 || strcmp(typeStr, "class java.lang.Double") == 0) { + } else if (strcmp(typeStr, "double") == 0 || strcmp(typeStr, "class java.lang.Double") == 0) { return TYPE_DOUBLE; - } else if(strcmp(typeStr, "float") == 0 || strcmp(typeStr, "class java.lang.Float") == 0) { + } else if (strcmp(typeStr, "float") == 0 || strcmp(typeStr, "class java.lang.Float") == 0) { return TYPE_FLOAT; - } else if(strcmp(typeStr, "long") == 0 || strcmp(typeStr, "class java.lang.Long") == 0) { + } else if (strcmp(typeStr, "long") == 0 || strcmp(typeStr, "class java.lang.Long") == 0) { return TYPE_LONG; - } else if(strcmp(typeStr, "boolean") == 0 || strcmp(typeStr, "class java.lang.Boolean") == 0) { + } else if (strcmp(typeStr, "boolean") == 0 || strcmp(typeStr, "class java.lang.Boolean") == 0) { return TYPE_BOOLEAN; - } else if(strcmp(typeStr, "short") == 0 || strcmp(typeStr, "class java.lang.Short") == 0) { + } else if (strcmp(typeStr, "short") == 0 || strcmp(typeStr, "class java.lang.Short") == 0) { return TYPE_SHORT; - } else if(strcmp(typeStr, "byte") == 0 || strcmp(typeStr, "class java.lang.Byte") == 0) { + } else if (strcmp(typeStr, "byte") == 0 || strcmp(typeStr, "class java.lang.Byte") == 0) { return TYPE_BYTE; - } else if(strcmp(typeStr, "class java.lang.String") == 0) { + } else if (strcmp(typeStr, "class java.lang.String") == 0) { return TYPE_STRING; } return TYPE_OBJECT; } } -jclass javaFindClass(JNIEnv* env, const std::string& className) { +jclass javaFindClass(JNIEnv *env, const std::string &className) { std::string searchClassName = className; std::replace(searchClassName.begin(), searchClassName.end(), '.', '/'); -// Alternate find class trying to fix Class.forName -// jclass threadClazz = env->FindClass("java/lang/Thread"); -// jmethodID thread_getCurrentThread = env->GetStaticMethodID(threadClazz, "currentThread", "()Ljava/lang/Thread;"); -// jmethodID thread_getContextClassLoader = env->GetMethodID(threadClazz, "getContextClassLoader", "()Ljava/lang/ClassLoader;"); -// -// jclass classLoaderClazz = env->FindClass("java/lang/ClassLoader"); -// jmethodID classLoader_loadClass = env->GetMethodID(classLoaderClazz, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); -// -// jobject currentThread = env->CallObjectMethod(threadClazz, thread_getCurrentThread); -// jobject classLoader = env->CallObjectMethod(currentThread, thread_getContextClassLoader); -// jstring searchClassNameJava = env->NewStringUTF(className.c_str()); -// jclass clazz = (jclass)env->CallObjectMethod(classLoader, classLoader_loadClass, searchClassNameJava); + // Alternate find class trying to fix Class.forName + // jclass threadClazz = env->FindClass("java/lang/Thread"); + // jmethodID thread_getCurrentThread = env->GetStaticMethodID(threadClazz, "currentThread", "()Ljava/lang/Thread;"); + // jmethodID thread_getContextClassLoader = env->GetMethodID(threadClazz, "getContextClassLoader", + // "()Ljava/lang/ClassLoader;"); + // + // jclass classLoaderClazz = env->FindClass("java/lang/ClassLoader"); + // jmethodID classLoader_loadClass = env->GetMethodID(classLoaderClazz, "loadClass", + // "(Ljava/lang/String;)Ljava/lang/Class;"); + // + // jobject currentThread = env->CallObjectMethod(threadClazz, thread_getCurrentThread); + // jobject classLoader = env->CallObjectMethod(currentThread, thread_getContextClassLoader); + // jstring searchClassNameJava = env->NewStringUTF(className.c_str()); + // jclass clazz = (jclass)env->CallObjectMethod(classLoader, classLoader_loadClass, searchClassNameJava); jclass clazz = env->FindClass(searchClassName.c_str()); return clazz; } -jobject javaFindField(JNIEnv* env, jclass clazz, const std::string& fieldName) { +jobject javaFindField(JNIEnv *env, jclass clazz, const std::string &fieldName) { jobject result = NULL; jclass clazzclazz = env->GetObjectClass(clazz); jclass fieldClazz = env->FindClass("java/lang/reflect/Field"); @@ -251,13 +256,13 @@ jobject javaFindField(JNIEnv* env, jclass clazz, const std::string& fieldName) { checkJavaException(env); jsize fieldCount = env->GetArrayLength(fieldObjects); - for(jsize i=0; iGetObjectArrayElement(fieldObjects, i); jstring fieldNameJava = (jstring)env->CallObjectMethod(field, field_getName); checkJavaException(env); std::string itFieldName = javaToString(env, fieldNameJava); - if(strcmp(itFieldName.c_str(), fieldName.c_str()) == 0) { + if (strcmp(itFieldName.c_str(), fieldName.c_str()) == 0) { result = field; break; } @@ -281,71 +286,66 @@ static std::string getArrayElementType(v8::Local array, uint32_t arra return kObject; } - for(uint32_t i=0; i arg = array->Get(Nan::GetCurrentContext(), i).ToLocalChecked(); if (arg->IsArray()) { return kObject; // We can exit as soon as we know java/lang/Object is required. - } - else if(arg->IsString()) { + } else if (arg->IsString()) { types.insert(kString); - } - else if(arg->IsInt32() || arg->IsUint32()) { + } else if (arg->IsInt32() || arg->IsUint32()) { types.insert(kInteger); - } - else if(arg->IsNumber()) { + } else if (arg->IsNumber()) { types.insert(kDouble); - } - else if(arg->IsBoolean()) { + } else if (arg->IsBoolean()) { types.insert(kBoolean); - } - else if(arg->IsObject()) { + } else if (arg->IsObject()) { v8::Local obj = v8::Local::Cast(arg); - v8::Local isJavaLong = GetHiddenValue(obj, Nan::New(V8_HIDDEN_MARKER_JAVA_LONG).ToLocalChecked()); - if(!isJavaLong.IsEmpty() && isJavaLong->IsBoolean()) { + v8::Local isJavaLong = + GetHiddenValue(obj, Nan::New(V8_HIDDEN_MARKER_JAVA_LONG).ToLocalChecked()); + if (!isJavaLong.IsEmpty() && isJavaLong->IsBoolean()) { types.insert(kLong); - } - else { + } else { return kObject; // We can exit as soon as we know java/lang/Object is required. } } } - if(types.size() == 1) { + if (types.size() == 1) { return *(types.begin()); } assert(types.size() >= 1); - assert(types.find(kObject)==types.end()); + assert(types.find(kObject) == types.end()); // We have an array with two or more types. All types can be converted to Object, but there is one other // case we support, which is when all the types are numeric types. // We currently have only two non-numeric types. If neither is present in the set, the rest must be numeric. - if (types.find(kString)==types.end() && types.find(kBoolean)==types.end()) { + if (types.find(kString) == types.end() && types.find(kBoolean) == types.end()) { return kNumber; } return kObject; } -jobject v8ToJava(JNIEnv* env, v8::Local arg) { - if(arg.IsEmpty() || arg->IsNull() || arg->IsUndefined()) { +jobject v8ToJava(JNIEnv *env, v8::Local arg) { + if (arg.IsEmpty() || arg->IsNull() || arg->IsUndefined()) { return NULL; } - if(arg->IsArray()) { + if (arg->IsArray()) { v8::Local array = v8::Local::Cast(arg); uint32_t arraySize = array->Length(); std::string arrayType = getArrayElementType(array, arraySize); jclass objectClazz = env->FindClass(arrayType.c_str()); jobjectArray result = env->NewObjectArray(arraySize, objectClazz, NULL); - for(uint32_t i=0; iGet(Nan::GetCurrentContext(), i).ToLocalChecked()); env->SetObjectArrayElement(result, i, val); } return result; } - if(arg->IsString()) { + if (arg->IsString()) { #if NODE_MAJOR_VERSION > 7 v8::String::Value val(v8::Isolate::GetCurrent(), arg->ToString(Nan::GetCurrentContext()).ToLocalChecked()); #else @@ -354,37 +354,39 @@ jobject v8ToJava(JNIEnv* env, v8::Local arg) { return env->NewString(*val, val.length()); } - if(arg->IsInt32() || arg->IsUint32()) { + if (arg->IsInt32() || arg->IsUint32()) { jint val = Nan::To(arg).FromJust(); jclass clazz = env->FindClass("java/lang/Integer"); jmethodID constructor = env->GetMethodID(clazz, "", "(I)V"); return env->NewObject(clazz, constructor, val); } - if(arg->IsNumber()) { + if (arg->IsNumber()) { jdouble val = Nan::To(arg).FromJust(); jclass clazz = env->FindClass("java/lang/Double"); jmethodID constructor = env->GetMethodID(clazz, "", "(D)V"); return env->NewObject(clazz, constructor, val); } - if(arg->IsBoolean()) { + if (arg->IsBoolean()) { jboolean val = Nan::To(arg).FromJust(); jclass clazz = env->FindClass("java/lang/Boolean"); jmethodID constructor = env->GetMethodID(clazz, "", "(Z)V"); return env->NewObject(clazz, constructor, val); } - if(arg->IsObject()) { + if (arg->IsObject()) { v8::Local obj = v8::Local::Cast(arg); - v8::Local isJavaObject = GetHiddenValue(obj, Nan::New(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked()); - if(!isJavaObject.IsEmpty() && isJavaObject->IsBoolean()) { + v8::Local isJavaObject = + GetHiddenValue(obj, Nan::New(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked()); + if (!isJavaObject.IsEmpty() && isJavaObject->IsBoolean()) { return v8ToJava_javaObject(env, obj); } - v8::Local isJavaLong = GetHiddenValue(obj, Nan::New(V8_HIDDEN_MARKER_JAVA_LONG).ToLocalChecked()); - if(!isJavaLong.IsEmpty() && isJavaLong->IsBoolean()) { + v8::Local isJavaLong = + GetHiddenValue(obj, Nan::New(V8_HIDDEN_MARKER_JAVA_LONG).ToLocalChecked()); + if (!isJavaLong.IsEmpty() && isJavaLong->IsBoolean()) { return v8ToJava_javaLong(env, obj); } } @@ -395,13 +397,13 @@ jobject v8ToJava(JNIEnv* env, v8::Local arg) { return NULL; } -jobject v8ToJava_javaObject(JNIEnv* env, v8::Local obj) { - JavaObject* javaObject = Nan::ObjectWrap::Unwrap(obj); +jobject v8ToJava_javaObject(JNIEnv *env, v8::Local obj) { + JavaObject *javaObject = Nan::ObjectWrap::Unwrap(obj); return javaObject->getObject(); } -void checkJavaException(JNIEnv* env) { - if(env->ExceptionCheck()) { +void checkJavaException(JNIEnv *env) { + if (env->ExceptionCheck()) { jthrowable ex = env->ExceptionOccurred(); env->ExceptionClear(); @@ -411,19 +413,20 @@ void checkJavaException(JNIEnv* env) { } } -jobject v8ToJava_javaLong(JNIEnv* env, v8::Local obj) { - jobject longValue = v8ToJava(env, obj->Get(Nan::GetCurrentContext(), Nan::New("longValue").ToLocalChecked()).ToLocalChecked()); +jobject v8ToJava_javaLong(JNIEnv *env, v8::Local obj) { + jobject longValue = v8ToJava( + env, obj->Get(Nan::GetCurrentContext(), Nan::New("longValue").ToLocalChecked()).ToLocalChecked()); jclass longClazz = env->FindClass("java/lang/Long"); jmethodID long_constructor = env->GetMethodID(longClazz, "", "(Ljava/lang/String;)V"); jobject jobj = env->NewObject(longClazz, long_constructor, longValue); return jobj; } -jobjectArray v8ToJava(JNIEnv* env, Nan::NAN_METHOD_ARGS_TYPE args, int start, int end) { +jobjectArray v8ToJava(JNIEnv *env, Nan::NAN_METHOD_ARGS_TYPE args, int start, int end) { jclass clazz = env->FindClass("java/lang/Object"); - jobjectArray results = env->NewObjectArray(end-start, clazz, NULL); + jobjectArray results = env->NewObjectArray(end - start, clazz, NULL); - for(int i=start; iSetObjectArrayElement(results, i - start, val); } @@ -431,7 +434,7 @@ jobjectArray v8ToJava(JNIEnv* env, Nan::NAN_METHOD_ARGS_TYPE args, int start, in return results; } -std::string javaExceptionToString(JNIEnv* env, jthrowable ex) { +std::string javaExceptionToString(JNIEnv *env, jthrowable ex) { jclass stringWriterClazz = env->FindClass("java/io/StringWriter"); jmethodID stringWriter_constructor = env->GetMethodID(stringWriterClazz, "", "()V"); jmethodID stringWriter_toString = env->GetMethodID(stringWriterClazz, "toString", "()Ljava/lang/String;"); @@ -451,15 +454,17 @@ std::string javaExceptionToString(JNIEnv* env, jthrowable ex) { return javaToString(env, strObj); } -v8::Local javaExceptionToV8(Java* java, JNIEnv* env, jthrowable ex, const std::string& alternateMessage) { +v8::Local javaExceptionToV8(Java *java, JNIEnv *env, jthrowable ex, const std::string &alternateMessage) { std::ostringstream msg; msg << alternateMessage; - if(ex) { + if (ex) { msg << "\n" << javaExceptionToString(env, ex); v8::Local v8ex = v8::Exception::Error(Nan::New(msg.str().c_str()).ToLocalChecked()); - if (hasSetFailed(((v8::Object*)*v8ex)->Set(Nan::GetCurrentContext(), Nan::New("cause").ToLocalChecked(), javaToV8(java, env, ex)))) { + if (hasSetFailed(((v8::Object *)*v8ex) + ->Set(Nan::GetCurrentContext(), Nan::New("cause").ToLocalChecked(), + javaToV8(java, env, ex)))) { return v8::Exception::Error(Nan::New("could not set cause").ToLocalChecked()); } return v8ex; @@ -468,7 +473,7 @@ v8::Local javaExceptionToV8(Java* java, JNIEnv* env, jthrowable ex, c return v8::Exception::Error(Nan::New(msg.str().c_str()).ToLocalChecked()); } -v8::Local javaExceptionToV8(Java* java, JNIEnv* env, const std::string& alternateMessage) { +v8::Local javaExceptionToV8(Java *java, JNIEnv *env, const std::string &alternateMessage) { jthrowable ex = env->ExceptionOccurred(); env->ExceptionClear(); return javaExceptionToV8(java, env, ex, alternateMessage); @@ -491,17 +496,17 @@ jvalueType javaGetArrayComponentType(JNIEnv *env, jobjectArray array) { } #if NODE_VERSION_AT_LEAST(13, 0, 0) - v8::Local newArrayBuffer(void* elems, size_t length) { - v8::Local ab = v8::ArrayBuffer::New(v8::Isolate::GetCurrent(), length); - memcpy(ab->GetBackingStore()->Data(), elems, length); - return ab; - } +v8::Local newArrayBuffer(void *elems, size_t length) { + v8::Local ab = v8::ArrayBuffer::New(v8::Isolate::GetCurrent(), length); + memcpy(ab->GetBackingStore()->Data(), elems, length); + return ab; +} #elif NODE_VERSION_AT_LEAST(4, 0, 0) - v8::Local newArrayBuffer(void* elems, size_t length) { - v8::Local ab = v8::ArrayBuffer::New(v8::Isolate::GetCurrent(), length); - memcpy(ab->GetContents().Data(), elems, length); - return ab; - } +v8::Local newArrayBuffer(void *elems, size_t length) { + v8::Local ab = v8::ArrayBuffer::New(v8::Isolate::GetCurrent(), length); + memcpy(ab->GetContents().Data(), elems, length); + return ab; +} #endif v8::Local javaCharToV8String(jchar c) { @@ -514,156 +519,140 @@ v8::Local javaCharToV8String(jchar c) { #endif } -v8::Local javaArrayToV8(Java* java, JNIEnv* env, jobjectArray objArray) { - if(objArray == NULL) { +v8::Local javaArrayToV8(Java *java, JNIEnv *env, jobjectArray objArray) { + if (objArray == NULL) { return Nan::Null(); } jvalueType arrayComponentType = javaGetArrayComponentType(env, objArray); - //printf("javaArrayToV8: %d %s\n", arrayComponentType, javaObjectToString(env, objArray).c_str()); + // printf("javaArrayToV8: %d %s\n", arrayComponentType, javaObjectToString(env, objArray).c_str()); jsize arraySize = env->GetArrayLength(objArray); - //printf("array size: %d\n", arraySize); + // printf("array size: %d\n", arraySize); v8::Local result = Nan::New(arraySize); // http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html - switch(arrayComponentType) { - case TYPE_CHAR: - { - jchar* elems = env->GetCharArrayElements((jcharArray)objArray, 0); + switch (arrayComponentType) { + case TYPE_CHAR: { + jchar *elems = env->GetCharArrayElements((jcharArray)objArray, 0); #if (NODE_VERSION_AT_LEAST(4, 0, 0)) - size_t byteLength = arraySize * 2; - v8::Local ab = newArrayBuffer(elems, byteLength); - env->ReleaseCharArrayElements((jcharArray)objArray, elems, 0); - return v8::Uint16Array::New(ab, 0, arraySize); + size_t byteLength = arraySize * 2; + v8::Local ab = newArrayBuffer(elems, byteLength); + env->ReleaseCharArrayElements((jcharArray)objArray, elems, 0); + return v8::Uint16Array::New(ab, 0, arraySize); #else - jchar str; - for(jsize i=0; iSet(i, javaCharToV8String(str)); - } - env->ReleaseCharArrayElements((jcharArray)objArray, elems, 0); -#endif + jchar str; + for (jsize i = 0; i < arraySize; i++) { + str = elems[i]; + result->Set(i, javaCharToV8String(str)); } - break; + env->ReleaseCharArrayElements((jcharArray)objArray, elems, 0); +#endif + } break; - case TYPE_INT: - { - jint* elems = env->GetIntArrayElements((jintArray)objArray, 0); + case TYPE_INT: { + jint *elems = env->GetIntArrayElements((jintArray)objArray, 0); #if (NODE_VERSION_AT_LEAST(4, 0, 0)) - size_t byteLength = arraySize * 4; - v8::Local ab = newArrayBuffer(elems, byteLength); - env->ReleaseIntArrayElements((jintArray)objArray, elems, 0); - return v8::Int32Array::New(ab, 0, arraySize); + size_t byteLength = arraySize * 4; + v8::Local ab = newArrayBuffer(elems, byteLength); + env->ReleaseIntArrayElements((jintArray)objArray, elems, 0); + return v8::Int32Array::New(ab, 0, arraySize); #else - for(jsize i=0; iSet(i, Nan::New(elems[i])); - } - env->ReleaseIntArrayElements((jintArray)objArray, elems, 0); -#endif + for (jsize i = 0; i < arraySize; i++) { + result->Set(i, Nan::New(elems[i])); } - break; + env->ReleaseIntArrayElements((jintArray)objArray, elems, 0); +#endif + } break; - case TYPE_BYTE: - { - jbyte* elems = env->GetByteArrayElements((jbyteArray)objArray, 0); + case TYPE_BYTE: { + jbyte *elems = env->GetByteArrayElements((jbyteArray)objArray, 0); #if (NODE_VERSION_AT_LEAST(4, 0, 0)) - size_t byteLength = arraySize; - v8::Local ab = newArrayBuffer(elems, byteLength); - env->ReleaseByteArrayElements((jbyteArray)objArray, elems, 0); - return v8::Int8Array::New(ab, 0, arraySize); + size_t byteLength = arraySize; + v8::Local ab = newArrayBuffer(elems, byteLength); + env->ReleaseByteArrayElements((jbyteArray)objArray, elems, 0); + return v8::Int8Array::New(ab, 0, arraySize); #else - for(jsize i=0; iSet(i, Nan::New(elems[i])); - } - env->ReleaseByteArrayElements((jbyteArray)objArray, elems, 0); -#endif + for (jsize i = 0; i < arraySize; i++) { + result->Set(i, Nan::New(elems[i])); } - break; + env->ReleaseByteArrayElements((jbyteArray)objArray, elems, 0); +#endif + } break; - case TYPE_BOOLEAN: - { - jboolean* elems = env->GetBooleanArrayElements((jbooleanArray)objArray, 0); - for(jsize i=0; iSet(Nan::GetCurrentContext(), i, Nan::New(elems[i])))) { - return v8::Exception::Error(Nan::New("set array element failed").ToLocalChecked()); - } + case TYPE_BOOLEAN: { + jboolean *elems = env->GetBooleanArrayElements((jbooleanArray)objArray, 0); + for (jsize i = 0; i < arraySize; i++) { + if (hasSetFailed(result->Set(Nan::GetCurrentContext(), i, Nan::New(elems[i])))) { + return v8::Exception::Error(Nan::New("set array element failed").ToLocalChecked()); } - env->ReleaseBooleanArrayElements((jbooleanArray)objArray, elems, 0); } - break; + env->ReleaseBooleanArrayElements((jbooleanArray)objArray, elems, 0); + } break; - case TYPE_SHORT: - { - jshort* elems = env->GetShortArrayElements((jshortArray)objArray, 0); + case TYPE_SHORT: { + jshort *elems = env->GetShortArrayElements((jshortArray)objArray, 0); #if (NODE_VERSION_AT_LEAST(4, 0, 0)) - size_t byteLength = arraySize * 2; - v8::Local ab = newArrayBuffer(elems, byteLength); - env->ReleaseShortArrayElements((jshortArray)objArray, elems, 0); - return v8::Int16Array::New(ab, 0, arraySize); + size_t byteLength = arraySize * 2; + v8::Local ab = newArrayBuffer(elems, byteLength); + env->ReleaseShortArrayElements((jshortArray)objArray, elems, 0); + return v8::Int16Array::New(ab, 0, arraySize); #else - for(jsize i=0; iSet(i, Nan::New(elems[i])); - } - env->ReleaseShortArrayElements((jshortArray)objArray, elems, 0); -#endif + for (jsize i = 0; i < arraySize; i++) { + result->Set(i, Nan::New(elems[i])); } - break; + env->ReleaseShortArrayElements((jshortArray)objArray, elems, 0); +#endif + } break; - case TYPE_DOUBLE: - { - jdouble* elems = env->GetDoubleArrayElements((jdoubleArray)objArray, 0); + case TYPE_DOUBLE: { + jdouble *elems = env->GetDoubleArrayElements((jdoubleArray)objArray, 0); #if (NODE_VERSION_AT_LEAST(4, 0, 0)) - size_t byteLength = arraySize * 8; - v8::Local ab = newArrayBuffer(elems, byteLength); - env->ReleaseDoubleArrayElements((jdoubleArray)objArray, elems, 0); - return v8::Float64Array::New(ab, 0, arraySize); + size_t byteLength = arraySize * 8; + v8::Local ab = newArrayBuffer(elems, byteLength); + env->ReleaseDoubleArrayElements((jdoubleArray)objArray, elems, 0); + return v8::Float64Array::New(ab, 0, arraySize); #else - for(jsize i=0; iSet(i, Nan::New(elems[i])); - } - env->ReleaseDoubleArrayElements((jdoubleArray)objArray, elems, 0); -#endif + for (jsize i = 0; i < arraySize; i++) { + result->Set(i, Nan::New(elems[i])); } - break; + env->ReleaseDoubleArrayElements((jdoubleArray)objArray, elems, 0); +#endif + } break; - case TYPE_FLOAT: - { - jfloat* elems = env->GetFloatArrayElements((jfloatArray)objArray, 0); + case TYPE_FLOAT: { + jfloat *elems = env->GetFloatArrayElements((jfloatArray)objArray, 0); #if (NODE_VERSION_AT_LEAST(4, 0, 0)) - size_t byteLength = arraySize * 4; - v8::Local ab = newArrayBuffer(elems, byteLength); - env->ReleaseFloatArrayElements((jfloatArray)objArray, elems, 0); - return v8::Float32Array::New(ab, 0, arraySize); + size_t byteLength = arraySize * 4; + v8::Local ab = newArrayBuffer(elems, byteLength); + env->ReleaseFloatArrayElements((jfloatArray)objArray, elems, 0); + return v8::Float32Array::New(ab, 0, arraySize); #else - for(jsize i=0; iSet(i, Nan::New(elems[i])); - } - env->ReleaseFloatArrayElements((jfloatArray)objArray, elems, 0); -#endif + for (jsize i = 0; i < arraySize; i++) { + result->Set(i, Nan::New(elems[i])); } - break; - - case TYPE_LONG: - { - jlong* elems = env->GetLongArrayElements((jlongArray)objArray, 0); - for(jsize i=0; iSet(Nan::GetCurrentContext(), i, JavaObject::New(java, obj)))) { - return v8::Exception::Error(Nan::New("could not set array element").ToLocalChecked()); - } + env->ReleaseFloatArrayElements((jfloatArray)objArray, elems, 0); +#endif + } break; + + case TYPE_LONG: { + jlong *elems = env->GetLongArrayElements((jlongArray)objArray, 0); + for (jsize i = 0; i < arraySize; i++) { + jobject obj = longToJavaLongObj(env, elems[i]); + if (hasSetFailed(result->Set(Nan::GetCurrentContext(), i, JavaObject::New(java, obj)))) { + return v8::Exception::Error(Nan::New("could not set array element").ToLocalChecked()); } - env->ReleaseLongArrayElements((jlongArray)objArray, elems, 0); } - break; + env->ReleaseLongArrayElements((jlongArray)objArray, elems, 0); + } break; default: - for(jsize i=0; iGetObjectArrayElement(objArray, i); - v8::Local item = javaToV8(java, env, obj); - if(hasSetFailed(result->Set(Nan::GetCurrentContext(), i, item))) { - return v8::Exception::Error(Nan::New("could not set array element").ToLocalChecked()); - } + for (jsize i = 0; i < arraySize; i++) { + jobject obj = env->GetObjectArrayElement(objArray, i); + v8::Local item = javaToV8(java, env, obj); + if (hasSetFailed(result->Set(Nan::GetCurrentContext(), i, item))) { + return v8::Exception::Error(Nan::New("could not set array element").ToLocalChecked()); + } } break; } @@ -671,113 +660,104 @@ v8::Local javaArrayToV8(Java* java, JNIEnv* env, jobjectArray objArra return result; } -v8::Local javaToV8(Java* java, JNIEnv* env, jobject obj) { - return javaToV8(java, env, obj, NULL); -} +v8::Local javaToV8(Java *java, JNIEnv *env, jobject obj) { return javaToV8(java, env, obj, NULL); } -v8::Local javaToV8(Java* java, JNIEnv* env, jobject obj, DynamicProxyData* dynamicProxyData) { - if(obj == NULL) { +v8::Local javaToV8(Java *java, JNIEnv *env, jobject obj, DynamicProxyData *dynamicProxyData) { + if (obj == NULL) { return Nan::Null(); } jclass objClazz = env->GetObjectClass(obj); jvalueType resultType = javaGetType(env, objClazz); - //printf("javaToV8: %d %s\n", resultType, javaObjectToString(env, obj).c_str()); + // printf("javaToV8: %d %s\n", resultType, javaObjectToString(env, obj).c_str()); - switch(resultType) { - case TYPE_ARRAY: - { - v8::Local result = javaArrayToV8(java, env, (jobjectArray)obj); - return result; - } - case TYPE_VOID: - return Nan::Undefined(); - case TYPE_CHAR: - { - jclass charClazz = env->FindClass("java/lang/Character"); - jmethodID char_charValue = env->GetMethodID(charClazz, "charValue", "()C"); - jchar c = env->CallCharMethod(obj, char_charValue); - checkJavaException(env); - return javaCharToV8String(c); - } - case TYPE_BOOLEAN: - { - jclass booleanClazz = env->FindClass("java/lang/Boolean"); - jmethodID boolean_booleanValue = env->GetMethodID(booleanClazz, "booleanValue", "()Z"); - bool result = env->CallBooleanMethod(obj, boolean_booleanValue); - assertNoException(env); - return Nan::New(result); - } - case TYPE_BYTE: - { - jclass byteClazz = env->FindClass("java/lang/Byte"); - jmethodID byte_byteValue = env->GetMethodID(byteClazz, "byteValue", "()B"); - jbyte result = env->CallByteMethod(obj, byte_byteValue); - checkJavaException(env); - return Nan::New(result); - } - case TYPE_LONG: - { - jclass longClazz = env->FindClass("java/lang/Long"); - jmethodID long_longValue = env->GetMethodID(longClazz, "longValue", "()J"); - jlong result = env->CallLongMethod(obj, long_longValue); - checkJavaException(env); - std::string strValue = javaObjectToString(env, obj); - v8::Local v8Result = Nan::New((double)result); - v8::NumberObject* v8ResultNumberObject = v8::NumberObject::Cast(*v8Result); - if(hasSetFailed(v8ResultNumberObject->Set(Nan::GetCurrentContext(), Nan::New("longValue").ToLocalChecked(), Nan::New(strValue.c_str()).ToLocalChecked()))) { - return v8::Exception::Error(Nan::New("could not set longValue").ToLocalChecked()); - } - SetHiddenValue(v8ResultNumberObject, Nan::New(V8_HIDDEN_MARKER_JAVA_LONG).ToLocalChecked(), Nan::New(true)); - return v8Result; - } - case TYPE_INT: - { - jclass integerClazz = env->FindClass("java/lang/Integer"); - jmethodID integer_intValue = env->GetMethodID(integerClazz, "intValue", "()I"); - jint result = env->CallIntMethod(obj, integer_intValue); - checkJavaException(env); - // <-- use the Int32 factory, not the generic Integer one - return Nan::New(static_cast(result)); - } - case TYPE_SHORT: - { - jclass shortClazz = env->FindClass("java/lang/Short"); - jmethodID short_shortValue = env->GetMethodID(shortClazz, "shortValue", "()S"); - jshort result = env->CallShortMethod(obj, short_shortValue); - assertNoException(env); - return Nan::New(result); - } - case TYPE_DOUBLE: - { - jclass doubleClazz = env->FindClass("java/lang/Double"); - jmethodID double_doubleValue = env->GetMethodID(doubleClazz, "doubleValue", "()D"); - jdouble result = env->CallDoubleMethod(obj, double_doubleValue); - checkJavaException(env); - return Nan::New(result); - } - case TYPE_FLOAT: - { - jclass floatClazz = env->FindClass("java/lang/Float"); - jmethodID float_floatValue = env->GetMethodID(floatClazz, "floatValue", "()F"); - jfloat result = env->CallFloatMethod(obj, float_floatValue); - assertNoException(env); - return Nan::New(result); - } - case TYPE_STRING: - { - std::string str = javaObjectToString(env, obj); - return Nan::New(str.c_str(), str.length()).ToLocalChecked(); - } - case TYPE_OBJECT: - if (dynamicProxyData != NULL) { - return JavaProxyObject::New(java, obj, dynamicProxyData); - } - return JavaObject::New(java, obj); - default: - printf("javaToV8: unhandled type: 0x%03x\n", resultType); - return JavaObject::New(java, obj); + switch (resultType) { + case TYPE_ARRAY: { + v8::Local result = javaArrayToV8(java, env, (jobjectArray)obj); + return result; + } + case TYPE_VOID: + return Nan::Undefined(); + case TYPE_CHAR: { + jclass charClazz = env->FindClass("java/lang/Character"); + jmethodID char_charValue = env->GetMethodID(charClazz, "charValue", "()C"); + jchar c = env->CallCharMethod(obj, char_charValue); + checkJavaException(env); + return javaCharToV8String(c); + } + case TYPE_BOOLEAN: { + jclass booleanClazz = env->FindClass("java/lang/Boolean"); + jmethodID boolean_booleanValue = env->GetMethodID(booleanClazz, "booleanValue", "()Z"); + bool result = env->CallBooleanMethod(obj, boolean_booleanValue); + assertNoException(env); + return Nan::New(result); + } + case TYPE_BYTE: { + jclass byteClazz = env->FindClass("java/lang/Byte"); + jmethodID byte_byteValue = env->GetMethodID(byteClazz, "byteValue", "()B"); + jbyte result = env->CallByteMethod(obj, byte_byteValue); + checkJavaException(env); + return Nan::New(result); + } + case TYPE_LONG: { + jclass longClazz = env->FindClass("java/lang/Long"); + jmethodID long_longValue = env->GetMethodID(longClazz, "longValue", "()J"); + jlong result = env->CallLongMethod(obj, long_longValue); + checkJavaException(env); + std::string strValue = javaObjectToString(env, obj); + v8::Local v8Result = Nan::New((double)result); + v8::NumberObject *v8ResultNumberObject = v8::NumberObject::Cast(*v8Result); + if (hasSetFailed(v8ResultNumberObject->Set(Nan::GetCurrentContext(), + Nan::New("longValue").ToLocalChecked(), + Nan::New(strValue.c_str()).ToLocalChecked()))) { + return v8::Exception::Error(Nan::New("could not set longValue").ToLocalChecked()); + } + SetHiddenValue(v8ResultNumberObject, Nan::New(V8_HIDDEN_MARKER_JAVA_LONG).ToLocalChecked(), + Nan::New(true)); + return v8Result; + } + case TYPE_INT: { + jclass integerClazz = env->FindClass("java/lang/Integer"); + jmethodID integer_intValue = env->GetMethodID(integerClazz, "intValue", "()I"); + jint result = env->CallIntMethod(obj, integer_intValue); + checkJavaException(env); + // <-- use the Int32 factory, not the generic Integer one + return Nan::New(static_cast(result)); + } + case TYPE_SHORT: { + jclass shortClazz = env->FindClass("java/lang/Short"); + jmethodID short_shortValue = env->GetMethodID(shortClazz, "shortValue", "()S"); + jshort result = env->CallShortMethod(obj, short_shortValue); + assertNoException(env); + return Nan::New(result); + } + case TYPE_DOUBLE: { + jclass doubleClazz = env->FindClass("java/lang/Double"); + jmethodID double_doubleValue = env->GetMethodID(doubleClazz, "doubleValue", "()D"); + jdouble result = env->CallDoubleMethod(obj, double_doubleValue); + checkJavaException(env); + return Nan::New(result); + } + case TYPE_FLOAT: { + jclass floatClazz = env->FindClass("java/lang/Float"); + jmethodID float_floatValue = env->GetMethodID(floatClazz, "floatValue", "()F"); + jfloat result = env->CallFloatMethod(obj, float_floatValue); + assertNoException(env); + return Nan::New(result); + } + case TYPE_STRING: { + std::string str = javaObjectToString(env, obj); + return Nan::New(str.c_str(), str.length()).ToLocalChecked(); + } + case TYPE_OBJECT: + if (dynamicProxyData != NULL) { + return JavaProxyObject::New(java, obj, dynamicProxyData); + } + return JavaObject::New(java, obj); + default: + printf("javaToV8: unhandled type: 0x%03x\n", resultType); + return JavaObject::New(java, obj); } return Nan::Undefined(); @@ -787,9 +767,9 @@ jobjectArray javaObjectArrayToClasses(JNIEnv *env, jobjectArray objs) { jclass clazzClazz = env->FindClass("java/lang/Class"); jsize objsLength = env->GetArrayLength(objs); jobjectArray results = env->NewObjectArray(objsLength, clazzClazz, NULL); - for(jsize i=0; iGetObjectArrayElement(objs, i); - if(elem == NULL) { + if (elem == NULL) { env->SetObjectArrayElement(results, i, NULL); } else { jclass objClazz = env->GetObjectClass(elem); @@ -800,29 +780,31 @@ jobjectArray javaObjectArrayToClasses(JNIEnv *env, jobjectArray objs) { return results; } -jobject javaFindMethod(JNIEnv *env, jclass clazz, const std::string& methodName, jobjectArray methodArgs) { +jobject javaFindMethod(JNIEnv *env, jclass clazz, const std::string &methodName, jobjectArray methodArgs) { std::string::size_type parenLoc = methodName.find("("); - if(parenLoc != std::string::npos) { + if (parenLoc != std::string::npos) { jobject method = NULL; std::string methodSig = methodName.substr(parenLoc); std::string methodRealName = methodName.substr(0, parenLoc); jmethodID methodID = env->GetStaticMethodID(clazz, methodRealName.c_str(), methodSig.c_str()); - env->ExceptionClear(); // If GetStaticMethodID can't find the method it throws an exception and we need to just return NULL - if(methodID != 0) { + env->ExceptionClear(); // If GetStaticMethodID can't find the method it throws an exception and we need to just + // return NULL + if (methodID != 0) { method = env->ToReflectedMethod(clazz, methodID, true); } else { methodID = env->GetMethodID(clazz, methodRealName.c_str(), methodSig.c_str()); - env->ExceptionClear(); // If GetMethodID can't find the method it throws an exception and we need to just return NULL - if(methodID != 0) { + env->ExceptionClear(); // If GetMethodID can't find the method it throws an exception and we need to just return + // NULL + if (methodID != 0) { method = env->ToReflectedMethod(clazz, methodID, true); } } // cast arguments - if(method != NULL) { + if (method != NULL) { javaCastArguments(env, methodArgs, method); - if(env->ExceptionCheck()) { + if (env->ExceptionCheck()) { env->ExceptionClear(); method = NULL; } @@ -831,11 +813,14 @@ jobject javaFindMethod(JNIEnv *env, jclass clazz, const std::string& methodName, return method; } else { jclass methodUtilsClazz = env->FindClass("nodejava/org/apache/commons/lang3/reflect/MethodUtils"); - jmethodID methodUtils_getMatchingAccessibleMethod = env->GetStaticMethodID(methodUtilsClazz, "getMatchingAccessibleMethod", "(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;"); + jmethodID methodUtils_getMatchingAccessibleMethod = + env->GetStaticMethodID(methodUtilsClazz, "getMatchingAccessibleMethod", + "(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;"); const char *methodNameCStr = methodName.c_str(); jstring methodNameJavaStr = env->NewStringUTF(methodNameCStr); jobjectArray methodArgClasses = javaObjectArrayToClasses(env, methodArgs); - jobject method = env->CallStaticObjectMethod(methodUtilsClazz, methodUtils_getMatchingAccessibleMethod, clazz, methodNameJavaStr, methodArgClasses); + jobject method = env->CallStaticObjectMethod(methodUtilsClazz, methodUtils_getMatchingAccessibleMethod, clazz, + methodNameJavaStr, methodArgClasses); checkJavaException(env); return method; } @@ -843,15 +828,19 @@ jobject javaFindMethod(JNIEnv *env, jclass clazz, const std::string& methodName, void javaCastArguments(JNIEnv *env, jobjectArray methodArgs, jobject method) { jclass castingUtilsClazz = env->FindClass("node/CastingUtils"); - jmethodID castingUtilsClazz_cast = env->GetStaticMethodID(castingUtilsClazz, "cast", "(Ljava/lang/reflect/Method;[Ljava/lang/Object;)V"); + jmethodID castingUtilsClazz_cast = + env->GetStaticMethodID(castingUtilsClazz, "cast", "(Ljava/lang/reflect/Method;[Ljava/lang/Object;)V"); env->CallStaticObjectMethod(castingUtilsClazz, castingUtilsClazz_cast, method, methodArgs); } jobject javaFindConstructor(JNIEnv *env, jclass clazz, jobjectArray methodArgs) { jclass constructorUtilsClazz = env->FindClass("nodejava/org/apache/commons/lang3/reflect/ConstructorUtils"); - jmethodID constructorUtils_getMatchingAccessibleConstructor = env->GetStaticMethodID(constructorUtilsClazz, "getMatchingAccessibleConstructor", "(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;"); + jmethodID constructorUtils_getMatchingAccessibleConstructor = + env->GetStaticMethodID(constructorUtilsClazz, "getMatchingAccessibleConstructor", + "(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;"); jobjectArray methodArgClasses = javaObjectArrayToClasses(env, methodArgs); - jobject method = env->CallStaticObjectMethod(constructorUtilsClazz, constructorUtils_getMatchingAccessibleConstructor, clazz, methodArgClasses); + jobject method = env->CallStaticObjectMethod(constructorUtilsClazz, constructorUtils_getMatchingAccessibleConstructor, + clazz, methodArgClasses); assertNoException(env); return method; } @@ -863,16 +852,19 @@ jobject longToJavaLongObj(JNIEnv *env, jlong val) { return result; } -int dynamicProxyDataVerify(DynamicProxyData* data) { - if(data->markerStart == DYNAMIC_PROXY_DATA_MARKER_START && data->markerEnd == DYNAMIC_PROXY_DATA_MARKER_END) { +int dynamicProxyDataVerify(DynamicProxyData *data) { + if (data->markerStart == DYNAMIC_PROXY_DATA_MARKER_START && data->markerEnd == DYNAMIC_PROXY_DATA_MARKER_END) { return 1; } - printf("*** ERROR: Lost reference to the dynamic proxy. You must maintain a reference in javascript land using ref() and unref(). (%p) ***\n", data); + printf("*** ERROR: Lost reference to the dynamic proxy. You must maintain a reference in javascript land using ref() " + "and unref(). (%p) ***\n", + data); return 0; } -std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string& methodNameSig, bool constructor, Nan::NAN_METHOD_ARGS_TYPE args, int argStart, int argEnd) { +std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string &methodNameSig, bool constructor, + Nan::NAN_METHOD_ARGS_TYPE args, int argStart, int argEnd) { std::ostringstream startOfMessage; std::ostringstream msg; std::string methodName = methodNameSig.substr(0, methodNameSig.find('(')); @@ -886,12 +878,12 @@ std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string& startOfMessage << "Could not find method \"" << methodName.c_str() << "("; } - for(int i=argStart; iGetObjectClass(val); @@ -902,7 +894,7 @@ std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string& } } - startOfMessage << ")\" on class \""<< javaObjectToString(env, clazz).c_str() << "\"."; + startOfMessage << ")\" on class \"" << javaObjectToString(env, clazz).c_str() << "\"."; msg << startOfMessage.str() << " Possible matches:\n"; @@ -910,24 +902,24 @@ std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string& jmethodID member_getName = env->GetMethodID(memberClazz, "getName", "()Ljava/lang/String;"); std::list methods; - if(constructor) { + if (constructor) { javaReflectionGetConstructors(env, clazz, &methods); } else { javaReflectionGetMethods(env, clazz, &methods, true); } int count = 0; - for(std::list::iterator it = methods.begin(); it != methods.end(); ++it) { + for (std::list::iterator it = methods.begin(); it != methods.end(); ++it) { jstring methodNameTestJava = (jstring)env->CallObjectMethod(*it, member_getName); assertNoException(env); std::string methodNameTest = javaToString(env, methodNameTestJava); - if(methodNameTest == methodName) { + if (methodNameTest == methodName) { msg << " " << javaObjectToString(env, *it).c_str() << "\n"; count++; } } - if(count == 0) { + if (count == 0) { std::ostringstream noMethodsMsg; noMethodsMsg << startOfMessage.str() << " No methods with that name."; return noMethodsMsg.str(); @@ -936,8 +928,8 @@ std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string& return msg.str(); } -void unref(DynamicProxyData* dynamicProxyData) { - if(!dynamicProxyDataVerify(dynamicProxyData)) { +void unref(DynamicProxyData *dynamicProxyData) { + if (!dynamicProxyDataVerify(dynamicProxyData)) { return; } dynamicProxyData->jsObject.Reset(); @@ -949,7 +941,8 @@ void unref(DynamicProxyData* dynamicProxyData) { jarray javaGetArgsForMethod(JNIEnv *env, jobject method, jarray args) { jclass varArgsClazz = env->FindClass("node/VarArgs"); - jmethodID method_getVarArgs = env->GetStaticMethodID(varArgsClazz, "getVarArgs", "(Ljava/lang/reflect/Method;[Ljava/lang/Object;)[Ljava/lang/Object;"); + jmethodID method_getVarArgs = env->GetStaticMethodID( + varArgsClazz, "getVarArgs", "(Ljava/lang/reflect/Method;[Ljava/lang/Object;)[Ljava/lang/Object;"); jarray result = (jarray)env->CallStaticObjectMethod(varArgsClazz, method_getVarArgs, method, args); checkJavaException(env); return result; @@ -957,55 +950,56 @@ jarray javaGetArgsForMethod(JNIEnv *env, jobject method, jarray args) { jarray javaGetArgsForConstructor(JNIEnv *env, jobject method, jarray args) { jclass varArgsClazz = env->FindClass("node/VarArgs"); - jmethodID method_getVarArgs = env->GetStaticMethodID(varArgsClazz, "getVarArgs", "(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)[Ljava/lang/Object;"); + jmethodID method_getVarArgs = env->GetStaticMethodID( + varArgsClazz, "getVarArgs", "(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)[Ljava/lang/Object;"); jarray result = (jarray)env->CallStaticObjectMethod(varArgsClazz, method_getVarArgs, method, args); checkJavaException(env); return result; } #if (NODE_MODULE_VERSION > 48) - // The two methods below were copied from - // https://github.com/electron/electron?branch=master&filepath=atom/common/api/atom_api_v8_util.cc - // Copyright (c) 2013 GitHub, Inc. - // Use of this source code is governed by the MIT license. - - v8::Local GetHiddenValue(v8::Local object, v8::Local key) { - v8::Local context = v8::Isolate::GetCurrent()->GetCurrentContext(); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), key); - v8::Local value; - v8::Maybe result = object->HasPrivate(context, privateKey); - if (!(result.IsJust() && result.FromJust())) - return v8::Local(); - if (object->GetPrivate(context, privateKey).ToLocal(&value)) - return value; +// The two methods below were copied from +// https://github.com/electron/electron?branch=master&filepath=atom/common/api/atom_api_v8_util.cc +// Copyright (c) 2013 GitHub, Inc. +// Use of this source code is governed by the MIT license. + +v8::Local GetHiddenValue(v8::Local object, v8::Local key) { + v8::Local context = v8::Isolate::GetCurrent()->GetCurrentContext(); + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), key); + v8::Local value; + v8::Maybe result = object->HasPrivate(context, privateKey); + if (!(result.IsJust() && result.FromJust())) return v8::Local(); - } + if (object->GetPrivate(context, privateKey).ToLocal(&value)) + return value; + return v8::Local(); +} - void SetHiddenValue(v8::NumberObject* object, v8::Local key, v8::Local value) { - if (value.IsEmpty()) - return; - v8::Local context = v8::Isolate::GetCurrent()->GetCurrentContext(); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), key); - object->SetPrivate(context, privateKey, value); - } +void SetHiddenValue(v8::NumberObject *object, v8::Local key, v8::Local value) { + if (value.IsEmpty()) + return; + v8::Local context = v8::Isolate::GetCurrent()->GetCurrentContext(); + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), key); + object->SetPrivate(context, privateKey, value); +} - void SetHiddenValue(v8::Local object, v8::Local key, v8::Local value) { - if (value.IsEmpty()) - return; - v8::Local context = v8::Isolate::GetCurrent()->GetCurrentContext(); - v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), key); - object->SetPrivate(context, privateKey, value); - } +void SetHiddenValue(v8::Local object, v8::Local key, v8::Local value) { + if (value.IsEmpty()) + return; + v8::Local context = v8::Isolate::GetCurrent()->GetCurrentContext(); + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), key); + object->SetPrivate(context, privateKey, value); +} #else - v8::Local GetHiddenValue(v8::Local object, v8::Local key) { - return object->GetHiddenValue(key); - } +v8::Local GetHiddenValue(v8::Local object, v8::Local key) { + return object->GetHiddenValue(key); +} - void SetHiddenValue(v8::NumberObject* object, v8::Local key, v8::Local value) { - object->SetHiddenValue(key, value); - } +void SetHiddenValue(v8::NumberObject *object, v8::Local key, v8::Local value) { + object->SetHiddenValue(key, value); +} - void SetHiddenValue(v8::Local object, v8::Local key, v8::Local value) { - object->SetHiddenValue(key, value); - } +void SetHiddenValue(v8::Local object, v8::Local key, v8::Local value) { + object->SetHiddenValue(key, value); +} #endif diff --git a/src/utils.h b/src/utils.h index 6b96b60..b3ad608 100644 --- a/src/utils.h +++ b/src/utils.h @@ -3,37 +3,37 @@ #define _utils_h_ #define BUILDING_NODE_EXTENSION 1 -#include #include #include -#include +#include #include #include -#include +#include +#include class Java; -#define V8_HIDDEN_MARKER_JAVA_LONG "__isJavaLong" +#define V8_HIDDEN_MARKER_JAVA_LONG "__isJavaLong" #define V8_HIDDEN_MARKER_JAVA_OBJECT "__isJavaObject" typedef enum _jvalueType { - TYPE_VOID = 1, - TYPE_INT = 2, - TYPE_LONG = 3, - TYPE_OBJECT = 4, - TYPE_STRING = 5, + TYPE_VOID = 1, + TYPE_INT = 2, + TYPE_LONG = 3, + TYPE_OBJECT = 4, + TYPE_STRING = 5, TYPE_BOOLEAN = 6, - TYPE_SHORT = 7, - TYPE_BYTE = 8, - TYPE_DOUBLE = 9, - TYPE_FLOAT = 10, - TYPE_ARRAY = 11, - TYPE_CHAR = 12 + TYPE_SHORT = 7, + TYPE_BYTE = 8, + TYPE_DOUBLE = 9, + TYPE_FLOAT = 10, + TYPE_ARRAY = 11, + TYPE_CHAR = 12 } jvalueType; struct DynamicProxyData { unsigned int markerStart; - Java* java; + Java *java; std::string interfaceName; Nan::Persistent functions; Nan::Persistent jsObject; @@ -51,116 +51,117 @@ struct DynamicProxyJsCallData { }; #define DYNAMIC_PROXY_DATA_MARKER_START 0x12345678 -#define DYNAMIC_PROXY_DATA_MARKER_END 0x87654321 +#define DYNAMIC_PROXY_DATA_MARKER_END 0x87654321 -int dynamicProxyDataVerify(DynamicProxyData* data); +int dynamicProxyDataVerify(DynamicProxyData *data); -void javaReflectionGetMethods(JNIEnv *env, jclass clazz, std::list* methods, bool includeStatic); -void javaReflectionGetConstructors(JNIEnv *env, jclass clazz, std::list* methods); -void javaReflectionGetFields(JNIEnv *env, jclass clazz, std::list* fields); +void javaReflectionGetMethods(JNIEnv *env, jclass clazz, std::list *methods, bool includeStatic); +void javaReflectionGetConstructors(JNIEnv *env, jclass clazz, std::list *methods); +void javaReflectionGetFields(JNIEnv *env, jclass clazz, std::list *fields); std::string javaToString(JNIEnv *env, jstring str); std::string javaObjectToString(JNIEnv *env, jobject obj); std::string javaArrayToString(JNIEnv *env, jobjectArray arr); std::string javaMethodCallToString(JNIEnv *env, jobject obj, jmethodID methodId, jarray args); -JNIEnv* javaGetEnv(JavaVM* jvm, jobject classLoader); +JNIEnv *javaGetEnv(JavaVM *jvm, jobject classLoader); jobject getSystemClassLoader(JNIEnv *env); jvalueType javaGetArrayComponentType(JNIEnv *env, jobjectArray array); jvalueType javaGetType(JNIEnv *env, jclass type); -jobjectArray v8ToJava(JNIEnv* env, Nan::NAN_METHOD_ARGS_TYPE args, int start, int end); -jobject v8ToJava(JNIEnv* env, v8::Local arg); -v8::Local javaExceptionToV8(Java* java, JNIEnv* env, const std::string& alternateMessage); -v8::Local javaExceptionToV8(Java* java, JNIEnv* env, jthrowable ex, const std::string& alternateMessage); -std::string javaExceptionToString(JNIEnv* env, jthrowable ex); -void checkJavaException(JNIEnv* env); -v8::Local javaArrayToV8(Java* java, JNIEnv* env, jobjectArray objArray); -v8::Local javaToV8(Java* java, JNIEnv* env, jobject obj); -v8::Local javaToV8(Java* java, JNIEnv* env, jobject obj, DynamicProxyData* dynamicProxyData); +jobjectArray v8ToJava(JNIEnv *env, Nan::NAN_METHOD_ARGS_TYPE args, int start, int end); +jobject v8ToJava(JNIEnv *env, v8::Local arg); +v8::Local javaExceptionToV8(Java *java, JNIEnv *env, const std::string &alternateMessage); +v8::Local javaExceptionToV8(Java *java, JNIEnv *env, jthrowable ex, const std::string &alternateMessage); +std::string javaExceptionToString(JNIEnv *env, jthrowable ex); +void checkJavaException(JNIEnv *env); +v8::Local javaArrayToV8(Java *java, JNIEnv *env, jobjectArray objArray); +v8::Local javaToV8(Java *java, JNIEnv *env, jobject obj); +v8::Local javaToV8(Java *java, JNIEnv *env, jobject obj, DynamicProxyData *dynamicProxyData); jobjectArray javaObjectArrayToClasses(JNIEnv *env, jobjectArray objs); jobject longToJavaLongObj(JNIEnv *env, jlong l); jarray javaGetArgsForMethod(JNIEnv *env, jobject method, jarray args); jarray javaGetArgsForConstructor(JNIEnv *env, jobject method, jarray args); -jclass javaFindClass(JNIEnv* env, const std::string& className); -jobject javaFindField(JNIEnv* env, jclass clazz, const std::string& fieldName); -jobject javaFindMethod(JNIEnv *env, jclass clazz, const std::string& methodName, jobjectArray methodArgs); +jclass javaFindClass(JNIEnv *env, const std::string &className); +jobject javaFindField(JNIEnv *env, jclass clazz, const std::string &fieldName); +jobject javaFindMethod(JNIEnv *env, jclass clazz, const std::string &methodName, jobjectArray methodArgs); jobject javaFindConstructor(JNIEnv *env, jclass clazz, jobjectArray methodArgs); void javaCastArguments(JNIEnv *env, jobjectArray methodArgs, jobject method); // TODO remove these functions after node nan gets updated v8::Local GetHiddenValue(v8::Local object, v8::Local key); void SetHiddenValue(v8::Local object, v8::Local key, v8::Local value); -void SetHiddenValue(v8::NumberObject*, v8::Local key, v8::Local value); +void SetHiddenValue(v8::NumberObject *, v8::Local key, v8::Local value); -#define assertNoException(env) \ - if (env->ExceptionCheck()) { \ - env->ExceptionDescribe(); \ - assert(false); \ +#define assertNoException(env) \ + if (env->ExceptionCheck()) { \ + env->ExceptionDescribe(); \ + assert(false); \ } -std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string& methodNameSig, bool constructor, Nan::NAN_METHOD_ARGS_TYPE args, int argStart, int argEnd); +std::string methodNotFoundToString(JNIEnv *env, jclass clazz, const std::string &methodNameSig, bool constructor, + Nan::NAN_METHOD_ARGS_TYPE args, int argStart, int argEnd); -void unref(DynamicProxyData* dynamicProxyData); +void unref(DynamicProxyData *dynamicProxyData); #define UNUSED_VARIABLE(var) var = var; -#define ARGS_FRONT_OBJECT(ARGNAME) \ - if(info.Length() < argsStart+1 || !info[argsStart]->IsObject()) { \ - std::ostringstream errStr; \ - errStr << "Argument " << (argsStart+1) << " must be an object"; \ - Nan::ThrowError(Nan::TypeError(errStr.str().c_str())); \ - return; \ - } \ - v8::Local ARGNAME = v8::Local::Cast(info[argsStart]); \ +#define ARGS_FRONT_OBJECT(ARGNAME) \ + if (info.Length() < argsStart + 1 || !info[argsStart]->IsObject()) { \ + std::ostringstream errStr; \ + errStr << "Argument " << (argsStart + 1) << " must be an object"; \ + Nan::ThrowError(Nan::TypeError(errStr.str().c_str())); \ + return; \ + } \ + v8::Local ARGNAME = v8::Local::Cast(info[argsStart]); \ argsStart++; -#define ARGS_FRONT_STRING(ARGNAME) \ - if(info.Length() < argsStart+1 || !info[argsStart]->IsString()) { \ - std::ostringstream errStr; \ - errStr << "Argument " << (argsStart+1) << " must be a string"; \ - Nan::ThrowError(Nan::TypeError(errStr.str().c_str())); \ - return; \ - } \ - v8::Local _##ARGNAME##_obj = v8::Local::Cast(info[argsStart]); \ - Nan::Utf8String _##ARGNAME##_val(_##ARGNAME##_obj); \ - std::string ARGNAME = *_##ARGNAME##_val; \ +#define ARGS_FRONT_STRING(ARGNAME) \ + if (info.Length() < argsStart + 1 || !info[argsStart]->IsString()) { \ + std::ostringstream errStr; \ + errStr << "Argument " << (argsStart + 1) << " must be a string"; \ + Nan::ThrowError(Nan::TypeError(errStr.str().c_str())); \ + return; \ + } \ + v8::Local _##ARGNAME##_obj = v8::Local::Cast(info[argsStart]); \ + Nan::Utf8String _##ARGNAME##_val(_##ARGNAME##_obj); \ + std::string ARGNAME = *_##ARGNAME##_val; \ argsStart++; #define ARGS_FRONT_CLASSNAME() ARGS_FRONT_STRING(className) -#define ARGS_BACK_CALLBACK() \ - bool callbackProvided; \ - v8::Local callback; \ - if(info[info.Length()-1]->IsFunction()) { \ - callback = info[argsEnd-1]; \ - argsEnd--; \ - callbackProvided = true; \ - } else { \ - callback = Nan::Null(); \ - callbackProvided = false; \ +#define ARGS_BACK_CALLBACK() \ + bool callbackProvided; \ + v8::Local callback; \ + if (info[info.Length() - 1]->IsFunction()) { \ + callback = info[argsEnd - 1]; \ + argsEnd--; \ + callbackProvided = true; \ + } else { \ + callback = Nan::Null(); \ + callbackProvided = false; \ } -#define EXCEPTION_CALL_CALLBACK(JAVA, STRBUILDER) \ - std::ostringstream errStr; \ - errStr << STRBUILDER; \ - v8::Local error = javaExceptionToV8(JAVA, env, errStr.str()); \ - v8::Local argv[2]; \ - argv[0] = error; \ - argv[1] = Nan::Undefined(); \ +#define EXCEPTION_CALL_CALLBACK(JAVA, STRBUILDER) \ + std::ostringstream errStr; \ + errStr << STRBUILDER; \ + v8::Local error = javaExceptionToV8(JAVA, env, errStr.str()); \ + v8::Local argv[2]; \ + argv[0] = error; \ + argv[1] = Nan::Undefined(); \ Nan::Call(callback.As(), Nan::GetCurrentContext()->Global(), 2, argv); -#define END_CALLBACK_FUNCTION(MSG) \ - if(callbackProvided) { \ - info.GetReturnValue().SetUndefined(); \ - return; \ - } else { \ - std::ostringstream str; \ - str << MSG; \ - info.GetReturnValue().Set(Nan::New(str.str().c_str()).ToLocalChecked()); \ - return; \ +#define END_CALLBACK_FUNCTION(MSG) \ + if (callbackProvided) { \ + info.GetReturnValue().SetUndefined(); \ + return; \ + } else { \ + std::ostringstream str; \ + str << MSG; \ + info.GetReturnValue().Set(Nan::New(str.str().c_str()).ToLocalChecked()); \ + return; \ } #ifndef UNUSED_VARIABLE - #define UNUSED_VARIABLE(a) a = a; +#define UNUSED_VARIABLE(a) a = a; #endif #endif diff --git a/test/TestLambda.test.js b/test/TestLambda.test.js index 423170b..f2b7b13 100644 --- a/test/TestLambda.test.js +++ b/test/TestLambda.test.js @@ -3,22 +3,21 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Java8', () => { - test('call methods of a class that uses lambda expressions', () => { +describe("Java8", () => { + test("call methods of a class that uses lambda expressions", () => { try { - const TestLambda = java.import('TestLambda'); + const TestLambda = java.import("TestLambda"); const lambda = new TestLambda(); const sum = lambda.testLambdaAdditionSync(23, 42); expect(sum).toBe(65); const diff = lambda.testLambdaSubtractionSync(23, 42); expect(diff).toBe(-19); - } - catch (err) { - const unsupportedVersion = java.instanceOf(err.cause, 'java.lang.UnsupportedClassVersionError'); + } catch (err) { + const unsupportedVersion = java.instanceOf(err.cause, "java.lang.UnsupportedClassVersionError"); if (unsupportedVersion) { - console.log('JRE 1.8 not available'); + console.log("JRE 1.8 not available"); } else { - console.error('Java8 test failed with unknown error:', err); + console.error("Java8 test failed with unknown error:", err); throw err; } } diff --git a/test/awt.test.js b/test/awt.test.js index 5d13d78..34d1f00 100644 --- a/test/awt.test.js +++ b/test/awt.test.js @@ -1,15 +1,14 @@ - -import path from 'node:path'; +import path from "node:path"; import { describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; const java = getJava(); -describe('AWT', () => { +describe("AWT", () => { test("calling AWT method (see issue 1)", () => { const headlessVal = java.callStaticMethodSync("java.lang.System", "getProperty", "java.awt.headless"); console.log("java.awt.headless =", headlessVal); - expect(headlessVal).toBe('true'); + expect(headlessVal).toBe("true"); const filename = path.join(path.dirname(__filename), "nodejs.png"); const file = java.newInstanceSync("java.io.File", filename); const image = java.callStaticMethodSync("javax.imageio.ImageIO", "read", file); diff --git a/test/dynamicProxy.test.js b/test/dynamicProxy.test.js index 997a239..aee0543 100644 --- a/test/dynamicProxy.test.js +++ b/test/dynamicProxy.test.js @@ -3,14 +3,14 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Dynamic Proxy', () => { +describe("Dynamic Proxy", () => { test("0 Arguments", () => { let callCount = 0; - const myProxy = java.newProxy('RunInterface$Interface0Arg', { + const myProxy = java.newProxy("RunInterface$Interface0Arg", { run: function () { callCount++; - } + }, }); const runInterface = java.newInstanceSync("RunInterface"); @@ -20,25 +20,25 @@ describe('Dynamic Proxy', () => { }); test("1 Arguments", () => { - let runData = ''; + let runData = ""; - const myProxy = java.newProxy('RunInterface$Interface1Arg', { + const myProxy = java.newProxy("RunInterface$Interface1Arg", { run: function (str) { runData += str; - } + }, }); const runInterface = java.newInstanceSync("RunInterface"); runInterface.run1ArgsSync(myProxy); - expect(runData).toBe('test1test1'); + expect(runData).toBe("test1test1"); }); test("1 Arguments with return data", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { run: function (i) { return i + 1; - } + }, }); const runInterface = java.newInstanceSync("RunInterface"); @@ -48,29 +48,29 @@ describe('Dynamic Proxy', () => { }); test("Listener test", () => { - let runData = ''; + let runData = ""; - const myProxy = java.newProxy('ListenerInterface', { - onEvent: function (list, runtime) { - runData = 'onEvent'; - } + const myProxy = java.newProxy("ListenerInterface", { + onEvent: function (_list, _runtime) { + runData = "onEvent"; + }, }); const listenerTester = java.newInstanceSync("ListenerTester"); listenerTester.setListenerSync(myProxy); listenerTester.raiseEventSync(); - expect(runData).toBe('onEvent'); + expect(runData).toBe("onEvent"); }); test("thread", async () => { await new Promise((resolve, reject) => { let callCount = 0; - const myProxy = java.newProxy('java.lang.Runnable', { + const myProxy = java.newProxy("java.lang.Runnable", { run: function () { callCount++; - } + }, }); const thread = java.newInstanceSync("java.lang.Thread", myProxy); @@ -94,11 +94,11 @@ describe('Dynamic Proxy', () => { }); test("thread issue #143", async () => { - await new Promise(resolve => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + await new Promise((resolve) => { + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { run: function (i) { return i - 1; - } + }, }); const runInterface = java.newInstanceSync("RunInterface"); @@ -110,8 +110,7 @@ describe('Dynamic Proxy', () => { }); test("java equals()", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - }); + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", {}); const runInterface = java.newInstanceSync("RunInterface"); const result = runInterface.runEqualsSync(myProxy); @@ -120,8 +119,7 @@ describe('Dynamic Proxy', () => { }); test("java equals() same instance", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - }); + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", {}); const runInterface = java.newInstanceSync("RunInterface"); runInterface.setInstanceSync(myProxy); @@ -131,8 +129,8 @@ describe('Dynamic Proxy', () => { }); test("java equals() different instance", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', {}); - const myProxy2 = java.newProxy('RunInterface$InterfaceWithReturn', {}); + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", {}); + const myProxy2 = java.newProxy("RunInterface$InterfaceWithReturn", {}); const runInterface = java.newInstanceSync("RunInterface"); runInterface.setInstanceSync(myProxy); @@ -142,10 +140,10 @@ describe('Dynamic Proxy', () => { }); test("js equals()", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - equals: function (obj) { + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { + equals: function (_obj) { return true; - } + }, }); const runInterface = java.newInstanceSync("RunInterface"); @@ -155,8 +153,7 @@ describe('Dynamic Proxy', () => { }); test("java hashCode()", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - }); + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", {}); const runInterface = java.newInstanceSync("RunInterface"); const result = runInterface.runHashCodeSync(myProxy); @@ -168,10 +165,10 @@ describe('Dynamic Proxy', () => { }); test("js hashCode()", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { hashCode: function () { return 1234; - } + }, }); const runInterface = java.newInstanceSync("RunInterface"); @@ -181,7 +178,7 @@ describe('Dynamic Proxy', () => { }); test("java toString()", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', {}); + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", {}); const runInterface = java.newInstanceSync("RunInterface"); const result = runInterface.runToStringSync(myProxy); @@ -190,10 +187,10 @@ describe('Dynamic Proxy', () => { }); test("js toString()", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - toString: function () { + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { + toString: () => { return "myRunInterface"; - } + }, }); const runInterface = java.newInstanceSync("RunInterface"); @@ -203,10 +200,10 @@ describe('Dynamic Proxy', () => { }); test("js string error", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { - throw 'myError'; - } + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { + run: (_i) => { + throw "myError"; + }, }); const runInterface = java.newInstanceSync("RunInterface"); @@ -220,10 +217,10 @@ describe('Dynamic Proxy', () => { }); test("js Error", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { - throw new Error('newError'); - } + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { + run: function (_i) { + throw new Error("newError"); + }, }); const runInterface = java.newInstanceSync("RunInterface"); @@ -237,10 +234,10 @@ describe('Dynamic Proxy', () => { }); test("invocationHandler", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { - run: function (i) { + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { + run: (i) => { return i + 2; - } + }, }); const result = myProxy.invocationHandler.run(42); @@ -249,10 +246,10 @@ describe('Dynamic Proxy', () => { }); test("unref", () => { - const myProxy = java.newProxy('RunInterface$InterfaceWithReturn', { + const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { run: function (i) { return i + 1; - } + }, }); myProxy.unref(); diff --git a/test/importClass.test.js b/test/importClass.test.js index 7246671..63e6448 100644 --- a/test/importClass.test.js +++ b/test/importClass.test.js @@ -3,19 +3,19 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Import Class', () => { +describe("Import Class", () => { afterEach(() => { java.setStaticFieldValue("Test", "staticFieldInt", 42); }); test("import", async () => { - const Test = java.import('Test'); + const Test = java.import("Test"); expect(Test.staticFieldInt).toBe(42); Test.staticFieldInt = 200; expect(Test.staticFieldInt).toBe(200); expect(Test.staticMethodSync(99)).toBe(100); - await new Promise(resolve => { + await new Promise((resolve) => { Test.staticMethod(99, (err, result) => { expect(err).toBeFalsy(); expect(result).toBe(100); @@ -28,23 +28,23 @@ describe('Import Class', () => { }); test("import TestEnum with unsable name", () => { - const TestEnum = java.import('Test$Enum'); + const TestEnum = java.import("Test$Enum"); // 'foo' and 'bar' are valid enum names expect(TestEnum.foo.toStringSync()).toBe("foo"); expect(TestEnum.bar.toStringSync()).toBe("bar"); - ['name', 'arguments', 'caller'].forEach(function (prop) { + ["name", "arguments", "caller"].forEach(function (prop) { expect(() => { // The enum also defines 'name', 'caller', and 'attributes', but Javascript prevents us from using them, // since these are unwritable properties of Function. - const x = TestEnum[prop].toStringSync(); - }).toThrow(TypeError) + TestEnum[prop].toStringSync(); + }).toThrow(TypeError); }); }); test("import TestEnum and use alternate name", () => { - const TestEnum = java.import('Test$Enum'); + const TestEnum = java.import("Test$Enum"); // 'foo' and 'bar' are valid enum names expect(TestEnum.foo.toStringSync()).toBe("foo"); diff --git a/test/instanceof.test.js b/test/instanceof.test.js index d04e33c..4f8f3ce 100644 --- a/test/instanceof.test.js +++ b/test/instanceof.test.js @@ -3,7 +3,7 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('instanceOf', () => { +describe("instanceOf", () => { test("working", () => { const subclass = java.newInstanceSync("Test$SubClass"); if (!java.instanceOf(subclass, "Test$SuperClass")) { diff --git a/test/java-ambiguousMethod.test.js b/test/java-ambiguousMethod.test.js index efbdfa0..c1a367c 100644 --- a/test/java-ambiguousMethod.test.js +++ b/test/java-ambiguousMethod.test.js @@ -3,32 +3,32 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Java - Call Ambiguous Method', () => { +describe("Java - Call Ambiguous Method", () => { test("staticMethodAmbiguous (sync) - int passed to double", () => { - const result = java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Double;)I', 1); + const result = java.callStaticMethodSync("Test", "staticMethodAmbiguous(Ljava/lang/Double;)I", 1); expect(result).toBe(1); }); test("staticMethodAmbiguous (sync) - double passed to int", () => { - const result = java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1.1); + const result = java.callStaticMethodSync("Test", "staticMethodAmbiguous(Ljava/lang/Integer;)I", 1.1); expect(result).toBe(2); }); test("staticMethodAmbiguous (sync) - method not found wrong argument type", () => { expect(() => { - java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/String;)I', 1); + java.callStaticMethodSync("Test", "staticMethodAmbiguous(Ljava/lang/String;)I", 1); }).toThrow(); }); test("staticMethodAmbiguous (sync) - method failed because argument count mismatch", () => { expect(() => { - java.callStaticMethodSync('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1, 2); + java.callStaticMethodSync("Test", "staticMethodAmbiguous(Ljava/lang/Integer;)I", 1, 2); }).toThrow(); }); test("staticMethodAmbiguous - int passed to double", async () => { - await new Promise(resolve => { - java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Double;)I', 1, function (err, result) { + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethodAmbiguous(Ljava/lang/Double;)I", 1, function (err, result) { expect(err).toBeFalsy(); expect(result).toBe(1); resolve(); @@ -37,8 +37,8 @@ describe('Java - Call Ambiguous Method', () => { }); test("staticMethodAmbiguous - double passed to int", async () => { - await new Promise(resolve => { - java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1.1, function (err, result) { + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethodAmbiguous(Ljava/lang/Integer;)I", 1.1, function (err, result) { expect(err).toBeFalsy(); expect(result).toBe(2); resolve(); @@ -47,8 +47,8 @@ describe('Java - Call Ambiguous Method', () => { }); test("staticMethodAmbiguous - method not found", async () => { - await new Promise(resolve => { - java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/String;)I', 1, function (err, result) { + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethodAmbiguous(Ljava/lang/String;)I", 1, function (err, result) { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -57,8 +57,8 @@ describe('Java - Call Ambiguous Method', () => { }); test("staticMethodAmbiguous - method argument count mismatch", async () => { - await new Promise(resolve => { - java.callStaticMethod('Test', 'staticMethodAmbiguous(Ljava/lang/Integer;)I', 1, 2, function (err, result) { + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethodAmbiguous(Ljava/lang/Integer;)I", 1, 2, function (err, result) { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -68,27 +68,27 @@ describe('Java - Call Ambiguous Method', () => { test("methodAmbiguous (sync) - int passed to double", () => { const myTest = java.newInstanceSync("Test"); - const result = java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Double;)I', 1); + const result = java.callMethodSync(myTest, "methodAmbiguous(Ljava/lang/Double;)I", 1); expect(result).toBe(1); }); test("methodAmbiguous (sync) - double passed to int", () => { const myTest = java.newInstanceSync("Test"); - const result = java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Integer;)I', 1.1); + const result = java.callMethodSync(myTest, "methodAmbiguous(Ljava/lang/Integer;)I", 1.1); expect(result).toBe(2); }); test("methodAmbiguous (sync) - method not found wrong argument type", () => { const myTest = java.newInstanceSync("Test"); expect(() => { - java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/String;)I', 1); + java.callMethodSync(myTest, "methodAmbiguous(Ljava/lang/String;)I", 1); }).toThrow(); }); test("methodAmbiguous (sync) - method failed because argument count mismatch", () => { const myTest = java.newInstanceSync("Test"); expect(() => { - java.callMethodSync(myTest, 'methodAmbiguous(Ljava/lang/Integer;)I', 1, 2); + java.callMethodSync(myTest, "methodAmbiguous(Ljava/lang/Integer;)I", 1, 2); }).toThrow(); }); }); diff --git a/test/java-callStaticMethod.test.js b/test/java-callStaticMethod.test.js index d6885e4..fd4978d 100644 --- a/test/java-callStaticMethod.test.js +++ b/test/java-callStaticMethod.test.js @@ -3,9 +3,9 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Java - Call Static Method', () => { +describe("Java - Call Static Method", () => { test("callStaticMethod", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "staticMethod", (err, result) => { expect(err).toBeFalsy(); expect(result).toBeTruthy(); @@ -17,7 +17,9 @@ describe('Java - Call Static Method', () => { test("callStaticMethod without a callback", () => { const result = java.callStaticMethod("Test", "staticMethod"); - expect(result).toBe(`"Static method 'staticMethod' called without a callback did you mean to use the Sync version?"`); + expect(result).toBe( + `"Static method 'staticMethod' called without a callback did you mean to use the Sync version?"` + ); }); test("callStaticMethodSync", () => { @@ -27,7 +29,7 @@ describe('Java - Call Static Method', () => { }); test("callStaticMethod with args", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "staticMethod", 42, (err, result) => { expect(err).toBeFalsy(); expect(result).toBeTruthy(); @@ -51,7 +53,7 @@ describe('Java - Call Static Method', () => { }); test("callStaticMethod bad class name", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("BadClassName", "staticMethod", function (err, result) { expect(err).toBeTruthy(); expect(result).toBeFalsy(); @@ -60,7 +62,6 @@ describe('Java - Call Static Method', () => { }); }); - test("callStaticMethodSync bad class name", () => { expect(() => { java.callStaticMethodSync("BadClassName", "staticMethod"); @@ -68,7 +69,7 @@ describe('Java - Call Static Method', () => { }); test("callStaticMethod bad arg types", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "staticMethod", "z", function (err, result) { expect(err).toBeTruthy(); expect(result).toBeFalsy(); @@ -84,7 +85,7 @@ describe('Java - Call Static Method', () => { }); test("callStaticMethod bad number of args", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "staticMethod", 42, "z", function (err, result) { expect(err).toBeTruthy(); expect(result).toBeFalsy(); @@ -100,7 +101,7 @@ describe('Java - Call Static Method', () => { }); test("callStaticMethod bad method name", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "badMethodName", function (err, result) { expect(err).toBeTruthy(); expect(result).toBeFalsy(); @@ -120,9 +121,9 @@ describe('Java - Call Static Method', () => { let result; try { result = java.callStaticMethodSync("Test", "staticMethodThrows", ex); - throw new Error('expected error'); + throw new Error("expected error"); } catch (err) { - expect(err.cause.getMessageSync()).toBe('my exception'); + expect(err.cause.getMessageSync()).toBe("my exception"); expect(err.toString()).toMatch(/my exception/); expect(result).toBeFalsy(); } @@ -140,10 +141,10 @@ describe('Java - Call Static Method', () => { test("staticMethodThrows exception thrown from method", async () => { const ex = java.newInstanceSync("java.lang.Exception", "my exception"); - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "staticMethodThrows", ex, function (err, result) { expect(err).toBeTruthy(); - expect(err.cause.getMessageSync()).toBe('my exception'); + expect(err.cause.getMessageSync()).toBe("my exception"); expect(err.toString()).toMatch(/my exception/); expect(result).toBeFalsy(); resolve(); @@ -161,10 +162,10 @@ describe('Java - Call Static Method', () => { }); test("staticMethodThrowsNewException exception thrown from method", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "staticMethodThrowsNewException", function (err, result) { expect(err).toBeTruthy(); - expect(err.cause.getMessageSync()).toBe('my exception'); + expect(err.cause.getMessageSync()).toBe("my exception"); expect(err.toString()).toMatch(/my exception/); expect(result).toBeFalsy(); resolve(); @@ -186,7 +187,7 @@ describe('Java - Call Static Method', () => { test("methodThrows exception thrown from method", async () => { const ex = java.newInstanceSync("java.lang.Exception", "my exception"); const myTest = java.newInstanceSync("Test"); - await new Promise(resolve => { + await new Promise((resolve) => { return myTest.methodThrows(ex, function (err) { expect(err.toString()).toMatch(/my exception/); resolve(); @@ -206,7 +207,7 @@ describe('Java - Call Static Method', () => { test("methodThrowsNewException exception thrown from method", async () => { const myTest = java.newInstanceSync("Test"); - await new Promise(resolve => { + await new Promise((resolve) => { myTest.methodThrowsNewException((err) => { expect(err.toString()).toMatch(/my exception/); resolve(); @@ -215,8 +216,8 @@ describe('Java - Call Static Method', () => { }); test("char array", async () => { - const charArray = java.newArray("char", "hello world\n".split('')); - await new Promise(resolve => { + const charArray = java.newArray("char", "hello world\n".split("")); + await new Promise((resolve) => { java.callStaticMethod("Test", "staticMethodCharArrayToString", charArray, function (err, result) { expect(err).toBeFalsy(); expect(result).toBeTruthy(); @@ -227,7 +228,7 @@ describe('Java - Call Static Method', () => { }); test("String passed in for Object", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "static2Objects", "1", "2", function (err, result) { expect(err).toBeFalsy(); expect(result).toBe(false); @@ -238,14 +239,14 @@ describe('Java - Call Static Method', () => { test("java.lang.Long addition", () => { const javaLong = java.newInstanceSync("java.lang.Long", 5); - expect(javaLong.toString()).toBe('5'); + expect(javaLong.toString()).toBe("5"); const result = javaLong + 1; expect(result).toBe(6); }); test("java.lang.Long calls (java Long)", async () => { const javaLong = java.newInstanceSync("java.lang.Long", 5); - await new Promise(resolve => { + await new Promise((resolve) => { java.callStaticMethod("Test", "staticMethodLongToString", javaLong, function (err, result) { expect(err).toBeFalsy(); expect(result).toBeTruthy(); @@ -273,15 +274,15 @@ describe('Java - Call Static Method', () => { test("Call static method with varargs", () => { const Test = java.import("Test"); - let str = Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a', 'b', 'c'])); + let str = Test.staticVarargsSync(5, java.newArray("java.lang.String", ["a", "b", "c"])); expect(str).toBe("5abc"); - str = Test.staticVarargsSync(5, 'a', 'b', 'c'); + str = Test.staticVarargsSync(5, "a", "b", "c"); expect(str).toBe("5abc"); }); test("Call static method named name_", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { const Test = java.import("Test"); Test.name_((err) => { expect(err).toBeFalsy(); diff --git a/test/java-newInstance.test.js b/test/java-newInstance.test.js index 2e7c4df..038373e 100644 --- a/test/java-newInstance.test.js +++ b/test/java-newInstance.test.js @@ -3,9 +3,9 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Java - New Instance', () => { +describe("Java - New Instance", () => { test("newInstance", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.newInstance("Test", (err, result) => { expect(err).toBeFalsy(); expect(result).toBeTruthy(); @@ -27,14 +27,14 @@ describe('Java - New Instance', () => { }); test("newInstance with args", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.newInstance("Test", 42, function (err, result) { expect(err).toBeFalsy(); expect(result).toBeTruthy(); expect(result.getIntSync()).toBe(42); resolve(); }); - }) + }); }); test("newInstanceSync with args", () => { @@ -44,7 +44,7 @@ describe('Java - New Instance', () => { }); test("newInstance bad class name", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.newInstance("BadClassName", (err, result) => { expect(err).toBeTruthy(); expect(result).toBeFalsy(); @@ -60,8 +60,8 @@ describe('Java - New Instance', () => { }); test("newInstance bad arg types", async () => { - await new Promise(resolve => { - java.newInstance("Test", 'a', function (err, result) { + await new Promise((resolve) => { + java.newInstance("Test", "a", function (err, result) { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -71,12 +71,12 @@ describe('Java - New Instance', () => { test("newInstanceSync bad arg types", () => { expect(() => { - java.newInstanceSync("Test", 'a'); + java.newInstanceSync("Test", "a"); }).toThrow(); }); test("newInstance bad number of args", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.newInstance("Test", 42, 15, function (err, result) { expect(err).toBeTruthy(); expect(result).toBeFalsy(); @@ -93,7 +93,7 @@ describe('Java - New Instance', () => { test("newInstance exception thrown from constructor", async () => { const ex = java.newInstanceSync("java.lang.Exception", "my exception"); - await new Promise(resolve => { + await new Promise((resolve) => { java.newInstance("TestExceptions", ex, function (err, result) { expect(err).toBeTruthy(); expect(err.toString()).toMatch(/my exception/); @@ -109,7 +109,7 @@ describe('Java - New Instance', () => { }); test("newInstanceSync with varargs", () => { - let result = java.newInstanceSync("Test", 42, java.newArray('java.lang.String', ["a", "b"])); + let result = java.newInstanceSync("Test", 42, java.newArray("java.lang.String", ["a", "b"])); expect(result).toBeTruthy(); result = java.newInstanceSync("Test", 42, "a"); diff --git a/test/java-staticField.test.js b/test/java-staticField.test.js index 1abe110..aff3a4c 100644 --- a/test/java-staticField.test.js +++ b/test/java-staticField.test.js @@ -3,7 +3,7 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Java - Static Field', () => { +describe("Java - Static Field", () => { afterEach(() => { java.setStaticFieldValue("Test", "staticFieldInt", 42); }); diff --git a/test/javaObject.test.js b/test/javaObject.test.js index 24ad054..d3ddd62 100644 --- a/test/javaObject.test.js +++ b/test/javaObject.test.js @@ -3,12 +3,12 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Java Object', () => { +describe("Java Object", () => { let testObj; beforeEach(() => { testObj = java.newInstanceSync("Test"); - }) + }); test("field", () => { expect(testObj.nonstaticInt).toBe(42); diff --git a/test/promises.test.js b/test/promises.test.js index ceebc43..9bb559a 100644 --- a/test/promises.test.js +++ b/test/promises.test.js @@ -3,7 +3,7 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Promises', () => { +describe("Promises", () => { test("create an instance of a class and call methods (getClassPromise & getNamePromise)", async () => { // Adapted from a test in simple-test.js const list = await java.newInstancePromise("java.util.ArrayList"); @@ -17,7 +17,7 @@ describe('Promises', () => { }); test("import and execute promisified static method", async () => { - var Test = java.import('Test'); + const Test = java.import("Test"); const result = await Test.staticMethodPromise(99); expect(result).toBe(100); }); @@ -43,32 +43,31 @@ describe('Promises', () => { const name = await clazz.getNamePromise(); expect(name).toBe("java.util.ArrayList"); - await list.addPromise('hello'); - await list.addPromise('world'); - await list.addPromise('boo'); + await list.addPromise("hello"); + await list.addPromise("world"); + await list.addPromise("boo"); const it = await list.iteratorPromise(); expect(it).toBeTruthy(); let val = await it.nextPromise(); expect(val).toBeTruthy(); console.log(typeof val, val); - expect(val).toBe('hello'); // java.lang.InternalError exception thrown here with OpenJDK + expect(val).toBe("hello"); // java.lang.InternalError exception thrown here with OpenJDK val = await it.nextPromise(); expect(val).toBeTruthy(); console.log(typeof val, val); - expect(val).toBe('world'); + expect(val).toBe("world"); val = await it.nextPromise(); expect(val).toBeTruthy(); console.log(typeof val, val); - expect(val).toBe('boo'); + expect(val).toBe("boo"); const more = await it.hasNextPromise(); console.log(typeof more, more); expect(more).toBeFalsy(false); - expect(async () => await it.nextPromise()).rejects.toThrowError(); + await expect(async () => await it.nextPromise()).rejects.toThrowError(); }); }); - diff --git a/test/simple.test.js b/test/simple.test.js index fc908cc..92aa8d4 100644 --- a/test/simple.test.js +++ b/test/simple.test.js @@ -3,7 +3,7 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('Simple', () => { +describe("Simple", () => { test("test classpath commons lang", () => { const result = java.callStaticMethodSync("org.apache.commons.lang3.ObjectUtils", "toString", "test"); console.log("org.apache.commons.lang3.ObjectUtils.toString:", result); @@ -12,35 +12,26 @@ describe('Simple', () => { test("test adding to classpath after other calls are made", () => { java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); - try { - console.log('classpath', java.classpath); + expect(() => { + console.log("classpath", java.classpath); java.classpath = ["test/"]; - throw new Error("Exception should be thrown"); - } catch (e) { - // ok - } + }).toThrow(); }); test("test changing options after other calls are made", () => { java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); - try { - console.log('options', java.options); + expect(() => { + console.log("options", java.options); java.options = ["newoption"]; - throw new Error("Exception should be thrown"); - } catch (e) { - // ok - } + }).toThrow(); }); test("test changing nativeBindingLocation after other calls are made", () => { java.callStaticMethodSync("java.lang.System", "currentTimeMillis"); - try { - console.log('nativeBindingLocation', java.nativeBindingLocation); + expect(() => { + console.log("nativeBindingLocation", java.nativeBindingLocation); java.nativeBindingLocation = "newNativeBindingLocation"; - throw new Error("Exception should be thrown"); - } catch (e) { - // ok - } + }).toThrow(); }); test("test static calls", () => { @@ -62,9 +53,8 @@ describe('Simple', () => { }); test("test method does not exists (async)", () => { - java.callStaticMethod("java.lang.System", "badMethod", function (err, result) { + java.callStaticMethod("java.lang.System", "badMethod", (err) => { if (err) { - return; } test.done(new Error("should throw exception")); @@ -72,7 +62,7 @@ describe('Simple', () => { }); test("create an instance of a class and call methods (getName) (async)", async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.newInstance("java.util.ArrayList", (err, list) => { expect(err).toBeFalsy(); expect(list).toBeTruthy(); @@ -112,11 +102,13 @@ describe('Simple', () => { resolve(); }); }); - }) + }); }); test("passing objects to methods", () => { - const dataArray = "hello world\n".split('').map(function (c) { return java.newByte(c.charCodeAt(0)); }); + const dataArray = "hello world\n".split("").map(function (c) { + return java.newByte(c.charCodeAt(0)); + }); const data = java.newArray("byte", dataArray); const stream = java.newInstanceSync("java.io.ByteArrayInputStream", data); const reader = java.newInstanceSync("java.io.InputStreamReader", stream); @@ -181,11 +173,11 @@ describe('Simple', () => { return l.toStringSync(); }); expect(arr.length).toBe(5); - expect(arr[0]).toBe('9223372036854775807'); - expect(arr[1]).toBe('-9223372036854775808'); - expect(arr[2]).toBe('3'); - expect(arr[3]).toBe('4'); - expect(arr[4]).toBe('5'); + expect(arr[0]).toBe("9223372036854775807"); + expect(arr[1]).toBe("-9223372036854775808"); + expect(arr[2]).toBe("3"); + expect(arr[3]).toBe("4"); + expect(arr[4]).toBe("5"); }); test("method returning a string (Unicode BMP)", () => { @@ -206,56 +198,56 @@ describe('Simple', () => { test("method taking a byte", () => { const b = java.newByte(1); - expect(b.getClassSync().getNameSync()).toBe('java.lang.Byte'); - expect(b.toStringSync()).toBe('1'); + expect(b.getClassSync().getNameSync()).toBe("java.lang.Byte"); + expect(b.toStringSync()).toBe("1"); const r = java.callStaticMethodSync("Test", "staticByte", b); expect(r).toBe(1); }); test("method taking a short", () => { const s = java.newShort(1); - expect(s.getClassSync().getNameSync()).toBe('java.lang.Short'); - expect(s.toStringSync()).toBe('1'); + expect(s.getClassSync().getNameSync()).toBe("java.lang.Short"); + expect(s.toStringSync()).toBe("1"); const r = java.callStaticMethodSync("Test", "staticShort", s); expect(r).toBe(1); }); test("method taking a double", () => { const s = java.newDouble(3.14); - expect(s.getClassSync().getNameSync()).toBe('java.lang.Double'); - expect(s.toStringSync()).toBe('3.14'); + expect(s.getClassSync().getNameSync()).toBe("java.lang.Double"); + expect(s.toStringSync()).toBe("3.14"); const r = java.callStaticMethodSync("Test", "staticDouble", s); expect(Math.abs(r - 3.14) < 0.0001, r + " != 3.14").toBeTruthy(); }); test("method taking a float", () => { const s = java.newFloat(3.14); - expect(s.getClassSync().getNameSync()).toBe('java.lang.Float'); - expect(s.toStringSync()).toBe('3.14'); + expect(s.getClassSync().getNameSync()).toBe("java.lang.Float"); + expect(s.toStringSync()).toBe("3.14"); const r = java.callStaticMethodSync("Test", "staticFloat", s); expect(Math.abs(r - 3.14) < 0.0001, r + " != 3.14").toBeTruthy(); }); test("method taking a long", () => { const l = java.newLong(1); - expect(l.getClassSync().getNameSync()).toBe('java.lang.Long'); - expect(l.toStringSync()).toBe('1'); + expect(l.getClassSync().getNameSync()).toBe("java.lang.Long"); + expect(l.toStringSync()).toBe("1"); const r = java.callStaticMethodSync("Test", "staticLong", l); expect(r).toBe(1); }); test("method taking a char (number)", () => { const ch = java.newChar(97); // 'a' - expect(ch.getClassSync().getNameSync()).toBe('java.lang.Character'); - expect(ch.toStringSync()).toBe('a'); + expect(ch.getClassSync().getNameSync()).toBe("java.lang.Character"); + expect(ch.toStringSync()).toBe("a"); const r = java.callStaticMethodSync("Test", "staticChar", ch); expect(r).toBe(97); }); test("method taking a char (string)", () => { - const ch = java.newChar('a'); - expect(ch.getClassSync().getNameSync()).toBe('java.lang.Character'); - expect(ch.toStringSync()).toBe('a'); + const ch = java.newChar("a"); + expect(ch.getClassSync().getNameSync()).toBe("java.lang.Character"); + expect(ch.toStringSync()).toBe("a"); const r = java.callStaticMethodSync("Test", "staticChar", ch); expect(r).toBe(97); }); @@ -320,7 +312,12 @@ describe('Simple', () => { }); test("new short array objects", () => { - const shortArray = java.newArray("java.lang.Short", [1, 2].map(function (c) { return java.newShort(c); })); + const shortArray = java.newArray( + "java.lang.Short", + [1, 2].map(function (c) { + return java.newShort(c); + }) + ); const r = java.callStaticMethodSync("Test", "staticShortArray", shortArray); expect(r.length).toBe(2); expect(r[0]).toBe(1); @@ -335,4 +332,3 @@ describe('Simple', () => { expect(r[1]).toBe(2); }); }); - diff --git a/test/utils-types.test.js b/test/utils-types.test.js index ac3036c..7ad40d7 100644 --- a/test/utils-types.test.js +++ b/test/utils-types.test.js @@ -1,19 +1,22 @@ - import { describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; const java = getJava(); -describe('Utils - Types', () => { +describe("Utils - Types", () => { test("Array of Objects", () => { let val = java.getStaticFieldValue("Test", "staticArrayObjects"); expect(val).toBeNull(); - java.setStaticFieldValue("Test", "staticArrayObjects", java.newArray("Test", [ - java.newInstanceSync("Test", 1), - java.newInstanceSync("Test", 2), - java.newInstanceSync("Test", 3) - ])); + java.setStaticFieldValue( + "Test", + "staticArrayObjects", + java.newArray("Test", [ + java.newInstanceSync("Test", 1), + java.newInstanceSync("Test", 2), + java.newInstanceSync("Test", 3), + ]) + ); val = java.getStaticFieldValue("Test", "staticArrayObjects"); expect(val).toBeTruthy(); @@ -47,14 +50,14 @@ describe('Utils - Types', () => { }); test("Char array", () => { - const originalArray = "hello 世界\n".split(''); + const originalArray = "hello 世界\n".split(""); const Arrays = java.import("java.util.Arrays"); const arr1 = java.newArray("char", originalArray); const list = Arrays.asListSync(arr1); const arr2 = list.toArraySync(); expect(arr2.length).toBe(1); expect(arr2[0].length).toBe(9); - const isTypedArrayReturn = !(typeof arr2[0][0] === 'string'); + const isTypedArrayReturn = !(typeof arr2[0][0] === "string"); for (let i = 0; i < originalArray.length; i++) { if (isTypedArrayReturn) { expect(arr2[0][i]).toBe(originalArray[i].charCodeAt(0)); diff --git a/test/varargs.test.js b/test/varargs.test.js index a7f69e7..cd5fe75 100644 --- a/test/varargs.test.js +++ b/test/varargs.test.js @@ -3,81 +3,81 @@ import { getJava } from "../testHelpers"; const java = getJava(); -describe('varargs', () => { - test('array signature inference', () => { - const Test = java.import('Test'); - expect(Test.varArgsSignatureSync([])).toBe('Object...'); - expect(Test.varArgsSignatureSync(['a', 'b'])).toBe('String...'); - expect(Test.varArgsSignatureSync([1, 2])).toBe('Integer...'); - expect(Test.varArgsSignatureSync([1.1, 2])).toBe('Number...'); - expect(Test.varArgsSignatureSync([1.1, 'a'])).toBe('Object...'); - expect(Test.varArgsSignatureSync([true, 'a'])).toBe('Object...'); - expect(Test.varArgsSignatureSync([true, 1])).toBe('Object...'); - expect(Test.varArgsSignatureSync([true, 1.1])).toBe('Object...'); - expect(Test.varArgsSignatureSync([true, false])).toBe('Boolean...'); +describe("varargs", () => { + test("array signature inference", () => { + const Test = java.import("Test"); + expect(Test.varArgsSignatureSync([])).toBe("Object..."); + expect(Test.varArgsSignatureSync(["a", "b"])).toBe("String..."); + expect(Test.varArgsSignatureSync([1, 2])).toBe("Integer..."); + expect(Test.varArgsSignatureSync([1.1, 2])).toBe("Number..."); + expect(Test.varArgsSignatureSync([1.1, "a"])).toBe("Object..."); + expect(Test.varArgsSignatureSync([true, "a"])).toBe("Object..."); + expect(Test.varArgsSignatureSync([true, 1])).toBe("Object..."); + expect(Test.varArgsSignatureSync([true, 1.1])).toBe("Object..."); + expect(Test.varArgsSignatureSync([true, false])).toBe("Boolean..."); }); - test('variadic signature inference', () => { - const Test = java.import('Test'); - expect(Test.varArgsSignatureSync()).toBe('Object...'); - expect(Test.varArgsSignatureSync('a', 'b')).toBe('String...'); - expect(Test.varArgsSignatureSync(1, 2)).toBe('Integer...'); - expect(Test.varArgsSignatureSync(1.1, 2)).toBe('Number...'); - expect(Test.varArgsSignatureSync(1.1, 'a')).toBe('Object...'); - expect(Test.varArgsSignatureSync(true, 'a')).toBe('Object...'); - expect(Test.varArgsSignatureSync(true, 1)).toBe('Object...'); - expect(Test.varArgsSignatureSync(true, 1.1)).toBe('Object...'); - expect(Test.varArgsSignatureSync(true, false)).toBe('Boolean...'); + test("variadic signature inference", () => { + const Test = java.import("Test"); + expect(Test.varArgsSignatureSync()).toBe("Object..."); + expect(Test.varArgsSignatureSync("a", "b")).toBe("String..."); + expect(Test.varArgsSignatureSync(1, 2)).toBe("Integer..."); + expect(Test.varArgsSignatureSync(1.1, 2)).toBe("Number..."); + expect(Test.varArgsSignatureSync(1.1, "a")).toBe("Object..."); + expect(Test.varArgsSignatureSync(true, "a")).toBe("Object..."); + expect(Test.varArgsSignatureSync(true, 1)).toBe("Object..."); + expect(Test.varArgsSignatureSync(true, 1.1)).toBe("Object..."); + expect(Test.varArgsSignatureSync(true, false)).toBe("Boolean..."); }); - test('variadic no args', () => { - const String = java.import('java.lang.String'); - expect(String.formatSync('nothing')).toBe('nothing'); + test("variadic no args", () => { + const String = java.import("java.lang.String"); + expect(String.formatSync("nothing")).toBe("nothing"); }); - test('variadic one args', () => { - const String = java.import('java.lang.String'); - expect(String.formatSync('%s', 'hello')).toBe('hello'); + test("variadic one args", () => { + const String = java.import("java.lang.String"); + expect(String.formatSync("%s", "hello")).toBe("hello"); }); - test('variadic two args', () => { - const String = java.import('java.lang.String'); - expect(String.formatSync('%s--%s', 'hello', 'world')).toBe('hello--world'); + test("variadic two args", () => { + const String = java.import("java.lang.String"); + expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); }); - test('newArray(Object) no args passed', () => { - const String = java.import('java.lang.String'); - expect(String.formatSync('nothing', java.newArray('java.lang.Object', []))).toBe('nothing'); + test("newArray(Object) no args passed", () => { + const String = java.import("java.lang.String"); + expect(String.formatSync("nothing", java.newArray("java.lang.Object", []))).toBe("nothing"); }); - test('newArray(Object) one args', () => { - const String = java.import('java.lang.String'); - expect(String.formatSync('%s', java.newArray('java.lang.Object', ['hello']))).toBe('hello'); + test("newArray(Object) one args", () => { + const String = java.import("java.lang.String"); + expect(String.formatSync("%s", java.newArray("java.lang.Object", ["hello"]))).toBe("hello"); }); - test('newArray(Object) two args', () => { - const String = java.import('java.lang.String'); - expect(String.formatSync('%s--%s', java.newArray('java.lang.Object', ['hello', 'world']))).toBe('hello--world'); + test("newArray(Object) two args", () => { + const String = java.import("java.lang.String"); + expect(String.formatSync("%s--%s", java.newArray("java.lang.Object", ["hello", "world"]))).toBe("hello--world"); }); - test('Call static method with variadic varargs', () => { - const Test = java.import('Test'); - expect(Test.staticVarargsSync(5)).toBe('5'); - expect(Test.staticVarargsSync(5, 'a')).toBe('5a'); - expect(Test.staticVarargsSync(5, 'a', 'b')).toBe('5ab'); - expect(Test.staticVarargsSync(5, 'a', 'b', 'c')).toBe('5abc'); + test("Call static method with variadic varargs", () => { + const Test = java.import("Test"); + expect(Test.staticVarargsSync(5)).toBe("5"); + expect(Test.staticVarargsSync(5, "a")).toBe("5a"); + expect(Test.staticVarargsSync(5, "a", "b")).toBe("5ab"); + expect(Test.staticVarargsSync(5, "a", "b", "c")).toBe("5abc"); }); - test('Call static varargs method with plain array', () => { - const Test = java.import('Test'); - expect(Test.staticVarargsSync(5, ['a'])).toBe('5a'); - expect(Test.staticVarargsSync(5, ['a', 'b'])).toBe('5ab'); - expect(Test.staticVarargsSync(5, ['a', 'b', 'c'])).toBe('5abc'); + test("Call static varargs method with plain array", () => { + const Test = java.import("Test"); + expect(Test.staticVarargsSync(5, ["a"])).toBe("5a"); + expect(Test.staticVarargsSync(5, ["a", "b"])).toBe("5ab"); + expect(Test.staticVarargsSync(5, ["a", "b", "c"])).toBe("5abc"); }); - test('Call static varags method with newArray', () => { - const Test = java.import('Test'); - expect(Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a']))).toBe('5a'); - expect(Test.staticVarargsSync(5, java.newArray('java.lang.String', ['a', 'b', 'c']))).toBe('5abc'); + test("Call static varags method with newArray", () => { + const Test = java.import("Test"); + expect(Test.staticVarargsSync(5, java.newArray("java.lang.String", ["a"]))).toBe("5a"); + expect(Test.staticVarargsSync(5, java.newArray("java.lang.String", ["a", "b", "c"]))).toBe("5abc"); }); }); diff --git a/testAsyncOptions/allThreeSuffix.test.js b/testAsyncOptions/allThreeSuffix.test.js index 6a0dd13..f9f7caf 100644 --- a/testAsyncOptions/allThreeSuffix.test.js +++ b/testAsyncOptions/allThreeSuffix.test.js @@ -6,23 +6,26 @@ import { describe, test, expect } from "vitest"; const java = getJava({ syncSuffix: "Sync", asyncSuffix: "Async", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when + promiseSuffix: "Promise", + promisify: require("when/node").lift, // https://github.com/cujojs/when }); -describe('allThreeSuffix', () => { - test('api', () => { +describe("allThreeSuffix", () => { + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeDefined(); expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); - expect(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.addAsync !== 'undefined', 'Expected `addAsync` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.add === 'undefined', 'Expected `add` to NOT be present, but it is.').toBeTruthy(); + expect(typeof arrayList.addSync !== "undefined", "Expected `addSync` to be present, but it is NOT.").toBeTruthy(); + expect(typeof arrayList.addAsync !== "undefined", "Expected `addAsync` to be present, but it is NOT.").toBeTruthy(); + expect( + typeof arrayList.addPromise !== "undefined", + "Expected `addPromise` to be present, but it is NOT." + ).toBeTruthy(); + expect(typeof arrayList.add === "undefined", "Expected `add` to NOT be present, but it is.").toBeTruthy(); }); - test('importClass', () => { + test("importClass", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); @@ -31,38 +34,38 @@ describe('allThreeSuffix', () => { expect(arrayList.sizeSync()).toBe(0); }); - test('staticAPI', () => { + test("staticAPI", () => { const String = java.import("java.lang.String"); expect(String).toBeTruthy(); - const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.').toBeTruthy(); - expect(!api.includes('format'), 'Expected `format` to NOT be present, but it is.').toBeTruthy(); - expect(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeTruthy(); + const api = Object.keys(String).filter((key) => typeof String[key] === "function"); + expect(api.includes("formatSync"), "Expected `formatSync` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatAsync"), "Expected `formatAsync` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatPromise"), "Expected `formatPromise` to be present, but it is NOT.").toBeTruthy(); + expect(!api.includes("format"), "Expected `format` to NOT be present, but it is.").toBeTruthy(); + expect(!api.includes("formatundefined"), "Expected `formatundefined` to NOT be present, but it is.").toBeTruthy(); }); - test('syncCalls', () => { + test("syncCalls", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); arrayList.addSync("hello"); arrayList.addSync("world"); expect(arrayList.sizeSync()).toBe(2); }); - test('staticSyncCalls', () => { + test("staticSyncCalls", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); - expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); }); - test('asyncCalls', async () => { + test("asyncCalls", async () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - await new Promise(resolve => { - arrayList.addAsync("hello", function (err, result) { + await new Promise((resolve) => { + arrayList.addAsync("hello", function (err) { expect(err).toBeUndefined(); - arrayList.addAsync("world", function (err, result) { + arrayList.addAsync("world", function (err) { expect(err).toBeUndefined(); arrayList.sizeAsync(function (err, size) { expect(err).toBeUndefined(); @@ -74,13 +77,18 @@ describe('allThreeSuffix', () => { }); }); - test('promiseCalls', async () => { + test("promiseCalls", async () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - await arrayList.addPromise("hello") - .then(() => { return arrayList.addPromise("world"); }) - .then(() => { return arrayList.sizePromise(); }) + await arrayList + .addPromise("hello") + .then(() => { + return arrayList.addPromise("world"); + }) + .then(() => { + return arrayList.sizePromise(); + }) .then((size) => { expect(size).toBe(2); }); }); -}); \ No newline at end of file +}); diff --git a/testAsyncOptions/asyncSuffixSyncDefault.test.js b/testAsyncOptions/asyncSuffixSyncDefault.test.js index 67e8d24..dfd9354 100644 --- a/testAsyncOptions/asyncSuffixSyncDefault.test.js +++ b/testAsyncOptions/asyncSuffixSyncDefault.test.js @@ -3,17 +3,17 @@ import { beforeAll, describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('asyncSuffixSyncDefault', () => { +describe("asyncSuffixSyncDefault", () => { beforeAll(async () => { - await new Promise(resolve => { + await new Promise((resolve) => { java.asyncOptions = { syncSuffix: "", asyncSuffix: "Async", - ifReadOnlySuffix: "_alt" + ifReadOnlySuffix: "_alt", }; function before(callback) { - java.classpath.push('test/'); + java.classpath.push("test/"); expect(java.isJvmCreated()).toBeFalsy(); callback(); } @@ -33,17 +33,20 @@ describe('asyncSuffixSyncDefault', () => { }); }); - test('api', () => { + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeTruthy(); expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); - expect(typeof arrayList.addAsync !== 'undefined', 'Expected `addAsync` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.').toBeTruthy(); + expect(typeof arrayList.addAsync !== "undefined", "Expected `addAsync` to be present, but it is NOT.").toBeTruthy(); + expect(typeof arrayList.add !== "undefined", "Expected `add` to be present, but it is NOT.").toBeTruthy(); + expect( + typeof arrayList.addPromise === "undefined", + "Expected `addPromise` to NOT be present, but it is." + ).toBeTruthy(); }); - test('importClass', () => { + test("importClass", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); @@ -52,38 +55,38 @@ describe('asyncSuffixSyncDefault', () => { expect(arrayList.size()).toBe(0); }); - test('staticAPI', () => { + test("staticAPI", () => { const String = java.import("java.lang.String"); expect(String).toBeTruthy(); - const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatAsync'), 'Expected `formatAsync` to be present, but it is NOT.').toBeTruthy(); - expect(!api.includes('formatSync'), 'Expected `formatSync` to NOT be present, but it is.').toBeTruthy(); - expect(!api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.').toBeTruthy(); - expect(!api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeTruthy(); + const api = Object.keys(String).filter((key) => typeof String[key] === "function"); + expect(api.includes("format"), "Expected `format` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatAsync"), "Expected `formatAsync` to be present, but it is NOT.").toBeTruthy(); + expect(!api.includes("formatSync"), "Expected `formatSync` to NOT be present, but it is.").toBeTruthy(); + expect(!api.includes("formatPromise"), "Expected `formatPromise` to NOT be present, but it is.").toBeTruthy(); + expect(!api.includes("formatundefined"), "Expected `formatundefined` to NOT be present, but it is.").toBeTruthy(); }); - test('syncCalls', () => { + test("syncCalls", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); arrayList.add("hello"); arrayList.add("world"); expect(arrayList.size()).toBe(2); }); - test('staticSyncCalls', () => { + test("staticSyncCalls", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); - expect(String.format('%s--%s', "hello", "world")).toBe("hello--world"); + expect(String.format("%s--%s", "hello", "world")).toBe("hello--world"); }); - test('asyncCalls', async () => { + test("asyncCalls", async () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - await new Promise(resolve => { - arrayList.addAsync("hello", function (err, result) { + await new Promise((resolve) => { + arrayList.addAsync("hello", function (err) { expect(err).toBeUndefined(); - arrayList.addAsync("world", function (err, result) { + arrayList.addAsync("world", function (err) { expect(err).toBeUndefined(); arrayList.sizeAsync(function (err, size) { expect(err).toBeUndefined(); @@ -98,13 +101,13 @@ describe('asyncSuffixSyncDefault', () => { // See testUnusableMethodName.js for the purpose of these last two tests. // In that test, Test.name_alt() is an async method. // In this test, it is a sync method. - test('unusableMethodNameThrows', () => { + test("unusableMethodNameThrows", () => { const Test = java.import("Test"); expect(Test).toBeTruthy(); expect(() => Test.name()).toThrowError(TypeError); }); - test('alternateMethodNameWorks', () => { + test("alternateMethodNameWorks", () => { const Test = java.import("Test"); expect(Test).toBeTruthy(); expect(Test.name_alt()).toBe("name"); @@ -112,7 +115,7 @@ describe('asyncSuffixSyncDefault', () => { expect(Test.arguments_alt()).toBe("arguments"); }); - test('reservedFieldName', () => { + test("reservedFieldName", () => { const TestEnum = java.import("Test$Enum"); expect(TestEnum).toBeTruthy(); @@ -128,4 +131,4 @@ describe('asyncSuffixSyncDefault', () => { expect(TestEnum.caller_alt.toString()).toBe("caller"); expect(TestEnum.arguments_alt.toString()).toBe("arguments"); }); -}); \ No newline at end of file +}); diff --git a/testAsyncOptions/clientBeforeError.test.js b/testAsyncOptions/clientBeforeError.test.js index 24b165f..7c6980c 100644 --- a/testAsyncOptions/clientBeforeError.test.js +++ b/testAsyncOptions/clientBeforeError.test.js @@ -1,9 +1,9 @@ import { describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('clientBeforeError', () => { - test('clientBeforeError', async () => { - await new Promise(resolve => { +describe("clientBeforeError", () => { + test("clientBeforeError", async () => { + await new Promise((resolve) => { expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { @@ -12,15 +12,15 @@ describe('clientBeforeError', () => { function before(callback) { expect(java.isJvmCreated()).toBeFalsy(); - callback(new Error('dummy error')); + callback(new Error("dummy error")); } java.registerClient(before); java.ensureJvm(function (err) { - expect(err && typeof err === 'object').toBeTruthy(); + expect(err && typeof err === "object").toBeTruthy(); expect(err).toBeInstanceOf(Error); - expect(err.message).toBe('dummy error'); + expect(err.message).toBe("dummy error"); expect(java.isJvmCreated()).toBeFalsy(); resolve(); }); diff --git a/testAsyncOptions/clientBeforeSyncThrows.test.js b/testAsyncOptions/clientBeforeSyncThrows.test.js index 43fa427..19fc62e 100644 --- a/testAsyncOptions/clientBeforeSyncThrows.test.js +++ b/testAsyncOptions/clientBeforeSyncThrows.test.js @@ -1,9 +1,9 @@ import { describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('clientBeforeSyncThrows', () => { - test('clientBeforeSyncThrows', async () => { - await new Promise(resolve => { +describe("clientBeforeSyncThrows", () => { + test("clientBeforeSyncThrows", async () => { + await new Promise((resolve) => { expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { @@ -12,18 +12,18 @@ describe('clientBeforeSyncThrows', () => { function before() { expect(java.isJvmCreated()).toBeFalsy(); - throw new Error('dummy error'); + throw new Error("dummy error"); } java.registerClient(before); java.ensureJvm(function (err) { - expect(err && typeof err === 'object').toBeTruthy(); + expect(err && typeof err === "object").toBeTruthy(); expect(err).instanceOf(Error); - expect(err.message).toBe('dummy error'); + expect(err.message).toBe("dummy error"); expect(java.isJvmCreated()).toBeFalsy(); resolve(); }); }); }); -}); \ No newline at end of file +}); diff --git a/testAsyncOptions/clientBeforeThrows.test.js b/testAsyncOptions/clientBeforeThrows.test.js index 9072cb6..7cf6e6e 100644 --- a/testAsyncOptions/clientBeforeThrows.test.js +++ b/testAsyncOptions/clientBeforeThrows.test.js @@ -1,29 +1,29 @@ import { describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('clientBeforeThrows', () => { - test('clientBeforeThrows', async () => { - await new Promise(resolve => { +describe("clientBeforeThrows", () => { + test("clientBeforeThrows", async () => { + await new Promise((resolve) => { expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { syncSuffix: "Sync", }; - function before(callback) { + function before() { expect(java.isJvmCreated()).toBeFalsy(); - throw new Error('dummy error'); + throw new Error("dummy error"); } java.registerClient(before); java.ensureJvm(function (err) { - expect(err && typeof err === 'object').toBeTruthy(); + expect(err && typeof err === "object").toBeTruthy(); expect(err).instanceOf(Error); - expect(err.message).toBe('dummy error'); + expect(err.message).toBe("dummy error"); expect(java.isJvmCreated()).toBeFalsy(); resolve(); }); }); }); -}); \ No newline at end of file +}); diff --git a/testAsyncOptions/clientPBeforeError.test.js b/testAsyncOptions/clientPBeforeError.test.js index ee5037c..032ce23 100644 --- a/testAsyncOptions/clientPBeforeError.test.js +++ b/testAsyncOptions/clientPBeforeError.test.js @@ -1,22 +1,22 @@ import { describe, expect, test } from "vitest"; -import when from 'when'; +import when from "when"; import { java } from "../testHelpers"; -describe('clientPBeforeError', () => { - test('clientPBeforeError', async () => { +describe("clientPBeforeError", () => { + test("clientPBeforeError", async () => { await new Promise((resolve) => { expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { syncSuffix: "Sync", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when + promiseSuffix: "Promise", + promisify: require("when/node").lift, // https://github.com/cujojs/when }; function beforeP() { - var promise = when.promise((_resolve, reject) => { + const promise = when.promise((_resolve, reject) => { expect(java.isJvmCreated()).toBeFalsy(); - reject(new Error('dummy error')); + reject(new Error("dummy error")); }); return promise; } @@ -25,12 +25,12 @@ describe('clientPBeforeError', () => { java.ensureJvm().done( () => { - throw new Error('expect error'); + throw new Error("expect error"); }, (err) => { - expect(err && typeof err === 'object').toBeTruthy(); + expect(err && typeof err === "object").toBeTruthy(); expect(err).instanceOf(Error); - expect(err.message).toBe('dummy error'); + expect(err.message).toBe("dummy error"); expect(java.isJvmCreated()).toBeFalsy(); resolve(); } diff --git a/testAsyncOptions/clientPBeforeThrows.test.js b/testAsyncOptions/clientPBeforeThrows.test.js index d731cde..86e45e6 100644 --- a/testAsyncOptions/clientPBeforeThrows.test.js +++ b/testAsyncOptions/clientPBeforeThrows.test.js @@ -1,22 +1,22 @@ import { describe, expect, test } from "vitest"; -import when from 'when'; +import when from "when"; import { java } from "../testHelpers"; -describe('clientPBeforeThrows', () => { - test('clientPBeforeThrows', async () => { - await new Promise(resolve => { +describe("clientPBeforeThrows", () => { + test("clientPBeforeThrows", async () => { + await new Promise((resolve) => { expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { syncSuffix: "Sync", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when + promiseSuffix: "Promise", + promisify: require("when/node").lift, // https://github.com/cujojs/when }; function beforeP() { - var promise = when.promise(function (resolve, reject) { + const promise = when.promise(() => { expect(java.isJvmCreated()).toBeFalsy(); - throw new Error('dummy error'); + throw new Error("dummy error"); }); return promise; } @@ -25,12 +25,12 @@ describe('clientPBeforeThrows', () => { java.ensureJvm().done( () => { - throw new Error('expected error'); + throw new Error("expected error"); }, (err) => { - expect(err && typeof err === 'object').toBeTruthy(); + expect(err && typeof err === "object").toBeTruthy(); expect(err).instanceOf(Error); - expect(err.message).toBe('dummy error'); + expect(err.message).toBe("dummy error"); expect(java.isJvmCreated()).toBeFalsy(); resolve(); } diff --git a/testAsyncOptions/defacto.test.js b/testAsyncOptions/defacto.test.js index 5364bb6..5bcebd4 100644 --- a/testAsyncOptions/defacto.test.js +++ b/testAsyncOptions/defacto.test.js @@ -3,16 +3,16 @@ import { beforeAll, describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('defacto', () => { +describe("defacto", () => { beforeAll(async () => { - await new Promise(resolve => { - const api = Object.keys(java).filter((key) => typeof java[key] === 'function'); - expect(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.').toBeTruthy(); + await new Promise((resolve) => { + const api = Object.keys(java).filter((key) => typeof java[key] === "function"); + expect(api.includes("isJvmCreated"), "Expected `isJvmCreated` to be present, but it is NOT.").toBeTruthy(); expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { syncSuffix: "Sync", - asyncSuffix: "" + asyncSuffix: "", }; function before() { @@ -40,17 +40,20 @@ describe('defacto', () => { }); }); - test('api', () => { + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeTruthy(); expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); - expect(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.').toBeTruthy(); + expect(typeof arrayList.addSync !== "undefined", "Expected `addSync` to be present, but it is NOT.").toBeTruthy(); + expect(typeof arrayList.add !== "undefined", "Expected `add` to be present, but it is NOT.").toBeTruthy(); + expect( + typeof arrayList.addPromise === "undefined", + "Expected `addPromise` to NOT be present, but it is." + ).toBeTruthy(); }); - test('importClass', () => { + test("importClass", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); @@ -59,38 +62,38 @@ describe('defacto', () => { expect(arrayList.sizeSync()).toBe(0); }); - test('staticAPI', () => { + test("staticAPI", () => { const String = java.import("java.lang.String"); expect(String).toBeTruthy(); - const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + const api = Object.keys(String).filter((key) => typeof String[key] === "function"); + expect(api.includes("format"), "Expected `format` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatSync"), "Expected `formatSync` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatAsync"), "Expected `formatAsync` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatPromise"), "Expected `formatPromise` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatundefined"), "Expected `formatundefined` to NOT be present, but it is.").toBeFalsy(); }); - test('syncCalls', () => { + test("syncCalls", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); arrayList.addSync("hello"); arrayList.addSync("world"); expect(arrayList.sizeSync()).toBe(2); }); - test('staticSyncCalls', () => { + test("staticSyncCalls", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); - expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); }); - test('asyncCalls', async () => { - await new Promise(resolve => { + test("asyncCalls", async () => { + await new Promise((resolve) => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function (err, result) { + arrayList.add("hello", function (err) { expect(err).toBeFalsy(); - arrayList.add("world", function (err, result) { + arrayList.add("world", function (err) { expect(err).toBeFalsy(); arrayList.size(function (err, size) { expect(err).toBeFalsy(); diff --git a/testAsyncOptions/defactoPlusPromise.test.js b/testAsyncOptions/defactoPlusPromise.test.js index 4da19c4..346dd9e 100644 --- a/testAsyncOptions/defactoPlusPromise.test.js +++ b/testAsyncOptions/defactoPlusPromise.test.js @@ -3,18 +3,18 @@ import { beforeAll, describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('defactoPlusPromise', () => { +describe("defactoPlusPromise", () => { beforeAll(async () => { - await new Promise(resolve => { - const api = Object.keys(java).filter((key) => typeof java[key] === 'function'); - expect(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.').toBeTruthy(); + await new Promise((resolve) => { + const api = Object.keys(java).filter((key) => typeof java[key] === "function"); + expect(api.includes("isJvmCreated"), "Expected `isJvmCreated` to be present, but it is NOT.").toBeTruthy(); expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { syncSuffix: "Sync", asyncSuffix: "", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when + promiseSuffix: "Promise", + promisify: require("when/node").lift, // https://github.com/cujojs/when }; function before(callback) { @@ -38,17 +38,17 @@ describe('defactoPlusPromise', () => { }); }); - test('api', () => { + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeTruthy(); expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); - expect(arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); - expect(arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); - expect(arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.').toBeTruthy(); + expect(arrayList.addSync !== "undefined", "Expected `addSync` to be present, but it is NOT.").toBeTruthy(); + expect(arrayList.add !== "undefined", "Expected `add` to be present, but it is NOT.").toBeTruthy(); + expect(arrayList.addPromise !== "undefined", "Expected `addPromise` to be present, but it is NOT.").toBeTruthy(); }); - test('importClass', () => { + test("importClass", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); @@ -57,38 +57,38 @@ describe('defactoPlusPromise', () => { expect(arrayList.sizeSync()).toBe(0); }); - test('staticAPI', () => { + test("staticAPI", () => { const String = java.import("java.lang.String"); expect(String).toBeTruthy(); - const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + const api = Object.keys(String).filter((key) => typeof String[key] === "function"); + expect(api.includes("format"), "Expected `format` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatSync"), "Expected `formatSync` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatPromise"), "Expected `formatPromise` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatAsync"), "Expected `formatAsync` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatundefined"), "Expected `formatundefined` to NOT be present, but it is.").toBeFalsy(); }); - test('syncCalls', () => { + test("syncCalls", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); arrayList.addSync("hello"); arrayList.addSync("world"); expect(arrayList.sizeSync()).toBe(2); }); - test('staticSyncCalls', () => { + test("staticSyncCalls", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); - expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); }); - test('asyncCalls', async () => { - await new Promise(resolve => { + test("asyncCalls", async () => { + await new Promise((resolve) => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function (err, result) { + arrayList.add("hello", function (err) { expect(err).toBeFalsy(); - arrayList.add("world", function (err, result) { + arrayList.add("world", function (err) { expect(err).toBeFalsy(); arrayList.size(function (err, size) { expect(err).toBeFalsy(); @@ -100,16 +100,21 @@ describe('defactoPlusPromise', () => { }); }); - test('promiseCalls', async () => { - await new Promise(resolve => { + test("promiseCalls", async () => { + await new Promise((resolve) => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.addPromise("hello") - .then(() => { return arrayList.addPromise("world"); }) - .then(() => { return arrayList.sizePromise(); }) + arrayList + .addPromise("hello") + .then(() => { + return arrayList.addPromise("world"); + }) + .then(() => { + return arrayList.sizePromise(); + }) .then((size) => { expect(size).toBe(2); resolve(); }); }); }); -}); \ No newline at end of file +}); diff --git a/testAsyncOptions/default.test.js b/testAsyncOptions/default.test.js index dfe147f..581ee82 100644 --- a/testAsyncOptions/default.test.js +++ b/testAsyncOptions/default.test.js @@ -4,18 +4,21 @@ import { describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('default', () => { - test('api', () => { +describe("default", () => { + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeTruthy(); expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); - expect(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.addPromise === 'undefined', 'Expected `addPromise` to NOT be present, but it is.').toBeTruthy(); + expect(typeof arrayList.addSync !== "undefined", "Expected `addSync` to be present, but it is NOT.").toBeTruthy(); + expect(typeof arrayList.add !== "undefined", "Expected `add` to be present, but it is NOT.").toBeTruthy(); + expect( + typeof arrayList.addPromise === "undefined", + "Expected `addPromise` to NOT be present, but it is." + ).toBeTruthy(); }); - test('importClass', () => { + test("importClass", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); @@ -24,38 +27,38 @@ describe('default', () => { expect(arrayList.sizeSync()).toBe(0); }); - test('staticAPI', () => { + test("staticAPI", () => { const String = java.import("java.lang.String"); expect(String).toBeTruthy(); - const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatPromise'), 'Expected `formatPromise` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + const api = Object.keys(String).filter((key) => typeof String[key] === "function"); + expect(api.includes("format"), "Expected `format` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatSync"), "Expected `formatSync` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatAsync"), "Expected `formatAsync` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatPromise"), "Expected `formatPromise` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatundefined"), "Expected `formatundefined` to NOT be present, but it is.").toBeFalsy(); }); - test('syncCalls', () => { + test("syncCalls", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); arrayList.addSync("hello"); arrayList.addSync("world"); expect(arrayList.sizeSync()).toBe(2); }); - test('staticSyncCalls', () => { + test("staticSyncCalls", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); - expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); }); - test('asyncCalls', async () => { - await new Promise(resolve => { + test("asyncCalls", async () => { + await new Promise((resolve) => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function (err, result) { + arrayList.add("hello", function (err) { expect(err).toBeFalsy(); - arrayList.add("world", function (err, result) { + arrayList.add("world", function (err) { expect(err).toBeFalsy(); arrayList.size(function (err, size) { expect(err).toBeFalsy(); @@ -66,4 +69,4 @@ describe('default', () => { }); }); }); -}); \ No newline at end of file +}); diff --git a/testAsyncOptions/invalidLaunch.test.js b/testAsyncOptions/invalidLaunch.test.js index d88f181..10b4f7b 100644 --- a/testAsyncOptions/invalidLaunch.test.js +++ b/testAsyncOptions/invalidLaunch.test.js @@ -1,51 +1,55 @@ import { describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('invalidLaunch', () => { - test('failedLaunch', () => { +describe("invalidLaunch", () => { + test("failedLaunch", () => { expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { syncSuffix: "Sync", - asyncSuffix: "" + asyncSuffix: "", }; // First show that if asyncOptions.promisify is undefined, using the promise variant of ensureJvm throws an error. - expect(() => { java.ensureJvm(); }).toThrow(/requires its one argument to be a callback function/); + expect(() => { + java.ensureJvm(); + }).toThrow(/requires its one argument to be a callback function/); expect(java.isJvmCreated()).toBeFalsy(); }); - test('callbackNotAFunction', () => { + test("callbackNotAFunction", () => { expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { syncSuffix: "", - promiseSuffix: 'P', - promisify: require('when/node').lift // https://github.com/cujojs/when + promiseSuffix: "P", + promisify: require("when/node").lift, // https://github.com/cujojs/when }; - expect(() => { java.ensureJvm('foo') }).toThrow(/requires its one argument to be a callback function/); + expect(() => { + java.ensureJvm("foo"); + }).toThrow(/requires its one argument to be a callback function/); expect(java.isJvmCreated()).toBeFalsy(); }); - test('jvmCanStillBeLaunched', async () => { + test("jvmCanStillBeLaunched", async () => { // None of the previous tests should have caused the JVM to be created, so it should still be possible to create one. expect(java.isJvmCreated()).toBeFalsy(); java.asyncOptions = { syncSuffix: "", - promiseSuffix: 'P', - promisify: require('when/node').lift // https://github.com/cujojs/when + promiseSuffix: "P", + promisify: require("when/node").lift, // https://github.com/cujojs/when }; - await new Promise(resolve => { + await new Promise((resolve) => { java.ensureJvm().done(function () { expect(java.isJvmCreated()).toBeTruthy(); resolve(); }); }); }); -}); \ No newline at end of file +}); diff --git a/testAsyncOptions/noAsync.test.js b/testAsyncOptions/noAsync.test.js index 7b57fbd..569d69f 100644 --- a/testAsyncOptions/noAsync.test.js +++ b/testAsyncOptions/noAsync.test.js @@ -1,17 +1,17 @@ // Just Sync and Promise, both with a non-empty suffix. import { beforeAll, describe, expect, test } from "vitest"; -import when from 'when'; +import when from "when"; import { java } from "../testHelpers"; -describe('noAsync', () => { +describe("noAsync", () => { beforeAll(async () => { - var api = Object.keys(java).filter((key) => typeof java[key] === 'function'); - expect(api.includes('isJvmCreated'), 'Expected `isJvmCreated` to be present, but it is NOT.').toBeTruthy(); + const api = Object.keys(java).filter((key) => typeof java[key] === "function"); + expect(api.includes("isJvmCreated"), "Expected `isJvmCreated` to be present, but it is NOT.").toBeTruthy(); expect(java.isJvmCreated()).toBeFalsy(); function before() { - var promise = when.promise(function (resolve) { + const promise = when.promise(function (resolve) { expect(java.isJvmCreated()).toBeFalsy(); resolve(); }); @@ -19,7 +19,7 @@ describe('noAsync', () => { } function after() { - var promise = when.promise(function (resolve) { + const promise = when.promise(function (resolve) { expect(java.isJvmCreated()).toBeTruthy(); resolve(); }); @@ -28,14 +28,14 @@ describe('noAsync', () => { java.asyncOptions = { syncSuffix: "Sync", - promiseSuffix: 'Promise', - promisify: require('when/node').lift + promiseSuffix: "Promise", + promisify: require("when/node").lift, }; java.registerClientP(before, after); java.registerClientP(null, after); java.registerClientP(before); - await new Promise(resolve => { + await new Promise((resolve) => { java.ensureJvm().done(function () { expect(java.isJvmCreated()).toBeTruthy(); resolve(); @@ -43,62 +43,70 @@ describe('noAsync', () => { }); }); - test('api', () => { - var arrayList = java.newInstanceSync("java.util.ArrayList"); + test("api", () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeTruthy(); expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); - expect(typeof arrayList.addSync !== 'undefined', 'Expected `addSync` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.addPromise !== 'undefined', 'Expected `addPromise` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.add === 'undefined', 'Expected `add` to NOT be present, but it is.').toBeTruthy(); - expect(typeof arrayList.addAsync === 'undefined', 'Expected `addAsync` to NOT be present, but it is.').toBeTruthy(); + expect(typeof arrayList.addSync !== "undefined", "Expected `addSync` to be present, but it is NOT.").toBeTruthy(); + expect( + typeof arrayList.addPromise !== "undefined", + "Expected `addPromise` to be present, but it is NOT." + ).toBeTruthy(); + expect(typeof arrayList.add === "undefined", "Expected `add` to NOT be present, but it is.").toBeTruthy(); + expect(typeof arrayList.addAsync === "undefined", "Expected `addAsync` to NOT be present, but it is.").toBeTruthy(); }); - test('importClass', () => { + test("importClass", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. - var ArrayList = java.import("java.util.ArrayList"); + const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); - var arrayList = new ArrayList(); + const arrayList = new ArrayList(); expect(arrayList).toBeTruthy(); expect(arrayList.sizeSync()).toBe(0); }); - test('staticAPI', () => { - var String = java.import("java.lang.String"); + test("staticAPI", () => { + const String = java.import("java.lang.String"); expect(String).toBeTruthy(); - var api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - expect(api.includes('formatSync'), 'Expected `formatSync` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatPromise'), 'Expected `formatPromise` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('format'), 'Expected `format` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + const api = Object.keys(String).filter((key) => typeof String[key] === "function"); + expect(api.includes("formatSync"), "Expected `formatSync` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatPromise"), "Expected `formatPromise` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("format"), "Expected `format` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatAsync"), "Expected `formatAsync` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatundefined"), "Expected `formatundefined` to NOT be present, but it is.").toBeFalsy(); }); - test('syncCalls', () => { - var arrayList = java.newInstanceSync("java.util.ArrayList"); + test("syncCalls", () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); arrayList.addSync("hello"); arrayList.addSync("world"); expect(arrayList.sizeSync()).toBe(2); }); - test('sStaticSyncCalls', () => { + test("sStaticSyncCalls", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. - var String = java.import("java.lang.String"); - expect(String.formatSync('%s--%s', "hello", "world")).toBe("hello--world"); + const String = java.import("java.lang.String"); + expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); }); - test('promiseCalls', async () => { - var arrayList = java.newInstanceSync("java.util.ArrayList"); - await new Promise(resolve => { - arrayList.addPromise("hello") - .then(() => { return arrayList.addPromise("world"); }) - .then(() => { return arrayList.sizePromise(); }) + test("promiseCalls", async () => { + const arrayList = java.newInstanceSync("java.util.ArrayList"); + await new Promise((resolve) => { + arrayList + .addPromise("hello") + .then(() => { + return arrayList.addPromise("world"); + }) + .then(() => { + return arrayList.sizePromise(); + }) .then((size) => { expect(size).toBe(2); resolve(); }); }); }); -}); \ No newline at end of file +}); diff --git a/testAsyncOptions/syncDefaultPlusPromise.test.js b/testAsyncOptions/syncDefaultPlusPromise.test.js index 18ee86e..8b0d9f8 100644 --- a/testAsyncOptions/syncDefaultPlusPromise.test.js +++ b/testAsyncOptions/syncDefaultPlusPromise.test.js @@ -6,23 +6,23 @@ import { getJava } from "../testHelpers"; const java = getJava({ syncSuffix: "", - promiseSuffix: 'P', - promisify: require('when/node').lift // https://github.com/cujojs/when + promiseSuffix: "P", + promisify: require("when/node").lift, // https://github.com/cujojs/when }); -describe('syncDefaultPlusPromise', () => { - test('api', () => { +describe("syncDefaultPlusPromise", () => { + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeTruthy(); expect(java.instanceOf(arrayList, "java.util.ArrayList")).toBeTruthy(); - expect(typeof arrayList.add !== 'undefined', 'Expected `add` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.addP !== 'undefined', 'Expected `addP` to be present, but it is NOT.').toBeTruthy(); - expect(typeof arrayList.addSync === 'undefined', 'Expected `addSync` to NOT be present, but it is.').toBeTruthy(); - expect(typeof arrayList.addAsync === 'undefined', 'Expected `addAsync` to NOT be present, but it is.').toBeTruthy(); + expect(typeof arrayList.add !== "undefined", "Expected `add` to be present, but it is NOT.").toBeTruthy(); + expect(typeof arrayList.addP !== "undefined", "Expected `addP` to be present, but it is NOT.").toBeTruthy(); + expect(typeof arrayList.addSync === "undefined", "Expected `addSync` to NOT be present, but it is.").toBeTruthy(); + expect(typeof arrayList.addAsync === "undefined", "Expected `addAsync` to NOT be present, but it is.").toBeTruthy(); }); - test('importClass', () => { + test("importClass", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. // This test verifies the import runs without error. const ArrayList = java.import("java.util.ArrayList"); @@ -32,38 +32,43 @@ describe('syncDefaultPlusPromise', () => { expect(arrayList.size()).toBe(0); }); - test('staticAPI', () => { + test("staticAPI", () => { const String = java.import("java.lang.String"); expect(String).toBeTruthy(); - const api = Object.keys(String).filter((key) => typeof String[key] === 'function'); - expect(api.includes('format'), 'Expected `format` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatP'), 'Expected `formatP` to be present, but it is NOT.').toBeTruthy(); - expect(api.includes('formatSync'), 'Expected `formatSync` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatAsync'), 'Expected `formatAsync` to NOT be present, but it is.').toBeFalsy(); - expect(api.includes('formatundefined'), 'Expected `formatundefined` to NOT be present, but it is.').toBeFalsy(); + const api = Object.keys(String).filter((key) => typeof String[key] === "function"); + expect(api.includes("format"), "Expected `format` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatP"), "Expected `formatP` to be present, but it is NOT.").toBeTruthy(); + expect(api.includes("formatSync"), "Expected `formatSync` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatAsync"), "Expected `formatAsync` to NOT be present, but it is.").toBeFalsy(); + expect(api.includes("formatundefined"), "Expected `formatundefined` to NOT be present, but it is.").toBeFalsy(); }); - test('syncCalls', () => { + test("syncCalls", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); arrayList.add("hello"); arrayList.add("world"); expect(arrayList.size()).toBe(2); }); - test('staticSyncCalls', () => { + test("staticSyncCalls", () => { // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); - expect(String.format('%s--%s', "hello", "world")).toBe("hello--world"); + expect(String.format("%s--%s", "hello", "world")).toBe("hello--world"); }); - test('promiseCalls', async () => { + test("promiseCalls", async () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - await new Promise(resolve => { - arrayList.addP("hello") - .then(() => { return arrayList.addP("world"); }) - .then(() => { return arrayList.sizeP(); }) + await new Promise((resolve) => { + arrayList + .addP("hello") + .then(() => { + return arrayList.addP("world"); + }) + .then(() => { + return arrayList.sizeP(); + }) .then((size) => { expect(size).toBe(2); resolve(); diff --git a/testAsyncOptions/unusableMethodName.test.js b/testAsyncOptions/unusableMethodName.test.js index 30ed983..e1670e4 100644 --- a/testAsyncOptions/unusableMethodName.test.js +++ b/testAsyncOptions/unusableMethodName.test.js @@ -8,11 +8,11 @@ import { beforeAll, describe, expect, test } from "vitest"; import { java } from "../testHelpers"; -describe('unusableMethodName', () => { +describe("unusableMethodName", () => { beforeAll(async () => { - await new Promise(resolve => { + await new Promise((resolve) => { function before(callback) { - java.classpath.push('test/'); + java.classpath.push("test/"); expect(java.isJvmCreated()).toBeFalsy(); callback(); } @@ -25,8 +25,8 @@ describe('unusableMethodName', () => { java.asyncOptions = { syncSuffix: "Sync", asyncSuffix: "", - ifReadOnlySuffix: "_alt" - } + ifReadOnlySuffix: "_alt", + }; java.registerClient(before, after); java.ensureJvm(function (err) { @@ -37,40 +37,40 @@ describe('unusableMethodName', () => { }); }); - test('unusableMethodName_nameThrows', () => { - var Test = java.import("Test"); + test("unusableMethodName_nameThrows", () => { + const Test = java.import("Test"); expect(Test).toBeTruthy(); expect(() => { Test.name(function (_err) { - throw new Error('should not get here'); + throw new Error("should not get here"); }); }).toThrowError(TypeError); }); - test('unusableMethodName_callerThrows', () => { - var Test = java.import("Test"); + test("unusableMethodName_callerThrows", () => { + const Test = java.import("Test"); expect(Test).toBeTruthy(); expect(() => { Test.caller(function (_err) { - throw new Error('should not get here'); + throw new Error("should not get here"); }); }).toThrowError(TypeError); }); - test('unusableMethodName_argumentsThrows', () => { - var Test = java.import("Test"); + test("unusableMethodName_argumentsThrows", () => { + const Test = java.import("Test"); expect(Test).toBeTruthy(); expect(() => { Test.arguments(function (_err) { - throw new Error('should not get here'); + throw new Error("should not get here"); }); }).toThrowError(TypeError); }); - test('alternateMethodName_name_altWorks', async () => { - var Test = java.import("Test"); + test("alternateMethodName_name_altWorks", async () => { + const Test = java.import("Test"); expect(Test).toBeTruthy(); - await new Promise(resolve => { + await new Promise((resolve) => { Test.name_alt(function (err, val) { expect(err).toBeFalsy(); expect(val).toBe("name"); @@ -79,10 +79,10 @@ describe('unusableMethodName', () => { }); }); - test('alternateMethodName_caller_altWorks', async () => { - var Test = java.import("Test"); + test("alternateMethodName_caller_altWorks", async () => { + const Test = java.import("Test"); expect(Test).toBeTruthy(); - await new Promise(resolve => { + await new Promise((resolve) => { Test.caller_alt(function (err, val) { expect(err).toBeFalsy(); expect(val).toBe("caller"); @@ -91,10 +91,10 @@ describe('unusableMethodName', () => { }); }); - test('alternateMethodName_arguments_altWorks', async () => { - var Test = java.import("Test"); + test("alternateMethodName_arguments_altWorks", async () => { + const Test = java.import("Test"); expect(Test).toBeTruthy(); - await new Promise(resolve => { + await new Promise((resolve) => { Test.arguments_alt(function (err, val) { expect(err).toBeFalsy(); expect(val).toBe("arguments"); @@ -103,8 +103,8 @@ describe('unusableMethodName', () => { }); }); - test('reservedFieldName', () => { - var TestEnum = java.import("Test$Enum"); + test("reservedFieldName", () => { + const TestEnum = java.import("Test$Enum"); expect(TestEnum).toBeTruthy(); // 'foo' and 'bar' are valid enum names @@ -119,4 +119,4 @@ describe('unusableMethodName', () => { expect(TestEnum.caller_alt.toString()).toBe("caller"); expect(TestEnum.arguments_alt.toString()).toBe("arguments"); }); -}); \ No newline at end of file +}); diff --git a/testHelpers.js b/testHelpers.js index 7149b01..93e8fa0 100644 --- a/testHelpers.js +++ b/testHelpers.js @@ -10,8 +10,8 @@ export function getJava(asyncOptions) { java.asyncOptions = asyncOptions ?? { syncSuffix: "Sync", asyncSuffix: "", - promiseSuffix: 'Promise', - promisify: require('when/node').lift // https://github.com/cujojs/when + promiseSuffix: "Promise", + promisify: require("when/node").lift, // https://github.com/cujojs/when }; // force initialization diff --git a/testIntegration/jdbc/enduranceTest.js b/testIntegration/jdbc/enduranceTest.js index 0a82e1c..e1b2e0a 100644 --- a/testIntegration/jdbc/enduranceTest.js +++ b/testIntegration/jdbc/enduranceTest.js @@ -1,66 +1,73 @@ -'use strict'; +"use strict"; -var memwatch = require('memwatch'); +const memwatch = require("memwatch"); -var dbServerName = '192.168.13.190'; -var dbPort = 1433; -var dbName = 'test'; -var dbUserId = 'test'; -var dbPassword = 'test'; -var dbConnectString = 'jdbc:sqlserver://' + dbServerName + ':' + dbPort + ';databaseName=' + dbName + ';selectMethod=direct;responseBuffering=adaptive;packetSize=0;programName=nodeJavaTest;hostProcess=nodeJavaTest;sendStringParametersAsUnicode=false;'; -var dbConnectionClass = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'; +const dbServerName = "192.168.13.190"; +const dbPort = 1433; +const dbName = "test"; +const dbUserId = "test"; +const dbPassword = "test"; +const dbConnectString = + "jdbc:sqlserver://" + + dbServerName + + ":" + + dbPort + + ";databaseName=" + + dbName + + ";selectMethod=direct;responseBuffering=adaptive;packetSize=0;programName=nodeJavaTest;hostProcess=nodeJavaTest;sendStringParametersAsUnicode=false;"; +const dbConnectionClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; -//var dbUserId = 'test'; -//var dbPassword = 'test'; -//var dbConnectString = "jdbc:mysql://localhost/test"; -//var dbConnectionClass = 'com.mysql.jdbc.Driver'; +//const dbUserId = 'test'; +//const dbPassword = 'test'; +//const dbConnectString = "jdbc:mysql://localhost/test"; +//const dbConnectionClass = 'com.mysql.jdbc.Driver'; -var util = require('util'); -var path = require('path'); -var java = require('../../'); -java.classpath.push(path.join(__dirname, 'sqljdbc4.jar')); -java.classpath.push(path.join(__dirname, 'mysql-connector-java-5.1.22-bin.jar')); -var DriverManager = java.import('java.sql.DriverManager'); +const util = require("util"); +const path = require("path"); +const java = require("../../"); +java.classpath.push(path.join(__dirname, "sqljdbc4.jar")); +java.classpath.push(path.join(__dirname, "mysql-connector-java-5.1.22-bin.jar")); +const DriverManager = java.import("java.sql.DriverManager"); -setTimeout(function() { - console.log('start heap diff'); - var hd = new memwatch.HeapDiff(); - var loopStart = new Date(); - for (var loopCount = 0; loopCount < 500000; loopCount++) { - console.log('loopCount:', loopCount); +setTimeout(function () { + console.log("start heap diff"); + const hd = new memwatch.HeapDiff(); + const loopStart = new Date(); + for (let loopCount = 0; loopCount < 500000; loopCount++) { + console.log("loopCount:", loopCount); doLoop(); } - var loopEnd = new Date(); - console.log('end loop', loopEnd - loopStart); + const loopEnd = new Date(); + console.log("end loop", loopEnd - loopStart); memwatch.gc(); - var diff = hd.end(); + const diff = hd.end(); console.log(util.inspect(diff.change, false, 10, true)); console.log("done... waiting 30seconds"); - setTimeout(function() { + setTimeout(function () { console.log("really done"); }, 30 * 1000); }, 1); function doLoop() { java.findClassSync(dbConnectionClass); - var conn = DriverManager.getConnectionSync(dbConnectString, dbUserId, dbPassword); + const conn = DriverManager.getConnectionSync(dbConnectString, dbUserId, dbPassword); //console.log("connected"); - var statement = conn.createStatementSync(); - var queryString = "select * from Person"; - var rs = statement.executeQuerySync(queryString); - var metaData = rs.getMetaDataSync(); - var columnCount = metaData.getColumnCountSync(); + const statement = conn.createStatementSync(); + const queryString = "select * from Person"; + const rs = statement.executeQuerySync(queryString); + const metaData = rs.getMetaDataSync(); + const columnCount = metaData.getColumnCountSync(); while (rs.nextSync()) { - for (var i = 1; i <= columnCount; i++) { - var obj = rs.getObjectSync(i); + for (let i = 1; i <= columnCount; i++) { + const obj = rs.getObjectSync(i); if (obj) { - if (obj.hasOwnProperty('getClassSync')) { - if (obj.getClassSync().toString() == 'class java.math.BigDecimal') { + if (Object.prototype.hasOwnProperty.call(obj, "getClassSync")) { + if (obj.getClassSync().toString() == "class java.math.BigDecimal") { //console.log(obj.doubleValueSync()); continue; } - if (obj.getClassSync().toString() == 'class java.sql.Timestamp') { + if (obj.getClassSync().toString() == "class java.sql.Timestamp") { //console.log(obj.getTimeSync()); continue; } @@ -71,4 +78,4 @@ function doLoop() { } } conn.closeSync(); -} \ No newline at end of file +} diff --git a/testIntegration/jdbc/enduranceTestAsync.js b/testIntegration/jdbc/enduranceTestAsync.js index 039c52f..87b8eea 100644 --- a/testIntegration/jdbc/enduranceTestAsync.js +++ b/testIntegration/jdbc/enduranceTestAsync.js @@ -1,67 +1,67 @@ -'use strict'; +"use strict"; // Tests concurrent async jdbc connections. // TODO: a proper jdbc wrapper should be created to avoid ugly async code. -var memwatch = require('memwatch'); -var async = require('async'); +const memwatch = require("memwatch"); +const async = require("async"); // 1 - 23,305ms // 5 - 9,338ms // 10 - 8,846ms -var concurrency = 5; - -//var dbServerName = '192.168.13.190'; -//var dbPort = 1433; -//var dbName = 'test'; -//var dbUserId = 'test'; -//var dbPassword = 'test'; -//var dbConnectString = 'jdbc:sqlserver://' + dbServerName + ':' + dbPort + ';databaseName=' + dbName + ';selectMethod=direct;responseBuffering=adaptive;packetSize=0;programName=nodeJavaTest;hostProcess=nodeJavaTest;sendStringParametersAsUnicode=false;'; -//var dbConnectionClass = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'; - -var dbUserId = 'test'; -var dbPassword = 'test'; -var dbConnectString = "jdbc:mysql://localhost/test"; -var dbConnectionClass = 'com.mysql.jdbc.Driver'; - -var util = require('util'); -var path = require('path'); -var java = require('../../'); -java.classpath.push(path.join(__dirname, 'sqljdbc4.jar')); -java.classpath.push(path.join(__dirname, 'mysql-connector-java-5.1.22-bin.jar')); -var DriverManager = java.import('java.sql.DriverManager'); - -setTimeout(function() { - console.log('start heap diff'); - var hd = new memwatch.HeapDiff(); - var loopStart = new Date(); +const concurrency = 5; + +//const dbServerName = '192.168.13.190'; +//const dbPort = 1433; +//const dbName = 'test'; +//const dbUserId = 'test'; +//const dbPassword = 'test'; +//const dbConnectString = 'jdbc:sqlserver://' + dbServerName + ':' + dbPort + ';databaseName=' + dbName + ';selectMethod=direct;responseBuffering=adaptive;packetSize=0;programName=nodeJavaTest;hostProcess=nodeJavaTest;sendStringParametersAsUnicode=false;'; +//const dbConnectionClass = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'; + +const dbUserId = "test"; +const dbPassword = "test"; +const dbConnectString = "jdbc:mysql://localhost/test"; +const dbConnectionClass = "com.mysql.jdbc.Driver"; + +const util = require("util"); +const path = require("path"); +const java = require("../../"); +java.classpath.push(path.join(__dirname, "sqljdbc4.jar")); +java.classpath.push(path.join(__dirname, "mysql-connector-java-5.1.22-bin.jar")); +const DriverManager = java.import("java.sql.DriverManager"); + +setTimeout(function () { + console.log("start heap diff"); + const hd = new memwatch.HeapDiff(); + const loopStart = new Date(); java.findClassSync(dbConnectionClass); - var loopIterations = []; - for (var i = 0; i < 5000; i++) { + const loopIterations = []; + for (let i = 0; i < 5000; i++) { loopIterations.push(i); } async.forEachLimit( loopIterations, concurrency, - function(loopCount, callback) { - console.log('loopCount:', loopCount); + function (loopCount, callback) { + console.log("loopCount:", loopCount); return doLoop(callback); }, - function(err) { + function (err) { if (err) { console.log("fail", err); } - var loopEnd = new Date(); - console.log('end loop', loopEnd - loopStart); + const loopEnd = new Date(); + console.log("end loop", loopEnd - loopStart); memwatch.gc(); - var diff = hd.end(); + const diff = hd.end(); console.log(util.inspect(diff.change, false, 10, true)); console.log("done... waiting 30seconds"); - setTimeout(function() { + setTimeout(function () { console.log("really done"); }, 30 * 1000); } @@ -69,7 +69,7 @@ setTimeout(function() { }, 1); function doLoop(callback) { - var conn; + let conn; return DriverManager.getConnection(dbConnectString, dbUserId, dbPassword, getConnectionComplete); @@ -80,34 +80,41 @@ function doLoop(callback) { conn = _conn; //console.log("connected"); - var queryString = "select * from Person"; - return executeQuery(conn, queryString, function(row, callback) { - //console.log("row", row); - return callback(); - }, function(err) { - if (err) { - return callback(err); + const queryString = "select * from Person"; + return executeQuery( + conn, + queryString, + function (row, callback) { + //console.log("row", row); + return callback(); + }, + function (err) { + if (err) { + return callback(err); + } + //console.log("query complete"); + return callback(); } - //console.log("query complete"); - return callback(); - }); + ); } } function executeQuery(conn, sql, rowCallback, completeCallback) { - var statement = conn.createStatementSync(); - return statement.executeQuery(sql, function(err, rs) { + const statement = conn.createStatementSync(); + return statement.executeQuery(sql, function (err, rs) { if (err) { return completeCallback(err); } - var columnCount = rs.getMetaDataSync().getColumnCountSync(); + const columnCount = rs.getMetaDataSync().getColumnCountSync(); - var rsComplete = false; + let rsComplete = false; async.until( - function() { return rsComplete; }, - function(callback) { - return rs.next(function(err, rsNextResult) { + function () { + return rsComplete; + }, + function (callback) { + return rs.next(function (err, rsNextResult) { if (err) { return callback(err); } @@ -115,14 +122,14 @@ function executeQuery(conn, sql, rowCallback, completeCallback) { rsComplete = true; return callback(); } - var row = []; - for (var i = 1; i <= columnCount; i++) { + const row = []; + for (let i = 1; i <= columnCount; i++) { row.push(rs.getObjectSync(i)); } return rowCallback(row, callback); }); }, - function(err) { + function (err) { if (err) { return completeCallback(err); } @@ -130,4 +137,4 @@ function executeQuery(conn, sql, rowCallback, completeCallback) { } ); }); -} \ No newline at end of file +} diff --git a/testIntegration/poi/poi-3.9-20121203.jar b/testIntegration/poi/poi-3.9-20121203.jar index c5d731b09835acd9ced33f5fd0e66d55f462b5b7..0f462880ea30349656038eca3bc94320efef0179 100644 GIT binary patch delta 239 zcmZ45RkX9KXv4gIM&8Zy`VVn2@-`>T+MY0rvF{NhZ~MC%rtR-)n9FQ{?3A6%+f#P3 z2u)?=-CpL$DtZur|)eh~o3gjj@~ delta 152 zcmeBw=hgVmYr~9)%`+qJGmCT0+posOb^O7q%!M72PD^sawoI7Db$jaOi81F4HYfCU zy=Z@3$_T_v+h3P53vAr}M~%g*uHAeo3lOtzH($zTm9)KxoqfJUyO07q5OV-AClGUO z7gFH9YTy1Mo_qU?cpk|Y+nGFgC+ujQ%-1@Zf9qs{4`-IQoE6Y%Z~ZB-z4fPH*IocM CkU_Zs diff --git a/testIntegration/poi/poiTest.js b/testIntegration/poi/poiTest.js index ce516c0..220a4a8 100644 --- a/testIntegration/poi/poiTest.js +++ b/testIntegration/poi/poiTest.js @@ -1,20 +1,23 @@ -var java = require('../../'); +const java = require("../../"); java.classpath.push("poi-3.9-20121203.jar"); java.classpath.push("poi-scratchpad-3.9-20121203.jar"); -var stream = java.newInstanceSync("java.io.FileInputStream", 'presentation.ppt'); -var ppt = java.newInstanceSync('org.apache.poi.hslf.usermodel.SlideShow', stream); +const stream = java.newInstanceSync("java.io.FileInputStream", "presentation.ppt"); +const ppt = java.newInstanceSync("org.apache.poi.hslf.usermodel.SlideShow", stream); stream.close(); -var pgsize = ppt.getPageSizeSync(); +const pgsize = ppt.getPageSizeSync(); +console.log(`found page size ${pgsize.width}x${pgsize.height}`); -var slides = ppt.getSlidesSync(); +const slides = ppt.getSlidesSync(); +console.log(`found ${slides.length} slides`); -var TYPE_INT_RGB = java.getStaticFieldValue("java.awt.image.BufferedImage", "TYPE_INT_RGB"); +const TYPE_INT_RGB = java.getStaticFieldValue("java.awt.image.BufferedImage", "TYPE_INT_RGB"); -var img, graphics; -for (i = 0; i < slides.length; i++) { - img = java.newInstanceSync('java.awt.image.BufferedImage', pgsize.width, pgsize.height, TYPE_INT_RGB); - graphics = img.createGraphicsSync(); +for (let i = 0; i < slides.length; i++) { + console.log(`creating image: ${i}`); + const img = java.newInstanceSync("java.awt.image.BufferedImage", pgsize.width, pgsize.height, TYPE_INT_RGB); + img.createGraphicsSync(); } -console.log('done'); \ No newline at end of file +console.log("done"); +process.exit(0); diff --git a/testIntegration/webkit/main.js b/testIntegration/webkit/main.js index 403b522..2cf9063 100644 --- a/testIntegration/webkit/main.js +++ b/testIntegration/webkit/main.js @@ -1,5 +1,5 @@ -var java = require('../../'); +const java = require("../../"); -function runJavaMethod() { +export function runJavaMethod() { return java.callStaticMethodSync("java.lang.System", "getProperty", "java.version"); -} \ No newline at end of file +} diff --git a/testRunner.js b/testRunner.js index b47d5ee..92031fe 100644 --- a/testRunner.js +++ b/testRunner.js @@ -3,23 +3,25 @@ // This is a custom test runner. All tests are run with vitest, but in separate // processes, which allows us to test java with different configuration options. -const async = require('async'); -const chalk = require('chalk'); -const childProcess = require('child_process'); -const glob = require('glob'); -const path = require('path'); +const async = require("async"); +const chalk = require("chalk"); +const childProcess = require("node:child_process"); +const glob = require("glob"); +const path = require("node:path"); -const tests = glob.sync(path.join('testAsyncOptions', '*.test.js')).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase())); +const tests = glob + .sync(path.join("testAsyncOptions", "*.test.js")) + .sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase())); -tests.unshift('test'); // Arrange to run the primary tests first, in a single process +tests.unshift("test"); // Arrange to run the primary tests first, in a single process function runTest(testArgs, done) { - const vitest = path.join('node_modules', '.bin', 'vitest'); - const cmd = testArgs === 'test' ? `vitest --dir test` : `${vitest} ${testArgs}`; + const vitest = path.join("node_modules", ".bin", "vitest"); + const cmd = testArgs === "test" ? `vitest --dir test` : `${vitest} ${testArgs}`; console.log(`running "${cmd}"...`); childProcess.exec(cmd, function (error, stdout, stderr) { - var errText = stderr.toString(); - if (errText !== '') { + const errText = stderr.toString(); + if (errText !== "") { console.error(chalk.bold.red(errText)); } @@ -34,5 +36,5 @@ async.eachSeries(tests, runTest, function (err) { process.exit(1); return; } - console.log(chalk.green('Tests completed successfully!')); + console.log(chalk.green("Tests completed successfully!")); }); From 9b68dc6b999dbaa5b31767a912dc2ecfd8979694 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Wed, 21 May 2025 23:00:22 +0000 Subject: [PATCH 35/47] move src directories --- .devcontainer/Dockerfile | 2 +- .vscode/settings.json | 1 + README.md | 19 +++-------------- binding.gyp | 18 ++++++++-------- compile-java.sh | 13 ------------ index.js | 2 +- jarjar.rule | 1 - package.json | 7 +++--- scripts/compile-java.sh | 17 +++++++++++++++ findJavaHome.js => scripts/findJavaHome.js | 0 .../find_java_libdir.sh | 6 ++++-- postInstall.js => scripts/postInstall.js | 2 +- testRunner.js => scripts/testRunner.js | 7 +++--- scripts/update-commons-lang.sh | 20 ++++++++++++++++++ {src => src-cpp}/java.cpp | 0 {src => src-cpp}/java.h | 0 {src => src-cpp}/javaObject.cpp | 0 {src => src-cpp}/javaObject.h | 0 {src => src-cpp}/javaScope.cpp | 0 {src => src-cpp}/javaScope.h | 0 {src => src-cpp}/methodCallBaton.cpp | 0 {src => src-cpp}/methodCallBaton.h | 0 {src => src-cpp}/nodeJavaBridge.cpp | 0 {src => src-cpp}/node_NodeDynamicProxyClass.h | 0 {src => src-cpp}/utils.cpp | 0 {src => src-cpp}/utils.h | 0 .../commons-lang.jarjar.rules | 0 .../commons-lang3-node-java.jar | Bin jarjar-1.4.jar => src-java/jarjar-1.4.jar | Bin src-java/node/CastingUtils.class | Bin 1377 -> 1377 bytes src-java/node/MethodCallBaton.class | Bin 1867 -> 1867 bytes src-java/node/NodeDynamicProxyClass.class | Bin 2231 -> 2231 bytes src-java/node/NodeJsException.class | Bin 242 -> 242 bytes src-java/node/VarArgs.class | Bin 1365 -> 1365 bytes {lib => src-node}/nodeJavaBridge.js | 2 +- test/ListenerInterface.class | Bin 265 -> 265 bytes test/ListenerTester.class | Bin 756 -> 756 bytes test/RunInterface$1.class | Bin 921 -> 941 bytes test/RunInterface$Interface0Arg.class | Bin 204 -> 204 bytes test/RunInterface$Interface1Arg.class | Bin 222 -> 222 bytes test/RunInterface$InterfaceWithReturn.class | Bin 217 -> 217 bytes test/RunInterface.class | Bin 2065 -> 2065 bytes test/Test$Enum.class | Bin 966 -> 1025 bytes test/Test$StaticEnum.class | Bin 866 -> 925 bytes test/Test$SubClass.class | Bin 318 -> 318 bytes test/Test$SuperClass.class | Bin 302 -> 302 bytes test/Test.class | Bin 6565 -> 6565 bytes test/TestExceptions.class | Bin 278 -> 278 bytes test/TestLambda$IntegerMath.class | Bin 195 -> 195 bytes test/TestLambda.class | Bin 1195 -> 1195 bytes testAsyncOptions/allThreeSuffix.test.js | 4 ++-- .../asyncSuffixSyncDefault.test.js | 4 ++-- testAsyncOptions/defacto.test.js | 4 ++-- testAsyncOptions/defactoPlusPromise.test.js | 4 ++-- testAsyncOptions/default.test.js | 4 ++-- testAsyncOptions/noAsync.test.js | 4 ++-- .../syncDefaultPlusPromise.test.js | 4 ++-- testHelpers.js | 1 - update-commons-lang.sh | 15 ------------- 59 files changed, 80 insertions(+), 81 deletions(-) delete mode 100755 compile-java.sh delete mode 100644 jarjar.rule create mode 100755 scripts/compile-java.sh rename findJavaHome.js => scripts/findJavaHome.js (100%) rename find_java_libdir.sh => scripts/find_java_libdir.sh (96%) rename postInstall.js => scripts/postInstall.js (95%) rename testRunner.js => scripts/testRunner.js (84%) create mode 100755 scripts/update-commons-lang.sh rename {src => src-cpp}/java.cpp (100%) rename {src => src-cpp}/java.h (100%) rename {src => src-cpp}/javaObject.cpp (100%) rename {src => src-cpp}/javaObject.h (100%) rename {src => src-cpp}/javaScope.cpp (100%) rename {src => src-cpp}/javaScope.h (100%) rename {src => src-cpp}/methodCallBaton.cpp (100%) rename {src => src-cpp}/methodCallBaton.h (100%) rename {src => src-cpp}/nodeJavaBridge.cpp (100%) rename {src => src-cpp}/node_NodeDynamicProxyClass.h (100%) rename {src => src-cpp}/utils.cpp (100%) rename {src => src-cpp}/utils.h (100%) rename commons-lang.jarjar.rules => src-java/commons-lang.jarjar.rules (100%) rename commons-lang3-node-java.jar => src-java/commons-lang3-node-java.jar (100%) rename jarjar-1.4.jar => src-java/jarjar-1.4.jar (100%) rename {lib => src-node}/nodeJavaBridge.js (99%) delete mode 100755 update-commons-lang.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index af983c7..fcca0a8 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ FROM mcr.microsoft.com/devcontainers/javascript-node:22 RUN apt-get update -RUN apt-get install -y openjdk-17-jdk gdb clang-format +RUN apt-get install -y openjdk-17-jdk maven gdb clang-format diff --git a/.vscode/settings.json b/.vscode/settings.json index 4f16494..8b4e243 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,7 @@ "clazzclazz", "Ferner", "jarray", + "javac", "jboolean", "jbyte", "jchar", diff --git a/README.md b/README.md index 4be0944..6dde09c 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Notes: * node-gyp requires python 2.x not python 3.x. See https://github.com/TooTallNate/node-gyp/issues/155 for more details. * If you see an error such as "Call to 'node findJavaHome.js' returned exit status 1" - Try running `node findJavaHome.js` in the node-java directory to see the full failure message. + Try running `node ./scripts/findJavaHome.js` in the node-java directory to see the full failure message. * If you are having problems finding 'jni.h'. Make sure you have the JDK installed not just the JRE. If you are using OpenJDK you want the openjdk-7-jdk package, not openjdk-7-jre. _Mavericks users see [Issue #86](https://github.com/nearinfinity/node-java/issues/86) if you run into this._ @@ -62,7 +62,7 @@ GYP_DEFINES="armv7=0" CCFLAGS='-march=armv6' CXXFLAGS='-march=armv6' npm install ## Manual compile (Using node-gyp) ```bash -./compile-java-code.sh +./scripts/compile-java.sh node-gyp configure build npm test ``` @@ -104,19 +104,6 @@ Then run node test.js ``` -### Java 1.8 support - -Manual compilation for Java 1.8 support requires additional steps: - -```bash -./compile-java-code.sh -./compile-java8-code.sh -node-gyp configure build -npm test -``` - -Java 1.8 language features can be used in Java classes only if a Java 1.8 JRE is available. The script compile-java8-code.sh is used only to compile java classes used in the 'test8' unit tests, but these classes are checked into the test8/ directory. Note that unit tests in the test8/ directory will pass (by design) if run against a Java 1.7 JRE, provided that a java.lang.UnsupportedClassVersionError is caught with the message 'Unsupported major.minor version 52.0' (the expected behavior when Java 1.8 language features are used in an older JRE). - ## Installation node-webkit ```bash @@ -898,7 +885,7 @@ var value = Test.NestedEnum.name_alt; // OK ## Error: Cannot find module '../build/jvm_dll_path.json' -Either `postInstall.js` didn't run or there was a problem detecting java. Try running `postInstall.js` manually. +Either `./scripts/postInstall.js` didn't run or there was a problem detecting java. Try running `./scripts/postInstall.js` manually. ## Debugging diff --git a/binding.gyp b/binding.gyp index 5629c01..25fa488 100644 --- a/binding.gyp +++ b/binding.gyp @@ -13,13 +13,13 @@ 'target_arch': 's390' }], ['OS=="win"', { - 'javahome%': '&2 exit 1 @@ -12,7 +14,7 @@ main () { local os=$2 local java_home full_java_version java_version - java_home=$(node findJavaHome.js) + java_home=$(node ./scripts/findJavaHome.js) full_java_version=$(${java_home}/bin/java -version 2>&1 | grep version | sed -e 's/.*version "\(.*\)"\(.*\)/\1/; 1q') if [[ "${full_java_version}" = "1."* ]] diff --git a/postInstall.js b/scripts/postInstall.js similarity index 95% rename from postInstall.js rename to scripts/postInstall.js index 7a61dec..50d3ec9 100644 --- a/postInstall.js +++ b/scripts/postInstall.js @@ -17,7 +17,7 @@ require("find-java-home")((err, home) => { const binary = dll ?? dylib ?? so; fs.writeFileSync( - path.resolve(__dirname, "./build/jvm_dll_path.json"), + path.resolve(__dirname, "../build/jvm_dll_path.json"), binary ? JSON.stringify(path.delimiter + path.dirname(path.resolve(home, binary))) : '""' ); } diff --git a/testRunner.js b/scripts/testRunner.js similarity index 84% rename from testRunner.js rename to scripts/testRunner.js index 92031fe..0f1c026 100644 --- a/testRunner.js +++ b/scripts/testRunner.js @@ -10,7 +10,7 @@ const glob = require("glob"); const path = require("node:path"); const tests = glob - .sync(path.join("testAsyncOptions", "*.test.js")) + .sync("*.test.js", { cwd: path.join(__dirname, "..", "testAsyncOptions") }) .sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase())); tests.unshift("test"); // Arrange to run the primary tests first, in a single process @@ -19,7 +19,7 @@ function runTest(testArgs, done) { const vitest = path.join("node_modules", ".bin", "vitest"); const cmd = testArgs === "test" ? `vitest --dir test` : `${vitest} ${testArgs}`; console.log(`running "${cmd}"...`); - childProcess.exec(cmd, function (error, stdout, stderr) { + childProcess.exec(cmd, (error, stdout, stderr) => { const errText = stderr.toString(); if (errText !== "") { console.error(chalk.bold.red(errText)); @@ -30,7 +30,8 @@ function runTest(testArgs, done) { }); } -async.eachSeries(tests, runTest, function (err) { +console.log('test to run', tests); +async.eachSeries(tests, runTest, (err) => { if (err) { console.error(chalk.bold.red(err)); process.exit(1); diff --git a/scripts/update-commons-lang.sh b/scripts/update-commons-lang.sh new file mode 100755 index 0000000..d3e2d92 --- /dev/null +++ b/scripts/update-commons-lang.sh @@ -0,0 +1,20 @@ +#!/bin/sh +set -eu + +SCRIPT_DIR=$(dirname "$0") +cd "${SCRIPT_DIR}/.." + +if [ -d build/commons-lang ]; then + cd build/commons-lang + git pull +else + mkdir -p build + cd build + git clone --depth 1 git@github.com:apache/commons-lang.git + cd commons-lang +fi + +mvn clean compile package -DskipTests +java -jar ../../src-java/jarjar-1.4.jar process ../../src-java/commons-lang.jarjar.rules target/commons-lang3*-SNAPSHOT.jar ../../src-java/commons-lang3-node-java.jar + +echo "complete!" diff --git a/src/java.cpp b/src-cpp/java.cpp similarity index 100% rename from src/java.cpp rename to src-cpp/java.cpp diff --git a/src/java.h b/src-cpp/java.h similarity index 100% rename from src/java.h rename to src-cpp/java.h diff --git a/src/javaObject.cpp b/src-cpp/javaObject.cpp similarity index 100% rename from src/javaObject.cpp rename to src-cpp/javaObject.cpp diff --git a/src/javaObject.h b/src-cpp/javaObject.h similarity index 100% rename from src/javaObject.h rename to src-cpp/javaObject.h diff --git a/src/javaScope.cpp b/src-cpp/javaScope.cpp similarity index 100% rename from src/javaScope.cpp rename to src-cpp/javaScope.cpp diff --git a/src/javaScope.h b/src-cpp/javaScope.h similarity index 100% rename from src/javaScope.h rename to src-cpp/javaScope.h diff --git a/src/methodCallBaton.cpp b/src-cpp/methodCallBaton.cpp similarity index 100% rename from src/methodCallBaton.cpp rename to src-cpp/methodCallBaton.cpp diff --git a/src/methodCallBaton.h b/src-cpp/methodCallBaton.h similarity index 100% rename from src/methodCallBaton.h rename to src-cpp/methodCallBaton.h diff --git a/src/nodeJavaBridge.cpp b/src-cpp/nodeJavaBridge.cpp similarity index 100% rename from src/nodeJavaBridge.cpp rename to src-cpp/nodeJavaBridge.cpp diff --git a/src/node_NodeDynamicProxyClass.h b/src-cpp/node_NodeDynamicProxyClass.h similarity index 100% rename from src/node_NodeDynamicProxyClass.h rename to src-cpp/node_NodeDynamicProxyClass.h diff --git a/src/utils.cpp b/src-cpp/utils.cpp similarity index 100% rename from src/utils.cpp rename to src-cpp/utils.cpp diff --git a/src/utils.h b/src-cpp/utils.h similarity index 100% rename from src/utils.h rename to src-cpp/utils.h diff --git a/commons-lang.jarjar.rules b/src-java/commons-lang.jarjar.rules similarity index 100% rename from commons-lang.jarjar.rules rename to src-java/commons-lang.jarjar.rules diff --git a/commons-lang3-node-java.jar b/src-java/commons-lang3-node-java.jar similarity index 100% rename from commons-lang3-node-java.jar rename to src-java/commons-lang3-node-java.jar diff --git a/jarjar-1.4.jar b/src-java/jarjar-1.4.jar similarity index 100% rename from jarjar-1.4.jar rename to src-java/jarjar-1.4.jar diff --git a/src-java/node/CastingUtils.class b/src-java/node/CastingUtils.class index de5359827ef7482064d3d099fa941ae1bd905e43..a449276b6a83e59ec832ed8e84bad7c24fb06951 100644 GIT binary patch literal 1377 zcmZ`(O;Zy=5Pd@e8^ZDxAb=1Ih??)j_yH0`BmqSUSOro=d0LVoEGC=OW`lV57kKe# zl?S-uB~V%wy;wG6q`O!2tc8ght-W)fc zD!NkO2G=)Um3Wz<-{*h6(!7$)E9G)RLKj0{)4O<(;Uz;YY7%-F2AhF(LszxjLPgDI zx$Z1nY=iMbA|VTr<3RuH}qfZ$T{=6eF`6@h%>eh#B4WidzFR+!&a1)}$uqbhfVbr($|3n8y86@vcv7%*7;4vAO;bm|b#X5>9$ORxm z=){ER#}$Twe{rKOT*WmB*Jb$NC#kh!mPeCHS$yL&L(P-a_6!{vrmXkt9Zgse>m9Iu zLnB9wMNmcvVd6`jG!v;!K5Oou{zZvGvrWsI!E;=faO2!KrHYm9Ja;03n=%dFZHA7l z>DpBC6>d&f%83}JWK82ODYq~DYdb=NlohpJh*XLpA!8Qzh@q+(%`(dZw9p_F8)#5xE$rk!YbO4cNfM zTc-5^ojkNN+FJuBU?0d}SfEve$%%HFpd?)ssc-0Pr#&60LQ02f!P-0cKcRE$6S}uf z(Cczl(I2W+G2|K{D=4fgJSQ0cY@73hYVR=+^aMTekSBhM$@SMZcJ%AJfNU`##~_g{ z5r_ja0mtbVGDFr9?JMX)ilX$U&k&cecm~FPU=R<`B6(;~)Tq1?6yM@AFO7z1Rn#iW(*`zV6&4B>A9sI&7mrqX z&}+PqlvbfPtNbhe11qI|vx~A=UV3`Er~CW5duG1<{MZ3-3M(q2m{M^R#}ph_kWk^r zR1itIrld#*k&)}P3Lj=v>_t|_oKSF5K~BXGPN@jvv=nFL_N;<)3eF1zE}52TUlH&n zk`Dy@bG4Eo5MDMdW2IGHGaC2wwF)i%qTaLxP9&Be>reG;MYqb?hOu5TigvbO*c-J{ z{*lLZXYDaPd6{zes;w8F6!f~2Nx=mHb>Vr@sM}`EYAU!WaL${x8|q0mSJ9ize9~j- zo>7ozvejCvQ8X4!NppCPG)=2~-!?1F8A(;cD8>|A(r_6pbEHTAFA0IMo^{o3Fn+dW zR!T-gAng_x*Bj+l)v)Y%#jwiuM!ae^tGZp>n29euud`If#5G*SH7TwODDm}L%PP?} zi#f?*Uc)|cyMRT~?BOk0wo#TydwRC{T8mBBa053rEa8@h+gO%bfuR;Bl=YU`7wUFK zAmW{d+rYl!?`#sN(Cc-> zDhW(`$LsdDZ<>8A=R_wHOWtAs>kisA*W@63Zbdh>K=glryoy1R@0K`{@Iw4)P^jc| z{()X;@iOsA%yW`YX5I+96D6rp p?#3v`No@jC?9(*099w#xysqJ}LpcP0UQUMXDfT*Ae#)BBcQdTG_TS6E0hW`S2 zH&4ckSGiQ;fy4_Ya`68!@$SJ8=aoZ=hd1+Pelx$BdGk)9C(+p-r(cf%4B>$V4Y~;~ z5Q4$bu<5>bvqjfm&puw=^zs3NF<$Ts!32Yz?0aS*j5-sRKs|(9(R)O_@4cD#%Yp0X zJ^4;|A{L^!V4^{w5lymR@3JFhFPO^by>hv*TJ#ur^0{J)qD3HvR{2ezv6R^+5J$T- zcyHD06zD=iI^5~Ca0%TedIT<`m!ZWkt$Eo6FW4xp<=kR%+6_v+JY-wdysHA&kd#k( zchz(RQb@~Po}$*SBWt2x;06Zd2ktJI7-DFy4L$QV?`;Q#lCMHX1a2b15Lx$vrQL0B zCtq~SWrf@p7)AOFnfC*4=aoz2?Z50`v-`j7gHMgD)5I)8)AFMlcTQ!GF}z61ZLM9d zuqL^zE$#7c8cw5afL6fN8c2?j)kT^quk!`$fG!NdW$WlkFk*^@+)-uD#$EmR7qJh;_2aPz3&*J_HT{yI6oQ*=_5wWh=o4Fj`Nr? zFlsufxJhyHz=($iiGE!EH0Fj?{RF~)VVj6f(#e?^)FY>8G%>?i=O60#?B(X@74K8D GhWUTz&xwct delta 785 zcmYjP&rcIU6#iy+x?8qWN@kCe?7@h>4i^XLvI4=)n-*6eDCa-@Nzcd*6HWX7}3n+8=z~-`)W*jO!L6 z=(lhhXDp;Kpdh0ltH80)4p&(@1$hf+F=*nP+RrN(GBIpoguxhJt}Qnv81zhbK^FC% zNT}vNE7$4`uU7FHX5||mm*4cz$8|l*4xtkgxgkivk^pnz$ek2RWBe6d1#} zz-3GbTtP`7iIl)3t_n<`1ShoVwF1PnS0rV%^x$e!20Dw z=E$tpC+}*me4%+84B;ieacBLBzgAId2Y$KM@Yf!Bq`~`Wa1oj?5CBuRBkUwENjpW!Qlb$;ae(V{TN{Pa*gRX%p!Zttk^BJ-n}e Wt`m&){-*mL%&L#(c9Pf{PW=Umk9sKp diff --git a/src-java/node/NodeDynamicProxyClass.class b/src-java/node/NodeDynamicProxyClass.class index 9eed5b236611e57d4dc9d5cfbfdc59e03abdefbc..95373a4b6129810511dfeab1b924c0a5a2c0392b 100644 GIT binary patch delta 1187 zcmYjQ-*XdH6#nk+-P~lkq1^;3DPVt>{Ay#Vg0!?2O0m;IgBGhrQMc{3X$eV4Qb0wE zI{pF7b(nz%ePD*Zma5y1@?&`Q(ecGc-~1nR)N@nE^yS`j&z|pm=X~evmb2xY{rT@7 zp8^=dmo^NT0$jpEfT3~4z3yi6Zeb~tom=tds|P73M9JDxyY=rf>-RuwS4_;sqQ~Y2HVH4w@wn;*h$`+ru_qM2kSHL>ocZ zcq>6V&?(R*(TyW2XSPJlQnk#$CT#kWkVqnR=eMbpKo7&gdZAOr>DBq%d9Ru)E{v7S z#j;M6k$4GxcfRQ+qJF$A@QTDS99Q4+!|8x`ZPm?J81~1{)zj?sJD9j+;{*l-1|?2n zNd3Z(x9EhgNsOS6Avk_&dVDl{X3VAzPfLvAj0#yPY2z$j7Z}$l)o=A431X7LS}l~l zMP0&qi76an5KCTl%Dw8@xS-2=Lp?X6q)k7jB`)GEb;U~6o^MOMgIRUg>Ly{{#d`vm zCEmve>amp`(t@}WlL%;QURw(cJU)?_3F4T*5<^41v(da;sn}S=vcw9ms6VW%6U0^O zCFfRhqs0YJpr~SIJ5BGJ8Z_f^8zofqO3?fd>=x-_u3Ws~&gH$q#Eigo^_3a#w8w7F zd!_1fu}~5Ch#^{M{y$u0*=hAPbJd@$e~l*IL2Jjb3KPwGPPB{7T3)&xJ$n=^k*O8wAdnSE|Ai(xN0{lf)fFNL?Zkhzc99-BMW|M* zkGV(mV7Nu6{_8<&9>l;da1gf%yd!3*W&xRq5%KsFEY6w{V{zI??mP67FK?2s_8MMC zc=9KdW=Zz)Gc7HR0G%l4s>yDqOqwxDg11pWosj547`@b)7G1zt5GaHQ_&GfdeDN<* C?bT5L delta 1198 zcmY+D-BX)I6vls>_f0l=dHD#GmVhmUQW_E{LhT1oYgdG^_}8_|vE@^63tx&@r% zD~}kx9(|m%=4H+K2(NI#!{wsKCHf=8x$KD<&|I<3s~&^A<}t)o>t6FD|8eoYqYGOp)=KW=2snpT3*!%%*cQozFXKW_{+E_xXsd z=C)6c8J|{;`y^;nG?*>-&~iS%koP%Ci)O*+28)_IK6wg0$7t~>vZT3dBlmpnllA$S zPkcV*f#x%x&sp|q=d?8)imE*#BNOwP$)a2)b7v`?EhsAY&ib?If&e_^i!zaEHeHzQ zUzp06CvLO(!%YP36~8nY)o8kdt;hFW?)q$g;a++ooB1EoXfZ#Rn_0Qiv+{N0%I{q! zqMFTF)#NDZ%!*rAr>IR_+XLSv*4K8^d>c4po&{1S=5%-pJ(DR8r*CJ>H%`iIJFVtV zr`_CgN0z0}{`%)6`r5{1AmTECie?<@t&B33^;S7qqgHHLLn>eum#n0CuB<7Eh+g|6 zvOhtm*cTSoY+?O~dc^2cTAXtovWb$Xi?HwCLdfk}2W--dzOZbnd>2SJJ zKcd}LTxXN=wRI|XPs)T;c)W2Q(7#J8#78JZ8CZB2SQ*$R_RCHbRg_|9;9z7B$;(ek)%ODu zUd65z$*Bb;nfZAW&1~Hm6dBlonm~XN2!YywBqxxk1QZ2{vuSB>XJFh2mgfSJAS)Pv N>L4n)fovuQ9smy%6K?U)W2Q(7#J9g8F;xEm>Ia(8MxUQcqW=CPRzHJ;bCB5U}abxC~R#YrY6{UCH@7b znG+}d2aM%{4T&4ip1kmf_zxK0EIoM8-DKW--#72`-kWoIE+75)eHH_l$GQZEBj74{ zNHL5ZG~YGrubZ8A{ps#OYp=_YTHWvLch?x4nd+8A8kYp5!euD4#B0(j8HG`dnTYGE zgpaI1P9cv1gX+AATJ^2w;l^S6ErV>gy2HSfStBiR&EksY1D_bRLB`H=Ltz|c^MzN4 z&M~1-!7cNXS4JdmV@hCJ;SOfZFaDU609qhas8LD7nIff*djj_rW-(`Woo6Y51%_*L~7?Qt49zKtk9jqu)mc%SR+RV1B||`3LXn1+Vl!o=?0i(Q?Eq zVEJ!cfg0QKKGV=CvQZH0_!CM&5WCUrDXwcBzev2B$Fyc&$KSv=11EGeT^L}J@=3b- z#8yV`&Z1k(y93<)j`hwXWf)qvR%wQD|6%ayr`C-$3q) zjnTa(WrK~06W4AHzr~&LyF+7K=-kZrIN!bJJLgoKithJcUm^f=SQSX&qQDr&b+{yu z#)Lpww`JX?FsZ|3jw=FFxGHcB(*hN^93F?ykXUZEnw=E}bGov_VBLRJ4;hBno2_v3 z&C6QYejL>H2oa62vlFz}+Kqkn(fDxqV@W+UUu;PXBf~KxaUE5O8@MTv#R$i&Bz^M| zx3IvF*$v(X)xDtAsBYDE!{;52+Y)zhmt#?43G*Dw68Es84vb<(wn#&Du#BOoj*X(j zkZSJ#!AR`W!vjwh*o1n(%IY=!@7TKf$);4r*zS`1H2Kz_1+s$-#q-pSQD&5F_cPcr z6$}o=L<}bBNftS(_0=^PFe&HU6BtKGQ!+O^zYnYD^$0iOmkuoe1UQBu={U4F-zCTd zb7H>2Klto3zQq6d9OBCoTaNe&$p1|@LW{M$Pb4})x$Z_@^d2SGjja0Y3ApD)PvR7M^~<{TY{8nzTYboHIJaoKdOB*G8WH|k^T;3gRY`lU SG*B~+B5gM?O7==|b>TO^SQuM^>5cc1_lNb25xo+CPoH9pUmQt)V$Op&%Bb1RCWdyMh1bb#Ii*F woW#6zegCAa)Z~(h0&CRR7#SEDn1PxZ7#M+SSQ*%We0Cs@iGc&i;smp}06&KlivR!s delta 102 zcmeBV>SPi)^>5cc1_lOW25xo+PId;aiRNp385sn9GK))6^HPgE^GZ^S(h`$X85sn! x63Y_xa}x8?_5G8wQj<&A7#SEDn1GrY7#LX?8JHPZfP7XUkBNZ|$YKYxH~>7U6R`jQ diff --git a/test/ListenerTester.class b/test/ListenerTester.class index f47674d6d0489de1058e3a29480f71bc5e79a93c..0fe29fa5509380cdfc32a83910cd5bc8c9d68b6e 100644 GIT binary patch delta 425 zcmYLFO;5s55S<uatsV{8mu#187wac+nV*S3}~(NaR*c)nWxxtI?DG1=3$aqN0*` zHSzawHtwrNFFUil^Cq)zAP?mF=hxdifHkbDh(O|qYLF3QNH?t;tKwR%)5_ja(?0eY zVw+CO@wXVHQu!bb1#u2lLjoE@s^(nzcFXqmZ9=cJQK)jH7&4*FwePr<9nZ7wgiJ*e zl7e9d`OJ3Rw&*h&Mlc#QST3(%oFRJRwJ#J*65FL9DyA{Rk=2mHY;eoglL_Qe;F#C2 zfW@H8YMt|kdzvY92EeFNE@BdKI*95Lby-42C>uSnZYV5L6>IT`p@cG3AuW)Fu!R||3I|cNAj?Tp_-|upP|=Hee4G&1PGD&f~i-`Nf7Q4 T6oY=GsGGzov_dhK!|}>D=XO9_ delta 437 zcmYLEO;5s55S-UiT1r7IqN1XLA7HBz!%1T_UQH7(Cd6ZvswEXnMHAzJ#D75eB_t{; z#;b{c#VcpyzGtGBo!y<;$?Q-WDqEl5ukQdVSl3}78$%pZDyDVF$ZDA3nA0$;VNS<9 z@^KWfpkh(QQm0x-FhsZghTqy@kW1Y=cHcHIf|P*-k__p(d*ha`TYga93q$wT@vmA8 z%DEQ=O#{m)GDJ?p<^{n%DOHpVtiV!X8(75}Ly}*34KF%|#Cq}vD40W? diff --git a/test/RunInterface$1.class b/test/RunInterface$1.class index 968bfc7824897c89c86e86d3920afbf5fc541c93..12eae8377033b6019ae8ff633369b6dd908aab6c 100644 GIT binary patch delta 535 zcmYjNu}&L75PiFMc=35L7lXkzm;`Kx^8q#lr-+0SDO6V>fs_c_? z?deE`NB*H|Zp4qZPI_ZpA`gqf8u>vpRD)pCcc9XGm6( zyPWncJ`ye`PrQ6C+_f7N+^TtlN%sy@zo^gPP|OhmEwm|eR4A)wahdWjFtcve{S9GI zDA=8QR5^C&Jb8=vZ!|?1^uQtG+w|O}%*_Z_uu51rv4$=_(Xm8R(%+@4M%B$+{snq2 BS_=RG delta 483 zcmYk3%Sszj7{`BSW|A@S7^5-PByGK9qRDuV?V|Ly=xRU^Tx8=a%7}q5N+uC^B0fPF z5M22LE(D{ri#~u);gg8p1Q#AS|NnQtoO5em+l{A}fB%6kwo;5RAHzZnNim@}WFfs^aC6*=X=OpH(>-#5Vr6!k56wr-l zWZ?14%S$bC&PgmTPAz6<;0B5WmF9Wom82G>B_^jbGVsFL298DPY>W(y49q~&85kIW chO#oS0a;88>|m0EffGn`0aY*pNgg&%083&Vh5!Hn delta 143 zcmX@Zc!p8n)W2Q(7#J9g8F<+lIM^AuCpzddvor8a`7!$iU9P$;Jr)AQ>Ej diff --git a/test/RunInterface$Interface1Arg.class b/test/RunInterface$Interface1Arg.class index 5be2e13d6287e6819ba536d30eb7ca8ce279b2ec..2008751cbfa674fa98d0238979c3a27affde33e4 100644 GIT binary patch delta 168 zcmcb|c#qNH)W2Q(7#J8#73zPf=cr|^GZ^S(h`$XRp2Z`$D(w01{OvJfvm)` zME#t^ymWp4q^#8Bl8FNL@r(>So_TqxMb0^i#l@+`>N44gok3#ft-Nb<080szArCCvZ; delta 143 zcmcb|c#l!w)W2Q(7#J9g8F<+lIM^AuCpy?Ovor8a`7!$iU9P$;Jr)Jmeg? diff --git a/test/RunInterface$InterfaceWithReturn.class b/test/RunInterface$InterfaceWithReturn.class index ae8a20a89abd31335e2b33c1a225a3ba15e25e7e..6257cc8189da7bbb66b4af52213fcefc5a217e7c 100644 GIT binary patch delta 134 zcmcb~c$1O$)W2Q(7#J8#7-#5Vr6!k56wp&) zWZ?14%S$bC&PgmTPAz6<;0B5WmF9Wom82G>B_^jbG6+u$6xL&7WME`q1{%u1zz8&p bm4OY&Vq#zilN=13K$;7vf)PmauyFzatTn*Y{7#N=+^Sst790gKK4DWME`q l0@}gAz{tYLz|6n`WHB+Yf=M<8E+EYXRKdu=&cMmW2>_h)ABO+{ diff --git a/test/RunInterface.class b/test/RunInterface.class index c0d30e952d09de60b02c8c5d680c954b92296201..1404e1a23f93d8c036eee43c756be934bc6b23e6 100644 GIT binary patch literal 2065 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 literal 966 zcmZuv?@!ZE6g^$Lw(H6U0|%Q!M5k^;nG^BX76KuVkSy|{NV52;n`J5Kx}tW~b>taeXm}|>KI!)*D0_a?lVBeBz7y6QhBFSSdA6?K8XT*?zZbg@NmL>*ZfGmW1qoqzC0= zifg%D-wvaIoaGX)=#7qdwQG68pU>KuFyEqs8&*FGI?le!xe`2*bq-|WHc!7`;uT(N zcyrYg<1(>|x{3QJnwUq{#3Gj^E;%lFWN8@J#~P16-tqcAePf|io``hVK6N@F=N=PViN9BRYh+^`ctkZo$S9Ssh+jgvsgLob5EK3@km&`q%39$9 z>gOBg4`?NZhtTne>NwO#3dv9RJCs&NlP{p3BO!>P2$B@Uj0-X&NJl^w#Q*>R diff --git a/test/Test$StaticEnum.class b/test/Test$StaticEnum.class index d63e7f54f42eb99f3241b6dab7aa19fc73e73aad..a474b9f7f6a60fe8564ab52f84ae3f611710d2ef 100644 GIT binary patch literal 925 zcmZuv?@!ZU5PsgZTen*F%L#6x2phN#Wsc~lE@XsYLbAYz;u7Mgu9l^wbV=LsXCaP6 zh(^O_|0v_VuazyZbYQvaVUgQsORaynv`*)9?h#B)9AOZnVR&IA1D89_WKC(kf}JWs&1{Rl^$UT&v&^3I$2E zRQK<@yf^+xLJNJ@cMd1#Lnk=4h8{)M|I<)U%#9&ux+C9;CIMljraqt@bZswYU7wT7 zwRIB(b_@p998Ut{!^z=zaW2y!WDT88}y$MZ@%$R5{JHXCaP6 zj7Gy}f0XguPT6$3P43Bgd(Ly7+n>L_{s8b2&kb;FnAk*F!=i@ACIp_y%hEA#QqqzY z6&(d>s~WZ$vK=Q#yd4J9j-A+d_rv6jK^%mk7wrYkVBifH3hiTW5SPaljlYdA7_@Td zb^GnU%}{(dtL|J5Adn@iGAqyb`tLo4g|;7hhsjyji;kUcKoKo%Jo><}WwlS8bEh6S zVXtn-kstONm06>je(1-$40mTV98@|ChVA!4Cr%>5S1lRQn{M!@Yja|Xl%Y8_Vwd(d z?S2xu-Wy+XG^8#yNlu_BHD45Xif0;Xw9$W>2`r;7u!8#n^T-PnkY~t^HycTxaf5zH z&?MIcpQG-n=f*UiOH_telN+Y*)R?Hg)#zXFMr()OUC_^>wn~x%K$d6#`4!2ZG8_h$ za0etJc^hQqF^6EEq1-^dB#+@9-PtsELG{Zh-PS8<)GYGq7i4b0r|T6d0hAPf4Jv(r zR^48`M)uPb_$oydJb;debdN|K5=nV#-@s3bntBcW3P$RfJay(W-zlXI>Ag?*5Oekw k*cdyPj{HahToRQF@Br5S%@ZdmJ8uU}a)KVxbmPl!k`HgoM}}p?`-j=FD-J`|wxUP?1>p1N>2j zS-FB&%BM|gguB`6j`ok6T%$B7fcuMoMnh9F>4{L*t zpx1bk#^KL*ua41Wn!A^Jo48_SlZ>6<%~flg{YMvqZoI3DjeAa23w6lk-F{j@w8-;j zpDPWn1iq@8I6I^h*Qbpb!|-Z-9z^dZhWy=s?MSYN|jAA%#hi##U^EfDqCs_IqXt7tT}e!(U~SN=T6(kRKH? zdk8|dn3*>-`*=UUU*7;GxQXB*R_H181;I2cvU(^k0;0{g+LL5)=Y^VghX4tCEKc_j{kZa WE{$x0D_oNYR1UgG_}3*55dHzXk2R10 diff --git a/test/Test$SuperClass.class b/test/Test$SuperClass.class index 35b83864c2753ec9ec8706c099db5459716ecb87..f3004fafd2720294f1be4913b28f8f2405a102a8 100644 GIT binary patch literal 302 zcmYjLJxc>o5S+av_q_8oQ9Hpxuuu!rSc*+R2!vQ9q*UI;C0saP*i$EK4~>7eO(K>qs@a-m=r;$?PIRh+~*}b@k*P8FMrHqK|0&C)lzQ?(-Moh zu!Vwb9Kvs!)((4&G}Rn`Yj6z5Ywbl4yO)^ocSII)@B9t&%7Qkc$-o_P8yV3?56RYz Y;uqroxqF80n1WsO$thKb0rru60|osvO#lD@ literal 302 zcmZ8bJxc>Y6r8=}_Pp~nQ9HpxurMi1VJm3@fk4nAA*HexAK}8ek^Ash*;ok{`2qP+ z;=EuXZZWfOX5R32-(On*w>V4CLK@*X!ij;s%Y9xC4O-W|g+Y6?c@~4tH1~4fykt_& zT~<)BE2$T**ykn&$!yb?1@M91W?OuE&9v~)a^qj2G Xz`p;>J+U-V2Z!jA6XpUOp@aAbtXDHY diff --git a/test/Test.class b/test/Test.class index 1559c37a2cab5aaf54322ad3da5e8146a4d5c81a..87fd03f1b963f4d25f75694bd258cd2341114fc4 100644 GIT binary patch literal 6565 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 delta 150 zcmbQnG>u8_)W2Q(7#J9g83ef)m>GE38F<+l_!t@3Y%=pQOYA24Iy3T5T&}Fi!@$BI zz{tQCl3HBiT9KSuP?DLSSIo#Dkd;`LsGpOVm#*)hl$DxXGI64W6tjkA7=t1M6VN~q nU<5)I238=SZQ=uQd3K->8&HS=D9r&RS%7R#Am#$HnHabMu4Eb) diff --git a/test/TestLambda$IntegerMath.class b/test/TestLambda$IntegerMath.class index 715fed7d71aaefde932b115caa3b44a1f304c353..44893917a7b9b599619861df712b1f11cdb17842 100644 GIT binary patch delta 139 zcmX@ic$ks*)W2Q(7#J8#7-#5Vr6!k56wrxg zWZ?14%S$bC&PgmTPAz6<;AUjt3P~+4@kz{0N=am7;P%WbNli~J@=YwsU}IolWMBrG g45WbuvN8Y#7?>E?!6XL*Cy?d>ssNh6z{AD?0EsCY`~Uy| delta 139 zcmX@ic$iV()W2Q(7#J8#7Tn*Y{7#N=+_dWZ()(EiUm%%uPy3WMg1pWMBfC h45V2Y8JHPZfGj2kRxruNzy+kafGQXn*cmw4H~?mO8ukDH diff --git a/test/TestLambda.class b/test/TestLambda.class index a56ab0ac164057d024e0175a3a7d7e94e4adfeef..60c082beabcf637e0e3c0e88cb371871d0ceb1cf 100644 GIT binary patch literal 1195 zcmbVLU2oD*7=8{giltgs1>M+iPNsBU44oed#zdDaHevGuvTG0Y$hwu5w1*}8Pu_T= zaTopo<8Ly)T~Vr#nRszN-jC;bKhAl-{kZrFU>DC-q>xsS(J+TBL*ay<@w&^se*JCt zMD!#>_J!j)@+CvMW*!-Y%4xU;l_BL185V11t0O|$;)AZutClB4UjzqS9ye8JxUS%a z1|0>4`3d#diy`ND@`$@5amjAwVc@2MTTy@_LuocK!(7d>Ov?ZfD7eF*P8=CBd%jJ4 zddu;|;b_nmL5Fu;(irl0p08}%k&f>%n6=haUd5r40tc*sJLB$XYbIW09CnYpZrhQfSwNAxvZ>-Wwlv(mlX;y9{en4V={r1y30&SG&@{#EruW#ZS?^fJTe{EV8sOkhDxEi?r*X!9LQ3rik{) z45Vo6Y`t1zFCtN3Zp`b?n z8b@Cu+K4!_Shgp@;yiWoq&`o3zWdu#r5aXvHJx_QHiI=8r%2y20YVC+2)^ZHNknWhaIGl|7!tL?C zMVhP>p6u{Z-{7we!<43DGt{b`6Mn|)7Pp7>sh8#gRjtjC4+*-HzI6E@;HX%ar24{Z zy}=N#w%a~IX%6^15Pg?H?K%^8Aofi^*mUnI*d0GW4Jl|0nKzCjJ#sxh5c1eDymSJ3 z202>RH9W*41yv0-Z1@LXyGgtu6%mBlzU!Zefn+Fz_xenoRcv8fMFKkv5ogR$tkyb< zp-qORkax<#kTh+1#H|UXL#=81Ty+Jz8XDNsa2q)dS>zbjLR-^5b52D)=n|#KKTwe! z_nbyx6rL13qqcV(=X64G{g`dxlpv_iTW%Yc@bmyV+t#jhO?x=2`NObxJ{JFX8MwUO zwl*_gQ@1T{SzS|#rh?}T>vIKJln+DYdK^}%;tIViAWjd828iTMI<3&keC@^;uursM zxJ5E?sf?0LBSX@MHV{RO*8Bw`z~T1hXGFK?`-)f;AFoVR{}z6SQ)IZb$UOc}^E8=f zGO9lmQ}1P>^@(G}k`X!!;!G2gW@sMy{%@p8Ipm2Yf&zsI;*ZczCV?A?Bp%}_o?sbw SNnarSGGU7-(HHDiQTzqhJQr91 diff --git a/testAsyncOptions/allThreeSuffix.test.js b/testAsyncOptions/allThreeSuffix.test.js index f9f7caf..d39c74a 100644 --- a/testAsyncOptions/allThreeSuffix.test.js +++ b/testAsyncOptions/allThreeSuffix.test.js @@ -26,7 +26,7 @@ describe("allThreeSuffix", () => { }); test("importClass", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); const arrayList = new ArrayList(); @@ -54,7 +54,7 @@ describe("allThreeSuffix", () => { }); test("staticSyncCalls", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); diff --git a/testAsyncOptions/asyncSuffixSyncDefault.test.js b/testAsyncOptions/asyncSuffixSyncDefault.test.js index dfd9354..9618799 100644 --- a/testAsyncOptions/asyncSuffixSyncDefault.test.js +++ b/testAsyncOptions/asyncSuffixSyncDefault.test.js @@ -47,7 +47,7 @@ describe("asyncSuffixSyncDefault", () => { }); test("importClass", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); const arrayList = new ArrayList(); @@ -75,7 +75,7 @@ describe("asyncSuffixSyncDefault", () => { }); test("staticSyncCalls", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); expect(String.format("%s--%s", "hello", "world")).toBe("hello--world"); diff --git a/testAsyncOptions/defacto.test.js b/testAsyncOptions/defacto.test.js index 5bcebd4..ec4cd66 100644 --- a/testAsyncOptions/defacto.test.js +++ b/testAsyncOptions/defacto.test.js @@ -54,7 +54,7 @@ describe("defacto", () => { }); test("importClass", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); const arrayList = new ArrayList(); @@ -82,7 +82,7 @@ describe("defacto", () => { }); test("staticSyncCalls", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); diff --git a/testAsyncOptions/defactoPlusPromise.test.js b/testAsyncOptions/defactoPlusPromise.test.js index 346dd9e..07b0cbc 100644 --- a/testAsyncOptions/defactoPlusPromise.test.js +++ b/testAsyncOptions/defactoPlusPromise.test.js @@ -49,7 +49,7 @@ describe("defactoPlusPromise", () => { }); test("importClass", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); const arrayList = new ArrayList(); @@ -77,7 +77,7 @@ describe("defactoPlusPromise", () => { }); test("staticSyncCalls", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); diff --git a/testAsyncOptions/default.test.js b/testAsyncOptions/default.test.js index 581ee82..b322e44 100644 --- a/testAsyncOptions/default.test.js +++ b/testAsyncOptions/default.test.js @@ -19,7 +19,7 @@ describe("default", () => { }); test("importClass", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); const arrayList = new ArrayList(); @@ -47,7 +47,7 @@ describe("default", () => { }); test("staticSyncCalls", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); diff --git a/testAsyncOptions/noAsync.test.js b/testAsyncOptions/noAsync.test.js index 569d69f..2af3f84 100644 --- a/testAsyncOptions/noAsync.test.js +++ b/testAsyncOptions/noAsync.test.js @@ -58,7 +58,7 @@ describe("noAsync", () => { }); test("importClass", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); const arrayList = new ArrayList(); @@ -86,7 +86,7 @@ describe("noAsync", () => { }); test("sStaticSyncCalls", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); expect(String.formatSync("%s--%s", "hello", "world")).toBe("hello--world"); diff --git a/testAsyncOptions/syncDefaultPlusPromise.test.js b/testAsyncOptions/syncDefaultPlusPromise.test.js index 8b0d9f8..7fe9403 100644 --- a/testAsyncOptions/syncDefaultPlusPromise.test.js +++ b/testAsyncOptions/syncDefaultPlusPromise.test.js @@ -23,7 +23,7 @@ describe("syncDefaultPlusPromise", () => { }); test("importClass", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. // This test verifies the import runs without error. const ArrayList = java.import("java.util.ArrayList"); expect(ArrayList).toBeTruthy(); @@ -52,7 +52,7 @@ describe("syncDefaultPlusPromise", () => { }); test("staticSyncCalls", () => { - // Note: java.import executes javascript code in lib/nodeJavaBridge that makes sync calls to java classes. + // Note: java.import executes javascript code in src-node/nodeJavaBridge that makes sync calls to java classes. // Among other things, java.import creates Sync functions for static methods. const String = java.import("java.lang.String"); expect(String.format("%s--%s", "hello", "world")).toBe("hello--world"); diff --git a/testHelpers.js b/testHelpers.js index 93e8fa0..6bf0561 100644 --- a/testHelpers.js +++ b/testHelpers.js @@ -4,7 +4,6 @@ java.options.push("-Djava.awt.headless=true"); java.classpath.push("test/"); java.classpath.push("test/commons-lang3-3.1.jar"); -java.classpath.push("test8/"); export function getJava(asyncOptions) { java.asyncOptions = asyncOptions ?? { diff --git a/update-commons-lang.sh b/update-commons-lang.sh deleted file mode 100755 index 29250f5..0000000 --- a/update-commons-lang.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -ex - -if [ -d build/commons-lang ]; then - cd build/commons-lang - git pull -else - mkdir -p build - cd build - git clone --depth 1 git@github.com:apache/commons-lang.git - cd commons-lang -fi - -mvn clean compile package -DskipTests -java -jar ../../jarjar-1.4.jar process ../../commons-lang.jarjar.rules target/commons-lang3*-SNAPSHOT.jar ../../commons-lang3-node-java.jar - From 7e3d64bd888264524eae95727038eed5f8d985d9 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Sat, 24 May 2025 12:15:12 +0000 Subject: [PATCH 36/47] fix .devcontainer/Dockerfile from becoming stale --- .devcontainer/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index fcca0a8..71579cb 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ FROM mcr.microsoft.com/devcontainers/javascript-node:22 -RUN apt-get update -RUN apt-get install -y openjdk-17-jdk maven gdb clang-format +# need to run update and install at the same time to prevent stale update layer +RUN apt-get update && apt-get install -y gdb clang-format openjdk-17-jdk maven From 478a9d12ef989c173ec9e76035b3c6a5a0bc9ff5 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Sun, 25 May 2025 20:35:29 +0000 Subject: [PATCH 37/47] switch tests to using typescript and add type definitions --- README.md | 100 ++-- eslint.config.mjs | 46 +- java.d.ts | 354 ++++++++++++ package-lock.json | 544 +++++++++++++++++- package.json | 16 +- scripts/testRunner.js | 41 -- scripts/testRunner.ts | 55 ++ src-node/nodeJavaBridge.js | 83 ++- ...{TestLambda.test.js => TestLambda.test.ts} | 14 +- test/{awt.test.js => awt.test.ts} | 11 +- ...amicProxy.test.js => dynamicProxy.test.ts} | 44 +- ...mportClass.test.js => importClass.test.ts} | 15 +- ...{instanceof.test.js => instanceof.test.ts} | 11 +- ...d.test.js => java-ambiguousMethod.test.ts} | 80 ++- ....test.js => java-callStaticMethod.test.ts} | 154 +++-- ...tance.test.js => java-newInstance.test.ts} | 37 +- ...Field.test.js => java-staticField.test.ts} | 11 +- ...{javaObject.test.js => javaObject.test.ts} | 9 +- test/{promises.test.js => promises.test.ts} | 22 +- test/{simple.test.js => simple.test.ts} | 60 +- ...tils-types.test.js => utils-types.test.ts} | 11 +- test/{varargs.test.js => varargs.test.ts} | 11 +- ...eSuffix.test.js => allThreeSuffix.test.ts} | 32 +- ...test.js => asyncSuffixSyncDefault.test.ts} | 68 ++- testAsyncOptions/clientBeforeError.test.js | 29 - testAsyncOptions/clientBeforeError.test.ts | 35 ++ .../clientBeforeSyncThrows.test.js | 29 - .../clientBeforeSyncThrows.test.ts | 33 ++ testAsyncOptions/clientBeforeThrows.test.js | 29 - testAsyncOptions/clientBeforeThrows.test.ts | 33 ++ testAsyncOptions/clientPBeforeError.test.js | 40 -- testAsyncOptions/clientPBeforeError.test.ts | 43 ++ testAsyncOptions/clientPBeforeThrows.test.js | 40 -- testAsyncOptions/clientPBeforeThrows.test.ts | 44 ++ .../{defacto.test.js => defacto.test.ts} | 76 +-- ...ise.test.js => defactoPlusPromise.test.ts} | 69 +-- .../{default.test.js => default.test.ts} | 23 +- testAsyncOptions/invalidLaunch.test.js | 55 -- testAsyncOptions/invalidLaunch.test.ts | 67 +++ .../{noAsync.test.js => noAsync.test.ts} | 71 +-- ...test.js => syncDefaultPlusPromise.test.ts} | 24 +- ...ame.test.js => unusableMethodName.test.ts} | 61 +- testHelpers.js | 20 - testHelpers.ts | 46 ++ tsconfig.json | 113 ++++ 45 files changed, 2068 insertions(+), 741 deletions(-) create mode 100644 java.d.ts delete mode 100644 scripts/testRunner.js create mode 100644 scripts/testRunner.ts rename test/{TestLambda.test.js => TestLambda.test.ts} (73%) rename test/{awt.test.js => awt.test.ts} (78%) rename test/{dynamicProxy.test.js => dynamicProxy.test.ts} (87%) rename test/{importClass.test.js => importClass.test.ts} (85%) rename test/{instanceof.test.js => instanceof.test.ts} (79%) rename test/{java-ambiguousMethod.test.js => java-ambiguousMethod.test.ts} (60%) rename test/{java-callStaticMethod.test.js => java-callStaticMethod.test.ts} (65%) rename test/{java-newInstance.test.js => java-newInstance.test.ts} (72%) rename test/{java-staticField.test.js => java-staticField.test.ts} (85%) rename test/{javaObject.test.js => javaObject.test.ts} (70%) rename test/{promises.test.js => promises.test.ts} (75%) rename test/{simple.test.js => simple.test.ts} (85%) rename test/{utils-types.test.js => utils-types.test.ts} (93%) rename test/{varargs.test.js => varargs.test.ts} (95%) rename testAsyncOptions/{allThreeSuffix.test.js => allThreeSuffix.test.ts} (82%) rename testAsyncOptions/{asyncSuffixSyncDefault.test.js => asyncSuffixSyncDefault.test.ts} (76%) delete mode 100644 testAsyncOptions/clientBeforeError.test.js create mode 100644 testAsyncOptions/clientBeforeError.test.ts delete mode 100644 testAsyncOptions/clientBeforeSyncThrows.test.js create mode 100644 testAsyncOptions/clientBeforeSyncThrows.test.ts delete mode 100644 testAsyncOptions/clientBeforeThrows.test.js create mode 100644 testAsyncOptions/clientBeforeThrows.test.ts delete mode 100644 testAsyncOptions/clientPBeforeError.test.js create mode 100644 testAsyncOptions/clientPBeforeError.test.ts delete mode 100644 testAsyncOptions/clientPBeforeThrows.test.js create mode 100644 testAsyncOptions/clientPBeforeThrows.test.ts rename testAsyncOptions/{defacto.test.js => defacto.test.ts} (69%) rename testAsyncOptions/{defactoPlusPromise.test.js => defactoPlusPromise.test.ts} (72%) rename testAsyncOptions/{default.test.js => default.test.ts} (84%) delete mode 100644 testAsyncOptions/invalidLaunch.test.js create mode 100644 testAsyncOptions/invalidLaunch.test.ts rename testAsyncOptions/{noAsync.test.js => noAsync.test.ts} (72%) rename testAsyncOptions/{syncDefaultPlusPromise.test.js => syncDefaultPlusPromise.test.ts} (86%) rename testAsyncOptions/{unusableMethodName.test.js => unusableMethodName.test.ts} (71%) delete mode 100644 testHelpers.js create mode 100644 testHelpers.ts create mode 100644 tsconfig.json diff --git a/README.md b/README.md index 6dde09c..87ce6af 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Bridge API to connect with existing Java APIs. ### Other projects that might be helpful * [node-java-maven](https://github.com/joeferner/node-java-maven) - manages your node-java classpath by using maven dependency management. +* [ts-java](https://github.com/RedSeal-co/ts-java) - Create TypeScript declaration files for Java packages. ## Installation @@ -92,8 +93,8 @@ npm install --unsafe-perm java Then create a file called `test.js` with the following contents ``` -var java = require('java'); -var javaLangSystem = java.import('java.lang.System'); +const java = require('java'); +const javaLangSystem = java.import('java.lang.System'); javaLangSystem.out.printlnSync('Hello World'); ``` @@ -130,10 +131,10 @@ Then create the following module javaInit: ```javascript "use strict"; -var fs = require("fs"); -var java = require("java"); -var baseDir = "./target/dependency"; -var dependencies = fs.readdirSync(baseDir); +const fs = require("fs"); +const java = require("java"); +const baseDir = "./target/dependency"; +const dependencies = fs.readdirSync(baseDir); dependencies.forEach(function(dependency){ java.classpath.push(baseDir + "/" + dependency); @@ -151,8 +152,8 @@ and then in the consuming class write: ```javascript -var javaInit = require('./javaInit'); -var java = javaInit.getJavaInstance(); +const javaInit = require('./javaInit'); +const java = javaInit.getJavaInstance(); //your code goes here ``` @@ -162,11 +163,11 @@ var java = javaInit.getJavaInstance(); ## Quick Examples ```javascript -var java = require("java"); +const java = require("java"); java.classpath.push("commons-lang3-3.1.jar"); java.classpath.push("commons-io.jar"); -var list1 = java.newInstanceSync("java.util.ArrayList"); +const list1 = java.newInstanceSync("java.util.ArrayList"); console.log(list1.sizeSync()); // 0 list1.addSync('item1'); console.log(list1.sizeSync()); // 1 @@ -177,8 +178,8 @@ java.newInstance("java.util.ArrayList", function(err, list2) { console.log(list2.toStringSync()); // [item1, item2] }); -var ArrayList = java.import('java.util.ArrayList'); -var list3 = new ArrayList(); +const ArrayList = java.import('java.util.ArrayList'); +const list3 = new ArrayList(); list3.addSync('item1'); list3.equalsSync(list1); // true ``` @@ -186,13 +187,13 @@ list3.equalsSync(list1); // true ### Create a char array ```javascript -var charArray = java.newArray("char", "hello world\n".split('')); +const charArray = java.newArray("char", "hello world\n".split('')); ``` ### Create a byte array ```javascript -var byteArray = java.newArray( +const byteArray = java.newArray( "byte", "hello world\n" .split('') @@ -207,7 +208,7 @@ a property off of the result called "longValue" which contains the un-truncated If you are calling a method that takes a long you must create it using [java.newInstance](#javaNewInstance). ```javascript -var javaLong = java.newInstanceSync("java.lang.Long", 5); +const javaLong = java.newInstanceSync("java.lang.Long", 5); console.log('Possibly truncated long value: ' + javaLong); console.log('Original long value (as a string): ' + javaLong.longValue); java.callStaticMethodSync("Test", "staticMethodThatTakesALong", javaLong); @@ -236,7 +237,7 @@ As of release 0.4.5 it became possible to create async methods that return promi Example: ```javascript -var java = require("java"); +const java = require("java"); java.asyncOptions = { asyncSuffix: undefined, // Don't generate node-style methods taking callbacks syncSuffix: "", // Sync methods use the base name(!!) @@ -401,13 +402,13 @@ __Arguments__ __Example__ - var Test = java.import('Test'); + const Test = java.import('Test'); Test.someStaticMethodSync(5); console.log(Test.someStaticField); - var value1 = Test.NestedEnum.Value1; + const value1 = Test.NestedEnum.Value1; - var test = new Test(); + const test = new Test(); list.instanceMethodSync('item1'); ## newInstance @@ -428,7 +429,7 @@ __Arguments__ __Example__ - var list = java.newInstanceSync("java.util.ArrayList"); + const list = java.newInstanceSync("java.util.ArrayList"); java.newInstance("java.util.ArrayList", function(err, list) { if(err) { console.error(err); return; } @@ -450,7 +451,7 @@ __Arguments__ __Example__ - var obj = java.newInstanceSync("my.package.SubClass"); + const obj = java.newInstanceSync("my.package.SubClass"); if(java.instanceOf(obj, "my.package.SuperClass")) { console.log("obj is an instance of SuperClass"); @@ -464,8 +465,7 @@ __Example__ **java.callStaticMethodSync(className, methodName, [args...]) : result** -Calls a static method on the specified class. If you are using the sync method an exception will be throw if an error occurs, -otherwise it will be the first argument in the callback. +Calls a static method on the specified class. If you are using the sync method an exception will be throw if an error occurs, otherwise it will be the first argument in the callback. __Arguments__ @@ -475,7 +475,7 @@ __Arguments__ __Example__ - var result = java.callStaticMethodSync("com.nearinfinty.MyClass", "doSomething", 42, "test"); + const result = java.callStaticMethodSync("com.nearinfinty.MyClass", "doSomething", 42, "test"); java.callStaticMethod("com.nearinfinty.MyClass", "doSomething", 42, "test", function(err, results) { if(err) { console.error(err); return; } @@ -501,11 +501,11 @@ __Arguments__ __Example__ - var instance = java.newInstanceSync("com.nearinfinty.MyClass"); + const instance = java.newInstanceSync("com.nearinfinty.MyClass"); - var result = java.callMethodSync("com.nearinfinty.MyClass", "doSomething", 42, "test"); + const result = java.callMethodSync("com.nearinfinty.MyClass", "doSomething", 42, "test"); - java.callMethodSync(instance, "doSomething", 42, "test", function(err, results) { + java.callMethod(instance, "doSomething", 42, "test", function(err, results) { if(err) { console.error(err); return; } // results from doSomething }); @@ -525,7 +525,7 @@ __Arguments__ __Example__ - var data = java.getStaticFieldValue("com.nearinfinty.MyClass", "data"); + const data = java.getStaticFieldValue("com.nearinfinty.MyClass", "data"); ## setStaticFieldValue @@ -560,7 +560,7 @@ __Arguments__ __Example__ - var newArray = java.newArray("java.lang.String", ["item1", "item2", "item3"]); + const newArray = java.newArray("java.lang.String", ["item1", "item2", "item3"]); ## newByte @@ -576,7 +576,7 @@ __Arguments__ __Example__ - var b = java.newByte(12); + const b = java.newByte(12); ## newShort @@ -592,7 +592,7 @@ __Arguments__ __Example__ - var s = java.newShort(12); + const s = java.newShort(12); ## newLong @@ -608,7 +608,7 @@ __Arguments__ __Example__ - var s = java.newLong(12); + const s = java.newLong(12); ## newChar @@ -624,7 +624,7 @@ __Arguments__ __Example__ - var ch = java.newChar('a'); + const ch = java.newChar('a'); ## newDouble @@ -640,7 +640,7 @@ __Arguments__ __Example__ - var d = java.newDouble(3.14); + const d = java.newDouble(3.14); ## newFloat @@ -656,7 +656,7 @@ __Arguments__ __Example__ - var f = java.newFloat(3.14); + const f = java.newFloat(3.14); ## newProxy @@ -676,14 +676,14 @@ __Arguments__ __Example__ - var myProxy = java.newProxy('java.lang.Runnable', { + const myProxy = java.newProxy('java.lang.Runnable', { run: function () { // This is actually run on the v8 thread and not the new java thread console.log("hello from thread"); } }); - var thread = java.newInstanceSync("java.lang.Thread", myProxy); + const thread = java.newInstanceSync("java.lang.Thread", myProxy); thread.start(); ## isJvmCreated @@ -742,7 +742,7 @@ __Arguments__ __Example__ - var list = java.newInstanceSync("java.util.ArrayList"); + const list = java.newInstanceSync("java.util.ArrayList"); list.addSync("item1"); list.add("item2", function(err, result) { if(err) { console.error(err); return; } @@ -761,9 +761,9 @@ field values. __Example__ - var list = java.newInstanceSync("com.nearinfinty.MyClass"); + const list = java.newInstanceSync("com.nearinfinty.MyClass"); list.data = "test"; - var data = list.data; + const data = list.data; ## Getting the Full Method Signature @@ -816,9 +816,9 @@ public class ShutdownHookHelper { Compile ShutdownHookHelper and then use it as follows. ```javascript -var java = require('./'); +const java = require('./'); java.classpath.push('.'); -var ShutdownHookHelper = java.import('ShutdownHookHelper'); +const ShutdownHookHelper = java.import('ShutdownHookHelper'); ShutdownHookHelper.setShutdownHookSync(java.newProxy('java.lang.Runnable', { run: function () { @@ -839,12 +839,12 @@ When you call a Java method through node-java, any arguments (V8/JavaScript obje The JavaScript object returned by `java.import(classname)` is a JavaScript constructor Function, implemented such that you can create instances of the Java class. For example: ```javascript -var Test = java.import('Test'); -var test = new Test(); +const Test = java.import('Test'); +const test = new Test(); Test.someStaticMethod(function(err, result) { ... }); -var value1 = Test.NestedEnum.Value1; +const value1 = Test.NestedEnum.Value1; ``` But JavaScript reserves a few property names of Function objects: `name`, `arguments`, and `caller`. If your class has public static members (either methods or fields) with these names, node-java is unable to create the necessary property to implement the class's API. For example, suppose your class `Test` implements a static method named `caller`, or has a `NestedEnum` with a value `name`: @@ -860,15 +860,15 @@ public class Test { In JavaScript, you would expect to be able to use those static members like this: ```javascript -var Test = java.import('Test'); +const Test = java.import('Test'); Test.caller(function(err, result) { ... }); // ERROR -var value = Test.NestedEnum.name; // ERROR +const value = Test.NestedEnum.name; // ERROR ``` Node-java can't create those properties, so the above code won't work. Instead, node-java appends a suffix to the name. The default suffix is simply an underscore `_`, but you can change the suffix using `asyncOptions`: ```javascript -var java = require('java'); +const java = require('java'); java.asyncOptions = { asyncSuffix: "", @@ -876,9 +876,9 @@ java.asyncOptions = { ifReadOnlySuffix: "_alt" }; -var Test = java.import('Test'); +const Test = java.import('Test'); Test.caller_alt(function(err, result) { ... }); // OK -var value = Test.NestedEnum.name_alt; // OK +const value = Test.NestedEnum.name_alt; // OK ``` # Troubleshooting diff --git a/eslint.config.mjs b/eslint.config.mjs index 68c91e1..1ad81fd 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,12 +1,13 @@ import js from "@eslint/js"; import globals from "globals"; -import { defineConfig } from "eslint/config"; +import tseslint from "typescript-eslint"; -export default defineConfig([ +export default tseslint.config([ + { ignores: ["build"] }, { files: ["**/*.{js,mjs,cjs}"], plugins: { js }, - extends: ["js/recommended"], + extends: [js.configs.recommended], languageOptions: { globals: globals.node }, rules: { "no-var": ["error"], @@ -22,4 +23,43 @@ export default defineConfig([ ], }, }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommendedTypeChecked], + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + plugins: {}, + rules: { + "@typescript-eslint/restrict-template-expressions": [ + "error", + { + allowNever: true, + }, + ], + "@typescript-eslint/require-await": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-redundant-type-constituents": "off", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/explicit-member-accessibility": "error", + "@typescript-eslint/explicit-function-return-type": "error", + "@typescript-eslint/no-unused-vars": [ + "warn", // or "error" + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + caughtErrorsIgnorePattern: "^_", + }, + ], + }, + }, ]); diff --git a/java.d.ts b/java.d.ts new file mode 100644 index 0000000..7990efd --- /dev/null +++ b/java.d.ts @@ -0,0 +1,354 @@ +/* eslint-disable @typescript-eslint/no-unsafe-function-type */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +// eslint-disable-next-line no-var +declare var NodeJavaCore: NodeJavaCore.NodeAPI; +export = NodeJavaCore; + +declare namespace NodeJavaCore { + type JavaObject = any; + type JavaError = Error & { cause?: JavaObject }; + + export interface Callback { + (err?: Error, result?: T): void; + } + + export interface JavaCallback { + (err?: JavaError, result?: T): void; + } + + interface Promisify { + (fn: Function, receiver?: any): Function; + } + + interface AsyncOptions { + /** + * Suffix for synchronous method call signatures. + */ + syncSuffix: string; + + /** + * Suffix for callback-based async method call signatures. + */ + asyncSuffix?: string | undefined; + + /** + * Suffix for promise-based async method call signatures + */ + promiseSuffix?: string | undefined; + + /** + * Callback-to-promise transform implementation. From Node.js version 8 one can + * just use Node.js implementation: `promisify: require('util').promisify`. + */ + promisify?: Promisify | undefined; + + /** + * The JavaScript object returned by `java.import(classname)` is a JavaScript constructor + * Function, implemented such that you can create instances of the Java class. For example: + */ + ifReadOnlySuffix?: string | undefined; + } + + interface ProxyFunctions { + [index: string]: Function; + } + + interface Java { + /** + * Array of paths or jars to pass to the creation of the JVM. + * + * All items must be added to the classpath before calling any other node-java methods. + * + * @example + * java.classpath.push('commons.io.jar'); + * java.classpath.push('src'); + */ + classpath: string[]; + + /** + * Array of options to pass to the creation of the JVM. + * + * All items must be added to the options before calling any other node-java methods. + * + * @example + * java.options.push('-Djava.awt.headless=true'); + * java.options.push('-Xmx1024m'); + */ + options: string[]; + + /** + * @see AsyncOptions + */ + asyncOptions: AsyncOptions; + + /** + * Location of nodejavabridge_bindings.node + */ + nativeBindingLocation: string; + + /** + * Calls a method on the specified instance. If you are using the sync method an exception + * will be throw if an error occurs, otherwise it will be the first argument in the callback. + * + * @param instance An instance of the class from newInstance. + * @param methodName The name of the method to call. The method name can include the full + * signature (see [Getting the full method signature](README.md#getFullMethodSignature)). + * @param args The arguments to pass to the method, the last argument will be the callback to the function + * + * @example + * const instance = java.newInstanceSync("com.nearinfinty.MyClass"); + * java.callMethod(instance, "doSomething", 42, "test", function(err, results) { + * if(err) { console.error(err); return; } + * // results from doSomething + * }); + */ + callMethod(instance: JavaObject, methodName: string, ...args: any[]): void; + + /** + * Calls a method on the specified instance. If you are using the sync method an exception + * will be throw if an error occurs, otherwise it will be the first argument in the callback. + * + * @param instance An instance of the class from newInstance. + * @param methodName The name of the method to call. The method name can include the full + * signature (see [Getting the full method signature](README.md#getFullMethodSignature)). + * @param args The arguments to pass to the method + * @returns The result of the method call + * + * @example + * const instance = java.newInstanceSync("com.nearinfinty.MyClass"); + * const result = java.callMethodSync("com.nearinfinty.MyClass", "doSomething", 42, "test"); + */ + callMethodSync(instance: JavaObject, methodName: string, ...args: any[]): any; + + /** + * Calls a static method on the specified class. If you are using the sync method an exception will be + * throw if an error occurs, otherwise it will be the first argument in the callback. + * + * @param className The name of the class to call the method on. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * @param methodName The name of the method to call. The method name can include the full + * signature (see [Getting the full method signature](README.md#getFullMethodSignature)). + * @param args The arguments to pass to the method, the last argument will be the callback to the function + */ + callStaticMethod(className: string, methodName: string, ...args: any[]): void; + + /** + * Calls a static method on the specified class. If you are using the sync method an exception will be + * throw if an error occurs, otherwise it will be the first argument in the callback. + * + * @param className The name of the class to call the method on. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * @param methodName The name of the method to call. The method name can include the full + * signature (see [Getting the full method signature](README.md#getFullMethodSignature)). + * @param args The arguments to pass to the method + * @returns The result of the method call + */ + callStaticMethodSync(className: string, methodName: string, ...args: any[]): any; + + /** + * Finds the class with the specified binary name. This method should be overridden by class loader + * implementations that follow the delegation model for loading classes, and will be invoked by the + * loadClass method after checking the parent class loader for the requested class. The default + * implementation throws a ClassNotFoundException. + * + * @param className The binary name of the class + * @returns The resulting Class object + */ + findClassSync(className: string): JavaObject; + + /** + * Gets a static field value from the specified class. + * + * @param className The name of the class to get the value from. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * @param fieldName The name of the field to get the value from. + * @returns The valid of the static field + */ + getStaticFieldValue(className: string, fieldName: string): any; + + /** + * Sets a static field value on the specified class. + * + * @param className The name of the class to set the value on. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * @param fieldName The name of the field to set the value on. + * @param newValue The new value to assign to the field. + */ + setStaticFieldValue(className: string, fieldName: string, newValue: any): void; + + /** + * Determines of a javaObject is an instance of a class. + * + * @param javaObject Instance of a java object returned from a method or from newInstance. + * @param className A string class name. + * + * @example + * const obj = java.newInstanceSync("my.package.SubClass"); + * if(java.instanceOf(obj, "my.package.SuperClass")) { + * console.log("obj is an instance of SuperClass"); + * } + */ + instanceOf(javaObject: JavaObject, className: string): boolean; + + /** + * Register that a client wants to be called back immediately before and/or immediately + * after the JVM is created. If used, this function must be called before the JVM has been + * created. The before function is typically used to add to the classpath. The function may + * execute asynchronous operations (such as a async glob function). The after function is + * sometimes useful for doing one-time initialization that requires the JVM to first be + * initialized. If either function is unnecessary, use `null` or `undefined`. See also + * `registerClientP` and `ensureJvm`. See the unit tests in `testAsyncOptions` for examples. + */ + registerClient( + before: ((cb: Callback) => void) | undefined | null, + after?: (cb: Callback) => void + ): void; + + /** + * Register that a client wants to be called back immediately before and/or immediately + * after the JVM is created. If used, this function must be called before the JVM has been + * created. The before function is typically used to add to the classpath. The function may + * execute asynchronous operations (such as a async glob function). The after function is + * sometimes useful for doing one-time initialization that requires the JVM to first be + * initialized. If either function is unnecessary, use `null` or `undefined`. See also + * `registerClientP` and `ensureJvm`. See the unit tests in `testAsyncOptions` for examples. + */ + registerClientP(beforeP: (() => Promise) | undefined | null, afterP?: () => Promise): void; + + /** + * If the JVM has not yet been created, execute the full JVM initialization process, then + * call callback function when initialization is complete. If the JVM has been created, just + * call the callback. Note that the full initialization process includes: 1) executing all + * registered client *before* hooks, 2) creating the JVM, then 3) executing all registered + * client *after* hooks. + */ + ensureJvm(done: Callback): void; + + /** + * If the JVM has not yet been created, execute the full JVM initialization process, then + * call callback function when initialization is complete. If the JVM has been created, just + * call the callback. Note that the full initialization process includes: 1) executing all + * registered client *before* hooks, 2) creating the JVM, then 3) executing all registered + * client *after* hooks. + */ + ensureJvm(): Promise; + + /** + * Returns true if the JVM has been created. The JVM can only be created once. + */ + isJvmCreated(): boolean; + + /** + * Creates a new java byte. This is needed because JavaScript does not have the concept of a byte. + */ + newByte(val: number): JavaObject; + + /** + * Creates a new java short. This is needed because JavaScript does not have the concept of a short. + */ + newShort(val: number): JavaObject; + + /** + * Creates a new java long. This is needed because JavaScript does not have the concept of a long. + */ + newLong(val: number): JavaObject; + + /** + * Creates a new java char. This is needed because JavaScript does not have the concept of a char. + */ + newChar(val: string | number): JavaObject; + + /** + * Creates a new java float. This is needed to force JavaScript's number to a float to call some methods. + */ + newFloat(val: number): JavaObject; + + /** + * Creates a new java double. This is needed to force JavaScript's number to a double to call some methods. + */ + newDouble(val: number): JavaObject; + + /** + * Loads the class given by className such that it acts and feels like a JavaScript object. + * + * @param className The name of the class to create. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * + * @example + * const Test = java.import('Test'); + * Test.someStaticMethodSync(5); + * console.log(Test.someStaticField); + * + * const value1 = Test.NestedEnum.Value1; + * + * const test = new Test(); + * list.instanceMethodSync('item1'); + */ + import(className: string): JavaObject; + + /** + * Creates an instance of the specified class. If you are using the sync method an exception will + * be throw if an error occurs, otherwise it will be the first argument in the callback. + * + * @param className The name of the class to create. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * @param args Arguments to pass to the constructor, the last argument is a callback function + */ + newInstance(className: string, ...args: any[]): void; + + /** + * Creates an instance of the specified class. If you are using the sync method an exception will + * be throw if an error occurs, otherwise it will be the first argument in the callback. + * + * @param className The name of the class to create. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * @param args Arguments to pass to the constructor + */ + newInstanceSync(className: string, ...args: any[]): JavaObject; + + /** + * Creates a new java array of given glass type. To create array of primitive types + * like `char`, `byte`, etc, pass the primitive typename + * (eg. `java.newArray("char", "hello world\n".split(''))`). + * + * @param className The name of the type of array elements. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * @param arg A JavaScript array of values to assign to the java array. + */ + newArray(className: string, arg: any[]): JavaObject; + + /** + * Get the current class loader + */ + getClassLoader(): JavaObject; + + /** + * Creates a new java Proxy for the given interface. Functions passed in will run on the v8 + * main thread and not a new thread. + * + * The returned object has a method unref() which you can use to free the object for garbage + * collection. + * + * @param interfaceName The name of the interface to proxy. Separate nested classes + * using `'$'` (eg. `com.nearinfinty.MyClass$NestedClass`). + * @param functions A hash of functions matching the function in the interface. + * + * @example + * const myProxy = java.newProxy('java.lang.Runnable', { + * run: function () { + * // This is actually run on the v8 thread and not the new java thread + * console.log("hello from thread"); + * } + * }); + * + * const thread = java.newInstanceSync("java.lang.Thread", myProxy); + * thread.start(); + */ + newProxy(interfaceName: string, functions: ProxyFunctions): JavaObject; + + /** + * Stops the running event loop + */ + stop(): void; + } +} diff --git a/package-lock.json b/package-lock.json index a596ce1..72fd77c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "async": "^3.2.6", "find-java-home": "^2.0.0", "glob": "^10.4.5", "nan": "^2.22.2", @@ -18,10 +17,16 @@ }, "devDependencies": { "@eslint/js": "^9.27.0", + "@types/find-root": "^1.1.4", + "@types/node": "^22.15.21", + "@types/when": "^2.4.41", "chalk": "2.4.2", "eslint": "^9.27.0", + "find-root": "^1.1.0", "globals": "^16.1.0", "prettier": "^3.5.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.32.1", "vitest": "^3.1.3", "when": "3.7.8" }, @@ -777,6 +782,44 @@ "dev": true, "license": "MIT" }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@npmcli/agent": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", @@ -1108,6 +1151,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/find-root": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/find-root/-/find-root-1.1.4.tgz", + "integrity": "sha512-2EXK/+gVhVgtt4JqThbEncORvpYJKzi9tQGmI3EkU2jTgMzQsrPm/hbd5xe5uPdeFzIW5gh2PRvvPjaUsI8vpg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1115,6 +1165,239 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "22.15.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz", + "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/when": { + "version": "2.4.41", + "resolved": "https://registry.npmjs.org/@types/when/-/when-2.4.41.tgz", + "integrity": "sha512-o/j5X9Bnv6mMG4ZcNJur8UaU17Rl0mLbTZvWcODVVy+Xdh8LEc7s6I0CvbEuTP786LTa0OyJby5P4hI7C+ZJNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", + "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/type-utils": "8.32.1", + "@typescript-eslint/utils": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz", + "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", + "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", + "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/utils": "8.32.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz", + "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", + "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz", + "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", + "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@vitest/expect": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz", @@ -1338,12 +1621,6 @@ "node": ">=12" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1360,6 +1637,19 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -1919,6 +2209,36 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1933,6 +2253,16 @@ "dev": true, "license": "MIT" }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fdir": { "version": "6.4.4", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", @@ -1961,6 +2291,19 @@ "node": ">=16.0.0" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-java-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/find-java-home/-/find-java-home-2.0.0.tgz", @@ -1970,6 +2313,13 @@ "winreg": "~1.2.2" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true, + "license": "MIT" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2155,6 +2505,13 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -2308,6 +2665,16 @@ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "license": "MIT" }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2459,6 +2826,43 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3007,6 +3411,27 @@ "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3026,6 +3451,17 @@ "node": ">= 4" } }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rollup": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz", @@ -3066,6 +3502,30 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -3413,6 +3873,32 @@ "node": ">=14.0.0" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3426,6 +3912,50 @@ "node": ">= 0.8.0" } }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.1.tgz", + "integrity": "sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.32.1", + "@typescript-eslint/parser": "8.32.1", + "@typescript-eslint/utils": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", diff --git a/package.json b/package.json index fef7677..c5c633e 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "url": "https://github.com/joeferner/node-java.git" }, "dependencies": { - "async": "^3.2.6", "find-java-home": "^2.0.0", "glob": "^10.4.5", "nan": "^2.22.2", @@ -34,22 +33,31 @@ }, "devDependencies": { "@eslint/js": "^9.27.0", + "@types/find-root": "^1.1.4", + "@types/node": "^22.15.21", + "@types/when": "^2.4.41", "chalk": "2.4.2", "eslint": "^9.27.0", + "find-root": "^1.1.0", "globals": "^16.1.0", "prettier": "^3.5.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.32.1", "vitest": "^3.1.3", "when": "3.7.8" }, "scripts": { "install": "node-gyp rebuild", "clean": "rm -rf build", - "test": "node ./scripts/testRunner.js", + "test": "tsc && node ./build/ts/scripts/testRunner.js", "postinstall": "node ./scripts/postInstall.js", "lint": "eslint --ext js,ts,tsx --report-unused-disable-directives --max-warnings 0 .", "format": "prettier --write .", "format-cpp": "clang-format --version; find src-cpp/ -iname '*.h' -o -iname '*.cpp' | xargs clang-format -i", - "precommit": "npm run format-cpp && npm run format && npm run lint && npm test" + "build-ts": "tsc", + "build-ts:watch": "tsc --watch", + "precommit": "npm run format-cpp && npm run format && npm run lint && npm run build-ts && npm test" }, - "main": "./index.js" + "main": "./index.js", + "types": "./java.d.ts" } diff --git a/scripts/testRunner.js b/scripts/testRunner.js deleted file mode 100644 index 0f1c026..0000000 --- a/scripts/testRunner.js +++ /dev/null @@ -1,41 +0,0 @@ -// testRunner.js - -// This is a custom test runner. All tests are run with vitest, but in separate -// processes, which allows us to test java with different configuration options. - -const async = require("async"); -const chalk = require("chalk"); -const childProcess = require("node:child_process"); -const glob = require("glob"); -const path = require("node:path"); - -const tests = glob - .sync("*.test.js", { cwd: path.join(__dirname, "..", "testAsyncOptions") }) - .sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase())); - -tests.unshift("test"); // Arrange to run the primary tests first, in a single process - -function runTest(testArgs, done) { - const vitest = path.join("node_modules", ".bin", "vitest"); - const cmd = testArgs === "test" ? `vitest --dir test` : `${vitest} ${testArgs}`; - console.log(`running "${cmd}"...`); - childProcess.exec(cmd, (error, stdout, stderr) => { - const errText = stderr.toString(); - if (errText !== "") { - console.error(chalk.bold.red(errText)); - } - - process.stdout.write(stdout.toString()); - done(error); - }); -} - -console.log('test to run', tests); -async.eachSeries(tests, runTest, (err) => { - if (err) { - console.error(chalk.bold.red(err)); - process.exit(1); - return; - } - console.log(chalk.green("Tests completed successfully!")); -}); diff --git a/scripts/testRunner.ts b/scripts/testRunner.ts new file mode 100644 index 0000000..fe36d28 --- /dev/null +++ b/scripts/testRunner.ts @@ -0,0 +1,55 @@ +// testRunner.js + +// This is a custom test runner. All tests are run with vitest, but in separate +// processes, which allows us to test java with different configuration options. + +import chalk from "chalk"; +import findRoot from "find-root"; +import * as glob from "glob"; +import childProcess, { ExecException } from "node:child_process"; +import path from "node:path"; + +const root = findRoot(__dirname); + +const tests = glob + .sync("*.test.ts", { cwd: path.join(root, "testAsyncOptions") }) + .sort((a: string, b: string) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase())); + +tests.unshift("test"); // Arrange to run the primary tests first, in a single process + +async function runTest(testIndex: number, testArgs: string): Promise { + const vitest = path.join("node_modules", ".bin", "vitest"); + const cmd = testArgs === "test" ? `vitest --dir test` : `${vitest} ${testArgs}`; + console.log(chalk.cyan(`(${testIndex + 1}/${tests.length}) running "${cmd}"...`)); + return new Promise((resolve, reject) => { + childProcess.exec(cmd, (error: ExecException | null, stdout: string, stderr: string) => { + const errText = stderr.toString(); + if (errText !== "") { + console.error(chalk.bold.red(errText)); + } + + process.stdout.write(stdout.toString()); + if (error) { + return reject(error); + } + resolve(); + }); + }); +} + +console.log("test to run", tests); +async function runAll(): Promise { + for (let i = 0; i < tests.length; i++) { + const test = tests[i]; + await runTest(i, test); + } +} + +runAll() + .then(() => { + console.log(chalk.green("Tests completed successfully!")); + }) + .catch((err) => { + console.error(chalk.bold.red(err)); + process.exit(1); + }); diff --git a/src-node/nodeJavaBridge.js b/src-node/nodeJavaBridge.js index ca379d3..ecfbbef 100644 --- a/src-node/nodeJavaBridge.js +++ b/src-node/nodeJavaBridge.js @@ -2,7 +2,6 @@ process.env.PATH += require("../build/jvm_dll_path.json"); -const async = require("async"); const path = require("path"); const fs = require("fs"); let binaryPath = null; @@ -98,61 +97,50 @@ java.registerClientP = function (beforeP, afterP) { clients.push({ beforeP: beforeP, afterP: afterP }); }; -function runBeforeHooks(done) { - function iterator(client, cb) { - try { - if (client.before) { - client.before(cb); - } else if (client.beforeP) { - client.beforeP().then( - function (_ignored) { - cb(); - }, - function (err) { - cb(err); +async function runBeforeHooks() { + for (const client of clients) { + if (client.before) { + await new Promise((resolve, reject) => { + client.before((err) => { + if (err) { + return reject(err); } - ); - } else { - cb(); - } - } catch (err) { - cb(err); + return resolve(); + }); + }); + } + if (client.beforeP) { + await client.beforeP(); } } - async.each(clients, iterator, done); } -function createJVMAsync(callback) { +function createJVMAsync() { const _ignore = java.newLong(0); // called just for the side effect that it will create the JVM - callback(); } -function runAfterHooks(done) { - function iterator(client, cb) { - try { - if (client.after) { - client.after(cb); - } else if (client.afterP) { - client.afterP().then( - (_ignored) => { - cb(); - }, - (err) => { - cb(err); +async function runAfterHooks() { + for (const client of clients) { + if (client.after) { + await new Promise((resolve, reject) => { + client.after((err) => { + if (err) { + return reject(err); } - ); - } else { - cb(); - } - } catch (err) { - cb(err); + return resolve(); + }); + }); + } + if (client.afterP) { + await client.afterP(); } } - async.each(clients, iterator, done); } -function initializeAll(done) { - async.series([runBeforeHooks, createJVMAsync, runAfterHooks], done); +async function initializeAll() { + await runBeforeHooks(); + createJVMAsync(); + await runAfterHooks(); } // This function ensures that the JVM has been launched, asynchronously. The application can be notified @@ -187,7 +175,14 @@ java.ensureJvm = function (callback) { // Finally, queue the initializeAll function. else { - return setImmediate(initializeAll, callback); + return setImmediate(async () => { + try { + await initializeAll(); + callback(); + } catch (err) { + callback(err); + } + }); } }; diff --git a/test/TestLambda.test.js b/test/TestLambda.test.ts similarity index 73% rename from test/TestLambda.test.js rename to test/TestLambda.test.ts index f2b7b13..0b7a8ab 100644 --- a/test/TestLambda.test.js +++ b/test/TestLambda.test.ts @@ -1,9 +1,14 @@ -import { describe, expect, test } from "vitest"; -import { getJava } from "../testHelpers"; - -const java = getJava(); +import { beforeAll, describe, expect, test } from "vitest"; +import { expectJavaError, getJava } from "../testHelpers"; +import { Java } from "../java"; describe("Java8", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("call methods of a class that uses lambda expressions", () => { try { const TestLambda = java.import("TestLambda"); @@ -13,6 +18,7 @@ describe("Java8", () => { const diff = lambda.testLambdaSubtractionSync(23, 42); expect(diff).toBe(-19); } catch (err) { + expectJavaError(err); const unsupportedVersion = java.instanceOf(err.cause, "java.lang.UnsupportedClassVersionError"); if (unsupportedVersion) { console.log("JRE 1.8 not available"); diff --git a/test/awt.test.js b/test/awt.test.ts similarity index 78% rename from test/awt.test.js rename to test/awt.test.ts index 34d1f00..9c8a052 100644 --- a/test/awt.test.js +++ b/test/awt.test.ts @@ -1,10 +1,15 @@ import path from "node:path"; -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; +import { Java } from "../java"; import { getJava } from "../testHelpers"; -const java = getJava(); - describe("AWT", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("calling AWT method (see issue 1)", () => { const headlessVal = java.callStaticMethodSync("java.lang.System", "getProperty", "java.awt.headless"); console.log("java.awt.headless =", headlessVal); diff --git a/test/dynamicProxy.test.js b/test/dynamicProxy.test.ts similarity index 87% rename from test/dynamicProxy.test.js rename to test/dynamicProxy.test.ts index aee0543..e82ba58 100644 --- a/test/dynamicProxy.test.js +++ b/test/dynamicProxy.test.ts @@ -1,9 +1,14 @@ -import { describe, expect, test } from "vitest"; -import { getJava } from "../testHelpers"; - -const java = getJava(); +import { beforeAll, describe, expect, test } from "vitest"; +import { Java, JavaObject } from "../java"; +import { expectJavaError, getJava } from "../testHelpers"; describe("Dynamic Proxy", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("0 Arguments", () => { let callCount = 0; @@ -23,7 +28,7 @@ describe("Dynamic Proxy", () => { let runData = ""; const myProxy = java.newProxy("RunInterface$Interface1Arg", { - run: function (str) { + run: (str: string) => { runData += str; }, }); @@ -36,7 +41,7 @@ describe("Dynamic Proxy", () => { test("1 Arguments with return data", () => { const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { - run: function (i) { + run: (i: number) => { return i + 1; }, }); @@ -51,7 +56,7 @@ describe("Dynamic Proxy", () => { let runData = ""; const myProxy = java.newProxy("ListenerInterface", { - onEvent: function (_list, _runtime) { + onEvent: (_list: JavaObject, _runtime: JavaObject) => { runData = "onEvent"; }, }); @@ -64,7 +69,7 @@ describe("Dynamic Proxy", () => { }); test("thread", async () => { - await new Promise((resolve, reject) => { + await new Promise((resolve, reject) => { let callCount = 0; const myProxy = java.newProxy("java.lang.Runnable", { @@ -78,7 +83,7 @@ describe("Dynamic Proxy", () => { let timeout = 50; - function waitForThread() { + function waitForThread(): void { if (callCount === 1) { return resolve(); } @@ -94,15 +99,16 @@ describe("Dynamic Proxy", () => { }); test("thread issue #143", async () => { - await new Promise((resolve) => { + await new Promise((resolve) => { const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { - run: function (i) { + run: (i: number) => { return i - 1; }, }); const runInterface = java.newInstanceSync("RunInterface"); - runInterface.runInAnotherThread(myProxy, function (err, result) { + runInterface.runInAnotherThread(myProxy, (err: Error | undefined, result: number) => { + expect(err).toBeUndefined(); expect(result).toBe(45); resolve(); }); @@ -141,7 +147,7 @@ describe("Dynamic Proxy", () => { test("js equals()", () => { const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { - equals: function (_obj) { + equals: (_obj: JavaObject) => { return true; }, }); @@ -201,7 +207,8 @@ describe("Dynamic Proxy", () => { test("js string error", () => { const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { - run: (_i) => { + run: (_i: JavaObject) => { + // eslint-disable-next-line @typescript-eslint/only-throw-error throw "myError"; }, }); @@ -211,6 +218,7 @@ describe("Dynamic Proxy", () => { runInterface.runWithReturnSync(myProxy); throw new Error("Exception was not thrown"); } catch (e) { + expectJavaError(e); expect(e.cause.getClassSync().getNameSync()).toBe("java.lang.RuntimeException"); expect(e.message).toMatch(/Caused by: node\.NodeJsException:.*myError/); } @@ -218,7 +226,7 @@ describe("Dynamic Proxy", () => { test("js Error", () => { const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { - run: function (_i) { + run: (_i: JavaObject) => { throw new Error("newError"); }, }); @@ -228,6 +236,7 @@ describe("Dynamic Proxy", () => { runInterface.runWithReturnSync(myProxy); throw new Error("Exception was not thrown"); } catch (e) { + expectJavaError(e); expect(e.cause.getClassSync().getNameSync()).toBe("java.lang.RuntimeException"); expect(e.message).toMatch(/Caused by: node\.NodeJsException:.*newError/); } @@ -235,7 +244,7 @@ describe("Dynamic Proxy", () => { test("invocationHandler", () => { const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { - run: (i) => { + run: (i: number) => { return i + 2; }, }); @@ -247,7 +256,7 @@ describe("Dynamic Proxy", () => { test("unref", () => { const myProxy = java.newProxy("RunInterface$InterfaceWithReturn", { - run: function (i) { + run: (i: number) => { return i + 1; }, }); @@ -257,6 +266,7 @@ describe("Dynamic Proxy", () => { try { myProxy.invocationHandler.run(42); } catch (e) { + expectJavaError(e); expect(e.message).toBe("dynamicProxyData has been destroyed or corrupted"); } diff --git a/test/importClass.test.js b/test/importClass.test.ts similarity index 85% rename from test/importClass.test.js rename to test/importClass.test.ts index 63e6448..5086eb8 100644 --- a/test/importClass.test.js +++ b/test/importClass.test.ts @@ -1,9 +1,14 @@ -import { afterEach, describe, expect, test } from "vitest"; +import { afterEach, beforeAll, describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; - -const java = getJava(); +import { Java } from "../java"; describe("Import Class", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + afterEach(() => { java.setStaticFieldValue("Test", "staticFieldInt", 42); }); @@ -15,8 +20,8 @@ describe("Import Class", () => { expect(Test.staticFieldInt).toBe(200); expect(Test.staticMethodSync(99)).toBe(100); - await new Promise((resolve) => { - Test.staticMethod(99, (err, result) => { + await new Promise((resolve) => { + Test.staticMethod(99, (err: Error | undefined, result: number | undefined) => { expect(err).toBeFalsy(); expect(result).toBe(100); diff --git a/test/instanceof.test.js b/test/instanceof.test.ts similarity index 79% rename from test/instanceof.test.js rename to test/instanceof.test.ts index 4f8f3ce..679a3d3 100644 --- a/test/instanceof.test.js +++ b/test/instanceof.test.ts @@ -1,9 +1,14 @@ -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; - -const java = getJava(); +import { Java } from "../java"; describe("instanceOf", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("working", () => { const subclass = java.newInstanceSync("Test$SubClass"); if (!java.instanceOf(subclass, "Test$SuperClass")) { diff --git a/test/java-ambiguousMethod.test.js b/test/java-ambiguousMethod.test.ts similarity index 60% rename from test/java-ambiguousMethod.test.js rename to test/java-ambiguousMethod.test.ts index c1a367c..8823773 100644 --- a/test/java-ambiguousMethod.test.js +++ b/test/java-ambiguousMethod.test.ts @@ -1,9 +1,14 @@ -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; +import { Java } from "../java"; import { getJava } from "../testHelpers"; -const java = getJava(); - describe("Java - Call Ambiguous Method", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("staticMethodAmbiguous (sync) - int passed to double", () => { const result = java.callStaticMethodSync("Test", "staticMethodAmbiguous(Ljava/lang/Double;)I", 1); expect(result).toBe(1); @@ -27,42 +32,63 @@ describe("Java - Call Ambiguous Method", () => { }); test("staticMethodAmbiguous - int passed to double", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethodAmbiguous(Ljava/lang/Double;)I", 1, function (err, result) { - expect(err).toBeFalsy(); - expect(result).toBe(1); - resolve(); - }); + await new Promise((resolve) => { + java.callStaticMethod( + "Test", + "staticMethodAmbiguous(Ljava/lang/Double;)I", + 1, + (err: Error | undefined, result: number | undefined) => { + expect(err).toBeFalsy(); + expect(result).toBe(1); + resolve(); + } + ); }); }); test("staticMethodAmbiguous - double passed to int", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethodAmbiguous(Ljava/lang/Integer;)I", 1.1, function (err, result) { - expect(err).toBeFalsy(); - expect(result).toBe(2); - resolve(); - }); + await new Promise((resolve) => { + java.callStaticMethod( + "Test", + "staticMethodAmbiguous(Ljava/lang/Integer;)I", + 1.1, + (err: Error | undefined, result: number | undefined) => { + expect(err).toBeFalsy(); + expect(result).toBe(2); + resolve(); + } + ); }); }); test("staticMethodAmbiguous - method not found", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethodAmbiguous(Ljava/lang/String;)I", 1, function (err, result) { - expect(err).toBeTruthy(); - expect(result).toBeFalsy(); - resolve(); - }); + await new Promise((resolve) => { + java.callStaticMethod( + "Test", + "staticMethodAmbiguous(Ljava/lang/String;)I", + 1, + (err: Error | undefined, result: number | undefined) => { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + } + ); }); }); test("staticMethodAmbiguous - method argument count mismatch", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethodAmbiguous(Ljava/lang/Integer;)I", 1, 2, function (err, result) { - expect(err).toBeTruthy(); - expect(result).toBeFalsy(); - resolve(); - }); + await new Promise((resolve) => { + java.callStaticMethod( + "Test", + "staticMethodAmbiguous(Ljava/lang/Integer;)I", + 1, + 2, + (err: Error | undefined, result: number | undefined) => { + expect(err).toBeTruthy(); + expect(result).toBeFalsy(); + resolve(); + } + ); }); }); diff --git a/test/java-callStaticMethod.test.js b/test/java-callStaticMethod.test.ts similarity index 65% rename from test/java-callStaticMethod.test.js rename to test/java-callStaticMethod.test.ts index fd4978d..1ad3eb4 100644 --- a/test/java-callStaticMethod.test.js +++ b/test/java-callStaticMethod.test.ts @@ -1,12 +1,17 @@ -import { describe, expect, test } from "vitest"; -import { getJava } from "../testHelpers"; - -const java = getJava(); +import { beforeAll, describe, expect, test } from "vitest"; +import { expectJavaError, getJava } from "../testHelpers"; +import { Java } from "../java"; describe("Java - Call Static Method", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("callStaticMethod", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethod", (err, result) => { + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethod", (err: Error | undefined, result: string | undefined) => { expect(err).toBeFalsy(); expect(result).toBeTruthy(); expect(result).toBe("staticMethod called"); @@ -29,8 +34,8 @@ describe("Java - Call Static Method", () => { }); test("callStaticMethod with args", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethod", 42, (err, result) => { + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethod", 42, (err: Error | undefined, result: string | undefined) => { expect(err).toBeFalsy(); expect(result).toBeTruthy(); expect(result).toBe(43); @@ -53,8 +58,8 @@ describe("Java - Call Static Method", () => { }); test("callStaticMethod bad class name", async () => { - await new Promise((resolve) => { - java.callStaticMethod("BadClassName", "staticMethod", function (err, result) { + await new Promise((resolve) => { + java.callStaticMethod("BadClassName", "staticMethod", (err: Error | undefined, result: string | undefined) => { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -69,8 +74,8 @@ describe("Java - Call Static Method", () => { }); test("callStaticMethod bad arg types", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethod", "z", function (err, result) { + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethod", "z", (err: Error | undefined, result: string | undefined) => { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -85,8 +90,8 @@ describe("Java - Call Static Method", () => { }); test("callStaticMethod bad number of args", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethod", 42, "z", function (err, result) { + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethod", 42, "z", (err: Error | undefined, result: string | undefined) => { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -101,8 +106,8 @@ describe("Java - Call Static Method", () => { }); test("callStaticMethod bad method name", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "badMethodName", function (err, result) { + await new Promise((resolve) => { + java.callStaticMethod("Test", "badMethodName", (err: Error | undefined, result: string | undefined) => { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -123,7 +128,8 @@ describe("Java - Call Static Method", () => { result = java.callStaticMethodSync("Test", "staticMethodThrows", ex); throw new Error("expected error"); } catch (err) { - expect(err.cause.getMessageSync()).toBe("my exception"); + expectJavaError(err); + expect(err.cause?.getMessageSync()).toBe("my exception"); expect(err.toString()).toMatch(/my exception/); expect(result).toBeFalsy(); } @@ -135,15 +141,16 @@ describe("Java - Call Static Method", () => { java.callStaticMethodSync("Test", "staticMethodThrows", ex); throw new Error("should throw"); } catch (err) { + expectJavaError(err); expect(err.toString()).toMatch(/my exception/); } }); test("staticMethodThrows exception thrown from method", async () => { const ex = java.newInstanceSync("java.lang.Exception", "my exception"); - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethodThrows", ex, function (err, result) { - expect(err).toBeTruthy(); + await new Promise((resolve) => { + java.callStaticMethod("Test", "staticMethodThrows", ex, (err: Error | undefined, result: string | undefined) => { + expectJavaError(err); expect(err.cause.getMessageSync()).toBe("my exception"); expect(err.toString()).toMatch(/my exception/); expect(result).toBeFalsy(); @@ -157,19 +164,24 @@ describe("Java - Call Static Method", () => { java.callStaticMethodSync("Test", "staticMethodThrowsNewException"); throw new Error("should throw"); } catch (err) { + expectJavaError(err); expect(err.toString()).toMatch(/my exception/); } }); test("staticMethodThrowsNewException exception thrown from method", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethodThrowsNewException", function (err, result) { - expect(err).toBeTruthy(); - expect(err.cause.getMessageSync()).toBe("my exception"); - expect(err.toString()).toMatch(/my exception/); - expect(result).toBeFalsy(); - resolve(); - }); + await new Promise((resolve) => { + java.callStaticMethod( + "Test", + "staticMethodThrowsNewException", + (err: Error | undefined, result: string | undefined) => { + expectJavaError(err); + expect(err.cause.getMessageSync()).toBe("my exception"); + expect(err.toString()).toMatch(/my exception/); + expect(result).toBeFalsy(); + resolve(); + } + ); }); }); @@ -180,6 +192,7 @@ describe("Java - Call Static Method", () => { myTest.methodThrowsSync(ex); throw new Error("should throw"); } catch (err) { + expectJavaError(err); expect(err.toString()).toMatch(/my exception/); } }); @@ -187,8 +200,9 @@ describe("Java - Call Static Method", () => { test("methodThrows exception thrown from method", async () => { const ex = java.newInstanceSync("java.lang.Exception", "my exception"); const myTest = java.newInstanceSync("Test"); - await new Promise((resolve) => { - return myTest.methodThrows(ex, function (err) { + await new Promise((resolve) => { + return myTest.methodThrows(ex, (err: Error | undefined) => { + expectJavaError(err); expect(err.toString()).toMatch(/my exception/); resolve(); }); @@ -201,14 +215,16 @@ describe("Java - Call Static Method", () => { myTest.methodThrowsNewExceptionSync(); throw new Error("should throw"); } catch (err) { + expectJavaError(err); expect(err.toString()).toMatch(/my exception/); } }); test("methodThrowsNewException exception thrown from method", async () => { const myTest = java.newInstanceSync("Test"); - await new Promise((resolve) => { - myTest.methodThrowsNewException((err) => { + await new Promise((resolve) => { + myTest.methodThrowsNewException((err: Error | undefined) => { + expectJavaError(err); expect(err.toString()).toMatch(/my exception/); resolve(); }); @@ -217,23 +233,34 @@ describe("Java - Call Static Method", () => { test("char array", async () => { const charArray = java.newArray("char", "hello world\n".split("")); - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethodCharArrayToString", charArray, function (err, result) { - expect(err).toBeFalsy(); - expect(result).toBeTruthy(); - expect(result).toBe("hello world\n"); - resolve(); - }); + await new Promise((resolve) => { + java.callStaticMethod( + "Test", + "staticMethodCharArrayToString", + charArray, + (err: Error | undefined, result: string | undefined) => { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result).toBe("hello world\n"); + resolve(); + } + ); }); }); test("String passed in for Object", async () => { - await new Promise((resolve) => { - java.callStaticMethod("Test", "static2Objects", "1", "2", function (err, result) { - expect(err).toBeFalsy(); - expect(result).toBe(false); - resolve(); - }); + await new Promise((resolve) => { + java.callStaticMethod( + "Test", + "static2Objects", + "1", + "2", + (err: Error | undefined, result: boolean | undefined) => { + expect(err).toBeFalsy(); + expect(result).toBe(false); + resolve(); + } + ); }); }); @@ -246,22 +273,31 @@ describe("Java - Call Static Method", () => { test("java.lang.Long calls (java Long)", async () => { const javaLong = java.newInstanceSync("java.lang.Long", 5); - await new Promise((resolve) => { - java.callStaticMethod("Test", "staticMethodLongToString", javaLong, function (err, result) { - expect(err).toBeFalsy(); - expect(result).toBeTruthy(); - expect(result).toBe("5"); - resolve(); - }); + await new Promise((resolve) => { + java.callStaticMethod( + "Test", + "staticMethodLongToString", + javaLong, + (err: Error | undefined, result: string | undefined) => { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result).toBe("5"); + resolve(); + } + ); }); }); test("Call method that returns a long", () => { - java.callStaticMethod("Test", "staticMethodReturnLong", function (err, result) { - expect(err).toBeFalsy(); - expect(result).toBeTruthy(); - expect(result.longValue).toBe("9223372036854775807"); - }); + java.callStaticMethod( + "Test", + "staticMethodReturnLong", + (err: Error | undefined, result: { longValue: string } | undefined) => { + expect(err).toBeFalsy(); + expect(result).toBeTruthy(); + expect(result?.longValue).toBe("9223372036854775807"); + } + ); }); test("Call method with nested enum value", () => { @@ -282,9 +318,9 @@ describe("Java - Call Static Method", () => { }); test("Call static method named name_", async () => { - await new Promise((resolve) => { + await new Promise((resolve) => { const Test = java.import("Test"); - Test.name_((err) => { + Test.name_((err: Error | undefined) => { expect(err).toBeFalsy(); resolve(); }); diff --git a/test/java-newInstance.test.js b/test/java-newInstance.test.ts similarity index 72% rename from test/java-newInstance.test.js rename to test/java-newInstance.test.ts index 038373e..f0ccece 100644 --- a/test/java-newInstance.test.js +++ b/test/java-newInstance.test.ts @@ -1,12 +1,17 @@ -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; +import { Java, JavaObject } from "../java"; import { getJava } from "../testHelpers"; -const java = getJava(); - describe("Java - New Instance", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("newInstance", async () => { - await new Promise((resolve) => { - java.newInstance("Test", (err, result) => { + await new Promise((resolve) => { + java.newInstance("Test", (err: Error | undefined, result: JavaObject | undefined) => { expect(err).toBeFalsy(); expect(result).toBeTruthy(); expect(result.getClassSync().toStringSync()).toBe("class Test"); @@ -27,8 +32,8 @@ describe("Java - New Instance", () => { }); test("newInstance with args", async () => { - await new Promise((resolve) => { - java.newInstance("Test", 42, function (err, result) { + await new Promise((resolve) => { + java.newInstance("Test", 42, (err: Error | undefined, result: JavaObject | undefined) => { expect(err).toBeFalsy(); expect(result).toBeTruthy(); expect(result.getIntSync()).toBe(42); @@ -44,8 +49,8 @@ describe("Java - New Instance", () => { }); test("newInstance bad class name", async () => { - await new Promise((resolve) => { - java.newInstance("BadClassName", (err, result) => { + await new Promise((resolve) => { + java.newInstance("BadClassName", (err: Error | undefined, result: JavaObject | undefined) => { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -60,8 +65,8 @@ describe("Java - New Instance", () => { }); test("newInstance bad arg types", async () => { - await new Promise((resolve) => { - java.newInstance("Test", "a", function (err, result) { + await new Promise((resolve) => { + java.newInstance("Test", "a", (err: Error | undefined, result: JavaObject | undefined) => { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -76,8 +81,8 @@ describe("Java - New Instance", () => { }); test("newInstance bad number of args", async () => { - await new Promise((resolve) => { - java.newInstance("Test", 42, 15, function (err, result) { + await new Promise((resolve) => { + java.newInstance("Test", 42, 15, (err: Error | undefined, result: JavaObject | undefined) => { expect(err).toBeTruthy(); expect(result).toBeFalsy(); resolve(); @@ -93,10 +98,10 @@ describe("Java - New Instance", () => { test("newInstance exception thrown from constructor", async () => { const ex = java.newInstanceSync("java.lang.Exception", "my exception"); - await new Promise((resolve) => { - java.newInstance("TestExceptions", ex, function (err, result) { + await new Promise((resolve) => { + java.newInstance("TestExceptions", ex, (err: Error | undefined, result: JavaObject | undefined) => { expect(err).toBeTruthy(); - expect(err.toString()).toMatch(/my exception/); + expect(err?.toString()).toMatch(/my exception/); expect(result).toBeFalsy(); resolve(); }); diff --git a/test/java-staticField.test.js b/test/java-staticField.test.ts similarity index 85% rename from test/java-staticField.test.js rename to test/java-staticField.test.ts index aff3a4c..cda57ab 100644 --- a/test/java-staticField.test.js +++ b/test/java-staticField.test.ts @@ -1,9 +1,14 @@ -import { afterEach, describe, expect, test } from "vitest"; +import { afterEach, beforeAll, describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; - -const java = getJava(); +import { Java } from "../java"; describe("Java - Static Field", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + afterEach(() => { java.setStaticFieldValue("Test", "staticFieldInt", 42); }); diff --git a/test/javaObject.test.js b/test/javaObject.test.ts similarity index 70% rename from test/javaObject.test.js rename to test/javaObject.test.ts index d3ddd62..c3569f2 100644 --- a/test/javaObject.test.js +++ b/test/javaObject.test.ts @@ -1,12 +1,13 @@ import { beforeEach, describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; - -const java = getJava(); +import { Java, JavaObject } from "../java"; describe("Java Object", () => { - let testObj; + let testObj: JavaObject; + let java!: Java; - beforeEach(() => { + beforeEach(async () => { + java = await getJava(); testObj = java.newInstanceSync("Test"); }); diff --git a/test/promises.test.js b/test/promises.test.ts similarity index 75% rename from test/promises.test.js rename to test/promises.test.ts index 9bb559a..2f75763 100644 --- a/test/promises.test.js +++ b/test/promises.test.ts @@ -1,12 +1,18 @@ -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; +import { Java } from "../java"; import { getJava } from "../testHelpers"; -const java = getJava(); - describe("Promises", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("create an instance of a class and call methods (getClassPromise & getNamePromise)", async () => { // Adapted from a test in simple-test.js - const list = await java.newInstancePromise("java.util.ArrayList"); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const list = await (java as any).newInstancePromise("java.util.ArrayList"); expect(list).toBeTruthy(); const clazz = await list.getClassPromise(); @@ -23,7 +29,8 @@ describe("Promises", () => { }); test("run promisified method of Java module (newInstancePromise)", async () => { - const list = await java.newInstancePromise("java.util.ArrayList"); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const list = await (java as any).newInstancePromise("java.util.ArrayList"); expect(list).toBeTruthy(); const clazz = await list.getClassPromise(); @@ -34,7 +41,8 @@ describe("Promises", () => { }); test("run chained promisified methods (of class java.util.ArrayList)", async () => { - const list = await java.newInstancePromise("java.util.ArrayList"); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const list = await (java as any).newInstancePromise("java.util.ArrayList"); expect(list).toBeTruthy(); const clazz = await list.getClassPromise(); @@ -66,7 +74,7 @@ describe("Promises", () => { const more = await it.hasNextPromise(); console.log(typeof more, more); - expect(more).toBeFalsy(false); + expect(more).toBeFalsy(); await expect(async () => await it.nextPromise()).rejects.toThrowError(); }); diff --git a/test/simple.test.js b/test/simple.test.ts similarity index 85% rename from test/simple.test.js rename to test/simple.test.ts index 92aa8d4..be4733c 100644 --- a/test/simple.test.js +++ b/test/simple.test.ts @@ -1,9 +1,14 @@ -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; +import { Java, JavaObject } from "../java"; import { getJava } from "../testHelpers"; -const java = getJava(); - describe("Simple", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("test classpath commons lang", () => { const result = java.callStaticMethodSync("org.apache.commons.lang3.ObjectUtils", "toString", "test"); console.log("org.apache.commons.lang3.ObjectUtils.toString:", result); @@ -53,22 +58,22 @@ describe("Simple", () => { }); test("test method does not exists (async)", () => { - java.callStaticMethod("java.lang.System", "badMethod", (err) => { + java.callStaticMethod("java.lang.System", "badMethod", (err: Error | undefined) => { if (err) { return; } - test.done(new Error("should throw exception")); + new Error("should throw exception"); }); }); test("create an instance of a class and call methods (getName) (async)", async () => { - await new Promise((resolve) => { - java.newInstance("java.util.ArrayList", (err, list) => { + await new Promise((resolve) => { + java.newInstance("java.util.ArrayList", (err: Error | undefined, list: JavaObject | undefined) => { expect(err).toBeFalsy(); expect(list).toBeTruthy(); - list.getClass((err, result) => { + list.getClass((err: Error | undefined, result: JavaObject | undefined) => { expect(err).toBeFalsy(); - result.getName((err, result) => { + result.getName((err: Error | undefined, result: JavaObject | undefined) => { expect(err).toBeFalsy(); expect(result).toBe("java.util.ArrayList"); resolve(); @@ -78,6 +83,35 @@ describe("Simple", () => { }); }); + test("findClassSync", async () => { + const arrayListClass = java.findClassSync("java.util.ArrayList"); + expect(arrayListClass).toBeTruthy(); + expect(arrayListClass.getNameSync()).toBe("java.util.ArrayList"); + }); + + test("findClassSync not found", async () => { + expect(() => { + java.findClassSync("java.util.MissingClass"); + }).toThrowError(/Could not create class java.util.MissingClass/); + }); + + test("call method", async () => { + const list = java.newInstanceSync("java.util.ArrayList"); + await new Promise((resolve) => { + java.callMethod(list, "add", "test", (err: Error | undefined) => { + expect(err).toBeFalsy(); + expect(list.sizeSync()).toBe(1); + resolve(); + }); + }); + }); + + test("call method (sync)", async () => { + const list = java.newInstanceSync("java.util.ArrayList"); + java.callMethodSync(list, "add", ["test"]); + expect(list.sizeSync()).toBe(1); + }); + test("create an instance of a class and call methods (getName) (sync)", () => { const list = java.newInstanceSync("java.util.ArrayList"); expect(list.sizeSync()).toBe(0); @@ -92,11 +126,11 @@ describe("Simple", () => { }); test("create an instance of a class and call methods (size) (async)", async () => { - await new Promise((resolve) => { - java.newInstance("java.util.ArrayList", (err, list) => { + await new Promise((resolve) => { + java.newInstance("java.util.ArrayList", (err: Error | undefined, list: JavaObject | undefined) => { expect(err).toBeFalsy(); expect(list).toBeTruthy(); - list.size((err, result) => { + list.size((err: Error | undefined, result: number | undefined) => { expect(err).toBeFalsy(); expect(result).toBe(0); resolve(); @@ -169,7 +203,7 @@ describe("Simple", () => { test("method returning an array of longs sync", () => { let arr = java.callStaticMethodSync("Test", "getArrayOfLongs"); - arr = arr.map(function (l) { + arr = arr.map((l: JavaObject) => { return l.toStringSync(); }); expect(arr.length).toBe(5); diff --git a/test/utils-types.test.js b/test/utils-types.test.ts similarity index 93% rename from test/utils-types.test.js rename to test/utils-types.test.ts index 7ad40d7..0cb38d2 100644 --- a/test/utils-types.test.js +++ b/test/utils-types.test.ts @@ -1,9 +1,14 @@ -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; +import { Java } from "../java"; import { getJava } from "../testHelpers"; -const java = getJava(); - describe("Utils - Types", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("Array of Objects", () => { let val = java.getStaticFieldValue("Test", "staticArrayObjects"); expect(val).toBeNull(); diff --git a/test/varargs.test.js b/test/varargs.test.ts similarity index 95% rename from test/varargs.test.js rename to test/varargs.test.ts index cd5fe75..991229e 100644 --- a/test/varargs.test.js +++ b/test/varargs.test.ts @@ -1,9 +1,14 @@ -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; - -const java = getJava(); +import { Java } from "../java"; describe("varargs", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(); + }); + test("array signature inference", () => { const Test = java.import("Test"); expect(Test.varArgsSignatureSync([])).toBe("Object..."); diff --git a/testAsyncOptions/allThreeSuffix.test.js b/testAsyncOptions/allThreeSuffix.test.ts similarity index 82% rename from testAsyncOptions/allThreeSuffix.test.js rename to testAsyncOptions/allThreeSuffix.test.ts index d39c74a..5765076 100644 --- a/testAsyncOptions/allThreeSuffix.test.js +++ b/testAsyncOptions/allThreeSuffix.test.ts @@ -1,16 +1,22 @@ // All three variants have non-empty suffix, i.e a suffix is required for any variant. +import { Java } from "../java"; import { getJava } from "../testHelpers"; -import { describe, test, expect } from "vitest"; - -const java = getJava({ - syncSuffix: "Sync", - asyncSuffix: "Async", - promiseSuffix: "Promise", - promisify: require("when/node").lift, // https://github.com/cujojs/when -}); +import { describe, test, expect, beforeAll } from "vitest"; describe("allThreeSuffix", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava({ + syncSuffix: "Sync", + asyncSuffix: "Async", + promiseSuffix: "Promise", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when + }); + }); + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeDefined(); @@ -62,12 +68,12 @@ describe("allThreeSuffix", () => { test("asyncCalls", async () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - await new Promise((resolve) => { - arrayList.addAsync("hello", function (err) { + await new Promise((resolve) => { + arrayList.addAsync("hello", (err: Error | undefined) => { expect(err).toBeUndefined(); - arrayList.addAsync("world", function (err) { + arrayList.addAsync("world", (err: Error | undefined) => { expect(err).toBeUndefined(); - arrayList.sizeAsync(function (err, size) { + arrayList.sizeAsync((err: Error | undefined, size: number) => { expect(err).toBeUndefined(); expect(size).toBe(2); resolve(); @@ -87,7 +93,7 @@ describe("allThreeSuffix", () => { .then(() => { return arrayList.sizePromise(); }) - .then((size) => { + .then((size: number) => { expect(size).toBe(2); }); }); diff --git a/testAsyncOptions/asyncSuffixSyncDefault.test.js b/testAsyncOptions/asyncSuffixSyncDefault.test.ts similarity index 76% rename from testAsyncOptions/asyncSuffixSyncDefault.test.js rename to testAsyncOptions/asyncSuffixSyncDefault.test.ts index 9618799..6504c1d 100644 --- a/testAsyncOptions/asyncSuffixSyncDefault.test.js +++ b/testAsyncOptions/asyncSuffixSyncDefault.test.ts @@ -1,36 +1,52 @@ // Use "Async" for the asyncSuffix, and "" for the syncSuffix. import { beforeAll, describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; +import { getJava } from "../testHelpers"; +import { Java } from "../java"; describe("asyncSuffixSyncDefault", () => { + let java!: Java; + beforeAll(async () => { - await new Promise((resolve) => { - java.asyncOptions = { + let beforeCalled = false; + let afterCalled = false; + + java = await getJava( + { syncSuffix: "", asyncSuffix: "Async", ifReadOnlySuffix: "_alt", - }; - - function before(callback) { - java.classpath.push("test/"); - expect(java.isJvmCreated()).toBeFalsy(); - callback(); - } - - function after(callback) { - expect(java.isJvmCreated()).toBeTruthy(); - callback(); + }, + { + beforeInit: async (java) => { + function before(callback: () => void): void { + beforeCalled = true; + java.classpath.push("test/"); + expect(java.isJvmCreated()).toBeFalsy(); + callback(); + } + + function after(callback: () => void): void { + afterCalled = true; + expect(java.isJvmCreated()).toBeTruthy(); + callback(); + } + + java.registerClient(before, after); + + await new Promise((resolve) => { + java.ensureJvm((err) => { + expect(err).toBeFalsy(); + expect(java.isJvmCreated()).toBeTruthy(); + resolve(); + }); + }); + }, } + ); - java.registerClient(before, after); - - java.ensureJvm(function (err) { - expect(err).toBeNull(); - expect(java.isJvmCreated()).toBeTruthy(); - resolve(); - }); - }); + expect(beforeCalled).toBeTruthy(); + expect(afterCalled).toBeTruthy(); }); test("api", () => { @@ -83,12 +99,12 @@ describe("asyncSuffixSyncDefault", () => { test("asyncCalls", async () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - await new Promise((resolve) => { - arrayList.addAsync("hello", function (err) { + await new Promise((resolve) => { + arrayList.addAsync("hello", (err: Error | undefined) => { expect(err).toBeUndefined(); - arrayList.addAsync("world", function (err) { + arrayList.addAsync("world", (err: Error | undefined) => { expect(err).toBeUndefined(); - arrayList.sizeAsync(function (err, size) { + arrayList.sizeAsync((err: Error | undefined, size: number | undefined) => { expect(err).toBeUndefined(); expect(size).toBe(2); resolve(); diff --git a/testAsyncOptions/clientBeforeError.test.js b/testAsyncOptions/clientBeforeError.test.js deleted file mode 100644 index 7c6980c..0000000 --- a/testAsyncOptions/clientBeforeError.test.js +++ /dev/null @@ -1,29 +0,0 @@ -import { describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; - -describe("clientBeforeError", () => { - test("clientBeforeError", async () => { - await new Promise((resolve) => { - expect(java.isJvmCreated()).toBeFalsy(); - - java.asyncOptions = { - syncSuffix: "Sync", - }; - - function before(callback) { - expect(java.isJvmCreated()).toBeFalsy(); - callback(new Error("dummy error")); - } - - java.registerClient(before); - - java.ensureJvm(function (err) { - expect(err && typeof err === "object").toBeTruthy(); - expect(err).toBeInstanceOf(Error); - expect(err.message).toBe("dummy error"); - expect(java.isJvmCreated()).toBeFalsy(); - resolve(); - }); - }); - }); -}); diff --git a/testAsyncOptions/clientBeforeError.test.ts b/testAsyncOptions/clientBeforeError.test.ts new file mode 100644 index 0000000..187e13a --- /dev/null +++ b/testAsyncOptions/clientBeforeError.test.ts @@ -0,0 +1,35 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +describe("clientBeforeError", () => { + test("clientBeforeError", async () => { + await getJava( + { + syncSuffix: "Sync", + }, + { + beforeInit: async (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + function before(callback: (err: Error) => void): void { + expect(java.isJvmCreated()).toBeFalsy(); + callback(new Error("dummy error")); + } + + java.registerClient(before); + + await new Promise((resolve) => { + java.ensureJvm((err) => { + expect(err).toBeTruthy(); + expect(typeof err).toBe("object"); + expect(err).toBeInstanceOf(Error); + expect(err?.message).toBe("dummy error"); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + }); + }); + }, + } + ); + }); +}); diff --git a/testAsyncOptions/clientBeforeSyncThrows.test.js b/testAsyncOptions/clientBeforeSyncThrows.test.js deleted file mode 100644 index 19fc62e..0000000 --- a/testAsyncOptions/clientBeforeSyncThrows.test.js +++ /dev/null @@ -1,29 +0,0 @@ -import { describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; - -describe("clientBeforeSyncThrows", () => { - test("clientBeforeSyncThrows", async () => { - await new Promise((resolve) => { - expect(java.isJvmCreated()).toBeFalsy(); - - java.asyncOptions = { - syncSuffix: "Sync", - }; - - function before() { - expect(java.isJvmCreated()).toBeFalsy(); - throw new Error("dummy error"); - } - - java.registerClient(before); - - java.ensureJvm(function (err) { - expect(err && typeof err === "object").toBeTruthy(); - expect(err).instanceOf(Error); - expect(err.message).toBe("dummy error"); - expect(java.isJvmCreated()).toBeFalsy(); - resolve(); - }); - }); - }); -}); diff --git a/testAsyncOptions/clientBeforeSyncThrows.test.ts b/testAsyncOptions/clientBeforeSyncThrows.test.ts new file mode 100644 index 0000000..5277fc1 --- /dev/null +++ b/testAsyncOptions/clientBeforeSyncThrows.test.ts @@ -0,0 +1,33 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +describe("clientBeforeSyncThrows", () => { + test("clientBeforeSyncThrows", async () => { + await getJava( + { + syncSuffix: "Sync", + }, + { + beforeInit: async (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + function before(): void { + expect(java.isJvmCreated()).toBeFalsy(); + throw new Error("dummy error"); + } + java.registerClient(before); + + await new Promise((resolve) => { + java.ensureJvm((err: Error | undefined) => { + expect(err && typeof err === "object").toBeTruthy(); + expect(err).instanceOf(Error); + expect(err?.message).toBe("dummy error"); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + }); + }); + }, + } + ); + }); +}); diff --git a/testAsyncOptions/clientBeforeThrows.test.js b/testAsyncOptions/clientBeforeThrows.test.js deleted file mode 100644 index 7cf6e6e..0000000 --- a/testAsyncOptions/clientBeforeThrows.test.js +++ /dev/null @@ -1,29 +0,0 @@ -import { describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; - -describe("clientBeforeThrows", () => { - test("clientBeforeThrows", async () => { - await new Promise((resolve) => { - expect(java.isJvmCreated()).toBeFalsy(); - - java.asyncOptions = { - syncSuffix: "Sync", - }; - - function before() { - expect(java.isJvmCreated()).toBeFalsy(); - throw new Error("dummy error"); - } - - java.registerClient(before); - - java.ensureJvm(function (err) { - expect(err && typeof err === "object").toBeTruthy(); - expect(err).instanceOf(Error); - expect(err.message).toBe("dummy error"); - expect(java.isJvmCreated()).toBeFalsy(); - resolve(); - }); - }); - }); -}); diff --git a/testAsyncOptions/clientBeforeThrows.test.ts b/testAsyncOptions/clientBeforeThrows.test.ts new file mode 100644 index 0000000..ef493fa --- /dev/null +++ b/testAsyncOptions/clientBeforeThrows.test.ts @@ -0,0 +1,33 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +describe("clientBeforeThrows", () => { + test("clientBeforeThrows", async () => { + await getJava( + { + syncSuffix: "Sync", + }, + { + beforeInit: async (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + function before(): void { + expect(java.isJvmCreated()).toBeFalsy(); + throw new Error("dummy error"); + } + java.registerClient(before); + + await new Promise((resolve) => { + java.ensureJvm((err: Error | undefined) => { + expect(err && typeof err === "object").toBeTruthy(); + expect(err).instanceOf(Error); + expect(err?.message).toBe("dummy error"); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + }); + }); + }, + } + ); + }); +}); diff --git a/testAsyncOptions/clientPBeforeError.test.js b/testAsyncOptions/clientPBeforeError.test.js deleted file mode 100644 index 032ce23..0000000 --- a/testAsyncOptions/clientPBeforeError.test.js +++ /dev/null @@ -1,40 +0,0 @@ -import { describe, expect, test } from "vitest"; -import when from "when"; -import { java } from "../testHelpers"; - -describe("clientPBeforeError", () => { - test("clientPBeforeError", async () => { - await new Promise((resolve) => { - expect(java.isJvmCreated()).toBeFalsy(); - - java.asyncOptions = { - syncSuffix: "Sync", - promiseSuffix: "Promise", - promisify: require("when/node").lift, // https://github.com/cujojs/when - }; - - function beforeP() { - const promise = when.promise((_resolve, reject) => { - expect(java.isJvmCreated()).toBeFalsy(); - reject(new Error("dummy error")); - }); - return promise; - } - - java.registerClientP(beforeP); - - java.ensureJvm().done( - () => { - throw new Error("expect error"); - }, - (err) => { - expect(err && typeof err === "object").toBeTruthy(); - expect(err).instanceOf(Error); - expect(err.message).toBe("dummy error"); - expect(java.isJvmCreated()).toBeFalsy(); - resolve(); - } - ); - }); - }); -}); diff --git a/testAsyncOptions/clientPBeforeError.test.ts b/testAsyncOptions/clientPBeforeError.test.ts new file mode 100644 index 0000000..cd6077f --- /dev/null +++ b/testAsyncOptions/clientPBeforeError.test.ts @@ -0,0 +1,43 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +describe("clientPBeforeError", () => { + test("clientPBeforeError", async () => { + await getJava( + { + syncSuffix: "Sync", + promiseSuffix: "Promise", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when + }, + { + beforeInit: async (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + function beforeP(): Promise { + return new Promise((_resolve, reject) => { + expect(java.isJvmCreated()).toBeFalsy(); + reject(new Error("dummy error")); + }); + } + java.registerClientP(beforeP); + + await new Promise((resolve) => { + java.ensureJvm().then( + () => { + throw new Error("expect error"); + }, + (err: Error | undefined) => { + expect(err && typeof err === "object").toBeTruthy(); + expect(err).instanceOf(Error); + expect(err?.message).toBe("dummy error"); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + } + ); + }); + }, + } + ); + }); +}); diff --git a/testAsyncOptions/clientPBeforeThrows.test.js b/testAsyncOptions/clientPBeforeThrows.test.js deleted file mode 100644 index 86e45e6..0000000 --- a/testAsyncOptions/clientPBeforeThrows.test.js +++ /dev/null @@ -1,40 +0,0 @@ -import { describe, expect, test } from "vitest"; -import when from "when"; -import { java } from "../testHelpers"; - -describe("clientPBeforeThrows", () => { - test("clientPBeforeThrows", async () => { - await new Promise((resolve) => { - expect(java.isJvmCreated()).toBeFalsy(); - - java.asyncOptions = { - syncSuffix: "Sync", - promiseSuffix: "Promise", - promisify: require("when/node").lift, // https://github.com/cujojs/when - }; - - function beforeP() { - const promise = when.promise(() => { - expect(java.isJvmCreated()).toBeFalsy(); - throw new Error("dummy error"); - }); - return promise; - } - - java.registerClientP(beforeP); - - java.ensureJvm().done( - () => { - throw new Error("expected error"); - }, - (err) => { - expect(err && typeof err === "object").toBeTruthy(); - expect(err).instanceOf(Error); - expect(err.message).toBe("dummy error"); - expect(java.isJvmCreated()).toBeFalsy(); - resolve(); - } - ); - }); - }); -}); diff --git a/testAsyncOptions/clientPBeforeThrows.test.ts b/testAsyncOptions/clientPBeforeThrows.test.ts new file mode 100644 index 0000000..901a65d --- /dev/null +++ b/testAsyncOptions/clientPBeforeThrows.test.ts @@ -0,0 +1,44 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +describe("clientPBeforeThrows", () => { + test("clientPBeforeThrows", async () => { + await getJava( + { + syncSuffix: "Sync", + promiseSuffix: "Promise", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when + }, + { + beforeInit: async (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + function beforeP(): Promise { + return new Promise(() => { + expect(java.isJvmCreated()).toBeFalsy(); + throw new Error("dummy error"); + }); + } + + java.registerClientP(beforeP); + + await new Promise((resolve) => { + java.ensureJvm().then( + () => { + throw new Error("expected error"); + }, + (err: Error | undefined) => { + expect(err && typeof err === "object").toBeTruthy(); + expect(err).instanceOf(Error); + expect(err?.message).toBe("dummy error"); + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + } + ); + }); + }, + } + ); + }); +}); diff --git a/testAsyncOptions/defacto.test.js b/testAsyncOptions/defacto.test.ts similarity index 69% rename from testAsyncOptions/defacto.test.js rename to testAsyncOptions/defacto.test.ts index ec4cd66..e9fc148 100644 --- a/testAsyncOptions/defacto.test.js +++ b/testAsyncOptions/defacto.test.ts @@ -1,43 +1,49 @@ // In the defacto case, the developer sets asyncOptions, but specifies the defacto standard behavior. import { beforeAll, describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; +import { Java } from "../java"; +import { getJava } from "../testHelpers"; describe("defacto", () => { - beforeAll(async () => { - await new Promise((resolve) => { - const api = Object.keys(java).filter((key) => typeof java[key] === "function"); - expect(api.includes("isJvmCreated"), "Expected `isJvmCreated` to be present, but it is NOT.").toBeTruthy(); - expect(java.isJvmCreated()).toBeFalsy(); + let java!: Java; - java.asyncOptions = { + beforeAll(async () => { + java = await getJava( + { syncSuffix: "Sync", asyncSuffix: "", - }; - - function before() { - expect(java.isJvmCreated()).toBeFalsy(); - } - - function after() { - expect(java.isJvmCreated()).toBeTruthy(); + }, + { + beforeInit: async (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + function before(): void { + expect(java.isJvmCreated()).toBeFalsy(); + } + + function after(): void { + expect(java.isJvmCreated()).toBeTruthy(); + } + + java.registerClient(before, after); + java.registerClient(undefined, after); + java.registerClient(before, undefined); + + await new Promise((resolve) => { + java.ensureJvm(function (err) { + expect(err).toBeFalsy(); + expect(java.isJvmCreated()).toBeTruthy(); + + // Verify that ensureJvm is idempotent + java.ensureJvm(function (err) { + expect(err).toBeFalsy(); + resolve(); + }); + }); + }); + }, } - - java.registerClient(before, after); - java.registerClient(undefined, after); - java.registerClient(before, undefined); - - java.ensureJvm(function (err) { - expect(err).toBeFalsy(); - expect(java.isJvmCreated()).toBeTruthy(); - - // Verify that ensureJvm is idempotent - java.ensureJvm(function (err) { - expect(err).toBeFalsy(); - resolve(); - }); - }); - }); + ); }); test("api", () => { @@ -89,13 +95,13 @@ describe("defacto", () => { }); test("asyncCalls", async () => { - await new Promise((resolve) => { + await new Promise((resolve) => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function (err) { + arrayList.add("hello", (err: Error | undefined) => { expect(err).toBeFalsy(); - arrayList.add("world", function (err) { + arrayList.add("world", (err: Error | undefined) => { expect(err).toBeFalsy(); - arrayList.size(function (err, size) { + arrayList.size((err: Error | undefined, size: number | undefined) => { expect(err).toBeFalsy(); expect(size).toBe(2); resolve(); diff --git a/testAsyncOptions/defactoPlusPromise.test.js b/testAsyncOptions/defactoPlusPromise.test.ts similarity index 72% rename from testAsyncOptions/defactoPlusPromise.test.js rename to testAsyncOptions/defactoPlusPromise.test.ts index 07b0cbc..3149f5a 100644 --- a/testAsyncOptions/defactoPlusPromise.test.js +++ b/testAsyncOptions/defactoPlusPromise.test.ts @@ -1,41 +1,44 @@ // The defacto case but with promises also enabled. import { beforeAll, describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; +import { Java } from "../java"; +import { getJava } from "../testHelpers"; describe("defactoPlusPromise", () => { - beforeAll(async () => { - await new Promise((resolve) => { - const api = Object.keys(java).filter((key) => typeof java[key] === "function"); - expect(api.includes("isJvmCreated"), "Expected `isJvmCreated` to be present, but it is NOT.").toBeTruthy(); - expect(java.isJvmCreated()).toBeFalsy(); + let java!: Java; - java.asyncOptions = { + beforeAll(async () => { + java = await getJava( + { syncSuffix: "Sync", asyncSuffix: "", promiseSuffix: "Promise", - promisify: require("when/node").lift, // https://github.com/cujojs/when - }; - - function before(callback) { - expect(java.isJvmCreated()).toBeFalsy(); - callback(); - } - - function after(callback) { - expect(java.isJvmCreated()).toBeTruthy(); - callback(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when + }, + { + beforeInit: (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + function before(callback: () => void): void { + expect(java.isJvmCreated()).toBeFalsy(); + callback(); + } + + function after(callback: () => void): void { + expect(java.isJvmCreated()).toBeTruthy(); + callback(); + } + + java.registerClient(before, after); + java.registerClient(null, after); + java.registerClient(before); + }, } + ); - java.registerClient(before, after); - java.registerClient(null, after); - java.registerClient(before); - - java.ensureJvm().done(function () { - expect(java.isJvmCreated()).toBeTruthy(); - resolve(); - }); - }); + await java.ensureJvm(); + expect(java.isJvmCreated()).toBeTruthy(); }); test("api", () => { @@ -84,13 +87,13 @@ describe("defactoPlusPromise", () => { }); test("asyncCalls", async () => { - await new Promise((resolve) => { + await new Promise((resolve) => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function (err) { + arrayList.add("hello", (err: Error | undefined) => { expect(err).toBeFalsy(); - arrayList.add("world", function (err) { + arrayList.add("world", (err: Error | undefined) => { expect(err).toBeFalsy(); - arrayList.size(function (err, size) { + arrayList.size((err: Error | undefined, size: number | undefined) => { expect(err).toBeFalsy(); expect(size).toBe(2); resolve(); @@ -101,7 +104,7 @@ describe("defactoPlusPromise", () => { }); test("promiseCalls", async () => { - await new Promise((resolve) => { + await new Promise((resolve) => { const arrayList = java.newInstanceSync("java.util.ArrayList"); arrayList .addPromise("hello") @@ -111,7 +114,7 @@ describe("defactoPlusPromise", () => { .then(() => { return arrayList.sizePromise(); }) - .then((size) => { + .then((size: number) => { expect(size).toBe(2); resolve(); }); diff --git a/testAsyncOptions/default.test.js b/testAsyncOptions/default.test.ts similarity index 84% rename from testAsyncOptions/default.test.js rename to testAsyncOptions/default.test.ts index b322e44..ab7766d 100644 --- a/testAsyncOptions/default.test.js +++ b/testAsyncOptions/default.test.ts @@ -1,10 +1,21 @@ // In the default case, the developer does not set asyncOptions. // We should get the defacto standard behavior. -import { describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; +import { afterAll, beforeAll, describe, expect, test } from "vitest"; +import { Java } from "../java"; +import { getJava } from "../testHelpers"; describe("default", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava(null); + }); + + afterAll(() => { + java.stop(); + }); + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeTruthy(); @@ -54,13 +65,13 @@ describe("default", () => { }); test("asyncCalls", async () => { - await new Promise((resolve) => { + await new Promise((resolve) => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - arrayList.add("hello", function (err) { + arrayList.add("hello", (err: Error | undefined) => { expect(err).toBeFalsy(); - arrayList.add("world", function (err) { + arrayList.add("world", (err: Error | undefined) => { expect(err).toBeFalsy(); - arrayList.size(function (err, size) { + arrayList.size((err: Error | undefined, size: number | undefined) => { expect(err).toBeFalsy(); expect(size).toBe(2); resolve(); diff --git a/testAsyncOptions/invalidLaunch.test.js b/testAsyncOptions/invalidLaunch.test.js deleted file mode 100644 index 10b4f7b..0000000 --- a/testAsyncOptions/invalidLaunch.test.js +++ /dev/null @@ -1,55 +0,0 @@ -import { describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; - -describe("invalidLaunch", () => { - test("failedLaunch", () => { - expect(java.isJvmCreated()).toBeFalsy(); - - java.asyncOptions = { - syncSuffix: "Sync", - asyncSuffix: "", - }; - - // First show that if asyncOptions.promisify is undefined, using the promise variant of ensureJvm throws an error. - expect(() => { - java.ensureJvm(); - }).toThrow(/requires its one argument to be a callback function/); - - expect(java.isJvmCreated()).toBeFalsy(); - }); - - test("callbackNotAFunction", () => { - expect(java.isJvmCreated()).toBeFalsy(); - - java.asyncOptions = { - syncSuffix: "", - promiseSuffix: "P", - promisify: require("when/node").lift, // https://github.com/cujojs/when - }; - - expect(() => { - java.ensureJvm("foo"); - }).toThrow(/requires its one argument to be a callback function/); - - expect(java.isJvmCreated()).toBeFalsy(); - }); - - test("jvmCanStillBeLaunched", async () => { - // None of the previous tests should have caused the JVM to be created, so it should still be possible to create one. - - expect(java.isJvmCreated()).toBeFalsy(); - - java.asyncOptions = { - syncSuffix: "", - promiseSuffix: "P", - promisify: require("when/node").lift, // https://github.com/cujojs/when - }; - - await new Promise((resolve) => { - java.ensureJvm().done(function () { - expect(java.isJvmCreated()).toBeTruthy(); - resolve(); - }); - }); - }); -}); diff --git a/testAsyncOptions/invalidLaunch.test.ts b/testAsyncOptions/invalidLaunch.test.ts new file mode 100644 index 0000000..7de9f02 --- /dev/null +++ b/testAsyncOptions/invalidLaunch.test.ts @@ -0,0 +1,67 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +describe("invalidLaunch", () => { + test("calling ensureJvm as a promise when no promisify function supplied", async () => { + await getJava( + { + syncSuffix: "Sync", + asyncSuffix: "", + }, + { + beforeInit: (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + // First show that if asyncOptions.promisify is undefined, using the promise variant of ensureJvm throws an error. + expect(() => { + void java.ensureJvm(); + }).toThrow(/requires its one argument to be a callback function/); + + expect(java.isJvmCreated()).toBeFalsy(); + }, + } + ); + }); + + test("callbackNotAFunction", async () => { + await getJava( + { + syncSuffix: "", + promiseSuffix: "P", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when + }, + { + beforeInit: (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + expect(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (java as any).ensureJvm("foo"); + }).toThrow(/requires its one argument to be a callback function/); + + expect(java.isJvmCreated()).toBeFalsy(); + }, + } + ); + }); + + test("jvmCanStillBeLaunched", async () => { + await getJava( + { + syncSuffix: "", + promiseSuffix: "P", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when + }, + { + beforeInit: async (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + + await java.ensureJvm(); + expect(java.isJvmCreated()).toBeTruthy(); + }, + } + ); + }); +}); diff --git a/testAsyncOptions/noAsync.test.js b/testAsyncOptions/noAsync.test.ts similarity index 72% rename from testAsyncOptions/noAsync.test.js rename to testAsyncOptions/noAsync.test.ts index 2af3f84..c4d434f 100644 --- a/testAsyncOptions/noAsync.test.js +++ b/testAsyncOptions/noAsync.test.ts @@ -1,46 +1,47 @@ // Just Sync and Promise, both with a non-empty suffix. import { beforeAll, describe, expect, test } from "vitest"; -import when from "when"; -import { java } from "../testHelpers"; +import { Java } from "../java"; +import { getJava } from "../testHelpers"; describe("noAsync", () => { + let java!: Java; + beforeAll(async () => { - const api = Object.keys(java).filter((key) => typeof java[key] === "function"); - expect(api.includes("isJvmCreated"), "Expected `isJvmCreated` to be present, but it is NOT.").toBeTruthy(); - expect(java.isJvmCreated()).toBeFalsy(); + java = await getJava( + { + syncSuffix: "Sync", + promiseSuffix: "Promise", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, + }, + { + beforeInit: (java) => { + expect(java.isJvmCreated()).toBeFalsy(); - function before() { - const promise = when.promise(function (resolve) { - expect(java.isJvmCreated()).toBeFalsy(); - resolve(); - }); - return promise; - } + function beforeP(): Promise { + return new Promise((resolve) => { + expect(java.isJvmCreated()).toBeFalsy(); + resolve(); + }); + } - function after() { - const promise = when.promise(function (resolve) { - expect(java.isJvmCreated()).toBeTruthy(); - resolve(); - }); - return promise; - } + function afterP(): Promise { + return new Promise((resolve) => { + expect(java.isJvmCreated()).toBeTruthy(); + resolve(); + }); + } - java.asyncOptions = { - syncSuffix: "Sync", - promiseSuffix: "Promise", - promisify: require("when/node").lift, - }; - java.registerClientP(before, after); - java.registerClientP(null, after); - java.registerClientP(before); + java.registerClientP(beforeP, afterP); + java.registerClientP(null, afterP); + java.registerClientP(beforeP); + }, + } + ); - await new Promise((resolve) => { - java.ensureJvm().done(function () { - expect(java.isJvmCreated()).toBeTruthy(); - resolve(); - }); - }); + await java.ensureJvm(); + expect(java.isJvmCreated()).toBeTruthy(); }); test("api", () => { @@ -94,7 +95,7 @@ describe("noAsync", () => { test("promiseCalls", async () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - await new Promise((resolve) => { + await new Promise((resolve) => { arrayList .addPromise("hello") .then(() => { @@ -103,7 +104,7 @@ describe("noAsync", () => { .then(() => { return arrayList.sizePromise(); }) - .then((size) => { + .then((size: number) => { expect(size).toBe(2); resolve(); }); diff --git a/testAsyncOptions/syncDefaultPlusPromise.test.js b/testAsyncOptions/syncDefaultPlusPromise.test.ts similarity index 86% rename from testAsyncOptions/syncDefaultPlusPromise.test.js rename to testAsyncOptions/syncDefaultPlusPromise.test.ts index 7fe9403..5a4d222 100644 --- a/testAsyncOptions/syncDefaultPlusPromise.test.js +++ b/testAsyncOptions/syncDefaultPlusPromise.test.ts @@ -1,16 +1,22 @@ // Just Sync and Promise, with Sync the default (i.e. no suffix). // This is the configuration that RedSeal wants for use with Tinkerpop/Gremlin. -import { describe, expect, test } from "vitest"; +import { beforeAll, describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; - -const java = getJava({ - syncSuffix: "", - promiseSuffix: "P", - promisify: require("when/node").lift, // https://github.com/cujojs/when -}); +import { Java } from "../java"; describe("syncDefaultPlusPromise", () => { + let java!: Java; + + beforeAll(async () => { + java = await getJava({ + syncSuffix: "", + promiseSuffix: "P", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when + }); + }); + test("api", () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); expect(arrayList).toBeTruthy(); @@ -60,7 +66,7 @@ describe("syncDefaultPlusPromise", () => { test("promiseCalls", async () => { const arrayList = java.newInstanceSync("java.util.ArrayList"); - await new Promise((resolve) => { + await new Promise((resolve) => { arrayList .addP("hello") .then(() => { @@ -69,7 +75,7 @@ describe("syncDefaultPlusPromise", () => { .then(() => { return arrayList.sizeP(); }) - .then((size) => { + .then((size: number) => { expect(size).toBe(2); resolve(); }); diff --git a/testAsyncOptions/unusableMethodName.test.js b/testAsyncOptions/unusableMethodName.test.ts similarity index 71% rename from testAsyncOptions/unusableMethodName.test.js rename to testAsyncOptions/unusableMethodName.test.ts index e1670e4..66232ba 100644 --- a/testAsyncOptions/unusableMethodName.test.js +++ b/testAsyncOptions/unusableMethodName.test.ts @@ -6,30 +6,39 @@ // As a workaround, node-java will append the `ifReadOnlySuffix` to the property name. import { beforeAll, describe, expect, test } from "vitest"; -import { java } from "../testHelpers"; +import { getJava } from "../testHelpers"; +import { Java } from "../java"; describe("unusableMethodName", () => { - beforeAll(async () => { - await new Promise((resolve) => { - function before(callback) { - java.classpath.push("test/"); - expect(java.isJvmCreated()).toBeFalsy(); - callback(); - } - - function after(callback) { - expect(java.isJvmCreated()).toBeTruthy(); - callback(); - } + let java!: Java; - java.asyncOptions = { + beforeAll(async () => { + java = await getJava( + { syncSuffix: "Sync", asyncSuffix: "", ifReadOnlySuffix: "_alt", - }; - java.registerClient(before, after); + }, + { + beforeInit: (java) => { + function before(callback: () => void): void { + java.classpath.push("test/"); + expect(java.isJvmCreated()).toBeFalsy(); + callback(); + } + + function after(callback: () => void): void { + expect(java.isJvmCreated()).toBeTruthy(); + callback(); + } + + java.registerClient(before, after); + }, + } + ); - java.ensureJvm(function (err) { + await new Promise((resolve) => { + java.ensureJvm(function (err: Error | undefined) { expect(err).toBeFalsy(); expect(java.isJvmCreated()).toBeTruthy(); resolve(); @@ -41,7 +50,7 @@ describe("unusableMethodName", () => { const Test = java.import("Test"); expect(Test).toBeTruthy(); expect(() => { - Test.name(function (_err) { + Test.name((_err: Error | undefined) => { throw new Error("should not get here"); }); }).toThrowError(TypeError); @@ -51,7 +60,7 @@ describe("unusableMethodName", () => { const Test = java.import("Test"); expect(Test).toBeTruthy(); expect(() => { - Test.caller(function (_err) { + Test.caller((_err: Error | undefined) => { throw new Error("should not get here"); }); }).toThrowError(TypeError); @@ -61,7 +70,7 @@ describe("unusableMethodName", () => { const Test = java.import("Test"); expect(Test).toBeTruthy(); expect(() => { - Test.arguments(function (_err) { + Test.arguments((_err: Error | undefined) => { throw new Error("should not get here"); }); }).toThrowError(TypeError); @@ -70,8 +79,8 @@ describe("unusableMethodName", () => { test("alternateMethodName_name_altWorks", async () => { const Test = java.import("Test"); expect(Test).toBeTruthy(); - await new Promise((resolve) => { - Test.name_alt(function (err, val) { + await new Promise((resolve) => { + Test.name_alt((err: Error | undefined, val: string | undefined) => { expect(err).toBeFalsy(); expect(val).toBe("name"); resolve(); @@ -82,8 +91,8 @@ describe("unusableMethodName", () => { test("alternateMethodName_caller_altWorks", async () => { const Test = java.import("Test"); expect(Test).toBeTruthy(); - await new Promise((resolve) => { - Test.caller_alt(function (err, val) { + await new Promise((resolve) => { + Test.caller_alt((err: Error | undefined, val: string | undefined) => { expect(err).toBeFalsy(); expect(val).toBe("caller"); resolve(); @@ -94,8 +103,8 @@ describe("unusableMethodName", () => { test("alternateMethodName_arguments_altWorks", async () => { const Test = java.import("Test"); expect(Test).toBeTruthy(); - await new Promise((resolve) => { - Test.arguments_alt(function (err, val) { + await new Promise((resolve) => { + Test.arguments_alt((err: Error | undefined, val: string | undefined) => { expect(err).toBeFalsy(); expect(val).toBe("arguments"); resolve(); diff --git a/testHelpers.js b/testHelpers.js deleted file mode 100644 index 6bf0561..0000000 --- a/testHelpers.js +++ /dev/null @@ -1,20 +0,0 @@ -export const java = require("./"); -java.options.push("-Djava.awt.headless=true"); -//java.options.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005'); - -java.classpath.push("test/"); -java.classpath.push("test/commons-lang3-3.1.jar"); - -export function getJava(asyncOptions) { - java.asyncOptions = asyncOptions ?? { - syncSuffix: "Sync", - asyncSuffix: "", - promiseSuffix: "Promise", - promisify: require("when/node").lift, // https://github.com/cujojs/when - }; - - // force initialization - java.import("java.util.ArrayList"); - - return java; -} diff --git a/testHelpers.ts b/testHelpers.ts new file mode 100644 index 0000000..8af6b8a --- /dev/null +++ b/testHelpers.ts @@ -0,0 +1,46 @@ +import { AsyncOptions, Java, JavaError } from "./java"; +import findRoot from "find-root"; + +const root = findRoot(__dirname); +let java: Promise | undefined; + +export interface GetJavaOptions { + beforeInit?: (java: Java) => void | Promise; +} + +export async function getJava(asyncOptions?: AsyncOptions | null, options?: GetJavaOptions): Promise { + if (java) { + return java; + } + java = _getJava(asyncOptions, options); + return java; +} + +async function _getJava(asyncOptions?: AsyncOptions | null, options?: GetJavaOptions): Promise { + const java = (await import(root)).default as Java; + + java.options.push("-Djava.awt.headless=true"); + //java.options.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005'); + + java.classpath.push("test/"); + java.classpath.push("test/commons-lang3-3.1.jar"); + + if (asyncOptions !== null) { + java.asyncOptions = asyncOptions ?? { + syncSuffix: "Sync", + asyncSuffix: "", + promiseSuffix: "Promise", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when + }; + } + + await options?.beforeInit?.(java); + + // force initialization + java.import("java.util.ArrayList"); + + return java; +} + +export function expectJavaError(error: unknown): asserts error is JavaError {} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..03b86b5 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,113 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "libReplacement": true, /* Enable lib replacement. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "rewriteRelativeImportExtensions": true, /* Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "noUncheckedSideEffectImports": true, /* Check side effect imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./build/ts", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ + // "erasableSyntaxOnly": true, /* Do not allow runtime constructs that are not part of ECMAScript. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From d4b66aafdf10309556c8f5c7e48566bae1e0930d Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Mon, 26 May 2025 14:26:04 +0000 Subject: [PATCH 38/47] remove asyncOptions.promisify and always use utils.promisify --- README.md | 8 +----- java.d.ts | 20 ++++---------- package-lock.json | 17 +----------- package.json | 4 +-- src-cpp/java.cpp | 7 ----- src-cpp/javaObject.cpp | 10 +++---- src-node/nodeJavaBridge.js | 27 +++++++------------ testAsyncOptions/allThreeSuffix.test.ts | 2 -- testAsyncOptions/clientPBeforeError.test.ts | 2 -- testAsyncOptions/clientPBeforeThrows.test.ts | 2 -- testAsyncOptions/defactoPlusPromise.test.ts | 2 -- testAsyncOptions/ensureJvmPromise.test.ts | 20 ++++++++++++++ testAsyncOptions/invalidLaunch.test.ts | 25 ----------------- testAsyncOptions/noAsync.test.ts | 2 -- .../syncDefaultPlusPromise.test.ts | 2 -- testHelpers.ts | 2 -- 16 files changed, 41 insertions(+), 111 deletions(-) create mode 100644 testAsyncOptions/ensureJvmPromise.test.ts diff --git a/README.md b/README.md index 87ce6af..2969aa8 100644 --- a/README.md +++ b/README.md @@ -242,7 +242,6 @@ java.asyncOptions = { asyncSuffix: undefined, // Don't generate node-style methods taking callbacks syncSuffix: "", // Sync methods use the base name(!!) promiseSuffix: "Promise", // Generate methods returning promises, using the suffix Promise. - promisify: require('util').promisify // Needs Node.js version 8 or greater, see comment below }; java.classpath.push("commons-lang3-3.1.jar"); java.classpath.push("commons-io.jar"); @@ -259,15 +258,12 @@ java.newInstancePromise("java.util.ArrayList") * If you want the defacto standard behavior, simply don't set java.asyncOptions. * If you do provide asyncOptions, be aware that this module will not generate method variants of a given flavor if you don't provide a string value for the corresponding suffix (`asyncSuffix`, `syncSuffix`, `promiseSuffix`). In the example above, the application is configured to omit the method variants using node-style async callback functions. -* If you provide `asyncOptions.promiseSuffix` then you must also set `asyncOptions.promisify` to a function that *promisifies* a node-style async function. I.e. the provided function must take as input a function whose last argument is a node callback function, and it must return an equivalent promise-returning function. Several Promises/A+ libraries provide such functions, but it may be necessary to provide a wrapper function. See `testHelpers.js` for an example. -* For `promisify` implementation, if you are using Node.js version 8.0.0 or newer then `promisify: require('util').promisify` will work out of the box. If you need to support and older Node.js version then an implementation needs to be provided, for example, `promisify: require("when/node").lift` -* If you provide `asyncOptions.promisify` then you must provide a *non-empty* string for `asyncOptions.promiseSuffix`. * Either (but not both) `asyncSuffix` or `syncSuffix` can be the empty string. If you want the defacto standard behavior for no suffix on async methods, you must provide an empty string for `asyncSuffix`. * We've tested promises with five Promises/A+ implementations. See `testHelpers.js` for more information. * NOTE: Due to specifics of initialization order, the methods `java.newInstancePromise`, `java.callMethodPromise`, and `java.callStaticMethodPromise` are not available until the JVM has been created. You may need to call some other java method such as `java.import()` to finalize java initialization, or even better, the function `java.ensureJvm()`. ##### Special note about the exported module functions `newInstance`, `callMethod`, and `callStaticMethod`. -These methods come in both async and sync variants. If you provide the `promisify` and `promiseSuffix` attributes in asyncOptions then you'll also get the Promises/A+ variant for these three functions. However, if you change the defacto conventions for the `syncSuffix` (i.e. 'Sync') and/or `asyncSuffix` (i.e. '') it will not affect the naming for these three functions. I.e. no matter what you specify in asyncOptions, the async variants are named `newInstance`, `callMethod`, and `callStaticMethod`, and the sync variants are named `newInstanceSync`, `callMethodSync`, and `callStaticMethodSync`. +These methods come in both async and sync variants. If you provide the `promiseSuffix` attributes in asyncOptions then you'll also get the Promises/A+ variant for these three functions. However, if you change the defacto conventions for the `syncSuffix` (i.e. 'Sync') and/or `asyncSuffix` (i.e. '') it will not affect the naming for these three functions. I.e. no matter what you specify in asyncOptions, the async variants are named `newInstance`, `callMethod`, and `callStaticMethod`, and the sync variants are named `newInstanceSync`, `callMethodSync`, and `callStaticMethodSync`. ## Varargs support @@ -375,7 +371,6 @@ java.asyncOptions = { asyncSuffix: undefined, // Don't generate node-style methods taking callbacks syncSuffix: "", // Sync methods use the base name(!!) promiseSuffix: "Promise", // Generate methods returning promises, using the suffix Promise. - promisify: require('util').promisify // Needs Node.js version 8 or greater, see comment below ifReadOnlySuffix: "_alt" }; ``` @@ -383,7 +378,6 @@ java.asyncOptions = { * `asyncSuffix` Suffix for callback-based async method call signatures. * `syncSuffix` Suffix for synchronous method call signatures. * `promiseSuffix` Suffix for promise-based async method call signatures - * `promisify` Callback-to-promise transform implementation. From Node.js version 8 one can just use Node.js implementation: `promisify: require('util').promisify`. * `ifReadOnlySuffix` See [Static Member Name Conflicts](#staticMemberNameConflicts). See [Async Options](#asyncOptionsDetails) for details. diff --git a/java.d.ts b/java.d.ts index 7990efd..9395479 100644 --- a/java.d.ts +++ b/java.d.ts @@ -16,16 +16,12 @@ declare namespace NodeJavaCore { (err?: JavaError, result?: T): void; } - interface Promisify { - (fn: Function, receiver?: any): Function; - } - interface AsyncOptions { /** * Suffix for synchronous method call signatures. */ syncSuffix: string; - + /** * Suffix for callback-based async method call signatures. */ @@ -36,12 +32,6 @@ declare namespace NodeJavaCore { */ promiseSuffix?: string | undefined; - /** - * Callback-to-promise transform implementation. From Node.js version 8 one can - * just use Node.js implementation: `promisify: require('util').promisify`. - */ - promisify?: Promisify | undefined; - /** * The JavaScript object returned by `java.import(classname)` is a JavaScript constructor * Function, implemented such that you can create instances of the Java class. For example: @@ -56,9 +46,9 @@ declare namespace NodeJavaCore { interface Java { /** * Array of paths or jars to pass to the creation of the JVM. - * + * * All items must be added to the classpath before calling any other node-java methods. - * + * * @example * java.classpath.push('commons.io.jar'); * java.classpath.push('src'); @@ -67,9 +57,9 @@ declare namespace NodeJavaCore { /** * Array of options to pass to the creation of the JVM. - * + * * All items must be added to the options before calling any other node-java methods. - * + * * @example * java.options.push('-Djava.awt.headless=true'); * java.options.push('-Xmx1024m'); diff --git a/package-lock.json b/package-lock.json index 72fd77c..77f06e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,6 @@ "@eslint/js": "^9.27.0", "@types/find-root": "^1.1.4", "@types/node": "^22.15.21", - "@types/when": "^2.4.41", "chalk": "2.4.2", "eslint": "^9.27.0", "find-root": "^1.1.0", @@ -27,8 +26,7 @@ "prettier": "^3.5.3", "typescript": "^5.8.3", "typescript-eslint": "^8.32.1", - "vitest": "^3.1.3", - "when": "3.7.8" + "vitest": "^3.1.3" }, "engines": { "node": ">=7.0.0" @@ -1175,13 +1173,6 @@ "undici-types": "~6.21.0" } }, - "node_modules/@types/when": { - "version": "2.4.41", - "resolved": "https://registry.npmjs.org/@types/when/-/when-2.4.41.tgz", - "integrity": "sha512-o/j5X9Bnv6mMG4ZcNJur8UaU17Rl0mLbTZvWcODVVy+Xdh8LEc7s6I0CvbEuTP786LTa0OyJby5P4hI7C+ZJNg==", - "dev": true, - "license": "MIT" - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.32.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", @@ -4159,12 +4150,6 @@ } } }, - "node_modules/when": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", - "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", - "dev": true - }, "node_modules/which": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", diff --git a/package.json b/package.json index c5c633e..3515871 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "@eslint/js": "^9.27.0", "@types/find-root": "^1.1.4", "@types/node": "^22.15.21", - "@types/when": "^2.4.41", "chalk": "2.4.2", "eslint": "^9.27.0", "find-root": "^1.1.0", @@ -43,8 +42,7 @@ "prettier": "^3.5.3", "typescript": "^5.8.3", "typescript-eslint": "^8.32.1", - "vitest": "^3.1.3", - "when": "3.7.8" + "vitest": "^3.1.3" }, "scripts": { "install": "node-gyp rebuild", diff --git a/src-cpp/java.cpp b/src-cpp/java.cpp index 17743cc..e124b4d 100644 --- a/src-cpp/java.cpp +++ b/src-cpp/java.cpp @@ -190,13 +190,6 @@ void Java::configureAsync(v8::Local &asyncOptions) { v8::Local suffix = suffixValue->ToString(Nan::GetCurrentContext()).ToLocalChecked(); Nan::Utf8String utf8(suffix); m_PromiseSuffix.assign(*utf8); - v8::MaybeLocal maybePromisify = - Nan::Get(asyncOptionsObj, Nan::New("promisify").ToLocalChecked()); - v8::Local promisify; - if (maybePromisify.ToLocal(&promisify) && !promisify->IsFunction()) { - fprintf(stderr, "asyncOptions.promisify must be a function"); - assert(promisify->IsFunction()); - } doPromise = true; } diff --git a/src-cpp/javaObject.cpp b/src-cpp/javaObject.cpp index d938426..8c8d33b 100644 --- a/src-cpp/javaObject.cpp +++ b/src-cpp/javaObject.cpp @@ -28,13 +28,9 @@ v8::Local promisify; if (java->DoPromise()) { - v8::Local asyncOptions = - java->handle() - ->Get(Nan::GetCurrentContext(), Nan::New("asyncOptions").ToLocalChecked()) - .ToLocalChecked() - .As(); v8::Local promisifyValue = - asyncOptions->Get(Nan::GetCurrentContext(), Nan::New("promisify").ToLocalChecked()) + java->handle() + ->Get(Nan::GetCurrentContext(), Nan::New("promisify").ToLocalChecked()) .ToLocalChecked(); promisify = promisifyValue.As(); } @@ -78,7 +74,7 @@ v8::Local argv[] = {methodCallTemplate->GetFunction(Nan::GetCurrentContext()).ToLocalChecked()}; v8::Local result = Nan::Call(promisify, recv, 1, argv).FromMaybe(v8::Local()); if (!result->IsFunction()) { - fprintf(stderr, "Promisified result is not a function -- asyncOptions.promisify must return a function.\n"); + fprintf(stderr, "Promisified result is not a function.\n"); assert(result->IsFunction()); } v8::Local promFunction = result.As(); diff --git a/src-node/nodeJavaBridge.js b/src-node/nodeJavaBridge.js index ecfbbef..01f3997 100644 --- a/src-node/nodeJavaBridge.js +++ b/src-node/nodeJavaBridge.js @@ -4,6 +4,8 @@ process.env.PATH += require("../build/jvm_dll_path.json"); const path = require("path"); const fs = require("fs"); +const util = require("util"); + let binaryPath = null; try { if (fs.statSync && fs.statSync(path.join(__dirname, "../build/Debug/nodejavabridge_bindings.node")).isFile()) { @@ -19,6 +21,7 @@ if (!binaryPath) { const bindings = require(binaryPath); const java = (module.exports = new bindings.Java()); +java.promisify = util.promisify; java.classpath.push(path.resolve(__dirname, "../src-java/commons-lang3-node-java.jar")); java.classpath.push(path.resolve(__dirname, __dirname, "../src-java")); java.classpath.pushDir = function (dir) { @@ -146,18 +149,15 @@ async function initializeAll() { // This function ensures that the JVM has been launched, asynchronously. The application can be notified // when the JVM is fully created via either a node callback function, or via a promise. // If the parameter `callback` is provided, it is assume be a node callback function. -// If the parameter is not provided, and java.asyncOptions.promisify has been specified, -// then this function will return a promise, by promisifying itself and then calling that -// promisified function. // This function may be called multiple times -- the 2nd and subsequent calls are no-ops. // However, once this method has been called (or the JVM is launched as a side effect of calling other java // methods), then clients can no longer use the registerClient API. java.ensureJvm = function (callback) { // First see if the promise-style API should be used. // This must be done first in order to ensure the proper API is used. - if (typeof callback === "undefined" && java.asyncOptions && typeof java.asyncOptions.promisify === "function") { + if (typeof callback === "undefined") { // Create a promisified version of this function. - const launchJvmPromise = java.asyncOptions.promisify(java.ensureJvm.bind(java)); + const launchJvmPromise = util.promisify(java.ensureJvm.bind(java)); // Call the promisified function, returning its result, which should be a promise. return launchJvmPromise(); } @@ -194,16 +194,11 @@ java.onJvmCreated = function () { throw new Error("In asyncOptions, syncSuffix must be defined and must a string"); } const promiseSuffix = java.asyncOptions.promiseSuffix; - const promisify = java.asyncOptions.promisify; - if (typeof promiseSuffix === "string" && typeof promisify === "function") { + if (typeof promiseSuffix === "string") { const methods = ["newInstance", "callMethod", "callStaticMethod"]; methods.forEach(function (name) { - java[name + promiseSuffix] = promisify(java[name]); + java[name + promiseSuffix] = util.promisify(java[name]); }); - } else if (typeof promiseSuffix === "undefined" && typeof promisify === "undefined") { - // no promises - } else { - throw new Error("In asyncOptions, if either promiseSuffix or promisify is defined, both most be."); } if (typeof java.asyncOptions.ifReadOnlySuffix === "string" && java.asyncOptions.ifReadOnlySuffix !== "") { @@ -273,10 +268,8 @@ java.import = function (name) { } } - let promisify = undefined; let promiseSuffix; - if (java.asyncOptions && java.asyncOptions.promisify) { - promisify = java.asyncOptions.promisify; + if (java.asyncOptions) { promiseSuffix = java.asyncOptions.promiseSuffix; } @@ -297,9 +290,9 @@ java.import = function (name) { result[asyncName] = callStaticMethod.bind(java, name, methodName); } - if (promisify && typeof promiseSuffix === "string") { + if (typeof promiseSuffix === "string") { const promiseName = usableName(methodName + promiseSuffix); - result[promiseName] = promisify(callStaticMethod.bind(java, name, methodName)); + result[promiseName] = util.promisify(callStaticMethod.bind(java, name, methodName)); } } } diff --git a/testAsyncOptions/allThreeSuffix.test.ts b/testAsyncOptions/allThreeSuffix.test.ts index 5765076..72ebe81 100644 --- a/testAsyncOptions/allThreeSuffix.test.ts +++ b/testAsyncOptions/allThreeSuffix.test.ts @@ -12,8 +12,6 @@ describe("allThreeSuffix", () => { syncSuffix: "Sync", asyncSuffix: "Async", promiseSuffix: "Promise", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when }); }); diff --git a/testAsyncOptions/clientPBeforeError.test.ts b/testAsyncOptions/clientPBeforeError.test.ts index cd6077f..0d8e498 100644 --- a/testAsyncOptions/clientPBeforeError.test.ts +++ b/testAsyncOptions/clientPBeforeError.test.ts @@ -7,8 +7,6 @@ describe("clientPBeforeError", () => { { syncSuffix: "Sync", promiseSuffix: "Promise", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when }, { beforeInit: async (java) => { diff --git a/testAsyncOptions/clientPBeforeThrows.test.ts b/testAsyncOptions/clientPBeforeThrows.test.ts index 901a65d..cb7d725 100644 --- a/testAsyncOptions/clientPBeforeThrows.test.ts +++ b/testAsyncOptions/clientPBeforeThrows.test.ts @@ -7,8 +7,6 @@ describe("clientPBeforeThrows", () => { { syncSuffix: "Sync", promiseSuffix: "Promise", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when }, { beforeInit: async (java) => { diff --git a/testAsyncOptions/defactoPlusPromise.test.ts b/testAsyncOptions/defactoPlusPromise.test.ts index 3149f5a..d41a4b2 100644 --- a/testAsyncOptions/defactoPlusPromise.test.ts +++ b/testAsyncOptions/defactoPlusPromise.test.ts @@ -13,8 +13,6 @@ describe("defactoPlusPromise", () => { syncSuffix: "Sync", asyncSuffix: "", promiseSuffix: "Promise", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when }, { beforeInit: (java) => { diff --git a/testAsyncOptions/ensureJvmPromise.test.ts b/testAsyncOptions/ensureJvmPromise.test.ts new file mode 100644 index 0000000..6e56a71 --- /dev/null +++ b/testAsyncOptions/ensureJvmPromise.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, test } from "vitest"; +import { getJava } from "../testHelpers"; + +describe("ensureJvmPromise", () => { + test("calling ensureJvm as a promise", async () => { + await getJava( + { + syncSuffix: "Sync", + asyncSuffix: "", + }, + { + beforeInit: async (java) => { + expect(java.isJvmCreated()).toBeFalsy(); + await java.ensureJvm(); + expect(java.isJvmCreated()).toBeTruthy(); + }, + } + ); + }); +}); diff --git a/testAsyncOptions/invalidLaunch.test.ts b/testAsyncOptions/invalidLaunch.test.ts index 7de9f02..53fefb7 100644 --- a/testAsyncOptions/invalidLaunch.test.ts +++ b/testAsyncOptions/invalidLaunch.test.ts @@ -2,34 +2,11 @@ import { describe, expect, test } from "vitest"; import { getJava } from "../testHelpers"; describe("invalidLaunch", () => { - test("calling ensureJvm as a promise when no promisify function supplied", async () => { - await getJava( - { - syncSuffix: "Sync", - asyncSuffix: "", - }, - { - beforeInit: (java) => { - expect(java.isJvmCreated()).toBeFalsy(); - - // First show that if asyncOptions.promisify is undefined, using the promise variant of ensureJvm throws an error. - expect(() => { - void java.ensureJvm(); - }).toThrow(/requires its one argument to be a callback function/); - - expect(java.isJvmCreated()).toBeFalsy(); - }, - } - ); - }); - test("callbackNotAFunction", async () => { await getJava( { syncSuffix: "", promiseSuffix: "P", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when }, { beforeInit: (java) => { @@ -51,8 +28,6 @@ describe("invalidLaunch", () => { { syncSuffix: "", promiseSuffix: "P", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when }, { beforeInit: async (java) => { diff --git a/testAsyncOptions/noAsync.test.ts b/testAsyncOptions/noAsync.test.ts index c4d434f..d3b16e2 100644 --- a/testAsyncOptions/noAsync.test.ts +++ b/testAsyncOptions/noAsync.test.ts @@ -12,8 +12,6 @@ describe("noAsync", () => { { syncSuffix: "Sync", promiseSuffix: "Promise", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, }, { beforeInit: (java) => { diff --git a/testAsyncOptions/syncDefaultPlusPromise.test.ts b/testAsyncOptions/syncDefaultPlusPromise.test.ts index 5a4d222..21e214f 100644 --- a/testAsyncOptions/syncDefaultPlusPromise.test.ts +++ b/testAsyncOptions/syncDefaultPlusPromise.test.ts @@ -12,8 +12,6 @@ describe("syncDefaultPlusPromise", () => { java = await getJava({ syncSuffix: "", promiseSuffix: "P", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when }); }); diff --git a/testHelpers.ts b/testHelpers.ts index 8af6b8a..7e44ee6 100644 --- a/testHelpers.ts +++ b/testHelpers.ts @@ -30,8 +30,6 @@ async function _getJava(asyncOptions?: AsyncOptions | null, options?: GetJavaOpt syncSuffix: "Sync", asyncSuffix: "", promiseSuffix: "Promise", - // eslint-disable-next-line @typescript-eslint/no-explicit-any - promisify: ((await import("when/node")) as any).lift, // https://github.com/cujojs/when }; } From 82cb2ee3601b9d2e185467c5587ab7b12a6c8d12 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Mon, 26 May 2025 14:37:55 +0000 Subject: [PATCH 39/47] v0.16.0 --- package-lock.json | 6 +++--- package.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77f06e9..c2e4cd2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "java", - "version": "0.15.0", + "version": "0.16.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "java", - "version": "0.15.0", + "version": "0.16.0", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -29,7 +29,7 @@ "vitest": "^3.1.3" }, "engines": { - "node": ">=7.0.0" + "node": ">=8.0.0" } }, "node_modules/@esbuild/aix-ppc64": { diff --git a/package.json b/package.json index 3515871..c07bc7b 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "jvm", "bridge" ], - "version": "0.15.0", + "version": "0.16.0", "engines": { - "node": ">=7.0.0" + "node": ">=8.0.0" }, "maintainers": [ { From e27a64490f9741bc353d419c4c75c306d1bc6000 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Mon, 26 May 2025 14:43:19 +0000 Subject: [PATCH 40/47] update dependencies --- package-lock.json | 1213 ++++++++++++++++++++------------------------- package.json | 10 +- 2 files changed, 545 insertions(+), 678 deletions(-) diff --git a/package-lock.json b/package-lock.json index c2e4cd2..fa09f16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,22 +11,22 @@ "license": "MIT", "dependencies": { "find-java-home": "^2.0.0", - "glob": "^10.4.5", + "glob": "^11.0.2", "nan": "^2.22.2", - "node-gyp": "^10.3.1" + "node-gyp": "^11.2.0" }, "devDependencies": { "@eslint/js": "^9.27.0", "@types/find-root": "^1.1.4", "@types/node": "^22.15.21", - "chalk": "2.4.2", + "chalk": "^5.4.1", "eslint": "^9.27.0", "find-root": "^1.1.0", - "globals": "^16.1.0", + "globals": "^16.2.0", "prettier": "^3.5.3", "typescript": "^5.8.3", "typescript-eslint": "^8.32.1", - "vitest": "^3.1.3" + "vitest": "^3.1.4" }, "engines": { "node": ">=8.0.0" @@ -694,83 +694,16 @@ "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "minipass": "^7.0.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -819,9 +752,9 @@ } }, "node_modules/@npmcli/agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", - "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", + "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", "license": "ISC", "dependencies": { "agent-base": "^7.1.0", @@ -831,7 +764,7 @@ "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { @@ -841,15 +774,15 @@ "license": "ISC" }, "node_modules/@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", "license": "ISC", "dependencies": { "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@pkgjs/parseargs": { @@ -863,9 +796,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.0.tgz", - "integrity": "sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", + "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", "cpu": [ "arm" ], @@ -877,9 +810,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.0.tgz", - "integrity": "sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", + "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", "cpu": [ "arm64" ], @@ -891,9 +824,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.0.tgz", - "integrity": "sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", + "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", "cpu": [ "arm64" ], @@ -905,9 +838,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.0.tgz", - "integrity": "sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", + "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", "cpu": [ "x64" ], @@ -919,9 +852,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.0.tgz", - "integrity": "sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", + "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", "cpu": [ "arm64" ], @@ -933,9 +866,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.0.tgz", - "integrity": "sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", + "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", "cpu": [ "x64" ], @@ -947,9 +880,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.0.tgz", - "integrity": "sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", + "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", "cpu": [ "arm" ], @@ -961,9 +894,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.0.tgz", - "integrity": "sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", + "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", "cpu": [ "arm" ], @@ -975,9 +908,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.0.tgz", - "integrity": "sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", + "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", "cpu": [ "arm64" ], @@ -989,9 +922,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.0.tgz", - "integrity": "sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", + "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", "cpu": [ "arm64" ], @@ -1003,9 +936,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.0.tgz", - "integrity": "sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", + "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", "cpu": [ "loong64" ], @@ -1017,9 +950,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.0.tgz", - "integrity": "sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", + "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", "cpu": [ "ppc64" ], @@ -1031,9 +964,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.0.tgz", - "integrity": "sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", + "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", "cpu": [ "riscv64" ], @@ -1045,9 +978,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.0.tgz", - "integrity": "sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", + "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", "cpu": [ "riscv64" ], @@ -1059,9 +992,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.0.tgz", - "integrity": "sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", + "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", "cpu": [ "s390x" ], @@ -1073,9 +1006,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.0.tgz", - "integrity": "sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", + "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", "cpu": [ "x64" ], @@ -1087,9 +1020,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.0.tgz", - "integrity": "sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", + "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", "cpu": [ "x64" ], @@ -1101,9 +1034,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.0.tgz", - "integrity": "sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", + "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", "cpu": [ "arm64" ], @@ -1115,9 +1048,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.0.tgz", - "integrity": "sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", + "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", "cpu": [ "ia32" ], @@ -1129,9 +1062,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.0.tgz", - "integrity": "sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", + "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", "cpu": [ "x64" ], @@ -1390,14 +1323,14 @@ } }, "node_modules/@vitest/expect": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz", - "integrity": "sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.4.tgz", + "integrity": "sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.1.3", - "@vitest/utils": "3.1.3", + "@vitest/spy": "3.1.4", + "@vitest/utils": "3.1.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -1406,13 +1339,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.3.tgz", - "integrity": "sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.4.tgz", + "integrity": "sha512-8IJ3CvwtSw/EFXqWFL8aCMu+YyYXG2WUSrQbViOZkWTKTVicVwZ/YiEZDSqD00kX+v/+W+OnxhNWoeVKorHygA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.1.3", + "@vitest/spy": "3.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1433,9 +1366,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz", - "integrity": "sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.4.tgz", + "integrity": "sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==", "dev": true, "license": "MIT", "dependencies": { @@ -1446,13 +1379,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.3.tgz", - "integrity": "sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.4.tgz", + "integrity": "sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.1.3", + "@vitest/utils": "3.1.4", "pathe": "^2.0.3" }, "funding": { @@ -1460,13 +1393,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.3.tgz", - "integrity": "sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.4.tgz", + "integrity": "sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.1.3", + "@vitest/pretty-format": "3.1.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1475,9 +1408,9 @@ } }, "node_modules/@vitest/spy": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.3.tgz", - "integrity": "sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.4.tgz", + "integrity": "sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==", "dev": true, "license": "MIT", "dependencies": { @@ -1488,13 +1421,13 @@ } }, "node_modules/@vitest/utils": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz", - "integrity": "sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.4.tgz", + "integrity": "sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.1.3", + "@vitest/pretty-format": "3.1.4", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -1503,12 +1436,12 @@ } }, "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/acorn": { @@ -1543,19 +1476,6 @@ "node": ">= 14" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1574,25 +1494,27 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/argparse": { @@ -1652,12 +1574,12 @@ } }, "node_modules/cacache": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", - "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", + "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==", "license": "ISC", "dependencies": { - "@npmcli/fs": "^3.1.0", + "@npmcli/fs": "^4.0.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", @@ -1665,13 +1587,57 @@ "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/cacache/node_modules/lru-cache": { @@ -1680,13 +1646,35 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, - "node_modules/cacache/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/callsites": { @@ -1717,41 +1705,16 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/check-error": { @@ -1765,38 +1728,30 @@ } }, "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "license": "MIT", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=6" + "node": ">=18" } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/concat-map": { @@ -1875,6 +1830,12 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -2084,26 +2045,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/espree": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", @@ -2258,7 +2199,6 @@ "version": "6.4.4", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "dev": true, "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -2349,25 +2289,32 @@ "dev": true, "license": "ISC" }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "license": "ISC", "dependencies": { - "minipass": "^7.0.3" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/fsevents": { @@ -2386,21 +2333,24 @@ } }, "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz", + "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, + "engines": { + "node": "20 || >=22" + }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -2427,60 +2377,25 @@ "balanced-match": "^1.0.0" } }, - "node_modules/glob/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/glob/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.1.0.tgz", - "integrity": "sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", + "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", "dev": true, "license": "MIT", "engines": { @@ -2503,20 +2418,10 @@ "dev": true, "license": "MIT" }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { @@ -2593,15 +2498,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/ip-address": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", @@ -2615,18 +2511,6 @@ "node": ">= 12" } }, - "node_modules/ip-address/node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "license": "MIT" - }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "license": "BSD-3-Clause" - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2637,6 +2521,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2650,12 +2543,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "license": "MIT" - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2673,18 +2560,18 @@ "license": "ISC" }, "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, + "engines": { + "node": "20 || >=22" + }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/js-yaml": { @@ -2700,6 +2587,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -2775,6 +2668,15 @@ "dev": true, "license": "MIT" }, + "node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -2786,35 +2688,25 @@ } }, "node_modules/make-fetch-happen": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", - "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", + "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==", "license": "ISC", "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", + "minipass-fetch": "^4.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "proc-log": "^4.2.0", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "ssri": "^10.0.0" + "ssri": "^12.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/merge2": { @@ -2867,6 +2759,15 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/minipass-collect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", @@ -2879,41 +2780,23 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz", + "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==", "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "minizlib": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" }, "optionalDependencies": { "encoding": "^0.1.13" } }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -3005,36 +2888,32 @@ "license": "ISC" }, "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^7.1.2" }, "engines": { - "node": ">= 8" + "node": ">= 18" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -3074,36 +2953,36 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/node-gyp": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", - "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.2.0.tgz", + "integrity": "sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA==", "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^4.1.0", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "tar": "^6.2.1", - "which": "^4.0.0" + "tar": "^7.4.3", + "tinyglobby": "^0.2.12", + "which": "^5.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/node-gyp/node_modules/isexe": { @@ -3116,9 +2995,9 @@ } }, "node_modules/node-gyp/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "license": "ISC", "dependencies": { "isexe": "^3.1.1" @@ -3127,22 +3006,22 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/nopt": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", - "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", "license": "ISC", "dependencies": { - "abbrev": "^2.0.0" + "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/optionator": { @@ -3196,15 +3075,12 @@ } }, "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3248,36 +3124,21 @@ } }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -3306,7 +3167,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -3371,12 +3231,12 @@ } }, "node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", + "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/promise-retry": { @@ -3454,9 +3314,9 @@ } }, "node_modules/rollup": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz", - "integrity": "sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", "dev": true, "license": "MIT", "dependencies": { @@ -3470,26 +3330,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.0", - "@rollup/rollup-android-arm64": "4.41.0", - "@rollup/rollup-darwin-arm64": "4.41.0", - "@rollup/rollup-darwin-x64": "4.41.0", - "@rollup/rollup-freebsd-arm64": "4.41.0", - "@rollup/rollup-freebsd-x64": "4.41.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.0", - "@rollup/rollup-linux-arm-musleabihf": "4.41.0", - "@rollup/rollup-linux-arm64-gnu": "4.41.0", - "@rollup/rollup-linux-arm64-musl": "4.41.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-musl": "4.41.0", - "@rollup/rollup-linux-s390x-gnu": "4.41.0", - "@rollup/rollup-linux-x64-gnu": "4.41.0", - "@rollup/rollup-linux-x64-musl": "4.41.0", - "@rollup/rollup-win32-arm64-msvc": "4.41.0", - "@rollup/rollup-win32-ia32-msvc": "4.41.0", - "@rollup/rollup-win32-x64-msvc": "4.41.0", + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", "fsevents": "~2.3.2" } }, @@ -3521,6 +3381,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT", "optional": true }, "node_modules/semver": { @@ -3561,6 +3422,18 @@ "dev": true, "license": "ISC" }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -3609,25 +3482,22 @@ "node": ">=0.10.0" } }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, "node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz", + "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==", "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ssri/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/stackback": { @@ -3644,6 +3514,23 @@ "dev": true, "license": "MIT" }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", @@ -3659,21 +3546,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3686,6 +3573,21 @@ "node": ">=8" } }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", @@ -3699,6 +3601,15 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3736,73 +3647,22 @@ } }, "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", "license": "ISC", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -3821,7 +3681,6 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", - "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.4.4", @@ -3948,27 +3807,27 @@ "license": "MIT" }, "node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", + "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==", "license": "ISC", "dependencies": { - "unique-slug": "^4.0.0" + "unique-slug": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz", + "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==", "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/uri-js": { @@ -4057,9 +3916,9 @@ } }, "node_modules/vite-node": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.3.tgz", - "integrity": "sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.4.tgz", + "integrity": "sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==", "dev": true, "license": "MIT", "dependencies": { @@ -4080,19 +3939,19 @@ } }, "node_modules/vitest": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.3.tgz", - "integrity": "sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.4.tgz", + "integrity": "sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.1.3", - "@vitest/mocker": "3.1.3", - "@vitest/pretty-format": "^3.1.3", - "@vitest/runner": "3.1.3", - "@vitest/snapshot": "3.1.3", - "@vitest/spy": "3.1.3", - "@vitest/utils": "3.1.3", + "@vitest/expect": "3.1.4", + "@vitest/mocker": "3.1.4", + "@vitest/pretty-format": "^3.1.4", + "@vitest/runner": "3.1.4", + "@vitest/snapshot": "3.1.4", + "@vitest/spy": "3.1.4", + "@vitest/utils": "3.1.4", "chai": "^5.2.0", "debug": "^4.4.0", "expect-type": "^1.2.1", @@ -4105,7 +3964,7 @@ "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.1.3", + "vite-node": "3.1.4", "why-is-node-running": "^2.3.0" }, "bin": { @@ -4121,8 +3980,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.1.3", - "@vitest/ui": "3.1.3", + "@vitest/browser": "3.1.4", + "@vitest/ui": "3.1.4", "happy-dom": "*", "jsdom": "*" }, @@ -4190,6 +4049,23 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", @@ -4208,6 +4084,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4223,39 +4108,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4282,6 +4140,15 @@ "node": ">=8" } }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index c07bc7b..3137592 100644 --- a/package.json +++ b/package.json @@ -27,22 +27,22 @@ }, "dependencies": { "find-java-home": "^2.0.0", - "glob": "^10.4.5", + "glob": "^11.0.2", "nan": "^2.22.2", - "node-gyp": "^10.3.1" + "node-gyp": "^11.2.0" }, "devDependencies": { "@eslint/js": "^9.27.0", "@types/find-root": "^1.1.4", "@types/node": "^22.15.21", - "chalk": "2.4.2", + "chalk": "^5.4.1", "eslint": "^9.27.0", "find-root": "^1.1.0", - "globals": "^16.1.0", + "globals": "^16.2.0", "prettier": "^3.5.3", "typescript": "^5.8.3", "typescript-eslint": "^8.32.1", - "vitest": "^3.1.3" + "vitest": "^3.1.4" }, "scripts": { "install": "node-gyp rebuild", From 1d266faf07597c67118256418619c0126d7526de Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Mon, 26 May 2025 20:45:30 +0000 Subject: [PATCH 41/47] downgrade chalk to work with commonjs --- package-lock.json | 63 +++++++++++++++++++---------------------------- package.json | 2 +- 2 files changed, 26 insertions(+), 39 deletions(-) diff --git a/package-lock.json b/package-lock.json index fa09f16..029c6ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@eslint/js": "^9.27.0", "@types/find-root": "^1.1.4", "@types/node": "^22.15.21", - "chalk": "^5.4.1", + "chalk": "^4.1.2", "eslint": "^9.27.0", "find-root": "^1.1.0", "globals": "^16.2.0", @@ -1705,18 +1705,38 @@ } }, "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/check-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", @@ -2012,39 +2032,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/espree": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", diff --git a/package.json b/package.json index 3137592..191e742 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@eslint/js": "^9.27.0", "@types/find-root": "^1.1.4", "@types/node": "^22.15.21", - "chalk": "^5.4.1", + "chalk": "^4.1.2", "eslint": "^9.27.0", "find-root": "^1.1.0", "globals": "^16.2.0", From c8f143bbf06e3b66408352fc76513bc82612b0fb Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Fri, 30 May 2025 22:01:47 +0000 Subject: [PATCH 42/47] fix java.d.ts --- examples/lucene/.gitignore | 2 + examples/lucene/{example.js => example.ts} | 34 +++--- .../lucene-analyzers-common-7.4.0.jar | Bin .../lucene/{ => libs}/lucene-core-7.4.0.jar | Bin .../{ => libs}/lucene-queryparser-7.4.0.jar | Bin examples/lucene/package-lock.json | 77 ++++++++++++ examples/lucene/package.json | 17 +++ examples/lucene/tsconfig.json | 113 ++++++++++++++++++ java.d.ts | 3 +- 9 files changed, 230 insertions(+), 16 deletions(-) create mode 100644 examples/lucene/.gitignore rename examples/lucene/{example.js => example.ts} (70%) rename examples/lucene/{ => libs}/lucene-analyzers-common-7.4.0.jar (100%) rename examples/lucene/{ => libs}/lucene-core-7.4.0.jar (100%) rename examples/lucene/{ => libs}/lucene-queryparser-7.4.0.jar (100%) create mode 100644 examples/lucene/package-lock.json create mode 100644 examples/lucene/package.json create mode 100644 examples/lucene/tsconfig.json diff --git a/examples/lucene/.gitignore b/examples/lucene/.gitignore new file mode 100644 index 0000000..dc81cdb --- /dev/null +++ b/examples/lucene/.gitignore @@ -0,0 +1,2 @@ +/build/* +node_modules diff --git a/examples/lucene/example.js b/examples/lucene/example.ts similarity index 70% rename from examples/lucene/example.js rename to examples/lucene/example.ts index b531969..4f80f09 100755 --- a/examples/lucene/example.js +++ b/examples/lucene/example.ts @@ -1,9 +1,14 @@ #!/usr/bin/env node -const java = require("../../"); -java.classpath.push("./lucene-lib/lucene-core-7.4.0.jar"); -java.classpath.push("./lucene-lib/lucene-analyzers-common-7.4.0.jar"); -java.classpath.push("./lucene-lib/lucene-queryparser-7.4.0.jar"); +import java, { JavaObject } from "java"; +import findRoot from "find-root"; +import path from "node:path"; + +const root = findRoot(__dirname); + +java.classpath.push(path.join(root, "libs/lucene-core-7.4.0.jar")); +java.classpath.push(path.join(root, "libs/lucene-analyzers-common-7.4.0.jar")); +java.classpath.push(path.join(root, "libs/lucene-queryparser-7.4.0.jar")); const idx = java.newInstanceSync("org.apache.lucene.store.RAMDirectory"); const analyzer = java.newInstanceSync("org.apache.lucene.analysis.standard.StandardAnalyzer"); @@ -15,26 +20,26 @@ writer.addDocumentSync( createDocument( "Theodore Roosevelt", "It behooves every man to remember that the work of the " + - "critic, is of altogether secondary importance, and that, " + - "in the end, progress is accomplished by the man who does " + - "things." + "critic, is of altogether secondary importance, and that, " + + "in the end, progress is accomplished by the man who does " + + "things." ) ); writer.addDocumentSync( createDocument( "Friedrich Hayek", "The case for individual freedom rests largely on the " + - "recognition of the inevitable and universal ignorance " + - "of all of us concerning a great many of the factors on " + - "which the achievements of our ends and welfare depend." + "recognition of the inevitable and universal ignorance " + + "of all of us concerning a great many of the factors on " + + "which the achievements of our ends and welfare depend." ) ); writer.addDocumentSync( createDocument( "Ayn Rand", "There is nothing to take a man's freedom away from " + - "him, save other men. To be free, a man must be free " + - "of his brothers." + "him, save other men. To be free, a man must be free " + + "of his brothers." ) ); writer.addDocumentSync( @@ -51,8 +56,9 @@ const searcher = java.newInstanceSync( search(searcher, "freedom"); search(searcher, "free"); search(searcher, "progress or achievements"); +java.stop(); -function createDocument(title, content) { +function createDocument(title: string, content: string): JavaObject { const fieldStoreYes = java.callStaticMethodSync("org.apache.lucene.document.Field$Store", "valueOf", "YES"); const doc = java.newInstanceSync("org.apache.lucene.document.Document"); doc.addSync(java.newInstanceSync("org.apache.lucene.document.TextField", "title", title, fieldStoreYes)); @@ -60,7 +66,7 @@ function createDocument(title, content) { return doc; } -function search(searcher, queryString) { +function search(searcher: JavaObject, queryString: string): void { const query = queryParser.parseSync(queryString); const topDocs = searcher.searchSync(query, 10); diff --git a/examples/lucene/lucene-analyzers-common-7.4.0.jar b/examples/lucene/libs/lucene-analyzers-common-7.4.0.jar similarity index 100% rename from examples/lucene/lucene-analyzers-common-7.4.0.jar rename to examples/lucene/libs/lucene-analyzers-common-7.4.0.jar diff --git a/examples/lucene/lucene-core-7.4.0.jar b/examples/lucene/libs/lucene-core-7.4.0.jar similarity index 100% rename from examples/lucene/lucene-core-7.4.0.jar rename to examples/lucene/libs/lucene-core-7.4.0.jar diff --git a/examples/lucene/lucene-queryparser-7.4.0.jar b/examples/lucene/libs/lucene-queryparser-7.4.0.jar similarity index 100% rename from examples/lucene/lucene-queryparser-7.4.0.jar rename to examples/lucene/libs/lucene-queryparser-7.4.0.jar diff --git a/examples/lucene/package-lock.json b/examples/lucene/package-lock.json new file mode 100644 index 0000000..19be7e4 --- /dev/null +++ b/examples/lucene/package-lock.json @@ -0,0 +1,77 @@ +{ + "name": "java-example-lucene", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "java-example-lucene", + "dependencies": { + "find-root": "^1.1.0", + "java": "file:../.." + }, + "devDependencies": { + "@types/find-root": "^1.1.4", + "typescript": "^5.8.3" + } + }, + "../..": { + "name": "java", + "version": "0.16.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "find-java-home": "^2.0.0", + "glob": "^11.0.2", + "nan": "^2.22.2", + "node-gyp": "^11.2.0" + }, + "devDependencies": { + "@eslint/js": "^9.27.0", + "@types/find-root": "^1.1.4", + "@types/node": "^22.15.21", + "chalk": "^4.1.2", + "eslint": "^9.27.0", + "find-root": "^1.1.0", + "globals": "^16.2.0", + "prettier": "^3.5.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.32.1", + "vitest": "^3.1.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@types/find-root": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/find-root/-/find-root-1.1.4.tgz", + "integrity": "sha512-2EXK/+gVhVgtt4JqThbEncORvpYJKzi9tQGmI3EkU2jTgMzQsrPm/hbd5xe5uPdeFzIW5gh2PRvvPjaUsI8vpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/java": { + "resolved": "../..", + "link": true + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + } + } +} diff --git a/examples/lucene/package.json b/examples/lucene/package.json new file mode 100644 index 0000000..b436b24 --- /dev/null +++ b/examples/lucene/package.json @@ -0,0 +1,17 @@ +{ + "name": "java-example-lucene", + "private": true, + "scripts": { + "build": "tsc --build", + "build:watch": "tsc --build --watch", + "start": "node build/example.js" + }, + "dependencies": { + "find-root": "^1.1.0", + "java": "file:../.." + }, + "devDependencies": { + "@types/find-root": "^1.1.4", + "typescript": "^5.8.3" + } +} diff --git a/examples/lucene/tsconfig.json b/examples/lucene/tsconfig.json new file mode 100644 index 0000000..ca6df4a --- /dev/null +++ b/examples/lucene/tsconfig.json @@ -0,0 +1,113 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "libReplacement": true, /* Enable lib replacement. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "rewriteRelativeImportExtensions": true, /* Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "noUncheckedSideEffectImports": true, /* Check side effect imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./build", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ + // "erasableSyntaxOnly": true, /* Do not allow runtime constructs that are not part of ECMAScript. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/java.d.ts b/java.d.ts index 9395479..c224837 100644 --- a/java.d.ts +++ b/java.d.ts @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-function-type */ /* eslint-disable @typescript-eslint/no-explicit-any */ -// eslint-disable-next-line no-var -declare var NodeJavaCore: NodeJavaCore.NodeAPI; +declare const NodeJavaCore: NodeJavaCore.Java; export = NodeJavaCore; declare namespace NodeJavaCore { From ff2965b0be5c9bc91f2d29b467defc8bd8246919 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Fri, 30 May 2025 22:02:19 +0000 Subject: [PATCH 43/47] v0.16.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 191e742..ebd426c 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "jvm", "bridge" ], - "version": "0.16.0", + "version": "0.16.1", "engines": { "node": ">=8.0.0" }, From eb21f7bf9ff4ee2a7fd642821e58b890ab5ab392 Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Fri, 30 May 2025 22:07:04 +0000 Subject: [PATCH 44/47] exclude examples --- tsconfig.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 03b86b5..4ed39cb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -109,5 +109,8 @@ /* Completeness */ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } + }, + "exclude": [ + "examples" + ] } From 586703cce3739fddfcd5e805572087fe014d84ce Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Sat, 31 May 2025 16:35:17 +0000 Subject: [PATCH 45/47] enable skipLibCheck in example --- examples/lucene/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/lucene/tsconfig.json b/examples/lucene/tsconfig.json index ca6df4a..53c363e 100644 --- a/examples/lucene/tsconfig.json +++ b/examples/lucene/tsconfig.json @@ -108,6 +108,6 @@ /* Completeness */ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ + "skipLibCheck": false /* Skip type checking all .d.ts files. */ } } From 69c662c77a5b1cbe8d60e5761b2e54061a2d18de Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Wed, 13 Aug 2025 11:57:08 +0000 Subject: [PATCH 46/47] update commons lang to 3.18.0 --- .npmignore | 1 + README.md | 4 +-- scripts/commons-lang/.gitignore | 2 ++ scripts/commons-lang/pom.xml | 40 +++++++++++++++++++++++++++ scripts/update-commons-lang.sh | 19 +++---------- src-java/commons-lang.jarjar.rules | 1 - src-java/commons-lang3-node-java.jar | Bin 482131 -> 487607 bytes src-java/jarjar-1.4.jar | Bin 120575 -> 0 bytes test/commons-lang3-3.1.jar | Bin 315805 -> 0 bytes test/commons-lang3-3.18.0.jar | Bin 0 -> 702952 bytes testHelpers.ts | 2 +- 11 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 scripts/commons-lang/.gitignore create mode 100644 scripts/commons-lang/pom.xml delete mode 100644 src-java/commons-lang.jarjar.rules delete mode 100644 src-java/jarjar-1.4.jar delete mode 100644 test/commons-lang3-3.1.jar create mode 100644 test/commons-lang3-3.18.0.jar diff --git a/.npmignore b/.npmignore index 4c82cca..5c81151 100644 --- a/.npmignore +++ b/.npmignore @@ -1,3 +1,4 @@ +/test /testIntegration /.idea /build diff --git a/README.md b/README.md index 2969aa8..7629bad 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ const java = javaInit.getJavaInstance(); ```javascript const java = require("java"); -java.classpath.push("commons-lang3-3.1.jar"); +java.classpath.push("commons-lang3-3.18.0.jar"); java.classpath.push("commons-io.jar"); const list1 = java.newInstanceSync("java.util.ArrayList"); @@ -243,7 +243,7 @@ java.asyncOptions = { syncSuffix: "", // Sync methods use the base name(!!) promiseSuffix: "Promise", // Generate methods returning promises, using the suffix Promise. }; -java.classpath.push("commons-lang3-3.1.jar"); +java.classpath.push("commons-lang3-3.18.0.jar"); java.classpath.push("commons-io.jar"); java.import("java.util.ArrayList"); // see NOTE below diff --git a/scripts/commons-lang/.gitignore b/scripts/commons-lang/.gitignore new file mode 100644 index 0000000..8b8c81d --- /dev/null +++ b/scripts/commons-lang/.gitignore @@ -0,0 +1,2 @@ +target/ +dependency-reduced-pom.xml diff --git a/scripts/commons-lang/pom.xml b/scripts/commons-lang/pom.xml new file mode 100644 index 0000000..5ec9c25 --- /dev/null +++ b/scripts/commons-lang/pom.xml @@ -0,0 +1,40 @@ + + 4.0.0 + commons-lang + commons-lang + 1 + + + + org.apache.commons + commons-lang3 + 3.5 + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + + + org.apache + nodejava.org.apache + + + + + + + + + \ No newline at end of file diff --git a/scripts/update-commons-lang.sh b/scripts/update-commons-lang.sh index d3e2d92..e3eb71a 100755 --- a/scripts/update-commons-lang.sh +++ b/scripts/update-commons-lang.sh @@ -1,20 +1,9 @@ #!/bin/sh set -eu +SCRIPT_DIR=$(dirname $(realpath $0)) -SCRIPT_DIR=$(dirname "$0") -cd "${SCRIPT_DIR}/.." - -if [ -d build/commons-lang ]; then - cd build/commons-lang - git pull -else - mkdir -p build - cd build - git clone --depth 1 git@github.com:apache/commons-lang.git - cd commons-lang -fi - -mvn clean compile package -DskipTests -java -jar ../../src-java/jarjar-1.4.jar process ../../src-java/commons-lang.jarjar.rules target/commons-lang3*-SNAPSHOT.jar ../../src-java/commons-lang3-node-java.jar +cd "${SCRIPT_DIR}/commons-lang" +mvn package +cp "${SCRIPT_DIR}/commons-lang/target/commons-lang-1.jar" "${SCRIPT_DIR}/../src-java/commons-lang3-node-java.jar" echo "complete!" diff --git a/src-java/commons-lang.jarjar.rules b/src-java/commons-lang.jarjar.rules deleted file mode 100644 index a7f18d3..0000000 --- a/src-java/commons-lang.jarjar.rules +++ /dev/null @@ -1 +0,0 @@ -rule org.apache.** nodejava.org.apache.@1 diff --git a/src-java/commons-lang3-node-java.jar b/src-java/commons-lang3-node-java.jar index 7a9b020031156f895c81500eaaab73f290ca94a5..7a44d7e7029dbd53e88a581151e22cd8b41502d0 100644 GIT binary patch literal 487607 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

e0q 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

9|)@0h3l%Wu4SumjEnz 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

!*xqyZ*a=bpC~$|5r9dqU-Q6+|pdnA0D|KzJ>A9 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⪚X`|}IAOus_$+vG+O*`!79aVNCvVq_^!2yu%DPig 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

UY6nb-@ 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 an5G_`Rl^y};n-BNsq{V#;mmvTum1%}COxPC literal 482131 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%0DWlL#?(Y0a|kH`)RaJ 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 z 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

C5{1_pJ{yDa;Hqrx^T*XY$u(0X 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

-WFp7`;~eU;Fj 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

-@alg({r&;1_6Z^Rs#qIWpx5Md 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 qx%AVkr_~PiKvbbQlCd%sXL|<^5@9Om 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≈aeu!<P(Qd$J`%fEfId}@p_ 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 ~Rn3Q6T) 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 BDx`a@yDcIWM7g!S& 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

6Y8)Lv9`+-=;h0ElzZMp1d{jd;Tg~L zA_+};E0mpc$bRf}(?+w^Eo%ytQ%|2Nd}LJFIB1KQrFgRt>DtkeM;!F--&uH!FZ5*o za=l5SlhiLK7E~!skg}Z+d`xb=YxdbK^Fl8UzFC&o8J5`5bM;&Opx2F)oXkFp?$&%U zUa+Ro{+Z_IX*n^}DP&qMd^$9J?xYVcQ}3g5V45ueu!EldhBT zZ25eZ{cV2gZ$w@Ucbe#>7W-jed@!v}bopN8F^Ya?q!o4K?&^oWxX>9vuGE~`whZ1L z+UGx*7{5z1qbB{FY}b&^?PuIIT(UQL2Y>oZrUrCvT0pTH*|B$stzAN(>@?fT+;uBe zb)Ifn<)qqFI&o~-lM{Y~{XX_SzDvo5_O{_eh95HSS(}};J>B9)=Dp!QhbHbh=qjO3 zX-cS>SK{MkD}G{a=ChP6>XGc>p>o5V6+6dHJo7L^Il!Y@Lu``yxm*VQ#TpesyWoz6 z{0qj;_81;kectilFspM%lWT4HW_()r&4T)Lv5B2H<6_u%&LXU|?gTH$Hh@+I`evkl2NQBZoZ6 zC;62U&Nd}(iRoDGw3+(+y;_(HUopSP%lDhC*T%nb+aHo7bAVr7s{Q0d*~cS?ZJsl3 zdsMn?Ks!VDdxlQu_%T#zuDwnpN+L#%=tcKROQNO_}oo=dd zqoC!>LQk#IyCJSikL?O+AoVSDI+-viFh8?AbKSor6CN7ChQE@rH~VApQo zQmDEm3O94^zYv1-2EHZf{Y!VXI$rc&a|h!fiy!!O|5+=E#m&byZ?i)7>|@ zy**#7rir@BxoE$+^zlY@!o34U{=03S&s!DPaiHqmhj%0GyWX`0%!``7^J~|cS59Xd zp1FDNdYI%E)@%8omqrh{Osh_JD_dT*(Mmz)q{!Qe<^F{u!rtUg852B1?o_EhJ%-qO z?#5MlM&;Y_!>X00t*VlgIizwF_67>hTO9Ab@%dZklb+6xiTj&3Xylhm1gv*cQcTRA zB9d-ibtdzw#qn<=w7(=se4RoNuWi!P(8z7bPJUU@)!aT_B4V@5A-5CroF;63UshY? zsc+o9!fogD&Nnv}Q%}e*?#g)ZMQCNdTvdsl_Z5dJ_M6XNZQK&=ek}QQ^GLBxdioaY zmp#A1H$~NAy~qBU_nPg;9iKCD)$O4pKMK%88NDe+-RbjvECtdJ$*WtRO)c`F&1_N6 z{IDuKVmQI`jZt&MHtIP8nGgDlPe$yI%;8T{F6z1yMisO4?Sob1@q*@z39T8E?;RZa zcK2x+_x5GAjNH@y0=~11k5qfRbWVvf+ubm?vE-v`S+M=)lQpL$?agCHuD>(-i;nr| zFO_18Mn2)QxDvc*!zs6t30-5;_q}yB*;jw+{_}m;V%M*WyH2vPxw!Il(I%IhD<>&F z|3nbIb7+r3UlyU!Ksu*(hvF>9x^ecG9NI_E_otnkdH3b@svT~1{AFLCJ7wJt*7VjE zta+mXSM1EWv*+o#ASK%Q8QF#{gTtmu$Q#sNE0I1q%JrcAqfBD6ZYS|j$o#yn!{&i& zPn>K?7=L2WozLlW^A=@fFU%;s*m(Eem$_^F0?*$Sbr?H`*fUavPkE_POxU@yJ-#xz z>P?zYHdrobH$Ro2vZO3Ne9Y+;A!3D7wwHc;m@gLl?MvPGD^oS*NQ_CC7bT*3S9tfz zs;W4*QLVZ+q+jp25@-0yS+O^Rv^Hp5Jztax->f@ysnNwF;saYfMsL`Ba7UNfXO*ox zXD?f5*PHWRFp;#{?$(g3+kJzwYiE@%eZACN=&|fzN&15-`>v_pv&UE!*zYoqZq}dS z=cIGnS7u4OZvMv^iWxOJ;|h-HKUk3$P%T%pOwDui!-Hy;dqb<}xFmvqCwr~0pTFrNi8%<(gzTK!mTY016tjCO_-*>c8-;cQeY<*?Q zYoj$f$`v0KynXA(SQZ^`x=2`WPoR!!*xZ==-n*j5T{Gi?um0ZAnQ2KDUTWmgQ-af4 z&T31&N(gP7pDjoTUHWqE>FDP%dHM=TW@(0j@eJzn=;@*NbwbL9c&}>`*!pzR!Ceti zwAxqm0vOSK#KtuYzd#66iUrl=R{CM@Wzpr~KntWF=f5@J*+1mDIk_Tea#0BVT`;>;tmsH+%SQRb4;i7TXFN<80ucRrN|V-Cq2J(d8p)+V$T% zC%C@v{B-x@;fy!p`@_dvJ}r|NE?zE^vsJ7#;_@6z2H7R^=E>r*R&94HOv0)tZ>&0U zDrSDm4{Z*fdVirKwMS6r_JL;ox5NBodxcCY3{@JUzV2NV=Y6(zcgL)xhe{gO`?8Fp z7re61RhpmTDHOhK+1?x|?rjn_V08X9UXCv;`5NceZ?3+~aT zzIY>&HS()WpjXG- z;eK}amS#<`Uw)vcS83f)uMsH~%JV%E23u^H{dP^K zYhY8EhQ`bBuQnJotVz46GzNauxXI3Hf(7W+-`&Hah;kDkuN-lDE?%UVd$;J#oBw+L+#iWRs8H zfrI3NWXo;89~+@jcA=sorn9U|szSyyp|?CFE4P*2U?-OqDJfgmRr$s|^@CDht9h4x zc2HR3`txobC$n9K?Ve8E<8*#V&TPWz@cohRj$ie;A{X{e+*KepGA|*2xN|U(=1!R+ z^+CuqvEDfTweiqwvF-78*Jm8Mr7wE6M)HZV;Pt08XDjsyB3-_2`uj9$9BY=CEzqqQ zSHmAaLvDS5gvrSHJpv=WFBMX=M-6RRlz8T2_^PxD*_R60>w5D{BQdoH-#+rwnk`yH!B#btkxYP;Pw!A&G#SfplD&y96YV#bFM40aw6_xmEZ?Rew5 zsRkI5KF`QFqbsqUd`VpU^EAHlnPXG#J^oz0>8tL!uyfKaGZLt?P46Y= z2&iBE=05D;l_gH=D~^0Sy|lty$IsMkO>^_yC>txvvz?kBi}y@&`iPL@u!cU zI(AqOy)x>Ak^J5*`J$?1ujQ3R6oEBxo0*La!lvXvgb*ZM|&=QZDhtPAolr#u_l&8P6t{gJ@1`K#sK zN9{8V7sxGrtn|{RxXN=)(t!(^i&mHM&!3jHWT6~P> z=>z%tPW3eY;gdtf{Aazhm`Vur(A&K3d52_Dx52!w)>A%}QksM-8pmBsWGHp~2918x z!iCQdD=r(^cf9BN2f1kH+uE{*yVR-E_urZnsx=uh@b1~qdbX_&Xj*A*?YQ?*R_Uf8 z`F7sdLY-;_6Hdt|S>7o-skZax8L555Hc{!rZD%#yMZd{Bk*dElPA3_uzEv3cgyJxP!9KDjHRDD3n|(ew$vJ72hNOk_FPMJu)aus; zbxno2@zxR3g8b!Dp5(okN_{n0yrWWPN~_+4SK{y8H%QTGx6kMJe>EGtT05(?m3mqF zv4bbUIyti}RP2SOxRUQUi|bkI^+P&FfB5q1l2>xcQoa*P6J_|al%6@!ZahkJo}b`rP4q@zFh=BQAR{t*O#}IOR;OXW)fn%2UhM?D?8KtviXf?qRoQW~b9# zGix>JuyTtp6N4?cY978O&PXmjc%wv7=gZBqP}z0+2Elo30Hzry}KOy4L1v!Sd1Hhe{1QeyZBeuCcy%*wPzAPs|J2Y^%{MG|Qj9qrF@3 zZH9JdiK;aW)B0Ydw@bHNNg$^*(wxjj!~U@Tom-eTqzl1;?o8Y$k0*W4PzlCkMBnK`L?ruTCGMJS**}Zxxfdx!z8}<%^_d zW83o6Mg~%0Q^*p#e2%@`^wr6#du8p8OKsCC;)k6ovK?CL-2CkGeakayVFdnescU}s zly|Ps&7aywm$6fux2;}6F(hdSU)Sq{k1B3^7pm%QI(GMQ{X9vt-n9a&W)hA(ou9t! zAjM7k-X3SSxwf_QzFN-8^wukW?WHtq?(6Q@>o2cO7)^FNW91=jfAy74Qt_li;@tsj zxB3tM;HGlk>OJA@Y9}4R(lC#W9vXcW->bhYYdYVRJvmKi^@ni3*xExKOXiLDINBH~ zo%pd@nxwB9)sI$pm~TYE$OPOa@V`>CyV z+E=tS39DMA_qLChQc(@bdu28%a`RrPQ6a4_?#r}~ncFrdlCQt%W|Bfyg9!}80zUTr z3*-MBYBY&TBV&7EM%v+&AV%1qSJJK7Xzx^|Gdwl%y%uGz!1FnC<@cIO3^#u|a_o7A zudqr~i=oF>4I>HBp_RLazm>dKt(@+B{C(|$uc0$5noS4~m4dwO=oKqGrrHTDl3%^6 zpf*r(3e^1+85`U5h6QYx*?dQ*RwqXG;X|RjVpnejOiV7n;&=G^!flz7sTt=x_v_@D zuN6#9IbN|#r)y>4h9?KyUyhpn&?`0Yen_dC>guQ7B*RbM`5LQd=RfxjY5Qs+7O3e* zU8`0_%r8i7*r;1{C3}PW_BHe?h1EATJ`T20n=rR&tB>+w`-r<+ZC$3!mSaxFK?EPw?@DEnkX8H_jhlWStkMaai`vg$LSpS=3hhW~uw#%U_fm zEMF6_Ry1|Un{elrgQ@BzH-;7U9j%m1FiEX^C$8IGdH77u{s(W{w|Tg?6DO8dCayA_UmRMSj0_IQy<(3P=BRXert-nmO58 zTe-PwIa)JQ!2akbI11ei|0nFHYUBL{9BKaJHxhd1vA-DDfyMnpi9h}f28#aS&#hZL z;N?<4rm#zXrHwKR` z2{!%l2RRNQb`h6YY#=F;4uKMPbjk?9G0^_Vmg`_fL?B0cs0D`N(F-Tid9lD!Tv`KH zLE*BB8uSnm99F5M;4o4kzA6+E$<4zfN260o#Bkifp>jKfM~zO3#UI&3WMn-YY0;^~ z2wE7tyU4=`XG3oeTT7vn!|`dMK9PekdGP3A9ZtW0wOr9d`-7ONpG$K;LIEEAG?*t?O}IMf7po4o7FJGf zR$BB}Ix_{WP}7HyRT2u|Lub8a**_>aIlBW5Rs_B_ggl!F;rbf@q6}t@#W5+fhzJTi z4GQ7R15R+!el}Ax4{!C*PjhR4vNUABTEArn|5Ap~$<|<*s1J0#GShC2)0vSEls>_S zotpdovjIlf(~gWJMFe3D;dT^q#P2?EX7VRTc1n+jeCj&*E7lA4`{xX3+>bv~+Z+hPm_vTO zTFgA)Q>EtjzJl(E;2P5qF$>+{imn9=ofrrv*MG8vPGMtujE2#ZJs`3Q!FgZQQ9>KJ z!C@^G1y8bFEm)oV2@Kss-RCZtu^%i?0!$ks-gvlSP`3Qu& zU?Qk%mk9FV3z$Y?=OpqcS5{$9GVA~4fptQ7M8k+QngfLhi#ePT8_A3uO9bM_fH?M4 z#_!)YQBK5NAnC^;eRybe%r+oB7{rX~&V3js(*0!FB?fw?g?Ao7#JB{ej1snz;EwQ* z7pa-8O=#cIhmjDDgkZ4^Q|KSRC8N0`Y#RZt9ZU=)u?cuhD{|Ddz&WQX+m7;8>IGa|=`X2<9va!bYR$TVEWqmJ|kLNd0k? zHQh=K@ETp1A&n1Qoa zPK(~s_r?IB_?Og1B=Q8~#)ymzBeV0K$?;aMZ-x^H&mmT!&VOPlH!!RRueA35yF?iH zJP6(BobYJ_4pl5(hmfc^vC3{nd{F|_us@Avj)B)V;SjbXMiV^;HaA!g_)(gO{y~@> z?O=99=bF6TICLE-fyA(ZEKJ2ME+Wt@nnGr?B^;z6NPRY4v$rYL$#F@Wc9O7 z%6jB;$7H1L0t-(CxuX(MIgN+G2oJ!u5v`JGt08_7{9*j)8cD7UhpuzLLMTiQq&iLv zcB|V_F4v_DU{9eAw${)=cb(;qIBQ`@-Fazh0e<*?Jo92;>0KPUph8&E4V;I^nT$;$ z0;Eq2fk#Q;06scur8bV#ap+3N6E9u^F^?Y191AtxYjKZ$Yu#}R@~8w@$)G7(F&{tsrGYCc#3~j?9#0=n+58=3 z(FY4fw2<|9FdkV(1XkF!iijptDG`|SupTwMYUT;9L9hpp(MRMkb0`jZHxiXh3?nb< zFYBKY}&Fa z1;EY08Bh_LNb)oQ*5vQ36_bjApaz{MOd?boi$}hH#55H%D%8F#C}G$h2D@rO?^jjp z-CzXI;gU#HOTCcLv0c{>2<3O)izlQe5n=0e@Vj#Wql##WFo`n+Ysq|?C%bmjU`El))vBBVD!|1gFo5yVikC9t4}z`a==~g7sc5sNxpa zhfHcuGzPET1alZFXW9WSXj_m6W=J+=fZVUuj>=##JHawh>S6`lP^aNim)q7iZ_}dbEeMPGN|Lacd5a=C9;$`#W_}iM>CE_CxyHG>M~+Ye7jNStxCwRZ6Ogx zlZB}-ITFV)ySnM`^Y(*byns&wF%V~d0rqjxeF01sK?8FNo6ur(Xhwkmm|h_$5%xp= z__+vhN!ctch8Rb4r!q(!mVf1QFP3fqtd(GnhJPRt2o-`{VmT4RIiU<@n9dP^nLZOf z$Ta`>6$^8TG9Wh_DuofrfhEB^S(@{KC3z4ZTG&t>!V{Qn5C^1b)wUVmfSJ|67P>}% z3tL8Pr^Y``VBp^zaON#Ou5mW@d9N@`>(9)XE6NMxaOiqM z_7%jo+S3tHk|6{smo5ZObmFa^fL!gsh0G*y0qa5EUMrcH1oU72MPI{! zd;0Eik!&gztzTcQ$1+k1ginz7A3yPFT+?Sg^bP6rms5dY8hmJEJ~4w6>A&wNVJEgGcv;Q)c2&|Jjpe7C?jkjzBtofn`u`yE`_~Vx=i`S|pot0fIX%TAGU+ z%@|G~q=VQ|26D}~pgpkcBDqs=L5f-q#oIw-m<@RjTFWta1B6Lm=_2Ci6 zjlH~4(#F@0ayM*#nUV+U~{P*LKIp^6x_oF!Ym?ffdwUqgv&*!;9K=R;35aO zKrtqsSn$JjDfN zN3czD7_>jRlAsrtMvjJfKCm8fqsOt^TzHyEN-qUYB4Nr#m&h9{xWMEEDm`jtB>|Gl zDu6@lImPgwI0g{cfqqfwPGc=SjR&E9$3SGGKsRXWKk6b+WmETCv?jr%q6GB?G&7I9@~?=j<+%8)%*s4SB@Dq&O%dMaL3b1n zYWit?xO{!D&=*OE1(Yx}I--1qKj#9?jSgjRA~onI7LKKtt@$`M52k--2ybX?2x#X5 z=_dj%H>0}m9KlvKf5)GNpLxK*jX&>biFI*c5T!7AyN}&Ap)N= zf_G>#w)4mZs?&Ixj6^vCVb5IVr01Ljuc)l~QmZ4UVM*=Z0b%!KUJw}J;Y2E%v|+hS zoFoG7x>$c|r^3k=Sy;}vzMryK^tSQ!dk)ZD`ZfHwL5BSyb>_i#&h!5hPmK&DJE zf*6e&{wqBkHrS#3MzvT#3Jk>!+jZS*n}lH!+A@rJYUnWJ9h$Wz+@6v!?+jS@YlvlN z9dF)DE-(i6%zoPR59ZizJY6gAK1yS05-Da}fN?g7X~SD?ody7TFbQ+S=Df^t0e&6o z`dKrvAX5VwWV$(&c0<`W?$f>q`sM)^%y3NcA<5!D;XwjHXWLcWDIEG{KcK<{$Ap?` z^?yKR)9om|t^T7pAhroH&$Op({yQpb>n!&a@!SQLsR%Q?DWXp!`~QN;8f|er{gM`N z7zD2Fg`mxH;SufEDM8x^GQEFq8;t0uZQ(k-;iV)}F|h0jETct~Ubp|lAXszWd`)$v z32=_Rfq*WzROj#pYR#ZCsIYlJiDfe__P(}znaIwhPO_@`jm?7D3B zi8~(vu}vB*)&kLIm+!wq;p*-!eg2ys(A_Wy*ys*&wf{c?vewsX8?94VoRbA1njxG` z2<8RIjTlVgLXh6mA7llCAWcA!s7<RRD)NGrXM6z8>($^$Boj;>X<#zXAxm9&pbC zX}TC+*g6b#uz>BnfvS)%jGK%d-{^Kb6>jwP?$D)a0mP9&{wUX5@NR6k$2rNMkp2!GnkNw9H zApBc|QD`JKM+$a5;v2CA#t;i*K&4=E;{Q1YXE7MJv~4O5oc5<5*fdcM_H zg{=M&bd&`nnlfnk&zSui6fB1`(09PbOt+nyJW*f>Y>?F1X}*flB~QagcXW3_`oj#i*OGz-yt z&m$yWvLl+bu1XnT{;oNF|MX8V*ugH=s(NTXbw4IVIS`@+BE;2Sc!Y8XolzKc4kDCt zjK6`!Xl&CTHATa(+yM?;E(XW z;D2DNIC$blZ@+tU9oK{7rAjgHiC*9nYV69u(6CW(5z_bwxvCjwLy%zRP zxS8Qu1G_>`w-=R6C;c%36HUh+9Bxts?QvClt64tUg~bckvIvYV*2gT;>MvQGl=^>oo=K?stfAy1axEZ+0 zv47p*K!)=yaPb$`!U}x{D*gK+wh_^ADjS=KXF-=x7`sGr%Jrm{&yZg@N;6NxYoIL7 z)|uI(vsT%-(#{?%Y85~+!0|VS@UM0w?qCM$8~yy6lOwQ8mbm25%V6>H5^&K(NHnw& z==n2wfM(6tUfSFkY_E9*d}v!A)q*2&&bHyv;gp&UvpaT?7+OQIw8SI-v+Se|>*fd& zc7+JXW9V6wbR8)F5DH*N5MA&&SaSzOfy3^xoX@)-=+s=ZAAsrr$Q;p!n>}wp+!fjU zTiz(001ICY8v>>X-a;3y@P4$3{Yu85#)dJ<+8~7HD{Y?x8nXqBp=oXUT&~c#gL!Ou z_Q)ehf}&wfFco3S-iJ4se!pVP%k*dTmAb%7JA9}~tfO%S^2eg!$5pXxfWoY|*Z_zr zWX@N?-=4RDDbVFI9{Yv{IU9#O#{s8mKIXXD>_ zKV<53z%&6&Cq!=>V|l~;*%2H~g1QtG2|2I0yd;7Xu*qySeEJBs-6F2AImfHFZ{!tT z18a{VM@P+4WibxKuZw@p2X6kus@UvrIvRem>pON(>;-_JF_)3R4aiUGY)T3Z+rJb` zLfK}a7xQ7O2T9zJ|9N2(YoiE^8g?9ZJ;A8|3Xn>_Va{->n{5iy}AH5(Dff~u|zD6 zafla`feX|i_kv!`fsn)Q=7)*nQ(|L)FGJu9-4*|Gn0LgV?#fz*n?A>qVj$uqLk5jv zH67y}3*Xj{TW3@)0b9QcnG0%yl_z+|;$ZK(O@-z;F z7yv@FKukpWH1AmM6xcVymt@?Fge8jrZ~*|KHYs-YUjQ8_5h3`92Tl@Io4_Vzq3aH1 zvAcqIL=VnR@XE}He?AzC8dL^Q=eEAU3m`sQYbcJ(upYOK@R=c+8&bmy3TTWQ&;IN* znL-084h7Ffqy362Ji_6-^_FS=bqp{N$TOLMg0AxjgfGCcdtzLoK}|csr_ox1c^!{H z930w#P!%c+YJ&UZm{?N2!y^*DHKj}+gBV7fPMgIju_$MMxFt!!ze@!(L+)rYA?p%9Kb`3p4h}Q9_P?8{79n212B5* z;(t?wJ)6fo!f_EdZbwdY8v!P=89r2)>sxq1!}#LHrR|*__%ndJvEb6E1B__p6%XI1 zXJsZ%#?%H29VVpCm%Jk38>D8LcLPXxXIhHLpkqg9#?J&s)-R{R%t4&QizgTpBUK@#8kGn`h0t^hd5?3wa8Yr4!U#TC#qEi*$>3}XumVIYUXus&0>;77;X@-wq8KkI{RaT?{aNx=mWD4VX)-7YO%Okb^8|%^ zu`RiXuDA?PV5!ICR3*^Cz@mEd_2=98U^A6x@MElH02peDxnp?- z!-q=PWi@y!K*5Z~B*j$qc&@O1-owti`p{BAx_tqH(pUJ<*mnlrv*T>;{V6u~k_A2&b@x|p?E?-b!tE{S zHe@Tjbi^6PkwjlWffFOq6gXwbrtG=t<um+Tku1uEzB4-i(if`s*d|eFQH{T2H|08rkcb_f* z{{G$5=L(3*;Ua%gx6mzokOnEkRw)XgY{Vr1J_mLkJ2awU*y->woe-GL4FKnDfMU{E z=|m`@PgG;RCB|n44nqHXeb(4rVr=g@@eRBt?gXB&0ah!hKkK`3qHJqrWi?e_5AWfT zrLl~?S_*JB(~^0w_^B5s@=pC1a^q~LotQOfH5Fu@2A>XmzklH|oQQLl`Hhs9cGx1M z1#DC6H);6S40sEZtpkMrc-PPo@5D#SdYg39Z4Njh9@XN zXy}BqMrimkPUHb1j@?@li^QKEP6qnXBbbf8Y&rMz2a*!j92~OS{nZr^8~_3J+uYUM zBlMR)SOe^c`qVNM0JejOP}_IQ;2r>`9MTS6kr=% z_sh}8I6LvNzF8Z?fp{`}>hS&kMI6Eb;7nNTu*qvvm{7JzGH=Z49mXLHH<3H}?CXb5Lz@6(Ian#0bsJyd0tCAD;Z=ryCR7GGq1oSSC!3l5Vir`W#*Afl zxRhGnpjcaL=9}trk#PjVK5u6F>Wy5{$C5@IeN0_8K}Z*L(E)QY8Zb6}P*MA@<(((`GUH1BzgCa6f9{FamaunFWLltKXi6p}}Dk zw%+_VeH*O#jvUy3DL#hEzC}Dh@WwN&T@-t2(i(xJ4(18c1s?1RCxP(bh)57V=C@V4 zBd~QOOmj?iLupZ-FumXn?m+CiF<=q5McGkib|TzrNRWqsV}@`kJoKLt*$ee*!^PMS z5RUVbne!@{k-WgM_M+es$(D`4gdXHp8VECC)?89&b8c<;oqOqYp!oM}l54{SWzIoA z^tlG34~BgXbfJR`oiPgs03tp1m^35`aQYDb#b(7duT&=ubI(5b&_!vT9cSte@Sx?d z2PD`YIavPqoX8UxeK~|lON4{R_B>;__1}#33zW6Gvul(O&4Ac1FU_2#=(_NV$Qr@9 z+^Kv$EVB9F96!2aQ18VV;fG4NdVyoynn})UKzbj5A5?nRe7Q%$9=Q9_VCDudXkh`H z?bSx8FAkLhJGy~=BDv^7{pBs<^yt0aFnMYsmJz>zYb4gBA6Sl@ zhWX`6_|SPrBZ@O=&TeT?D%trF0x}f@g=UciDh~brSJ|<`d)^kDt+x#&Hs{H;Z zcAAG>qkYu^J%?n_dN}}^BkXu@{wFYZDCR}5KOtIipj;~h@Ros-)HvSpX zASF01&(w|?c7uE3j>JeXf&nDfOl&ONu7_QwhCQ)ugJ{1U?mS_eYxev6FVgU~9{O;} zum2Bg&?U87gzp1$lfk~x7%9}iH7IM+hwj`Pv<>*#1LV;*R^z)|kai@};kYPO1uK33 z_%~}DQie#+5Ww&UxiKxr?(>M_Mxx_FrTM2k!QM5+TC>spxML4^fO4YXqO2d^(~Uh9 z_ZSQgogsspct8Qo!wDE%Bs2H#tKgYbLfBs_%6iNLk~@_gj*D|GCF89p#Ayl0(a^%< zqNm*BuvY&8w@*5%qu~L0%fF^#xFC?D+qf~{Z3;4-!8Tt}Efw6W1%>K7m|)Nh`8XUH z=18AI2v#Y3rL_ZQFB3SZf%@M}DNfYAC{(<)_nC-Eom7Y;Y4D)~*M)rp{DE`MP@eZ4 zpScdq1`d=mE#L&kaiWf$;G~7Yr6t;CAt6*aj6o;4|M*Yr`h|tk;^Scth@kvemd~fk zJ=~uU!gE4Ac#=^DFT@evKv*$D!f~Dk4~TFhzYB#7ZE_qKl-4wsn+ist45~t-<#cWC z;jG|FA$nYYm4VHYtklV~0NZ1`3VJg|*m_{aJr4FttVaYn5V*sAU{2Y8&vP+A@_=Fn zx{oVo%RSn_tjS4&Mru{Zok3X}z)Z{$&Ne%7j|E#aSfOS>khr|fOC_&-0h06uJbMJs z-Sr>we!Zcm;_TvX>+Hlj;%%U;-+ll<<;0oSY(=o#!FO!>FV{mD{RPY#@#a%|U+m`T zO@NBdNY{P1M|2LP6T>(lJunlE5rKKH8S)Vnsn4H#ByLQzW%IYk27puqNT_K>k$6Vp zz}4wCckc$6XD5LS9T8KJSojZEkwh}QitfgsQYl#MbcJhRqS>t}zT}s=Ee6O9@S$-f zAdGux&htU(WP!6p@CIiPsVTyuRX83F++v~q^E#`66`utW^1gxM1>2WEhNceFaEF)@ zKZd!^F9{EIuy+AAXsoSXa70rZ6e9^|M=~#7YvVY9z^NWsBNOqqLIm{ZEyxCk`Yyq| z#-EnNi9Fo4^<&+Qvvz$V^I57Bt0E-^euzYtn&r&*bW1@JnDOK$kvRhd7dE44eoZ zaJm7J^(U*Wp<+x_R!o32`0@m1j|(mQ2PoDc;ls4fJAgtOAx@%Yug@2`1sULk&3?`< zVcP@>#Ep3nH_&=iUJXwGtjB+NzZ4@E6{or^%f`c)X>=?}yWb{y0!QfQ_F!gG)lim>4+j|gn; zhxZ`r4%-I^*qu%&LP!gb2)eALM2w8gSO*C3z$g;}rIkknJ=O?aJ<6Y0Blx%Rh@j6J zVWRTLTODAhpTU}(kO_M>ygQ9Qh5oeFADXrx(%|xL8Yu#*&e*G3aPt8aA0Yg)yOi?P z-2*Q+fb2|RcC|vV%Q|?)rbNcgW>DZ*Jw9ZM<>m5Y0OZQYy=4Rj`B z7jVsmt26L%FNg(66@i$SK-4iqaN9ofh&#|dh7V_4v?OXBz~zHh%@H`!Z#=@e5a}>` zM&RQaHZ8q`z1^}1M2q%R4&fK!&5H1WCWbd@#{tM%Fc}Mkv5|xR5y&he$cr3AXY&?p z*^S&G*l9HnsLr5@`zrL0fOrYju3O0ln;|6L0p+3gc}1K@IA+6CabIK`5lmqn20nPi z?818XOdvx+<$8Dcf5c@C_(ekG;%be%-8wr3=gWABJFMw@29#$?fFQA}t}GEl z$ur=Z{y=uxUwejDQxX-o3FYM}|IHPExE!nn^|?t#ydqi>;X+g|5-GI5(}^{QRH4JN z0bnK20qA zNy4Q&O!LAzb6&Arh(WMNIe>^G%su46qp&kWOMpFe4R8zIMBvgKf0zq<#@>CHKrsi# z=7QSLU}9*)D+Q?dOb*`@p>w!2wVgKko9cnAj6=?DaRrdueh2Ai`l@CN8f) z8G<(}`5B%$Im4^h-DK$C)yuCKZ0!0s&Q5Xub|lEi^-Ms+`HwVM%tUP zu#AAXgH|Ylqj*GO4Upqe-#r4@NP^gg?%EZt(3P$VI7&(Nsz^RszC!Fw}LwNow=yEE!<2>%>jA=nf^2A{3pv4=IpE?yzn zR6raJUorNwgb3clD+HSoNWh$}i|L>T=tE(0wTQhuLa+_d#BF%Xlhbp$S;W>mK?5;L+ zbykl{odFNZYTJhYI4b4>8&s?Xqc6L>6YHmwf&hfp=AN%>{KGdGsA=hFn&}%&o6UJ9dGo~h9zo2UcUh zx_sD8U+&6@CZU*BLR}86lRa+zM<~`j`LsDounrGJ?VNx(>!ZVXtG$>ETur%zc^7Ee zYY~E@mAjdyt&_EOI1%1T(uQS`77=JJ08gcahr{_W?H~WE83wKWy4sPHaIM(zFc*71 zeo2BPL0DLr&|TOvcalO@1J;g;Eqc(3!^gox{s|0}a(8Ed^(u|putV+AnL zj0e2mzg(d|uwZ+g1_zF5+D6*plpv^;Xp;Y^s0l(wMIe;%mGQ+NgEx*uK*xmt0q@9t AO#lD@ literal 0 HcmV?d00001 diff --git a/testHelpers.ts b/testHelpers.ts index 7e44ee6..f5543a1 100644 --- a/testHelpers.ts +++ b/testHelpers.ts @@ -23,7 +23,7 @@ async function _getJava(asyncOptions?: AsyncOptions | null, options?: GetJavaOpt //java.options.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005'); java.classpath.push("test/"); - java.classpath.push("test/commons-lang3-3.1.jar"); + java.classpath.push("test/commons-lang3-3.18.0.jar"); if (asyncOptions !== null) { java.asyncOptions = asyncOptions ?? { From da77b89f058234fe1e925e66a730ccb012b98afa Mon Sep 17 00:00:00 2001 From: Joe Ferner Date: Thu, 14 Aug 2025 10:05:51 +0000 Subject: [PATCH 47/47] v0.16.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ebd426c..8f73dec 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "jvm", "bridge" ], - "version": "0.16.1", + "version": "0.16.2", "engines": { "node": ">=8.0.0" },

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 diff --git a/test/commons-lang3-3.1.jar b/test/commons-lang3-3.1.jar deleted file mode 100644 index a85e539b175b2f715f5328ccb11684173aabd3d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315805 zcma&N1C%9EkTzJhZQHhO+tw@F)m?aH+qP|Y*;bd;<*F{Tw`b=6cV~9@^lqNamw8S` z+!x=?^TkC(sK|puz=8b7fz)9u{GSj1>j(DlT~Sg)lu=emidp4KaUnQmL9-N@Sua0r?hRg$Gl8>%-qz&rzD;D|9jEVY=R} zvhu+6th;2rkkk8jvv7~9fRqCBhUJdsRmg;OM<})C%r-U4bisBgZ$`rrjX6cS#==xQ za}54C{`Hm#{4u(2sG{aWBRGY__!L{4=1=Te!hJ+B0qCOn=f-UdOXA#zQ2SEq^pKbE+@A85cI(Ke z6FaghkG(q(VFYq_iY{9T;()EkO@+5~RbZq-!lSztL{oS5d+?j0dVV%)7os|^_-Yzh zYAM~=tYVRzC0911K4Qg%oLZJcX~0(3^;4ZLBMdmV*N+f1SuAotF@1~J0a8_QcyoFv z^dqdyMR&Nevr^8YB-hGuwIYX7iFYFZ6X&0u*WBw4&nM(gdH1e|&v^3zzm_;hXi1JM zYZ@xeR!>$v+!dBdXBvIg;F*W+lUW4#`R{u#UM29yh&sJb$$t{KkxXVn!p>Y$i0Juh z=cm;e6QN#6kI}P~?u?XY9)>{l|6UL4j?t=8azPrIddObKu*PRbOL)Ma>3rO zCU4~gerCnfXZ!dpkAy){+a@ega(gSne2;}z8{+}x`XxpD#DZ)aOk#+!R|yA;A%y%@ zXSy4jn$|LX(%6TO3nyQ$efzu!LrIGDQI{G;do`PZ(N zR`!1M6IynCa!2gR9F#k!%kSUXalE3ed{$6zd>L+m(lMAtAE1k`eePerIh2D-75Za6 zCptPI>|l{2b|G%9ujQcMHwjH7qD_xJdu53C7{&$qQ{weYgLVTA>yK`RpBnP+*?X85 zDAX4;jxXUmd;pLSJAUVXyPp5T%B0Yn?C_WOto$G#wEx8VANVxgZSCFu3u>(%tiQ&} zituS~de6j>Wi|>43WZsU1r;m=Bn7MtjQ+S71!+WwViGK_qSerJ=u9m}^@v_=3sZqs z$;!7@JahbDm=4g|%`m&|>ekIwCdbxj!<0O?-E3~Bw9xsR_raUK?mWNQKY4y>{65#w zW5}Q)nJI~2^bHi4@-BF5Wn24H42NdG+$`&@TLS)+eFewqreU3&+JjC{nGrVp*?mu5 zY)k`BCVU1s5S~O**E%JUb>V*Tx8I#uGExC8Nm}K!?t#WNnm(=eRZ1WP=bU zzH?_(tS8N09;UZYeC=K%6+hRZYhFXryIw~d9VYX@ih;qn`f7!DVib1y9;J6BA+tEQ zx=pJ&ep|W9{=OBovcXiV64by{>r`h)u<9?l?6y# z;{e90cfR;LCd2hjFk6=mP);p}YqwOG{f@)gS9@h#p#IT_{iehEJ`HRe9CCYqg!XTx0gbXgec767JZeeP7x@sv? z8Mx5b|ISiaR%nWvSY2&r7ezW(0*B&?HY+lI4eQzTyjSM~$2 z$8f14#8bxhcim&BcrPgOP|mLfIe6(6!)ud8A4I_AJ3)mYhQvFF;JhlGVBG5`PXP7M^3Vbbqn)Tq)#nwF)X2p>$Af3P zFWAiWDibm>uzzNIoUaIR=CEVM^|NinnaYy6sis8 zGU@6RQ7}>uL3%SqX>liQ>_#0Nzk*2HNe4p;6|J8Zd>J+sT#upqc*!!FC~$|KM_-}Y zd8vCO=t>H<(IDyPNDx1>@xb$tZlpqgcAUZc_8MO0fz&oF70rtURg~pYnIQ(xT-^JB z716%?!47Z;;W&9Ir%RXTDqTr=ZDC%wNK5$bGgT@ z3$yOo523F_lgUI;+4F84*?LmR2mO8@XLhl0_9aly?>m~Wvh`S*H}LiOGrZUCHk5VvWde(=1UPAmBw;x@Y zZ*8Utd}@f9Q-*o0fNhXK-~13_10+Th+dpZCdzi_Y)~HdakWPqiW|?o8E{t+1BkPyK z-NQw_azaG%A7Mv18DVdhnn0{HtnYT|SfS10x8_O0I?6dTa2yzEK}e5vogivKhFqS6 z8fNL?)C=DUN@4?Ds?7YvG{pGgrJ5=7;Mh|el5H{L?AG8%+OBsJ`d9iBU#Q{52}{cx z(hFEd@i{(ke}6*-QSkyRb|>|tXWN81MAJvg+G|K)kEFaMfUT^Ca)hZvy_WwdvyKh! zLuvC~wis~_KO4#ZEMtKr?;dPOl;v(&U2=>#5~yTvUQc5^nH6;da9zQ26w@R|PQ~ox zI?1`1%|sa2x$Ut8w^#+4Q>5UUyF)Sdin;*o)(P>FHpf|URytk8)?T+S)eh@-!y;8E z>aAbSDY{Iuxs%%;?Q=w*m^>Xrgee5#R!VG5%dY^|Q|X&n8~GaEIHRHRB!fQyWSNdi+)Th;eFWS_vv__H%->xE=u0-f-Qg*md$!2v zb1_CYg$i%1p_uhkd&jFFzcyPpBYM_lHFDL`S(+s(zJCc(A4J)1$#Qa?Sh)fNcL zG0VEmvAiGR@cS8RQy{vRK-faUwOtKMI;49K2{Wi*AK67E#BUD?@j4uu;|2M8$%I)T z1_TdjKhSZ$X6z0ml1)KR3@IoUsJthNh`eu#nE#`kW>nv;5vY8~{?lJ;nA}@q*!+bY zjXy04C_H+~;ZI~de@p$MZuH2G7&PlAObX|%6B6Qk2hP_m^Fc9$hg8HN5cjU}5e8&F zSYRo>+wXyr-seTbFkZY(e`$)Uw|Su>+RIzx@F(0=xl=?83Uji3;rh}W_L?W!Vdhhy z6fsW`8`-saVd^VCaN_(R{4xq@-!sJAUAskokw*Lj!R$OIjrWyVF`T~_fauBgD}TV4 zE9bTZ|09FwU7I&1IQ#Q#05otIXCRy36%m#|~ zZCNESd~Gf7X7&a(jor9i;Fa)8M5t0lD7Uj@UROr8Dy2r24&E;-jP3X3H1k|9&yrN@^mKf~l^5&H zPx6;jVM~UArcA0Dr)=_~25oK)*nZ()`@T_>irz2-mB+0BnlEd4Mlcgo@pZv0440}` z^&TO1!XE%P*HGBW8+Wn^h_Jn@ugM#TOgNi94TXPo`}-*etAT44|Eu#J(+%v zVFn8vd2*%xBx_h?ej-h=5&k)blOE>>0jevs*r2A-^`tC@jEZyaG@CYRx16b>DkmiL z;Ld6R&Iu=HmF^<>@i`NKSb0yq89}#`%m=S2lvh`foUTT53wgXr6$XooVJAii2)S>8Qr|F#bR_5 zw8`yRWR6vcuFc&M7m#qCkD~#KnmK;=x5%G<(}a#@H7Nx!`MOV7fsE`%7&;mNI!7N{ z=O52#61mqV;F2+7%{+e|BBfgJvO20QmfQsyaaMma6uas3dDw20vcIm_ zbI8+4k!`oo;{0}pS7-WdH`P_8k~=n2px(k?6`-@e9{{`^7?n!#=S-aT7)4}|!%(Dz zYp@Bak$jAusg5OvsM4yb&{OOJ$nKpD`K&&6`Cym&cpQ>7sjNOHj(`TWf06Z$udN;< zCv8&7y$`W|vSiAWg^-(Z1bM~pp5BFJjUU9V!-Pl9h$C|GYiIIENWKzek4&iozX#*&lW9z>c~k0c#)ae&6aP zG`f>xAsw_cPpLOknJajhngC`5VeUhJnJS82qE9sdE6i}*cG(VEQIioIX6>KdRmoba zk{P5Lq;aJ2b^V9aD-NJx+X{IjmkY@zTiaiHL$!Zn<|z)5SxVv(ecEy}R)H&pV>+XQ ztdn5(A#sBbF)kG*@^w#ap6W!<{1Onm|g0-2#$? z!A@Zf`9<6ssYGgo&LDV0c<&Ue3W7hZhz2UyKY$y87>HveRs5+OmwL)A@&r-Sz5%bD zJ(Ix?eIRTYphXswI>|CjxYB?kZC*Vd$AcKF>O&8jmp=C#v{f>yZ*glj!*;0;-P&k% zcXoF)*MVny^o@g19$MG4wmKt;$-bCo7*F>6PWLS8n&-Mf5|e+5u{-T*ndHt~a!Qv8 zDZtro!0J6kDMU~wn!y5tPM*On!j%dw(?AWAB@VG-Iv!juD;+<8F-aJ;k2C#^Sd>x# znSLMAd3df6KW^B{8@6qLSvK34wAMeBBp_Dl1QGO#mrv$aT>SlcfaH=KrhUL4C;0OK zDP`bLBiYsg^r|oSNqPThfoDPLP@)xP-luWw)lctU=t8OWPT8Jyv$G?TG{1>~sLv4;sRTX-M%p@V`knAWp&9Ho_1~Xx_i2&ce zJHvNZhOk#1D0ye7<^7EY0&6`HJ5~$;?1XbfN`z?9@+ycebHM9*6pnvMbf)rTkT0PN zcWK`XjYW6V^Dr)24c$pxA3AX-*{vcezLG80ptj;^Q-qEl!bS(g=)PJ;3?~aF022T8 z4GOB{j3v?i)7FeU8^<5`Mgi((vHFeoLf35-WM;8YSnQIRbEALqn-KGKAZTNdRqhfe zgmoiBT>uN`(49`7tv9NRKdXyBuFEA=+!lk$ai&4plHwQY)gPPX^>4gS=1a{4h333) zbGQTna>l8BZnC&^Fr!0n2f!rpW(*%KH6^vUCVVCO3E3>wyvs>NqR=A3grw~0X`}Se z0O}pnby?*&LAxe@tVsBEMTU10NI#f$50wZ|n$kDk4x*DisEQx4VxgricNQ*_pYEXQ zu+yg#5EIL8R3D*AMxfAyo641G5*p>hb2cfE*#MZCR&$F6_rhEb<8m&M<%id?nOE?W z5917x9+_q%GV*fpJN?Z}M12Q|=5Z$eMEmUOIJ*&;#}Wfd8L93By3%p1?m4sD0662J6ua^S z*&MC}7PrzTkmw}&h>EelK;nBH;{*XwUr>=>WwdYf z5~_txpEMF)KuKl*4KLJLS%(HAX$U6P*GNb7vmx4BAX-;^=#DtW(-49`%E^JaN_0Go zX|C80*aLUnA7^C|k76uX=5Z)kGxQa6#3<>FMiDr9k6pBv^(Oc|kWTnRMivI5GiP|; zaK)XUP;%}QCID>u%KkI1BOEWBXM_=({2I+eQ|4ncjfW?3{iNQz!CtY1@i@1$`v4&~ zYKjSD)cJFe=_-%2T|S>3iqpbv3oGgwXT_{UZiwcQmJ5q6%Nu&sC%LmMkU%7^53tK0 zqFoZQY$HMDl#o<16D*QyrdbvtY*lk6Gop!vF)62rXN!o^IRjcNGFlx2toc)%Y56|!rwCx{!5_8bvmxph`5x%RJ~*n zdY-tLz_fYT9GohcIEqks(JQ6x90~Epg^(SCe2G$pV{d8;lpS}KFroOl9K8#(m2ZbB zV89kh0}osYFS8pw3B!egzd_Ado*bNIj&`&RX~0JSKwXY;|ERYKqH#tayKNgM`DOzMsI92CBsIP z0gz0IbPN7;$*WxuprjD zA*r|XLOH@Ps6%(c5_?No9(~&C=5=pqeV#MggpzVnMPFddLL!7|lmzzsQU(AGN&TS_ zhC7I|`jh*mdvFF^B0pBU@wzA{TqZO3fmg!R-mgHQ*lk!f=jr?nYsw= zOp>oP{nxV5ca1a6gWrhbX*(s!@0b|#YqY%%WSQcBkRmmJo)q;%Cv4ejxj{eHgNXPY z<0NB_tXp=46)6A+A*p5f41_%}Ze5zM%Vy1s2Scwd70!8uuWNt66pvZv$7M?{ClVOS zMXKz>Id~D9ETe3X5oikP)o0&=!cKO}80)z|q_HY>_$t>Ii(MSW2gviSzEjg9<<-!5 zub2FR7Ak*ifvhV*q04-0PqOQbDe0b;$>PoR`t|7xrldHTKb2}g8DC>NL&5+ksEGUN zS!=_c^1$68vB)kzp-O|Af5Ji2c|;%=*<>4FHAu4D?TV3DckwWu&;5{2ol1Z;&OnB& zCB5;)>C715L28{qLXwY|<&T6h#ctXr06%%W(V&tC9)0YpL#93C>O)kMays1V%4wgN z4kyAyrW#F4^&)n(-W<6Jiz>ialKZfUWfGAnqN4=bK{0eriILc+5KzOZuPPb>&P=#~bD}^v$-eZ5?XGLSzLu zf;^W@W(#p~DRwL6l45eooYqV4fkJnV;_z1~oNtzB{Z_;*6{6@NNsh6xKSGPW4l9ge zNq7o8FSQgbNfC|@c*Soi9C{};3~C|#HLVc$kO%Dl)Q9>WeJ(rk*jIfu^!=vJy2`YsgJ2}@7}=b z&OrTq*iM}lV$i<&(4Ew&#+Cj|c(t!?`0rjob(;D7^_dp)GYI0M zD`|*=<=r25pwo${{`T4=k&d~|gIQM!$*vO5HmLa#KWufkNs~W!$B~~*_e~g<4|d1# zdx2peao4fnJh?CkXeYAoac_fWAW9uIdV^x%`tom(g#cW_6ghWsCaXgnv3AHZ^Eerz z)8xcsi|^_+_hBM!Cv zKMa(t6Jo6tIU-Hx);y?}AJCwq_mejWegsA4oiT@vE#P}bS2o+w4&k{UO6z^#TGB=s zk8uX&)65LA2R`$ZmuQx%H+SYv>s)v5z)@-`@`Ni_?~0S7rC)nYeCd&`vk`e|$z{PG zJdkG4B$9!_m#?DZ$;gR<_lSj!W zD$ZyKJ*+r1?$DUnrYf#cI2Z`wgGV|DbZ90fr~Trrfgm`_dedniWw$ewnrZaI@n5)W zq(EaS;hc&~ELE&sF}&;pjU0dEGb+HFye;voP}Qx+bums>)h>`A@FJa8iG}!M1BvH( z@c8j}k1V>ExK-nqc(BZeFm0Ugl(Cd37tIuHB_I^z*k497i$u{D*f=RSuBm4d2AUDZvM ztEQQwx|!6(mT4MTP|C}UFP3)VvoQ~_)v_G+m3Ir|vTxwvUJUBBWz$dse>X)>(#S@& z%LO{+TqAUk@@1hQflZxnjH_{FDBbxs-l^;FM&@TM&(}=E(GzMT4z9!j2-bd|%EvK& zyf&HB2i3XxhY7FoJMPVC6K=h@6(0f~A_X$)$~!N1%O;B`ARZ}AL3ZU*dL*nNuQ2NZ3kp(h)@50%DZXxfwI z?!+YT%kgbhH$c>ly6xfB6pXXm3mb>nGoaOPGK&cDNxHTXTfsWPSwU3H;jvgFMieYk z+S}d*f&R~!jd`UI+1lUaiAPirkblPUBpp2*{#(eVR2$%hzJ|GN9?Q`t@B+z&iWn(I zBEx0^H~8(cizg12tId|Y!7N#5bkPJ^hFqGRtjr;+gmR{P?jf;Hd~*@n_RKCsvFSWj zd4kTcI{&?v_)R$L+RvIoK8&hg_pR}&=vNB&TRiIO-~4Apd4 zVpyfA7mgv%Qj`yaO~VjRw3{ghId$4S-X%*BO=x2TwVrC|5*#+=9Z&tfENL^v6BA4& zbJ(4wzobB(-KaLF0HbG~?P#;vhaP($(Ws;V^>m>4@I9PZNSZ^ZI2>5xOADAsNdhNk zi?U7|ujb@j=1B6WK^(mydRR3fVMd9%rrCETn3py!(_ zP_Vz>X_@I*xl?NvR|O@H+we}vmVs^^E1L(9!(F1YD>Lhy^Sz^8t;n0$(p#)BHja+h zC2OimmBCSa-luC&Yqq7cG=|ouiN}_;lW9f0Zm&_Z~)t0R`9o69^5p(T?ZqxI&vu5RJ?>1F)-aKe1cpVO3yY5+g;&KzE+BVhD>X^(Ap zu{^HZLMt4XB1iPC60T2XfyX9>fPZ-(2e9OogO0~p-)Q;tm@s)$q#m~tU7kN(@Jt8*hoP+DD|fE5WtlWlq{We|rZmmPCE%w0X_q;8$L~>uTGQ0T^mH=a8KrN;z7@CxR9T`R zeih~y3-CiIhbuK36|jT7a7djpjYnB?A#S5xH`rFVbhCQO*k@>%u=N%li}scsoAQ<% zuIB5DbV^*|yxTWh=peyM06JZ~AobC61S*dKcqZRZir*vS=JxOL`sxp%UkZW5XWoRu ztGDQc!XtC;9|Zj*Cwh49A81a$IzqWU2!=C&#%C{_fyIYxfz>8cHm|=UPvqn9bJ>e^ z?-86zv~vYb{AB7m93i}tDZ@8 z4%P*7tBKetYUIK%BN&mB8~bKy1kG=uP^Y)-E!CUcjqn2P+qf9;(9oOT3=xH^<2PAj zRcj*HJvliu&Yfh5tdw$&s`IX5W%3$q!IGW9aRg2%vvutkg)G7L667ev6yjeRkyx6U;*~uet`1ye>@&fh)$( z+VIAd;xd@A6X5*LeO(Ajo{ibLGC^(t=e{k1K>c!)Ja2l(4sDXSq@ z`3@d5LR6A~pJz#sRNz~#nqQ;FGG$Q26C3f4yZ>#2x_ldB*?cFM~@3i z`|Xw5Yk4R?@<9NMWbj%cWI|sBUApjx@{ML5qD;2nGBUwle0<;#e?%|AyNk{yaZ#*; zjW}3u$~j4#;kqIOexxb#TSZ|w()F5x^9t~t3 z5o+P3e`MddzlrYl9|}R#uSy^WRn?3?nh z5DqrP7?&eUOcM=7%!NQ#HbX5AhjPeK3&<$HC2T@c99M<9d#H8NfwroBH$rbB06p$( z9)F~U>CgdfE`(F?gH-S%%+L!YBE>PX70P(7H0;P#s4)@GQrTQ&9PV9Ps3WPATE6(D z;;rw9*{lS4Q%H{+Q$@DK#U%KAd3%ifhcKWTjXr+hH1Z9y>?OM83vFrN66%j;ML;1lnr~{1EH4flexil#%sg$#o{S#n;lILZ(<`z-LLXpV1(;%bIB-RYS_megSGurm&D?aogEA}FA&OgGY>a%~Bu!Hn^uJa`DY3^y{ zq~P||)^=95lRBR8Q)eHHBR@!OihS(71_yiR_ghEwTnb_l_)`Pty6NRh4!Cdh5LJ42 z^zj3Tet}sVr?4Le{m;q4gbM0@4ipH83DV!Bj(;U|s9U<)n%dj?n*K+I(|?;K)M^9N z(XBB8vCz0eDNzLyszJ(ZsIInT{;&#Ax-?T7u85)O9Z%m=|F-3QQ;mQ3g9qXT*PYyg5+odvaRrmsSfabn3b4~P0D}%Lnri* zP3dJJq6SB5#95=_oDD%Z%~Zj_Q?15T=*Ti7FjNI)*p!vvaX)1qC!Lk_uqAYbze!Fg zpC!eVbB(v|XnCjb&~Ec`VGPbHKT|zb74|!kp|)FEQC7N2tL74?TX*QB^U^nnIV5wP z)CQ8mGrKAlzLJx-)ItVI4_NYA3+R*_s;9Vl^EjIyHnKRK3JSRDi{y3;4l!|fzCvl5 z57R)Me7TSsPbpST@m(jo4gYQkCqBS04ktwFIQsIG3@ePsh^-wBJ%&QD+=O`+zs;p? z09kDutPRl{?rsBNL+Ge03g8la-*8$^Y?7rrHdyEqSj9$w)8D&ZnE~e{JU@~Uj)D4n zQum{7scbWIiniQP7pu;$D|AO&cDgG)X^rW?7YJN3SFWtMyg7C8$WL3qY)&Y)xLW=4 z?s3O!3$NU^&_Bur*ZVPf%SwO6m?3E`(W${E%s@L#>2>;r8&GIyqLhvuUkh?d!^o(O zq4b1k6|{1{ksqSQUeg5zpfl@Q+Bm9$+`=}k?CdTrEGZ1NbPLWHR(lcAmURxwR~;{1 zaa2@kdwIpP!Q=v!m?s!Oy0mIC(y$V{iwQmYqh|r?AERvHk2hfbV({};5+vJMODup^ z4~!?=3N~7y3m%NK8)b0FpK!H?(4_HNCo?_H8kFrV5vGD{~4%N^{%Yr@1Rg0E1r-HzPSmAKV_m0Hrz_O{=GYJ9Lp!)qo$oBZgif>vk}8`qUr+g+c!U z>=#5Xp(H5! z&u3T4r&O)^@Wu@DB+$}`Mrh9UXy1ngyKfu(KlYH9zHl}ZNWWlr3JSr;B3)Cm;5dQK z5Vm<0KLmlv%k<9NqP^_P=#c{B79O`Ji0kA0W*L~$-=Miq_g|WTABOeYN z&c6!2rz~Hf!7<3e_{kW_wzVJ&;biJ?j-^#9F{EGCkkWz?-{aym&+Zm3 z*_5VHGP1oXG}TDDHV{L!5!%fzMbQDo11!k6+>sH`79;1KACZ)*-m~RmC-mgS)t=` zXlPZE<`WQ)gQ*qg$xqmn?pcJ3SJr6nZ2EV=Rm8CEi^iNu*75P6CgoA`u}D`GyZF+`_CL?b$2Ic zZBuu1oBzsRjMa2-L)XLzWKzshY$~;-)dX{B*C<5X6p1bf#>Slwzv^I&3hM^ z<9+_Qee=~DfIT48gD1{hR{TpePuPkqL-SS)fpnUd=7-7;foJC14O$`oT9d?hYm6Mt z+oIrfGmBmVs6Va5{Ahzo!P;iOh6s%3F&XG-?#|>8pl0tj>>vQB83+!q#jlyAiKS=u zOzDg)4d_Ss?X^|a`q#lmb+`yuVFwFlR<=UQhX$YVii$DE^@@I%om8f#V z4yG^dt%CWvWfO+{O}UcuZ?_rQ(i*JYHpsk2aSq5lhcT^Ha(Ujq zaa7SRIwYHiS|?vybeXa>p-Rs;FTTt!OqbZUS%GPTg^90D!wHX3 zdmke>w~=+Z5ajQXEHc16ITtR>ZR%Kv!7{GR(w_a|^it$gQ2LXQ^66T|1H6M_z~oxhwBVVz z{n&w zN~h`=imMc@5#Q!@bITBoW6=9i5z(2s5&W{O8E}#NQn9^*F;CCgLk-^UwYIX z5#_T`VgO2ltBM>iL#ak+3I{ck;h>gKn-MD9GNNo@b;PUOrrJIftZd8Tz4+ukc~+1@ z64O$rzue;&gGg@L@|^5BtEz6RttNL!P>hf?jxk9bGq_IG54>a@YYDt88FCuqait&l zx7~yN`|XwPUKQ@UYG>DK!aMM{Hc6*G6YTWfNk5j7BAieho+7fIMxK|^g-zfCDS-K4 zzhol=C5o8g9{PX`n<2U_To}8`2i9^2*hTNDG=arakAC0Elott7IVdH1S_^^AO5PmN zYp9fTdbaHDJ6?rUp+PA7`4TVKoLjr@=zm~QkYvSthhc|Qt00V{%lbs6vH9rNC`{;$ zP3%BO=s>9`1}H&UP7E{X-H|(7yLb$!KZ{2>uU{ede{n9vW9?`J$%fuSIVjIl^PWL+>8B?_w zFSV2DyY_RbKWT$;;=3}(c7O527kBox@R{WC7x@2l?XBPd(l&4qkj=l_oPz(Ku3f^z z^*>iJQckXas|NmaEkmK<1h91cFIQixspz()fgyM!+hn2rgHlm}R#u;+C60jXKurFC zV!o{8PJsl0@%s=$h}p7ECF4pG0T4+Zt7gM;1cAK;pVAVY}_=117&b*xck?@X|Zbow4KW zjo8PP+7DB@ev?bS07p%GN3lNPT_|Tt#X-swjLHXHF!+AU_=b zMl{cTyLm+X>niFL;XId7-9(E6hDjoWtQ4;06$lzltV8d=L-HM*6C&{ZJ zl$JiO2hcJ4$twX3lY};QH~3-OpQp^F)c5gA-eA0XO5*!ia6Q4SLLq3i)E%*>6HcgE zQsdMWX=KiKU{oNTXac`hlPr^Z3^tWY1-NXO86+>XovU4uqe^!|-rV|cD+(sC3x4DM z_D3c6m&IbBv~}OZw#+oslls=55^P+KV~OHV2JW9aP>=G0_kE4><&1(6yoY85qttj* zL(eL&DC{P};}g5${1luLjx56|!RAKZh8^}wyg!(oHb$}e))uQ!Kuw4`=HpO&LQgo; zNL#Au_mWCea^mz4eA&O7E*|F^L}FXRGm|&-JD4Kx<1-XX@$)HpBvO8l@9xC{p?%WW z(m)*9lE!%dbNb7~-z{0CjzE>}kQj)}fMYy! z-8zTeFW-V9=U%j7Ue-R9GHnXP!qE)R9$L>#q@H3TrSpkevZ^d7Qf5q3`voad7O?HK zsdn^2B~@^Dw*yTw_c(<2T!d1p-xcHrJ(4+KU{KH&eSL(qn?C859u0jcEt z|1;N<_*>QU-?lVT_5Z6@#cL;*dnfE~P+q=fm3UOHDni_MB2z@fU;v$6Km{;GTht3^+LtNtzbZ^a5H zGsS_^bxwEBAKkwJklAQv|KC4cKr)6M8-}c`SXrwxH)>2wqA<@ha`D13gKI)*$}!J% zX;qo@1iw>FPER|S9cwwWz;mK2UUJZL_SGlf*^r3h z)^&bGGh0!ZQDX;?-db9<<$Tl1&>fi8%36Qbvazh?Shljdde|17p|fK`i5SJj4u-oD zc1g{wEz4B0>w@XX&ZuR*e$)80wgSx9=fVcsnF&(0<$Z7B$bf@Z+m~R$R5sy8i4H@b zSukP4Rbr!YfNyDo;^VHf)9r0+F6}H1papMB`rgY+BwrTXxSVCeLC9pVhGlbeZD*>I z#NAd@?8gZ%y)(X8Mg+Awo7Ofk+7|azhZ%vNFfSKmMe-~;v|x0^-daiBQ z3^m4Iv(_Tx(Ed84L`d$$COT56Oq{O;B@p)WXRBXB-Q=i%3u}|S zn*i+{LXhkG!GotjQFRMH6J-p9;VP@xi-#)xWQu;Q_+ybOP1hs1GLMUk69eayK7tND zh=FU%5;y7d8><#A=3oMbHjaLJaAzlv1?gN;Q$!k)mj^{TnE=bbiIGU&LAHtpFuX6H z$Uzz@T7_5_Q4YH)2Ow{Br>pVc8!q&YX%dgjh?F9qn2rb~N2rp5E2fSWEE(Bho8+>| zLHVr+RL_#bqF`ssN?3&urz6K<9EStu=9rk3iLek1N>+MP?ch%1kXpumX|Ykw+tB1U zDyJqtJHbmyZ|Qwk6;S}Ah>2I8LmrHqNe>mLHMH)OViJE;k923CIG9Z$MP0&xlP<#P z_+?gPBSRGNEcM26B>3hEMRT7yv~c?^LIIr8*OmnBZ}}8qe*E(zY_YCJQL+th#j6|| z6$@#69bpI=ZPden-ytiSg9v-yIo}L)+4q=c4Rd$oBB8{~LGJry(i~pW3DST&l`Q`} zk*&S5T~XVOMclJ^NcA&_#nU)syTUwEEJmDk!2QUeeWu8vjA;~F_AkzIbsMe}xG^^O zr59D{)EcXry@}*%#~uLo8_ebsu@a*^#5*k!SmV%@dYQQjgV=PyrmunOt-B|68s>L9 z&^3-5Pxd!OSJ3IQx8qJ zrzj0wS^+k)kff4%FX954pnlm9W}-{$VWf99`DY!1d#i+YALPekUYq$LiEF?>es&(B zLz)t7jHOkz%It%H@xHU$asgP3YTv9(X{u6nR+SzcX?hsMvX>KUqpVQnA?t#xaTTV* zY)SACpP`EtBfmI!+5M)Ax4POwd)*Iwp%*7oxUrOdxWjuJ-8rIY>_di_EU;-W&DvDI zU+hQ2ZT$#_+nN?zexPHRe#77aX(#1Q8pMxz^kvr^g^_?tmJ-gwT%BuU$>5pnR9KW? z$*(hZGE1kqRKwC-2Z^R-n1#Y@OQlep51u?nd~C&b$S@3w+g#?*I`yasuE6hB0GFcHPjqd}TyUEy2qT}=N?9xUrCO`GF`uIjhO-y#H-2fZd$x(2rZ?wO zyqscqBlLwKc8h&Klpv%&mwag)s-`-ySEYt>JGV+hceka_%@`==4~9gIAs zSR*KPS62?o1~LMeaNcdJ~DWfIOl0b zq_vpxu?^@}D|C%}t3p{?Q?%o?d`$0(jEtyaYF<#J&XEC;@X2|V!p%7Kz>IN&6~5F= zTspTaB8DhO?OJiTfJH^VjQ&FUzH1jL z>g7oh+VvPn(#Kh1vMl-BTPy zDV)R}>Kodv2+rF#QQ^-b@aTqq%KCns_r#t+?kDDn3oo-jY7tiN;4G1Bl#4_-)A+kl zpAtsGk)Iky!m*zYKA%$!{et!V;P2_Dk6vW?bH|VM17E3-A5?>NV1cnR=9s}(oII{n zf$VQ96J8MOw0(iCd|$qpq}KV711Wh2I0F{H9SvtAl$*B)gbo)U>_63Cid0$h#@f&egTYV9*@$44<>2ylo<_zAXXiS2G0B`!-OiJUPBr@Fq+Qk zdzb19s&V)u%yB{;u(UCbG$8@EJ`!1QTrXg1NeLIxSq9oB`R+D&wCT!tP;QKz(EA9) z@I&->*TnAenAOpk)zd!1lsTvI<-+!{3rr$kuyoT?rrS(oq+RS(>CY;%R(cG=->`qvjh?5rtRlKw-NeKOFY@E zW8BjG%O)V%`O$U9krS7^J)yxk&j_@7vAWs*z-ZLo8j$ON8U95`t;70RyI+%4>2JOC zToc>aOIU$;(R(jylgx6uZ&74g1KJsC)@WcPh+aRzXff)uHJIs4ZWc#bgUUX|h(qI= zriPq16U_pxdaaixV44;dev6`#RQ-E|?+|x_S8N?IO!-6l%C#B#LR@h%CnI!A&_!v| z6)Usj$0}Qk#TKTdp{FBjH4=o{IAzp9_!Y^#fJn>xV~yQ4hiUU`WUU_SU#v5aCi*nPbu4AK*+1@yY1Mg1i_Y#Dy`q?x%5Cpiq;7D!aG7?CVOb~$|x8;ZI!W7&N!VK*$JGAS=52f>M z|D=|3Wumf%Ggg@o3RUk$#P;u-hGY`umgA@h7zu4;nW$l6W->Q}OiPa*OJ8nwG2gwB z2FjpY@lM7aabe^)rcjhjuwtnPl14?nb{ic{&CM6F?$E5%Xgqo|Ti0U>Y}2fHf_v66~Nvy<4{eET%iXh3p$*NUG9g zs`8{}x9teFR`nC^@X4l%^Pa zKNHIC7@;Jo%%GKn@IZ=v=xQ21yGK;Q2U+@%>{5K#i?z9cDvgFQfL7(U8F1J81TdMu zoz~v#L~5y)M7I5gtjALn=9{#ic|C3WD~wNJKlfRjh_7u)^st1eF8ZXPlEw;5Ts}8( z_Nc)2s9t@v{kMbntrBKQ!_+4SkZS(F zlDX*@R739(drfWUcKax@o;G%`YZ75YGg>>eycg~=A1dyps~#|JUNUQi^>0i~RZ*WJqTtQ@`#u9A~XxL61v20`00sIm;%OvC680F{cn%$Q?9(& z00B*#oMj{(A8793^?OWl?y2puNyjyAxDPrlo4gQ+4QrOV4;p-=pANBJd(lN22^B0br0Jy zl11`GFw(J|7Cm7o<18R9A#}^>Sg={d6Xii_(_g1BY%A`LMt}wY6)UqDNS@}B9Y++V zSxCKA;DYeMSlVqE9)n;4Fx|qN*>?D<}AK##3g#W;=(iXidcQJ(Ql;5oadd``0u=f^ zUS;U|rle22c|2Rvf8eiow2lNKH3fQAx1i710?dmEk*mu}5okG?QSRZDEj$ba*O#5F6R2yEIrmz>4wO!oNrLH4CU98_d2@f;xFzckuUfo zh1zt#*-i`{Fu=sq(~PBut$TV-dj`yV#5Uqm!;8Bw8`%xu-eTRLmKxZ%5Cd+ZNxO;F zK@s4UAzN`6nK1ktYuzpm6%seK9EEZL5F`-_-zmm>rx0GAuBLg)D-{5uE2rWTCEWNm zl@6oO+f@14&Rvc$RoCg3xfZMHXGn+{kq}4@d`ioa*y*Hci5>`v5#d~{?#^q^JS@tD zabEAb`CKzsxX(Ivre@Ho>@WWw+_QL6EL+)+Toy;_O3SfnY>C z(!k*2ZJbT0%|rezk52TB1I=z&U&{8W>OjAn^6kwx?ZGFz!DrX;!D@3PU+~*2{AG^L z*oE6EcA?L_pXuUdm#k)D!{mj7QHc|w+~VWSOAJqm&AQFs8Q+*Eovv!qudq}k81pu; zQ18td3+!hmpSnvYpWM!)G#l6jl^nX=Gs_@$-SaJx^DQsM6On`|yO4`+tNR!}zHJ;6 zeM_F71LTwzM7$tHyfD3)_G6;N-sRVv;43*m?lH$YLB5r1%x6uD*PW912tdtB>rt3e zBseydJ3$=-^e8frR16Rb9$n*22n#BWNjl*D=9-=$2c%x%;{>N8M!h3XNta#Ye&c~3 z7ceE{1>HU1NL?P2ElZG%OtQvpEQ%+%#^EW3n-o5N;LUQK4~37;_|emMV@pO6fG|}< zgss6bwIEWBo_lnOtC<0GORvdK$j_T##HGk#aX)fLyX_=P9S_-bauJ4s_h@6@`7|$+ z;Eg-v9I+BpblhdtVl{uyqcR0iGGlQ&5uhg^jdw7f>mDk=g&0>3$5x7)v!5#l6d{E8 zuWuoDOjRA*)OGQc=i>)jP}}(GXt+f}gf{CW6YV8tNE;qw)P)7Il(-#L6HrB+cYpN{)|8h|j912sd;LW6w1oCf~8nvJfG${atUgayL$JdBxs z6(0n)#4n9j8?t;tVU1Sz89hHvGjxHD?F)6wJj+|8enMam+Y2|naaAO42HfAYImEwV zH;V|yr_Q*A8x#gQ6vHS(nYELe>ThpSY{-C8WF1`g77>N}4Xu##5)x(sbSclJ@YGd= zRk+}0|IYMfX`E%4oMhBS66enaeywx#{}cr-40Nhu#X6J82PX0H5eFSeiY1H;(p5l! zlN%z8BXoT8ljxo<5{3zQ{`{8}1O354si-fH#(M}55b^(!f0HnDcKHv;{Xh9P3UxaN zLlYBI6M1_(7YhkXQyY_i@NlYnis;HHfTlIy8V03EjifwGCHN#Jt>|z{yb3O^QUe+T z@7+Hg4YGgQCfvpnyLz*?BAGi;(4{!8p`Y@joSS5Y1E7r(*W1{$cn`L$s7S9krlwnJki zNh3&@dG(J=WXh47X{ur6PP4qIi&zI`bnBcQzuRI>@cKCZ@8uK;X_pSo-bBhFTX_2m z0iyuYI;)kU$4o;S_O8C}NCi>0C`~z?s>c=1W4kZ-JzZ>|6y930xhNut;!&IG7$;G0 zhdeK$Awz#`h;EJ}Z!X@=c+8N6E!oGB#M@C~!CAiTxvr^+dR;_l^Hy$*1}<_mL`O-4 zjPuhkbYzS#Jcr1IMYjtkjMSCZ{(F2da_~YvZ<6 zIDx233=@M{pCrunIyu5S{WhYD{zJg*`woZ{Kz=6$SukQX?WXN01h!j9rLk>$1z>7uW<}xcW3Ntip2QD0OE5j9(aRXE;Z-QMi4!asoch2x8J6OEiBl zO5b`wU%eI5OZ3~fr#@D)O%%Xg7LO~PBBf>a3(+$q87!&~6uC(+OO`C^Ir2ZVOAawa z_C8`;|(qGO4H>!{@nn}1kgeH%9r<^C9SEjlIy}@dthWHZF zW>_P63F$6Qn!{f4Zf4VP^KA9|0z<(>>*`wcbXFN`Sxl_#+g;l%p_v7^Es|}wIdGyP zPT{)tuIw~jaQ~M5-sJEI(_u8!)^9s+(VN@0a~?oA`@=HUj$d*6EeX&y5!6!uQ#`c4 z?0lt1H5ACy)t8gh9%_J7xl*-s)_B@mecdYhTW+DgxxUXwXC+=0R-0>qm8`X2QcQiD zD@fy~dafO?n0!rQ!kEQ*!N<3|Z)g0xyJ`L4_6yd(iuCbgt|6@NCxkonRmMsv3A@Cl zVj86YqaQVB_9Q~;n-6Knl+Gh^D3uuFQ#&|sz22vwwwZpd9U2b>t|;PR7Q-1 zl4HQd8A=K@1xK#U+eYoH|0IY6C8Q0#lRnnD_c4S-P-F^OBiMcCvJq)YqBh0m*>=UTyGcK6?V-PusM@Dxvia?08NguObnP=lnrRZTL&X}(WQAJ&G#uVCR8B`C8+cA@ws?5tNm!`WBzX^^%GXHxkqcI!m{8_Ge%n~eUsPEX zrhCFe*UWEVKfd0)`0F0zt9*h-X&KN`%G_6@XG~7y$2iQKe#zZG3T&u&&|}EW!tS_zbi^GIxi+|5*m;H-~@#3VVwxrM;zK7&y4+HT+15( zC@S@5MeK4RZ0t0u8_s8%&DD0~Jks_R>*n_Z{8C=?_L}7{6yKsH^Y5S6&-*KLwl9#} zka}`}AFVERY@%IPG|>+9y>?IK2s3gi<38;RXl_0uUtPiL0oe6^Q|RE%R3bI(bUx=K zdTq63j`OTZg<0at=0fvSKHnB)4qk`S^5b8XCiKadb4~AJN8lvE3O%0p(i2 zQj%9FQGK{!w&&g%&$rxG9K7O}%C*#3PTGw$QePf?Np&mx|zS_x4`VWv|!DWUFYiE?|i$p|^~wd&Wj413n|e2D;{8kEAR_Dru?bg}Y*0f^^R!(S=Wl z0F6pngyMBHm6XsAYeE;N>^X~*S0Y-_5fF$oQoH6}qx*qR*5Z99W{5sx|8xJQHm1xw zHw`BA7$AqMq)%R?B}Ky(iUFN310Ob$3SY|-X#6dQu$V|IC#zdpByNQUpj`L67g!vL zdox_3c0q51|1(iZ%0}dUtr9;KbyQnP5;>pW6-U81FKAD>A(KTGB_8q4r(cRReeK&0 zIn)hl#lsHzowt^>S1mwGhO4?=T-!quyhBpr83h9$9<)u=)Dg-&2&#@J48c@VDv^el z0MUWW1tF0KEE>rOt!a1V|M&F$Ph-tq8r)q;ED#W1UJwwrf3xKNv%)&G;k{SY?}ZLO z65bN-7P-#x{#L99)kbsJE&>WxS2|j&R{36Vbed*tYs_r_n#m?66s+<&&>;weVk#Su zOyxof;|4X3Pl86|R+h`{+B>a=77j z!AtFZyZM6;7R33Q8mVSWj(W29HtT4B4bw+Al|NiJ*QgL(Epx)S%*g?1Qr+=4`r+za11Q3tw=LtzA>LR!?q z+V_D0E2h5=Gs6SgOiV5!NL;Ko>`mHgHm-r#i@XNJ`u%(NUm`<%0td)HrOh+2^^S=V z8Cfi0r;%AK$g6}7xOUq{^rAMZ*J#uX-LmRy7s297xp_YZ2oCDvUhI6$^*X*AoCc)Lp_f{w_qB$`V5C_?x^b$nDkVe;m`@nLAq9N zUvRE<48|<3T$3xj(dZZN+$$`FEYSIm!;+@l?81cD_H1;gNb%IL;he%hLo*>DkXS@- zJCJA--wYWAq(x*);r^Z7Y$Hd}+a!h~X-*LHv;RgdZ?TFGGX$+6{*rHfWUtPGaw0NJ zZDpZIBCUKa5xR!|9rp}rFoS#>7%TiqAtD^OL3Bk8LPcT0=M|(~Gr75dc_fot3PcCB zM|d1T&hHM6BPk-~Spj?9k>Gb16~IGq=Z4%3C=n7XFTcE&e9xL^m!k89>q##IiOdbt zBEkFes)fv}HK1s(b)*EVqU?T=;=y_h+s$~({qV=U`;059Tv?hIGseS|29Z^@92S z+^s%|g%%CQxHyZIIF3?Vpw5{15d07=X|&5V@Cy3CBf6&dW9H9fmu;b{Pe%1Ev6L|R_t zeOn12tVqgzVCC)EwhfC`E1p+&M<%TJ0m#N)bq5CUxL)hdq1HfT;K7_3yP-?pp(lR5 zMD5@XI0LYw=^7AMN{YCD=5ABZJLy%xIf%co0wEfEJnykFc$R#8l(zw;my1MX)S!vB zFaHZQ42(8MJNSO)GM~ytyxLBC`t+X1lDf=js{H`nzw6f-ox_ zaU(i|5rw*tJQ_*Ep$`i=?Djj+P8<3K?Vyp=SR#eF$lLZweE#KaM$6z%{VpXMa{w** zV(P8lb2>@u6KN$FXu@4R#B@q!XGHzJFei$Nf3%JY8?QipTCuxVt{x3$J1umpAaP&3 zFk90ZQwFOufs|aC+9CXsiGCU`=31QS`Op#2ZO3OcKb}m?Mg7X_+HvZ6|IEtud~;oh z+vA{Vu=&!hz?Y+gkE#)?Jh6PTM(es!WZnOTOf+%*+Q6129+88l#!=v_9*yx$m|{1( zi})}op+~7qR5oeKqlzTjOySB|$?t}GSX;Fe z@sY(Z{U>QXrRup=iUEguXr*5Zhuxwhp0I7!hdT(?l9Q-6Hd~W@3e#~%3mbItYs$UJ_g+0;tcg?3{0yU2{^%(e z<__y2opVc$7Nc>zNidV-(r$Cmy}QTz5GaJj<(*gwb0u*HwQv$l-kZ@Qujm>ZU3jKP z=PV9Ovtn8gEgRMdsJZ@%7+{pH#*SN$Rri2!SdQ@8FprBC7ozOfN(S)A_ z5f(qgFBOrYaEW!c>U@P(rJ6<{>GL0F@xmV=j#!qw-fD@~SE+T%Bca%h{_m&yZ;b_N1E(K;li30gW#JRYngZiFuf5A{6eS1r_3xt~5BE(w*Ybpa4 zhq`aCyV$b3>kN2tv|}S%1Brc8%(|WN)}WfKuW)l(+E;!0>4BO?L<9MSJtlXv;U%ayBiEo=SX(Ob1 z=D~VfK5JT_U~lH2|H*18hP8JJ<8h3f3*{#Q&x>pPgX_acJ}Pz8CL*})3%B-76r#ll zwL`c>l6*+O;w{x?kM4_c@S|x^8#v^6!}8S`IOKdoqD|8BOQq`RLUY$~(k4W7ksMw| zj;-^C`ihCy6Iln-!BlZ5SA*3Pn(vPRVv8ryFAvky79MEovL|vxfX&aFx#Zg9%u89d zx7yI^ZfA^1lfvPa;p6e|mkC2UqRh(mUCf5ku9{<4=u?vh#eB8j$)ZMt&AotfbqmYk z1}T;L4k-%2-le(IwWVK96UEWLQPLOe!}~{2LfceAF$&Tm9R#K)xV|NmI-M%G8O(|x z8$$q|OwBWuC62CseT$Oyd{h%ZxF&V{^%3cv39I{@PR+(e$#7wbzO>gA&oAlTKd#5_ zECoMwLoM1z%djr}Wxfd>%&t(i7uWW;x!z7P3PMB+_|kmll2E863HWXp4*BRDn7YI0 z#;#RXNu@=_0S1o~W1EO-+SYNvr(t=FsN8i29Fqh0aVtfi0nl5CS~XAEJzE4{%6Jn| zUPs+EcO?=X@#z!k1$cV0c0^OzeCO~o9t-``n(_kW*;_ZRXu1-&a;BD7dhrL7C`0-CXG&TiCb4Q`8myh*V@BCi;GK+@pA*~BOk9xX^%5Fr`y~1XUfJLY z4dZfR{L)gAgWOQ)CItR2aYrlIE06KeAPHVLo{wfxCdN=Ke&wv=DcsrJW7y7VqA*J) zJQfVNKUCtD)f0;c`{EUItpg))E8jt{&JS>JFLmq}^+K$8>=*dLU34cT4a8Vc`JAis zW9Q*5lY2lGCLM~JXWFY#{)@q@;zKFvT~`E*Jz;a`Hf)YH^G)%@%=xU+b-|c^;DPxN zB>>x(t|5pQV)BcT!C&~sb~P?+d;q3RtLki76kDtnO-p7vs^{>9TM@t@OM&9<-9kwb z2K5oU&{7-}962$Vi0J>_XI0h1<70u& zHYpo3E^6iI=YXd3!qy{VUnmSFkW6hp(sS_`S4-vF<7u@KFxErr`O-NI#x)Hul_boS z)C0u#$bf6z%z?YJR;(wf2=n)$!M2DJB4nJ?s}r9DecDUM`Fuq@LwI~~74R}Ug=y#($|b+q zJ|-t=AO&>{I$;nHjX65N0nwbSDu_<&St5my0yK=1i2;9il5s+;nR$ zM&Ljgr)w^nfz@r@c5rVX_56-r4Z&q-GEfVyGjwTjb|;%;&eT{K<`$_Xc;O1eTb#+T zQQ(`%pF7Gu5kzmy-$ml7BD~(w2X(!_1I(jM2P`@03zoPMJUVZT<1Wj2pqPH_v(k{L zY?Dj#QnP9bfMIz<5CAc5u9VaKhYZLF+m#2f`WB_tNpx&Xl>eYbFme^3Wzup|0Fzz> z>LTK8aVXlC?YO$bX^!;FTG{U%W7s z4VWZNQ_n{=b#sl8+?{E;SX=GpDzUk;7)8nak##xw**@Q%hSaj`~9V}9~3)&>pd@q59T zm1<*evT;3&L>qA@074t`@g+utauFctg=W19Gj8|Tl9|AQpf0Dg>%30^J^!MsUB|w9 zI4bWpdEauAkVR&8rc&78h8%fXdo0q;FPO^6isXCfOqt#{<&#gWe^)y4P>(jgU5gLX zN6u0VAf0C!H(l8do?dJDZdCw;IQY7kbZtx8F@C6+T8xGn)I67E9q;Ku{KzB-hwacY zng2aBr*&}OaYj7{^a53D`oi&A949nHpuhj9&2H}N$0z7F z_Rf&cexV5Ow|biXuAfG4^RmKx1;$!uUBA4!cu8gQghn-0y6Z2h<1lj~OKZ#gig_ zM2_sJv#PgK7KICiADcu@sba9I(xTNTh4+?c(vK$L=ILIC!Fp0>}Z@P^_;%|oIhh3g?!Dat<1)*H4H z*@G;*qH;r9>}5fxJh4&(C~HrPO=(86&N5~pJ|g)F3ZQ1XqF>z(o1Z1As0d3P5j>=8 z3e+TqhEBq~B7b7t>%-gkZ#d_*Nk?3*qNU!#boz@Lku06C@VZZJAK9hgjy8+p~I+$xyN-{Rd+&^w*-Ll#XwSMrY<>UgCT3zQN z2(0Ywv0J3gGFnS@poaXI(K?%Ml>iiBMsDXeyY^0wsx{NPdZm1#r$E3|a?)qw$;F%*qf#PRj+2QnC+#C;x*Q7vM zU0UP=t`#;xGy7>}Wl}KB?#tmIqsNQ$g3lYbSw9aQyUH9yuf&gceNXl3kv`J^SQmjO z7_Hpknx~`XpD)mS=Fj1UL!0V1h@g}Yg+QroadB< zebYQ;TS{J)v>fTtx9Ky9Y!N)tkH0a3R8i6bW?q^a}xj`-;*e#(*PxNo{R;Az@ z0bO(29-N<2RA_f`l#AS8)~m%xeS@S+N!yQ+Lvv`buvjfuis_Gr&3?EJsNhvL5M0#R zd4|o+ErBVE7v(qsjB>v@5Ol%}R#9}>M(JXyBdYyny)oBzj+3%zW$PG%{Q78(_Q8!IVQ-kCoQPZCaX&yn(7q!>QlbAOT0YWj#i~oJtyP6Z2!%0TGTU< z`L4=mZq25vSy1rx=gMYGcYKvLQaN#}ESI3@cnj-eect~KA^PBSYQxP@c7MdG&RL^r z!L|iEf`0w42SJ;3|D3t-I}O3 z!Jg<+;q^4lmb27utiLA^CJB7H5kpi0xwv(wgqzC_M%TYH1Cw+*4I+edFt;|et zO8=q~J3%(CndKrCkU#ZmI2#xGViiEUkeI#njF(` zrog6)6KbnGm7*t&@r~2m$l;cl@l9i>LTbWD{hGw6*H4?@h3TA1q(SVTq&%^yVt^YS zcLFf(F{zF~(jx&Afv9}ld-NHEvRN=B)2us733nq)C+ZYDGbZE%1J)TJwZI5vB`cem z>K#b!Sn_G&8F-y=ru&1-or_7;eL_;Bf^?Ouij$wFbUk@>rQKlLh}kJY3g*Mn1HbC? zI&E6`DP0YO>^)2x6NQZGUQPzF+!WpsbY1p*J@nb=21eVyR9R0zq9YtEuR0qB58@Og zzk;F}%zvXtB&Z~bnD98uogf^NSfp*B?VThul4WLfP|wIl4LL+vu()8A@R=e*bxaUoUJ2Xf)E*pqSry5vFS z9kdKv`CYh-clU#|?D@EB^Zv;NXTuH zU^gm7PEH<~Nxm{sqGJ%UPW!g4{r2^U14g*toxu3b4* z1)~1k2wL?o*D8A_S?9Y>W31}%8iXFN@MND)s8wz^5p~P%jh(b2m!XS{B(R6Vn<~xzaEf+gtBt& zdfV5rB#iq^l;#%nI)~N~PFig(C7c`EIv6YR%r94dRi!j5IM`uk{SD$=oMQ3Nrl2f& zB*z(4+%c5O`n8y4ZxDN`_bapA&aJYQ#(EM5-S1KG5QPS(hY|8HC%C3$>kCS4_NOOZ zQ?Cj3B3;wG0uh(|j7eac4bIdP?`WEDZy+~|Jkw`*3>UOrr9*soaPY@C)~ zy$@Byj4U2EXBNC0X1GPOh2zJsxcHuQp^U#2ES9(c7<~|?yjXIE&%3hpALOzh45B?8 zfFT$QlDmPduLBXuNBF`?4EYqv+xf&K=E&W3s@dDGQooQ{Ut)U|uNLD9e8dX4amaOM zMbTFwwq&G@3ZbKK)6Sd^^s=F|4-H(Jm>$TpRa||kow-t{d;_bY z{g7vC$d*UG%&cLS35qO{0VPxsv<12kG)&uUxkH&5tLA>v7SKPW2Jl|fCJT+~h%)>> z%EG!+@*6&B>~r^2!eAayR`944$-a#sqa-24$8{P=yo9#jy-SgX2>-_i@`m;zuDVrj zkww8gvw-CpZ9YNnP(1O2~QHUAf>%YRnFf3u>=aa{_1EGUCQ zsc6uuIf2RXpcKLCtSmL45o)jjVyLg2x}s%EF*adg##^93n&1qi?xpPy>CMNsIUgTC zZ?H52hFWsggeCOhQrqQDLH>ZaBbQE(wcNZL%+QC~V;QJYwAacO&kFKK*!6Q@UfP zGxHPZe~#N3J?_)aSKQ>j;>P{&z9j!!#FXS^`@W(0s2Zyn+d_T@hGF#=0?#I7a+FXi zfW*5T^2=wT>(N4!K|6044q)nA+P3E#nbN9bDzgu!8uRv&KoOG_*4KT)dV_Q|GRODx_8$E~&bN_KJ#Aw9o zRqqiL=nw2|U2`(Q*o&8O3pwo!E$^ z*8SLcd}>W)L$Uin{|y!l`hrVw4KC&XvslUtYS|E(H6l%tavR~$@?V_|Y{uWgU%x^Y z_a!yq_;NRSCiCs0JH_mq?>h5m6W;$Xl3T+n?t zxzu=oy06~~ks-MT^~NxAGZxP!5$;YfA2c_gO#goA`}*-r@6UxtTGo8JtN#=2BCNz< zZU~$h8MmxWMY?`S$&MooL0^*?J~X*gZD*eXfVNC3Bm?vP^fZlH^tbe@p8s#$u}n~e zd++6FuAGQMDs>$gvG?IQY_xL=4*ZmrVQ5fihuvb9YV0 z60ecP$2}B_%g1{cf@7GSGUfyAoUH0BqgEabnW83G@?YE~NjMpp5e>q$Jc&Po@+4g% z8}*4;1K=Wnn?`1u4&V0sJ%oMaLz<*~3;8)XIQ&Y(^~%MXfJimNeA(uxn-f7;U0Miz z<*Z5s?fx$dERP457(iMrbhCC1bhF0S*KV2iHgvZ+TxW8#D63Xb`3CewdQ^!~Tq_(BaG_b(r$4+Z`>OBf1-eH9d#2rl_VCgyv8%;qRY=4F9{}6Zyv-0E{3}iK`FmaeovZ} z>ol3D!oseMFl53S&YMW8H`@;VK62Y+tai5Vtxi%K;_G^TUAj930J+n0$^J%fo66~g$XAS@WKac7sF>h z$~5%I)0x=Dc?u)7j&LcUq@9s0D}XN~VdB{B$tC#FnrrZ33QzE%|58klC1vuPWWQ?C4Im*{DhgjTJ7qGmC6-dzAl78L`}H*a>*b2{e^w$gMM;M zL&mv(d2*0Cb7$Gv@()smh9->S#c_9#%7f}DPG6b3a}8BOx%ep<@)Xaf2mBs-p67-M zcaaE>Qo_5QZQVc;c!`f)arUh+iDz}`;+tRsfTivmRcx544UFvzdiKU z{|wPM*hY@`L`k1Q=HW&XntSV|HDD|jo&&sYNLR#3H~zp$YQ`!VNDLnYL@v7vCN zW06%NU(R=#G~30hniB8U;JqrK5ukj*N}rnTf+^2eAC9R4_uC<=&o@`gY^nE$!hgbYsMnT^U zV`(wL39O`$4BNrLvnIH?SIe65kmVmKU_?sr$T+Y_fW3w$3sSzI&wHYHtcK&Lp{52*{$0~E475WPHYYr-E59;K zVfw2*d{;#3r7aqxG7K+Iy6Ae!P!LgmA^#D52Z}J!6{@G0V-di4<{JpmRx*-WrB|MN zkUm>@kQK-wOae-sCIYqi$*y_NkBkX)`mU*AZu>|~Hk3yR?!Zd#T7zkBMU%|a;9{qh zc|)ulxNt|=WO=Knqpa&TPXARmtvPO63i35xEqsaX{%xV%f1DFGGTA$%jS?sMAQ@;uE6FSbH zl;{ccjix_ZmG#?dUohG0i!UK@_8PHJmk)GJv^=(R^NfFV2GideH;2_8LTG%1dz0Z^ z5tbVNOi8xn7ucY6*j70Z;_*?zE4%q=WD_irK!H7(ln(}r)9`WJlt5Tb zfmxA|1TG?WAipJ@8p^Ezw%Rqv`25nLDv^9Jv8i-IVGHrC%iHuK8|sJu;S2AgQCw;8 zX|&(<3xcyG<}qZvDs*xv8R02x(8BQr%lPfFTEVLqZqOzy@-r&;)kl>E8=(+A5>oJq z=C#P!5;9P3U-y1Ya#50Ms>V%&S`TG{4@X0x&(OiWUPRo8MAkIr(|0DQu1^&FQGh4S z-CV9`Qu$ zjpJBGrLob?LQX^Zs8E`2&o5y&N6f|XHtnKUzLa6EW0PGhEZQH`UQHJtVE^3lPvyJJ zeZLY6_p9rR{Er>~U#1l`cT*cTQz?7bf1cgHRQbXffVm4d!|$tbg?U)CV6(_3>MVob zUJT@ozgCY>erKiR>eUgOv_-yQ`2{gk`9cuCfqu~JW-S+qB|)=fWQ~7$|MMPh@PCc& zkHjEEyQSf<42r$oqZm}z-TicQPNg#SW(E`8qTr_pt&d!8kU=fzUV5lhp$iW_s9bu2 z1QDctw+bi^w!Y(D;D(Q2Q}A!O=T2Q+hLSPVXIR7%%pMfl!bjH@&jgl{r1j@d3iAd_ zRl4|vty4LiLEtJWr#zifF%LjZtE>wMz{SPwbo|3`sW^C8@ZrM-{G(Vq+)m9t%%gv< zBPS~MO(_wh8sTUJ>42(% zuuiy848fwEQ);hAiOjgm0&m}%X}Z`nz9|dFM~EmmVB1a(4tIoBuPm1lc0!M?f?7MK z!s1|RcF{C1guw=$%1)~}gcm%Pp;cFr!De`$3k%U^*5tFe5aHQ5+`d&Z51Un>?Lc1H zIH$Mh^8$hJ9#Ysk`453wOjHa>=HlD@wNb3$Ib9~r+}tma{2?)$I^nxBj+gr3cxuHq zER{P@vvYi{$`8m=MUz4YRq;a54iNe5fdYLBh@3PrW2k!n6-?OV0~&sz-Ziy9{cln8 zxU&evLut4kd8rsF$zstpIPxcxFxyFKg_Aeh8*gxxte>DMD<>;$p<e zdi4TxnT=(B2n+uh2-H^=XoRq?Xo+g0p}k-`aEwJk*wH7UuT*1*Q9FyvO5wvaJ_gID z<e7o=9G}pTA!O@(1jo^J)OzRzS1q<8NoLN%zUetPP*f z`+a=>#O8t=#8Qo6DSDhfI!fsZjB5%i7F%RB_M@#Bf$@S6uQj6O3QfcT8gG-y5__mQY?lYkGiD^;ejy5r-QQAnD_V0t)2?0=X(Tze z{wVDUmxE$GC_uUn#|0iJqR;3fL$P;ZZHT1(&!tI)qQd-6)PD<(Ai^kyoA%kHZ=qLq=3nvQ+nh-nDb8hgNErBWuB9h4ri~X z99&bsMEp;W?=TdU)C1#g_Do!~xJZe))aisvo)pLD9AQB&-&ekIgP^*=|8-e!g>+ou zBxO5CdzZq9Sdsq=p?w5T6I5;x1jwGLlhcQ9wTMQCdqS6bqt$+97XjOcm{~$MfU{=K zoqhEuIz-qKP7HjaTWMzCme0 zYij{HJE1Rhizg!^3#kyeO0H6-I*Xyh&-$p938`;8f&b-~dr0QX5f!_#0xVWbC*Ceq z_)x_9q(6;?$fp2%g71HprFf!0+pc!>?-CaBi{$Y8vML~2e1^t&Vl#W9#&|ZLe}cQX zUhub~DyU~#^dZP0t?lLu?o*?T;pYhyB>O#x5tBffE0u7UIDp#6N|8~A6zMo!d`iEk zGfQVgJVQ4wWk5F;kfPTkXCd)My7EL`2L;9!WKj$dPLcELc8pNA6v9^b{TC0$hF${1 z{I6CM{r|KS^N(T_vvhW_G4zl%_4u!~0r{^TFbqI-)?)hK?LG}LLAa8VJ5dRUH3KD3 z>7VM@C|DIhMsz-tq9AtF#0#w#@HLl18EzXn2y|?Troq?}{!~2EU3-=dZbr<3XvaDC z!;RZX-bWXYQG!U%%PIZn6hS)Db{6NRmXVJ3x@A8 zEjt==p~fMIj+!_N-F4CL7Z{@B-w~|1CYHg1PB7LI;uJ@~k0cb0m~}Ae)69mW-=b|y zx33Dv*@FHTXWtZLS+u5EnN?}qwr$(?N!zw<+qP}nwr!&-T{(HXdvNbebk9u0dDzb< z{(r5#KQdm{AQ+4FSERL8$j(2d2-g!33QP_(9yvCa|1zE|UFW^dI=0;?a2c#(ID<-# zIG^4ac$OK^qH5deAYc_Kx56Y@wcm=cT`OqdwfW_=nTF;=PX_F`^BWrh8qcICyD2X@ zu7%X1rCA4-JPHN$hAkj`eOkJy;chZoyMPEIg34s495OS?iRCeFW90fEL<6#fF<}5^ zqD0KDwQYXl2|tXW{!Fzyfx}iJcD){#G)5L%g(2S%oJ>WUQR{UU z-YILqJY_mcaZ9+(G5sbW&#u5!^kCiLdH`O zH-GBVbm&Gnr}8mE(wWOssso*QpfBjDZr($!+39ZFfoI!9Z>UX(ID-gYn7-gdu_+*a zY7crQp%Hv0*ox>ZpGg1*22>XR9_gQ7xT>JmPMW{B;NyD>xc{H8Bx5(H|Ai*WR{Hnh zx79hHv$v`j>46Lb-bk4MCoiC(9*Sc&XGW-EsL|OJ!(hxNSftnoJFB&`JQ#@%*EqJ>JiTYX4ADpPLJ>L?~-J;Zww17&A-bR~>Yg zu4v0QkQ`o@KcP#K4})Y(Al)dng4X z!4^qD=Zln5Vi<@lrod(VZg5f)UN4aDI#Ui(L998y-5if=HAw&%iP*Sbb3O%FOS#S? zMu+H*Y0cYPhOEISvzRMqd2H8X`JYAYr#qWdhljZ8x;c#7Uk+e#;TKqNscJ^;Pq&np zS;2?Eq7`dDuAsY7%G9)zSU=b*Dx+yaXB!v_Z7idN_KV{Jcw{{xa2B+c3k`DMaL!b=6&s@d zq_nwA8^l3zbv}wyW0<9X_r)K>!PK?9b8Ip!(|C1XhpSfIR`hbq*`LEWPD-LdLL*c0mp{?#Un-6ku4;;_f*Peoif$AX$SYR_<%BUp@a zMp^=1&7^-#_s{E~Btt8o@$DkxgZuG=?!R7#e+%Rl(l<2w57$_;+NCD43i=n!)eZHa z-c9(h>%frwjOvaA z=?V#;n4Fy)RvPT>95GYzmUZOvd|SYlgH{P^GYt07zT>WtQtcs@IKM6U-3h;TH-*42q=@6;kjQwoup#eMtJF;FYLFdtRJ}!)%^40n)!) zN2k*a?C~tFfLMMvvo*(cPmBQ#E53(0`}c-_ExG~N4xd7)m6!^)(9{}D%v2-&ymYPk z1hz2oh{aT$%tJO3BVfu*avAfGimRw_6`p*Cm)3ZNoYcSNH^n~ZwDo7FmY7mg7MmST zEYldoP=ysNk@XcA6N4M_#mQL$l&Y zp=PrW1P2ep2uj5ZIZ_fFBxd^cQ0(SxNX*nM6&W&L;s8|_$OV6dKUD`O=xIzEq|a86 zAV=kez!lcKcQuO@#MLeHVHtHzZT(HK32tMUh7c69`}FqoLrmDAUz_wC13f2y`VQPQ ztpJ{2vgHV<*~k&4Q(+r547!q5B6YzGlWq{3AXXl-qv!GogG_Z&9UNV2OvQJZZ<2T&Ng2Q^W(Yje@H zAXVu~NDBrK+Syc87`uBpeif!F34SmwlylB36=&~LW|X3Sn`x>vPo}<-i(ncewYTA( z8WbKF*gG2Z~W#g-~7-|+bJ@}pol4#3R&dmrb4<4as z76?i+p7JeiCFO(~Z1SPVk{C$U)7uY{s3|?wjkC7CRE|wlCyvFpF9%Tlu&mr)-o>io zIt#;h$MW%)87QQRs&;0({0T?pXs7U+1%$0BuUY%C4Bkh|M;4k-?1{dQ@8;cfFIO$> zwU^anPe&ZDpx>cpLX9KAIX6-KspkqkA5(1 zNXgbUK5(uQYhC#w9uRLGlDnm`934<|Sxro$QP9nj%Z;{#Vwp=|A+#id#-EM9VIa#0 zK&GO|^7|~%4@!q`M|-(EOXrhcy`c>6f4s@B&BH@-VF@9rBiJo{{t6wvM<;Q2i&*em zJk07p>39nnu}=cYI#-H)WSDq-ZJ#`R!zmaYMn4Szzawr&0@Th^ik~?bBxKxSUQ{gy z4a#B{Bn}F@oLODE%RQT;uFtD{6uEfY>uz? zIxr`##@Vv?sj)5P#x&REl(MptzC5xg<>-v4hB+1p3+74QAmSLO`m|*1=Pld-BAok& z-DHmx`e)2Az6Un8NJwI0{*XeI9{KbhwsBFDJ~kCkjD#}i5Lj7$Rnm$nc_n&r)U}Db zDwuHW3v!Nq6-3(tCQl9Y0}9ahQ55G2rUh5Wi!Yl`$sOFh522h|jTO3jh(7veZcB$mIq`XT-QH(GDaE5yE;rvJriE5kM~euWO0Jt~AE4ud zqs9{ zYPcrdDBLA-v`Q-O`!C-H{d4|>{J*7N{O=+e{hrjty+Hpia3iZ?Kbj=gE`#@!^l@ z@C7HJ=#n>@fFX8XrQCvi{pdYUNy``TRk*LNucofpn0BYG@xDGDu>4l*%L?F3QL>Z} z`qyoU<5F`alC5mZh_lu1Np~&=k|NBzst<6qPClgJ77T z1)SbZd`1@F5rd5=9JE5SH^|Q9Swtc6R_0eP=IriP9a162D-=orjNKw?tgpg<5{blv zHPX#40l5p(Pl|bm91e0@KA*2eE0lX>=}-n>`j5CyXoz%Jx@7cd|d8!ypg*p z2it|dvb4b0rjSZ!%fCjrQ(iV!4NnaE*t z@ZOGqkOm{ZF&DJ^+7~P@hI^uyJ-9nDjN2(z5=w5r^(m8^Y|rnCqMh{I-kz@?cj$65 zPx>Wzpf|_!vG1g~dE~y03)C2COm}mA+<`Z?BsqHYY>2%S1xs}n0{8_Lqg*)i`ffUK zg)P%??v}c1)pO5-d4`_cW^`-ymr$Gg*>2IJ0}w>HqfDjZQqb+jY<7o`gAVr#a_iJ65D7@5EQl# zTi3HP8gKyB%2Ay(5CCz^jQGZ)nDJB7RDZo4Y0_JE&$Amg%n1SEm$Q}^EJXz_c zKkfR>$~Mh@?F*h)pD=#Bu-Bij7Ypu2>SBJpsP(I!#8 zGPyP#MfF&M2m;x}!}xa6LnswK{X7MfX(}CkRjw3_?*;FFDsbh;(;;`Z5*&wzbW#bj zFDG*iN*EYccMwha$@5&UvU4pZ>{xYz;a22y-B#b>22=fRFx1-%dou<@hOdFLc`uZ2LmJ{TN z@gHRE+BbIi|NIvD-^JD%#`^zE*Zv29?tPu4PY!}iB_hI4BaZ_?;)?tG(D@6eH=oS>`f*X?|ZEWv#6;UM*TKBeaUHr=`mvY)jFdREyIE zwCK8Xv96PFC(R~wEM?9vy@-@L*Fsa5$)e+C3DMR_0>+w*d5SQXI+8!NyN}YZ#nK)|5p7E#Wb4 zlnd6sxCm6!JrJr>oGw*j`@bDZ!#UuVOl-irE?9D$o0|)|H*Z}2*J&dA@@;piDg@(z zmmC659a02!1<=9bMmzM8*<%{2grOWe&LuFVj6cjnb* zCNSSAYPzb0SUj36m{P7K(CuFKCm-X;w2I`UXK>>F`LU|1EOLA@0jS~9IndiFXGRlT zp5QHVspuhQtLMM?fKPK7q+8};2E@SybU|pveguQ#r?_oS%2L98IS?|fOkxiwlRt8> zA5^5Rw*&L>Q!Clx;QzIS(PilC4Hie*J_DE7ZfN_iB4r5CN)y484x%Lo44zd6`9WYRA>C5lbCp(JGxnws~^OQXF1b`~nKE79!pi z*o1rk_Ie@(O9v&fNua<>L?KTX=5k&aKH4aL{ma>}87N^t`3(e$;{M-Afd3CIUH`!e zssE#%r~S*-{XKX6<+D_xzxdSj%+ zsj;UA;MSyAH54Jm!Xm7&gu1%2($U)Ud|_ER+`PiuyiwZq#lZvtf$^a+{c*#y>)Lbd zb?UX*?tWF+`3#&!bL^89o=LNHAckbqY?q1YTcOkX{?aiRD{}Tb4kgEMCM4r6eMJ8E z2?=B;Q|SJ3Gvwu@Va+GxX7$pOX4~Y@whwlB%6j35=hCGPlqb#B>FB3hUu^Cn8tNYn zx48i!NYAwaB2?VwyR=|kz)N!QD9y*lfGzSp1fNeNS@J{aha2W>n%hdOhMO$GY~||h z(nYV@9Mr|{T*yy4q%Z3OIG?Pr%;gdt<=QWW&R(_Y&-qxs{n?3(RAi4@z^O5k?|mWW z`|=bOsg4R^ZF%}C%2Pwi8?;A#;o%QwN>YmqYdH84hodp2$MPKGEJst3g?{Bu<&TBihBPAYO7e+p+pVISiC&eV#Dx1 z2u798cV$uzm2{D%Nad>6(ev>n!JimtZgaM3xU^#&sDvg&f{-PkiFf_GACi~~HwFUvtBX9Haqj>;JZ849o z-DmXFWy(uI5Wqqjs6O4o8H+}b9t2g4i?bkoYHDOe6pMo1I<`VxwLaVzg^KFp)v~(G zyh43S7YyM+g;|w+q$wJ2FO*gF&o|dz#>!Tpmu1F}LDS1yICo5Qjoez8KM^iXdZ`_1EKB0q;m@HtJB&=>X zPzo(sY*@9?$F4b2xSRsPEI46Qp!cV@N)ev>>7<`$QEpwGFn#{A+$6oXg4rv?f&C$b zNu+s4-L#apn+Y;G6L?ultZHJyijr+O0hdDEfDCVC0b9!F%ipQ1k!JEd(WZ~3YCy|S(9W}d&JE`_4>56eW?H; z6re%7{?FUmh_D!%>rq7W!hMdob@f5ZSR7pAJ}gcb997JPR$}H~h(hDMRh*(F(#HGW z6({M}_s;9a4Bq+}mcO>MQ6*iH@Xh)c7T#O>EbzwVwZQ?-b0!Ufn{=d|H(q2_M z?wgB#M@K^$A!fQ$o3JM9vJY@$Q>f^{irsgfOZ&`dfFDMxL-bP`fNr4|R^aV3RFGfT zJNsxQ;;o*Hs{2^26w2US*?NtJPw$goEIM4+j9mkMbM|~<`yaMTqpX|;j|H(3v%l2= zot~gfg-AVS7!wrY)#Sof+*!nT5FC(h%;yg$1|Ez$K#g#9;oZgeeRFh{b5o-^96kTWRz}YTcS3I;;bk$HUsu;Id zc7j??_YJ>P}?Kc3J-3Bgn0oqJkN}Zu)Wu-8A-jvk<<~oaD9Du^~&XQcDvAp z`Z*mPhxYB{2O9vHgLN2m>*t!?N!|rfw69p0cPS1LEQVDlha8t*{%sa$H9_cZV z!z-qC)kA(_o6 z@s>ZvnFuo9px0J7;EBP+W%28i`?WJ|$#wC&yprL0{tJ#C@eczq?vM+2kmemd3wMC$ z9l3ApzWoQ{?4g=l_?)JjWS3jUYMH59vb!qfT^6=fMMUQ7(=qf)dL#x7t_2_^^laB( zozMw_Xl!n-m@|bseK<|K-0-|IYD+66ci_yvl2cx_W^yRXXNsG7Sr<3qg7uIGt(vv4 zN2v7eIO;R2g=Fbu+`KRl%JRK)MYYCqQrsGnlg^gpww9y&Mq@}&c@fj464M~0`?D+x zpl=ChQcb-Xz3$D<%61C%zNF>uGlNEbGniFZ9J)fuM;76LB;rBX2f@Xre+iL^X9rausNX2RRGp@Fx8X#fl|vZ%aj6=g|+eBSaM*FdY}kB<1jJ z9PBtwe?`svCZw%^-Lh3fS&2E90Bg%iNiCKBoS(M1Mx1P>wkqWd2iLSbagAFP-LStc z`twq$PC_`UwK%MJ{AO+Y+qQhRHx)9t!uEo$k?Bw)s2V|qPvwhF`>M5A$l|!FF6m9i zOh8>9z|>U6M{ktVtt}b@WfkH$+X@NMSkl^S@=mVzxJ$zxTOxB99bp8f!PspbdG`vW zrnTtSA{0k;FE(y}iQjdec`ZV4HuY0DSds0$;LOf#&=D-%@nDujiPT38vYQ+b`zR?( za>&LP+I2_^HhRHgq({|`&A-H82VOIRu#G8SC78Eqo8-xv9MF~zc{5_Yr}e{4Vsq1u z9!iuOnB@AQ5l5sN)9NI;yQ#?zyff-*HTdC~luGhf6f2{SD>!6e6Ga-QEJ-Fa$8|)_ zoi`|BzUt7LPC}k1sXWMVh}EPtJ5)1I%7#zM70JAj5cI~uJhVBDAtfZ3j=dISk@+Sx zbrGPA@f`^c#zjKMYFYg{Ml`I_vXG9e#Y8w~jY*!2Iy`nbL~b8=3D7d9PPRSU+V;;| zdVqC8d6zDqnDD12O`0_jY^PR@yD-Lu@y^bkhgxJ8b7esq9&z|HZd;!r%P2eC3h`mh5|>gM&43&t-I}Jj%-oKsHfG!=h0g;vKuh;=Ii#Ysx8eIabL-k5c+x!8bOmNT|885 zEBxKTd8b2{mm{${k>LH`=u~{7?OT43>*47Oft2kCEDlH)Mreo*P>K#zJ;bg1on3*p z$y{|p9_dl82Lk7Ygf}CX4rn_mo%jA%@pW5NNXE6wW8Tu8U`4XuMfK9T$qjNVV}T7C zxbd~)g$~8sq-+zl#;IC#t&@qI6gHyeRwjObu?Bg?BYSFUJw%!+GhK40>9Z-&_5nC0 zVqJvwl zTo2yNSLO>wU>$=#DF~<6wh+0HSykT5m!fuXl@9GkPrH8pi;mLU{(@xvXPc~*&|#{r zqH29XQEwjgek&!zpGp$Zr3`XQZj4I&(PZ=;%j)BODuyC!pY$WRqW66@13jT@BiwNP z3TjjB`n$3_+7Qcs@T)+)ki*_eLq7o%c)#ZkY!dt5kDkuIJ)U%^zxSb@3uQ&>rNr)G zedziBLdSLmA-+N#n(&E^Q?V=R7)QFph)rImk=oKH><)RoQlZuzEst%s0e19}dm}B6 zd8`tj*G+i&Yd?@&CqmCsW9@pe`-q@3$e{Zlsnh5%X|LF}+$Qf1a0Z9OLP%QnQx!zx zgQ5+>(McF5$&=ef#bsGy;zU9QTOKl)(G8u1T_2uK85xza-^~>;__$jZD_IWa5w3+W zGB=(d?OOq8UOwX!k{@B7$T!tMtB0dehl=H=p-~+{-=a`X%I&Rd^EHWS+?#fQSTP#U zE8IfXQFKz%U1C4n1*y09FVfHpPkTW#bGjHPmZt$|noALUCl9&^A=9S<=B2erg$qy3 zC-YSE%ba}e*#Wv)h3Chn16T0LTk|g{twU06T^Ie}zno~)2a=QepM3w!fB3U{Ra<`J zUxfd6+PVKJ79y5$wsJDJ(|2(CAHvaWB`G;1ePo_pZcceB{548KRD>qDq6i2~0%0LR zLF$gVy1r=LQ3#y0nLQ_qfrTO6{soXW{QGc3Bm~640pEQ*g;_Rb;u5IClW#RhmgBAK z`}Jrk&JQ()jG*Ah>p2E9ee!U9E#+|%l^KmODD=r03+=p9eRm1oWD>cz$YRfAlF=B_ zUmFz-I@z$eT)+mZ_zdT7Hq0b(i4LYtbzePE~(WD$iHdIQDz?uPjtA;z4#bebR z#p(D}<7NPFTuw;gSBO&yA&(*PQ^1%u{9NEf!orGy6Hn^t&|8C|(HK2;!6SCAtYb2S zwg1s)9>T^}ZU&fbivjimeh-{k_7{6_C;Ci%?Ls+JUP0st z&AFYS?(8OP1KcN;v^SG| zo~8p@rw(iM%ur#Bw5D1!U8N_@fG(o-6@-B+0)5m{J5JK0ip-$RD~Y*XLjU%V%eNwf z46OC^h0*Ay`7hx0_$CII#VeNQ`T13270+onaqbK+o3QBIT_|r&`enH^%m+@AVxN53ux{LNcVyM{}b-(H5chDVHnd9`K)0&?}>MG4b+} znU7{!V(UOpLz74Od%(HWum93KT?M^ii1a_$fCZ z4Ey}X?V!Z9OFa>f#WZF5tA$ErhzHb>4_tWZw;MK;!|l30bJI&27m+?k{%xp06(V0_ z(Ir&nsNrjb)I1bX?qoCtV@11D3QH5dK>*SWYQKC8dXuPQZvMcxD;ygy7d|3oqRs;L8gde}i?2jN*67L6PmQ?6)w{XFx6 zfQp!uaMlY>PEuS$&CubykFVeQ>KVvB^z0}xMr-YeyP3i`#;oxrpA<9HSQN*{6}2;{ z5%B8*^iC$*)sw%kwTb~94lLjJrP=H8%|&3pxSIaRwgy9&!baWGXTX4HsyOBU(s7~WK6r&)5zFv?l6!QX*g^w39p~C_I zOCcGgGMFp@cNgZK|4tiBgud*7-5o^IkpiOOeEjf?x0sYDK%&Nri;Pjsjg*bzAB(yIP(V5YR6@int;8Gq`zVX7FjDq;jrYza zO=4pbw&S1+RR$C2I;u0ATtudcr3x%ogWJil2N&N(Z*VbjLhjjAHNTr$5QLx3n(Y$AS>HzIz^=}jOXohq0~~WOG&nZp~#`2g}{JZ zrCrFw=2XmCwuM6MIEA)_MLKD!M{1_?N-M<<)L$^3a8?_WkL& zWGT*3G2>bCI`|kGTTZgE`!w?(k2DpVgkYVdPoy=b-JMxcme-bRL!O24>rI>8j zgPhFO1?=N#Jg8wno}6>Q27(Ie4rr3|0AzQ;4U8~I%A?>vf3UoxP;)(k4~|C3WuVdN+V!yjKR_mnQF_we(y%K1D<)dZ~>H=PKca?LRLE?pLJo z^7mrgLI3zc{-2%3|1i@k>f4z9hwwOBRnrRD82PUWUG|NOzjZ!-w|F^9OJ`q;pId%j zoji4t>bjzp!j%)36Id&gvC9g)uCy0(KN>D{mppJhnETw2q7aNAG{L=0;k=r+YE&wE z?$GU&P3xo!Ri?=)-{aS**C|)(mvryn=N0Q8+i9?Uv4;=nDWl=|s)sBnL;^ig73><3 ztAX&R=32NEC`bZJLTdJa;i8BpNFgBPpf_oyRwN9X%;iSN z3ncUD6~!2v=lfEQlxqB}Wow~H=u4NCx~W5NFl6#jlqzv`la+aCQ}xLsr(W;dLC+n> zi=QAqHyg0Yh>%?!9Qph#za^&UDJTjdfk)z!ova44l;`GrMLjhmO_?1Tb9OhY^GZhP zVNB_Q#R(ZUII8+m>qwnID&Js~@Wy1KFaN}`=FAW8NXBP~26)j~y-w#;WL!WO6H;#Mqt#U7fcP_B>~{)s^&Ev zDF(`1Om&1@%$1*p!y_1S8Hg{rHktNugjHrf{=_~+gW2G4O@gpTFMRADd$HsYYe0w-4iYqjy>YeJkl9$S`y$f__W)$$To4p+6_ zXF}m82N6^L=296;1Wv095YZ`m`imf$B3T?Wsm%2F`cqePfudY^r~%#Wj?`veisbpa zm6)p<+N5iZrM+qAm2&#{P{BGZgB0zw(s;~d1W!A5N6nF}(fd+kZQ*LN{g zW|)$f)-@`d%CwhF=_!k>HLdCG(xQ4hkoiC5sMK4fIYdGuX7^v=OY}nQ;JYDRcykO# z6JCkrQA6e3Gu8{F9;g0PCMm%BQ);<(ZgXq7FhSy6$>xjaQnPG4HF2!~i~!WTb7GYj zWt2{w9p|{(S!b2|{g}*(76-aar>;=FNVrV}0+;~~fli^F4Qy>aWWfgjIhvGQRD>Sw zz0BOpkuz+sX_{5})vn3ag~hW?Bdh}0u}5;!DBe}*YqlJyIH47VL3v8@GE`%yv23?~PbjV1?Gq?T>M)4_X%tQ4rQ z!F`D6y9al{Cno@>8b+6JPQXX9N@fJy_UTK-$j;3>+`BuG2<>tVuD6WV6^HciIC z+Zn~nOL#Rg;MDNB-T?PPT<97bSQqj|mi}ERZ;oq12B#; zy*hbM5_DWfz}{%r_QS&&;b|hl?%_FX6*l+r@795F&MC>?0F0h!f~|gutziu>6~voY zgSON9(1f7Q)axX;=bsmMyL?YW1$h0pod}&!UnDOQzhOVbf)`N#n#@rqkyA3!a?y$0 zP9eI;NVDC+L_X7e)qcc4_llwO#U01e7PfTN5*Ffi1$i4SjLkRXdg4w%$cA&b3N57^ zG>0S#8c|n4hCiwIpt|oG9w+~8FA4=j@(g{)CO>)P_XG-;cgF6x2Z=6mRGr1{3{6CW zj|`OB7%YdUxgiq(%Jz+`VuD*~u_liA4orj)xSpcKa{Ez(_q}f7Ujj^P$ixfMh_Eq#yuuA>~Mb*DHy}T7`y7;rv~9r z<73-9zYR8LRr4%w_5KmN+4b|AbAzu{W@4qp>IKZZjjxsIO>rLoWDhCogx!Z2OC29f zdey%3sJTS=_?KwAbzvkt^lvsgi15b`%Kz+YkTb9_Hgx)5GH`~~+`W`no&U~Q*)n?o z1n_|Z^qCf-j4 zA{mql24NzRF|ceuTh$!0crJKLS-fq(??mm06KOu>{`FbNe!t;)uG;;!Y(?67pJV$i zJ9vWYe;20I2GxP-sx;P?uS0>-2EogFdftgy{3-B{6!@?QC-?{_d|!mG8O$xu=2IKg z4Z2Hxsf7QF>5DY9OBsN+Jl{(-YVhF=t~<)MbSLw37cyU<{*zTlvC&t4a1yi!X^09` zM@6_6XhVx3FA}8wap;K5 zMN@Hc1jhtcgO36XuT&@k<;uHFzd_3xi#W+yLY6>{Wx=}{Q*q-sg-(L&ux3;54SNWF z1MA+JF;dWXDpF82vS3V_R96AE7q@A`TuPY&t?T2}y~ZpeOG85!%dIpSQ!uqQT^94X zs@!bkXyd19g#WlJM2Scl*eXrybsG7IW-Kg8y zQY6Z3P3KdwB<1f=8WY6zQGTxMubDBfIdT*ldC^ek|DhkKO%mZnfO zSate!9Ze!ue%fVl92C901Mrj#En%+jc%5q$9(|zjaQ&I^+{Sy zAc|262SJ$(v`U#ao@*udX3`k3T%e#LiF`FdrWBf&+2f@y8DU9ovs>pjuB6$#q#IE% z4Xj^FAlCIqd7-GpbQChsK&?R%YD@QEcv4>Vn1tryAW?mkpecgXYD1qdG2A5v_{nTv ze9wfs#)v39LCl7fqH`0XXtqe)1MFzbLPlFjebPkn>#SbrfP+^v=E{_0U7{to%d#;9 zXI@MaRqpMWdVN+v5d8N1y5!R7&%qUb!jZNYBo0e;0_Mz_IekYf*g|S!>rafyi$>*+ z6*=AOIc|{5OfAotDJ{-M^Oj*kWV$ShAP-8q{(%H6cbpB=GE`efGscS^{p^RoZXV1c zU`;bx$Dv}56WP{0e{9tx&*``iqv2xhO4_WXju}VQ`Lzl>4Tz|o7|TyPRyxr+N4p-J zxOp?i)yvx|{BO{&jJENAE?kihD`GfmKvKC{XU=?m4UOW-l_;%nrPhsaMydGHk8-N# z2h22u$a_+rk_tS)f>; zcAR%2NnFvRZYPliGu;-hCMj|%j=3XL`Sn>pm6zx{FLJY$0N<^k(6lql0l8&8CaF{trvjYzBExManFz3AB_UK$0uWD> z$x%^;G-WsxH>EoySFsvLQ|IMMB{Or1oiCce#2&>2XCtceEMH5m0X(!Sc{NO>+W{*S zP%Bst(G*xlhVitrlH>s{O04@BD=U-YFiMv()g@c_o6_sF zT+r*|%yjXyq+A6!C0&vB$yml>Ib%Q=_Ju)d3)L@A)RN)&Gka7xA5-Y^g~R0_VZvP$zb zu7Gb9_#$q1#vX_r+4PROVCQ;4=TK*-QTUQ8-Z>G;nKsp@Q2LYhpF&36M#Dl4lo`Sg z=>&a>Klspo;U%iJ(k~r;mUKrxfDe9#2&U5e;f1 zC$-AKJ`{DQ9@kcT#bB?+bM5esp%`C$h(9siy~|SOiqQ4l@?eC=3_3RKeYtOp$k}lN z{e&xojLid$ZRh5|bLGg%l4}HQsu+a~sB!(JB3giS$NOt=bj*$Hbu<3;CtB|W@b{08 z7a!Yam7TskOv`T{$FOL0KXc+H0E!aj1!Ve0=tblsVem*nv68&$jnm9csi^c=tJJl- zc4qbE7i!be>q^r*nkpTJ#hqN=S5Azl7xaE66j|^Zfmgcj?*0{uPp_nDZvgquTmV;l zho8P8_#+ekq%*k6-T-Hi4q&BBsBBFMqGf(2%A$-}a@zQIwS9-OeEbPmaD>1M^rvX_BZcQEVPRR==IQ1_fsG3MxVrM`Za5iFy(@bz(kX zVxBM=&)@}*Ht0*jp-CmD@53AW;yGL7C)6acwmRyK;SAk@Z=r2pu9hQiq$i+6OYecB z;=?`2t$z8Tr6$!h?NOIn@fiVU2B7mC`_Qv@nK+=L#}nMQp}Y>fOa`SKh)rhyPLJz~ z+&iWONqs%PL9%0tkkhx|tx)V!{Zj#s0{-(^%DAl%nhH6pc3c$I)~i z&Fz7Pzy;Lt`z)IG`%Z(!FS>6G!G^#%T6FSWlpb#S3 zV^HVcQx2dfd#@vfHBxbe9nx}GAsk|Z}xBN@joMHTJQu<+8I z3AUnJ_3!=Y*1xCG>%ipz!v=Yag%POn@KNCLAWRos>G5N&CxDF}16w>n^m@v1v!?>L zdn%FeG$84z!my_r_j~5x0nc2V_RPbCXFgu?EW*p4M!ez)YuJqNnu$`@eY)RRi-q{2 z1Ce#?Hre75D)r9p?d*r1rfwbrY8Asf!Px`6q&|x?oG}wQ`;zYek2)t*?{`+ihT(J? ziF{SFCHx`xY^uQm)nEY_&k`8t^1xtEWcMyr4E4?3yfLOeU-To$LnM0Exvs7%N3dV3 zU;Kora>UttllQ>0yoaAFyt$TZTA=(ab~CDd&!AuRbmD5IH?j$j&s62 z(h|CEwf3>ZPE%Sgr#Hb(n|VWMGsd~X^mYvo^DQ{n-iT7lGfU!8k!(4lh)g%2AkAqmlD+cB%8FsE;Tu!m|ARfO3hLW)wepOlchGN)Gj6MQinr2 zMcU+)HcMOR*{L+_)11=j(iu+aOzAAToK2T=h{|)RbRLzqQt5muUEq{1lrAF9Y@aM2JH4cPwtxfv56RL^rzmTq@%XYe4 zPnR2PaF|-(NSB-Fax-0aQ0LRA({*&Yo-Q}ggPlatE%bC3-R`E#t;D}y(&aX~?Q}`M zl5VHV9Zu;^X^%_#we%Z$a2H+nQs3WF>250BL#5x*<@a>iXP5R9W7pcHE&_PKF5T;d zq0(An-F?*IeromrT@KRigH(EmE)Ub~BUE~nN`J6RkI~H`x;##oKT`D*ba|34PtoOR z8qS~S@(f*`rOR`4d7dsW(B(zC{FhVuv-B4#{Wp=dmM(uKpf8b_{zj#j>GF5G^om`2 z)h@k8cdygs4Z0k*OK;kxx17@3(mQl{mnz?*zVB1%1G;?Zz{^Ke`j|-jgf5@jrO!yM zKDS9<*rb0j@K!Y^lGVw!MC-J=x_EQ4oq<}_+#GM4(Nx>s9>-hDtObjgu43Sye^Tu! zwWFJAn;S+`hvtSU4BRtXn%k4L&B^7pO&xIto~ng2XRTbjaM9AWvllH}IFkXZl2Mh8 zFmNoMHgoO#ss&X`Wq^D@)GOvzEuB@pc-o9vYp2g&G-Dovu#Tf6nP?i_7H^1e9=*6W znT)qJBPwfo0!gi8AQz5Y&On*bQcnoyCz|66J2tM1w=Jz**Ayo@Tk2|?me;l==w4JR z$;JeZW%&G-wuaHQt+jQH@zHfH8#f~Ld_?2Kkd`6lc0^`Nw9neun%u%5x6m~18I84V z)$x-%;>~sODI-@ikm?X>sIL|boQd{@ElB|iflkLp8*nV`$+r3NX5>yH)kZu~kc^E; zXkl+|kIWb10GVMkLF(nLaZ=`{kgrJW>h9L!z;_ zr*5i~wQWg`ng7~(<*ep1lD*ocj1ZLW*ACKD~BwnH*B zLx}C|=0LJeYW0M_VGf#oWk} zXm0I5qWx|0jV-6d#b}PjKBWwb`d03Y+)u_gBPgcxx3s%rYdi&-E3;Gq7m(=9ld*;ysD0KTJx5pNqWr;Vgoyg zTzMlFW{{IKbOec$)?k&TPPhjA#o-uI;FUtB^arE*BZ!nELd>od?LSQCYGNAE(U5E; z=aiy=-@4PoolfR1*EN!L)HTl51*)d-ENX6|3E`C5rbPXZBo_&A@_vFf2F!&m&B$>z z(QJO&x5BSEn$1}CaT#o_<_S*s+*UksQU_^#l zt}3IqE6mg~b5o@$zMdw#wnRfCk+G3@E4Py8@EEwK$Je9!a@}dIZL3YTpao|cPp7TN zI0t989?f;F@^^2hS9(oNlbhn)9+I^<#AEw4k@s_IS6W&LvZb!6h3w8}AZ<6W&ikqO zGET&Hj)_~Ajd1gl(v;vsHpPeYu?Cw5x`%sPT2mokL65fOy^&SY{Mg>wM6N88USuXP zlU~fo+|+G|TAy(y_b_>a;=*&se`0L!WpX z&hkx7OItR?$!X_iY`CJOZ3C(Cl>X7SIx}&;*53F$#_&@v&zV+59FIxb7`)YP5$fS@ z=DES5_0^`v^13*h$;eDy`p}X9A8iIUxcGzAut#Q6jXnlx*;tz-KgXxw1$r5SlvZ*O ziBsc?n>r{A$`NcPnb+2#?URP%M3Jd_M(xIUlRiCW($PNXaAUa3M3>eA3y z9irMnc**5cM`_0nSF{q-W1=c2i4gb`XIzLOPAu0qdL*h zT$}75uUTBaw5)g2%0g<{hx^U|dPc^kmRb@&gJ{MsefWGQj}ArbL@|*lI+|NB(n-cQ zaz*P{Z)CNm?$bLGP4)4%DdZ6{pzNn>p3=X*ebArMRj&U?FSo5e7$mo>JE{8$fFUY- zLUcu4%>_{n1$r(UC(a4(6s#%q)D zdP)$S$;8I^(w6xNlGDPUOw#JioUk>t5vDe-3xpKsd^2f+N8#p{1t@YpImX*(x3nRJ zO~TDeYcL&g(1L`hPz8XL8%7V@D#}i3W+YCcort0`Mst}}$z|$^0^HbApID!W*YmZN zG{_VlhrY(g%Qn>DwkDcl`WdwKk!H}CxJtLsuZ`z9^_wX?<{5!=W*j4@I+7tWZwZ?nB_Ksw0M-sD17hg&;_^8*XZu=M7 zW*%3da7N|_cAiizuC1r_9t?{5NXjyc%hp<3uZv2-QhR0+tNLk11gxI>3cCPHD}q?$ z3o%sCGZsn&Ila~?PxaN+S@nPw(8BS7{aV40#)wIg)LI3+OdunE=m1tiS}tt zt&O#`2B4R!^;sZG++q+OZ%belncclYH1lF@dtD;27zdHm=SxSTePOComQfb%5sP`Q z;aHmHr-!CjEK4)gT_0ax+tHLv`Fm&j9$Sl>s`X+G{@DI3iuAc!+GBM>=8gWoVIQh1y_=U$VjwM|X>eY;+vgX6}S)!x|BhFU^m<`wRymgWZ2y@N-lL@Q2>IP@8OM+mdL^@+_r z^O>VLhwS!^NJiXPbkZRP5aN6kSaW-0GM;FjnV^j_Vu(`LLf%?hTTjy%txYG_VtCDP zcns?q?F((h|LBNWJzq^CT9b{KePXgrdnfB?QLnabODYR#Uyu4^Fl{*^+Vwm?%!~r=TtCwj|?xQFuBf!88lRlM69Xwn<+i z%<{S>u}A5wZs};Ni_cDwVR`lbd~dOspsMf?JZzJ`QrSz=*D5>?e^jM^O8>G+->B?U z>01?^#u|7|`VKGfJOfbSFYuBIFVp1}x_mEvud>O~zv=QH6<&ik5lv5mRq2R~T|a}* zRhd!gOZXhsI^Aqpb34vDWFz&9S}7C4=)l<9!Q`Zmw3Wf!rH%1?^X^!oS->OnH^!5V zE%o_rSdl=j&96=7H({)s%s&<(mKNo&>qzD|v?R;&Rauf{RaRsRm8>|3DfumJ`L+4g z9nJa2E?+<`Z1_+rC1yM%+ZhZor7C@FyD=D$ZY07W)5F1i^~-Om;|m-0gv!Anzc;Gx zTXzfwWqx2lVh~FM`N2&+99^H!OdxYjg6X;Chhy(mmmZhwlwC-4uW?}tmNc_y7_}&- zu(^0)%8uId6YcpJMCRk8M3X*En{-ZJ5wOXsD!b(@RrbhUo9t6%znpE8b5vO)O)hBf zX#PR4HaVcmK{;fT!>T+$&Q;}z>{a0_InO2!R9QeCWRp=Z2FpXx5HK3Ri=r|Mv#ZQQ zB{y9>_<;GCVv~oWg~}6^(13iK~L!PP1v#2zSO0(rTRKm+#5_T0`j-|^C zs+&ip`O>#Gd4bA4qMLe_$WMfS;ma0@0A0q9Nnyv0xvMFrDEpigc*&Lms^$ z>v?cnCddm?@SI{67&2rUPPH;0nx7M{Z*U<_EYKm!LXt;Sd z=xFO|*v+)Sgm+65$)?naG{i~gh7#>2$arUJf_J9wcD#!x`Ml*x6&JP5Of=9zgds<@ zKp_=dqFpr4%`oGc`ISlSmZt*ubS#T7mGud}fKs@os!CTkD;24b8O&l?F=`Vf~gjeH5=w`~}#7Xm-LMfKqMV2p)q&`0JqLTmYyL0J5Wp zK#d*%iNW5d>VRi6j?miI2>+dNgwMhA zy?{IpHr5HY=svLR?GA(u=mz8k)D!~pq5m(i15;vYNL&fnc(AYu z99lr{A)r|h?tgI&bikhtxRV5NSxB7S@92ZNg(m8<4C?-3KpBIr>6taky1?19_erMS zR-^ZS8@(5a-eIJ{!uE0)^NAVHbdvU4+T;HWTo$0sOB9@W}$W zCpAEOMjCgUz<5j}d`W;=hOLR4T9mWi65Sg`A*l1{>h4M3!$|id;9!3M4|~ic3QYi} z(%*zAUN%rXjS7mrVF|ZP9R8|`>j{xu8G9VUd66A3A)2=jvd|K?Lv*W*cJOhGa|s*K z<3Nl*-v=IP2RL|x52?nRrmq-WNZ(;_vp12px53BW0gb&2!`OQeV;?{X`w+&nk6||Z z1m?5PIqj%Ws9L)5&?uG|qgWzF;ei?AsSl>X-?1d)$X+o<_8^XnY`nV1$Z%W(BHLk7 zG@{g}1{T{Y9qByskuflQ9*T(usgY5O52A8pANbNkiz1OAdB81su~{}`OF2*=X%Lly zFjfk|IB5XPmU3afG|=z~G^|&}u&Rw=RU5;aDV}bF*U-ac&~<+gJ(4DN)AcvtFxR8k z&=={wcOzDdaCgq=LBWW~1CYH?E>$!ovJ13PniAEN64Web^;U(XI4X^XyE|zaxTNJc z)Ro|uRza?`8b;vnDCu~Pz7kQ}acFOG;x%-M!Lqt12Nn6o zh!^v*xDN*JhanHf_RhZ#3Rd}t#rDJS2laBHsT?(xi+CBSu)+dZ2t)ZVj+g(ghmriZ z4Pt^nvrz{@>cA=E6tGHLz%HE%S<-0`kWPn)bOx%#S*QZ%!$Ro-SR`EttEG!zjkFEc zOBX|fbP2RcKZADZQWGC%!@HbQi_mu7gZHtthL=9TQUjJggpaV)j-`*`6E65O;Zv?k zPFl4_x=8TnBP`x4|(|r^(?=gD?1WRD!y!58@wOFC}E( zNF?t|gS-m_dDBs#DZ)xoW;$U3W;F=A8zxq-vdCR9DNWzxqtJH%#c(fL;{#}c2Vtu8 zpozZeg1&JX>2ttW@U=1j>Har>YUn|~K~u3RlQ&1yWj&^3Im?720RQATsPr!^k<HM>-$-Q7f;QOr$;0Tx4iPPsp>tCeH?kJl6!-3;z+2y>LVXEZ@@%#vw1q zesT}UkqnU6Bjg5zoZyi2^*+5IV~H{D8wiIaa4Zni`vl7fNes!a?1|)jWXuKNlrJ)o z?=z72n4Dq^Qv~Q0g8XivBN;&d8bSXCLGLxu-y1ZQ1pUlnAek*@BUGITl6_21<@t*V zrX42*9j2XG1x!1$ahOh8tQRo9<^BoaBqZDwL*gSh5%Dn*U;Fd6r-E&+S?KD!)kvil zy!S<8nnkJaf~lpJPSQlYtHHsSS~SazVAU*pa5lgx;+7+S#VYbJ5rKU2HcdMDxmdKt6&7*m{U|G2Fp%f@zw`XrqGa={+=GX+-ao0Ee=nTU?pad@bb@Xy@qY zKA{)nOAzwU5b|aH^$Cb0CHEy_2m!O@nb_jGg9DNKQsV_@ElHmmfu zS>=U(+APuhL(Zlbx&J_NzeIAs?zgk?^^Y+#dSJ5nz;5w_(~{GTF)tX5N!f|d7{rUn z0MfcOCOhe7BDdoB%=Z;!M&0eDGVcb6M3ua5wqnWKvsK18`yG?1lw!09mI+8?DH1se zaxIf#q-6?>vXsMUOC?OQ90O&R=`htY1CF!Igla6Wvdl5U?Q)DTpW*6{1RKLzV@PR@ z!9YLD76V)=7#I@TD~q}EhF;mY&ca%-S=NEWQg32m$PiY@un)fx0xT04!YLNYVm|8& z#hJ)}vycJjm{5cb6k$Vsa|{%Fgf}ZoqtIC`+*zc)l1Kk}yK$V{YejS+2!HjSiH6}g zV}j)-q~T_yVJG-3x4;0)E*NUr4Pz{~LJ5{9Svn2hln1$nZz?mGUM86CgON<*OdkOG zEFgSS&{zSvNG#73r`gXbF7LHEqf^UQXH3)%L30Gl?@%beN1^NouLV;D%K<2`+zZ38 zT!ayC%BuXPb(vzpPp`2qvyC>qMN%>iM}u5|3-y&JC#Fg>b6k86X zaNdOJmbYM@v%6qU4-2rmAj_(P*P7MM0-i7|AdkoL+vs3|kl0)yu?xCOETv8rv4fQ;Gz^Q5 zCNLDxw3NI`gowDrc9QOCRubrd-XgOpdz5YhGwJ6-$j0#$;dn;jct%6eItB(<$HE|M z2^3hz!6@r^m}s2~>?Wt|AeStr3tYZ0=d?op}a1IVb;r`*m?y_vR(<(tyjT3>(x+Wy$0H?*P@)Rgww4z!dckneCy37 z1Dp1LW?+S>C;%rjnXgiJ^fEA=opNO!vTtQHPv@Qz(-iX@huMKr6CtiCI@h9kf?ddX zbiAIJW~KHw(yZMHPK}nzY5qp$-ELxDB}yGoLRr>(k$Lwc^B#bK)`Kv@`XDmxA(&%* z7?xNcfm-XMP-lG%)>{w32J7Rn5!WoBISy82DbEYZCz6mUfIf4Zp z!D?fc?=Yst4xwd1I8m$>ZllvmLXkHKMUGMK6n#AH82C;=?BMk&^*&bG*=ttjOJdgd zz;1mXoYoH^+xih`)=$umKZS_(^KNN*N}4fN#HHy#B1W0kp{Z52IS}9ua9$6KvZ-LV zxxs1kn1E*+z_VGgaDbx?2RK7m)Hx~O%KvDx(#>ataDMV0Zd{psA10gKe4o<8_t}bY zD5G#Fqrqnz1Db6tgl#1-$TkiNZR4TDHUY|Qr7+7j5f<1c!BSfpEVq?Ii>(4qwoQX} ze7*(So@Gn>z6pl!D=}kTF&K4@uqmHmQ<`B@VZ){dnQUrw-_lZ2(wg5>TD3UD zbvVTOKBP59NGrs~3gF)egI$pht78W%{0k^dlPMoZ36)@eUQ%Waqk*8$8W;_e4OWsI zCEbhhEEFfD%B>dU{4;s}1t<>*bvG|f;B<^|z;-?ocmWc45x8xafY){@WZN!-i0yJ1 zV!HxH*sg@A?P?fjy9OrPu0?rV2h(laQ6`tcJljo%Sq_1rtON&T#UW1M+@_dwg%R_u zVB^?$zT|r>o4~p4MfsF+ZfB#+CUS0XW0MRv92RVt+l>v9nG40;xG(^@V5EIKqP;cE zffw?6WZky=aNPIfxDVpE9|Vu>A@JKChFsetFxd7e47dFOM%oU+MBC#~Vf!OY#b>i^ zX*V<&28r=%FxD9FTw}a*jqy$qzxW8_n&uvBINr+xwu{J^-uj6CBg0Xis0DJ^cfMwy)5hzD8MoV^Y9E zW51!0Z<#Po$rM4!y&^fCsZ$aWltgMOOhiR=a_sa|ksHwo(a9_A;ojSD5nOnFjSU z1@&O;mN;0s!O@dMay8K4C}$qgznkx($+_Jq9D<<~s$*`k)^&L0PB`hwih@cna z0_v_pJfX8c1upy3$ed>&$Nnrb=XuDpzW_t*FQN+l*+f#zASs41C3)FA$l}BiNz)CI z&J!e!G`3ffsP44zy9iNP(@knRL0^H*{xvx4|3ad^0k8c#2-v?zKK&a8+K-qB8fg$T zQV= z3Je<3OqprWaJ8Uea+)c;km3uGu>-u^3lLxGe}GAj*{e z&x`bv03`g%JRIcEXi=UR)p2}=#c@aV8ciV)u%2VR7*xk4D2PiT$8i~s^KuyOxB`kC zSHfh+HOAt|aGdyF6^kQN3=*ecy1Jj6&lFaLB?)pc(iQvK>{vEW#B|s2Eo6Y(kZfN} zSCk@MR*d_a$~-i$yJ5-RBD}${p01YrpnBDQSXyS4OKqAhPgCl5!R%;Ev(eZv(z}r+ z(g_sV)s)(!MVg)J9h!sJ=i&T{j~qDW1F%ej6`Dg+YD#ULNA`y?UR=(ABM)2YZUut} zAo~EUl;9y)MI4ejhtQQGhkgTo$6d&s-y(PJMispW20MNaBM|f`$9^bvbRnk>z;wsG zFwb!xEOy)v)sBO(+VLRNIUa&W$HTC}@hF_;_ye5lcnr>W9D>UokHeLYCpdT4BWLDe z^80rl2-aZ`M|`FT_%?&jw;6oCP4GDkm-6gDMt+~g=5xu6f-P(TpWI6^OkBtop?Xb* zja(mXY%%ED?fSFh@R@@xVbwyh#v&xfHIzwRu)3#)zGvF4PiZK1U)oE-Y0Ys>kM2&T z4+UR_Aur>AmJ2}TVi(;WjY$aU_@0mkn;_W@NOrbDn935iGV|_LFGw?btb})mM5TbR z<5hi8cS28?C-y5M+8o7RiE)fuT%GQhn42dG<}k-AKf?&~LYPI?hW z_<-+(4|rc3UgCzXDZ=j2m#KaS+Wm>!!4+kZJd#*%H-H(QOeRiA-c{%dQYJ6m3awa+ zv;M@bHm2DkJ0YMcr4H@{(82G6wJSQ0Jel?hRDm7Hb95fLI}bC&zWaeIY^6PWQ;)OF z4X8usk&Wa^_CXCgl6_Fy&5fLktODmVpg5letMdg=o&Nz*!zaS-WLL+(g}P6 zQ-xP}M5MqNIKWQiZe=p;WouatDnU8?n$?n9fn(qfwvM~5>CmaWF2mL6?d!O!sW)6r z2`IXfpsP`O8>Xw!6=_C zR8O;Do;p3MS@uCz?oKGuY}h)o9l~KHs#&R8%r)3tDYauRr&&s^sCU>`DYfz3?jUti z>9Ce&-wxS5dxn*;@&ogc>qJmoYr*QO1($0bcwBXm?TSOhwH}7J8eo{K5ei)iD0ZC$ zlUy5MnyU$pb8UpBu4Y)_YK0SBCqu2P9qL_4XmEAFM%N}d&9xaWah+-`OdwAT&g~SO zqY|lx1TMIitA-2_*vjV_T6#D~B$h+qOg@)cVHljo8n6c~6mDjXSh5?cq4zwFrdaqn_U_bObBb8F8X5DIK=z5&!NwA|cY#}#gGpUnmp&Ne)uk z3H31<;g-5M8mQLMXs(?<9ZQ!9%brd+UWdFari0!Go*RBT?0qKKcMuRYkF3E-*3hF{ z*b=t%Z4IBGD*)FkXbrETHM|b0>kaU^4uj@;3kJI0hQY3PV1(;kh`Qc`QLgu4tm{Lx zh>u{V>tk5p`UDocK801T&)@{t=TPJN2ei7rgm%~0aH{K{aE9v}INS9toag!uwz>Wd zSGtbCbtwEDDuX*z3GPv4*rzJ+plX3fRVy4)?eG`X0WYa8cwJTDO*ISNQ9ba!>V;2L zKYXF)z&EPKtZIOH)FAV#A(pF#*&uZQ8=^*7iJHeIsDoI!iur>&giTk6vRP^Yo2QOo ztJFf4Q1w$&r=kX4ha5?uP0|U~GgG?D&P?epmV`6Ml5pm%O*r#`tcF{x1qS1@lenE0 zFnt}`1|txL9*0KRQf|8r7{!j`w(B%(SBG&NUuN83xb^gLPmE{Q^{_W}TBf7TtSLip zB}4BMGW2%R`?bQ8A3)m4YdxQ~OktH+oV`GpCLJ6t(v zR$hx~1}zg~`miQItU>LT0l`-!K$`_TWtrQ+5rLe6d0&(g2C!$ zh^kv)qIxP!RZoLC>gjN-dM2z^&w?8DY-mu=fiu)|;T&}(vY3X7wW2g?)ad zUJM7-OAPm4gUZp&)nF>DV=Y`Y#-Iy7MyyLeZ#c~7Su3gr<>mLWli5HN+CaF6E0_#} zarSTHN*9Gr)=rZ{T7`HkI?uC>C0PgPXDg?J>BMk6J$79QI?YPJPGOr+@Qb_EY{r@` zq&n4b=vripAN$<7df zKS02=?7LJ4oENF53E?Kbx~+z$<9mI&z@Mh_!2Yvfiy|CqZE8du=lUvdcC zXK11aL)|!Gx_w}EXZOWWF>NO?6iaO<=nP$>1J>8J=KmPJ;*=QaCtvv@uN%Wr z_c$bS0yy2sY4;THyUQWyu7CmVsZi*i4rARjV4`~_RJv!wEcYB(gmuf@#~S>NnfSZL z7~UEqxL#xMca7k$-{5ayH~yZl8v=7-8(QXR5d1v=C(#ZcU$i;^8yGA|RoRQWpo#Ou z#}Hk^!lFaq7*#}L)|+gH{875D@s4E}UmgPIsIWp!I*+_EO0Yyu?;5)?z;t7P>8=Hj zdmXZ)9>VT83~{fA5$=+XPc?oGzBQ8i9I z7qAQYvQY!Oh;8GnX%MOxhK1~6d@5m1FoCl{Hd!>azr?WUpK%6VDj1Y47_{MkgFyu` zs?rrFBa>e0&ZJ{ee&D_snRE#<=~86UWyqu}kV#h}ldeK0{T!L}3uMxD$fO&PNjE~3 z`zF+z9k9Z^6OMP^0(I`)u-<*E!Kf7`Mr|+{wZT|bTw*Y4axX@0=*FnaIHN8XE_JQg zsPP$$+Q=Zc3!2lz(QS1f4rf0O=YaVPGP{CZ$qDi45;GyCXIB|WujWXvIU3Sf7qs+5 z`V=C48j(KJ7g8F1pGdDoq(3*_UwR6;NGh=){o)aZ0p+>(TNcRrp|RXuFgQx9pjrGK zIZsjER+;G)%lPTB*Ya}tYBisniz_#yFW988$=hJI$5?r%$-?q4Bu;Gs7zDXFZkSRF4sBh{I>Mm&S2kK3TdNZOv6;YptsL%KT)YqHdnA1^*d!zO{q%KJIm{zl{ zLsZ)l)eYSam8DRG(?A{eC^!9c4vesWq|qRkAQir z$VN^R>q-Z7Zu|8O4;M~6wmkhs#Zo02BfoPToej|Cz}GshwEdx3>nRbr5o~fNSTJXx z&5s+w?)7$pC(k?eRxD1X!x4?8Hk#K+FEv{Yg+q3PwgXDScJyj|Q3>a?BAVAUi)O7U zRkq4UkOE9^JO=*GBhT>Wd@VDwB5dy#BJq|iA+WL`J;{1s!* zh2ZjBWSr{8J_e2)14oX);X*8X_@JHiMJFAbl7p0b5okg55b*uW?V!bI6YU`SVALpk z(Lt_KnsOt!`O9dh?1xPc#txQRiVo7DH_f^OM&1WQjn@q~qnJrIw)jt_k`+t*Wy8}R z)GYTaWj3kQE|of@Qm0(%(p+=~adp_HxyD@&^JAI|!|GY|!zr0kge88QWo%ThTv+PV zoT$($by1df(kdrvBvxwnU8tr`Orc$+j;${AD8Ixty);H9f<3uecxhk1D=N=&+{k@@;r_v`$s7DJdNi1Cn)ti2Nj;@q0aMHNO)d` zCePoY#q$c9?i+Br=P=ypc?))U-htaa@55c551`BQ5j^Jk7@qKa0)N6bFM7U$mpos? z%bsuGRnPbEhUW-;h${Mxm%;a5nYq0R^Ls5U*K>po_BvRx*TpKmZZ^~FVT-(8wg!J| zy?(aAo5MDF1MF09ke%TTv9rCo>|$?(-QgX`e(lX?2fRbsgWdx6NAGaCh9z7Zz)Ta3R0GeCEZe~bQfP&qtYJko=Vsk{3x;oO4%oD zFLzG~b|3pKyBpn86YFC4@CB6?_Ivg_zQ5bX?qOV!5eG_cW5fBgm<_@ zbF+_N65B`gNnZ3H^zx?%J;i?3CHzsfIQ-yFEp9~i!5KY52JaG3ywza!njN0on1J1I zL@Wik*#Rs`9D$f3`6>XA*0i`?a5>+^=0EyJKwPL z(1zU&kgHVc`*;Jw)*{-I<2uea+o%<)J1r1DoVOhuw68YU9C9r|PJs6e$nu^EUhmnE z<2?t0-t!>r-3o)e=fg1X1u({YA(VM9g6ZCEaIE)YSmeC~j`RKuR(dam2JaQng3mj= zSHl+XHE@>q=f(!vbc{XdD5f3rykY#!JqL`#T789-4rQj;c8)l{Po@20SH6+m%Qb_J zV%{eXIv>yO=bAAFj^i?=?XU;fLBU>^cq4K{w0Jyym zLbmrIWaz`lP;?;PKfn<0AsFs`916WpK(Y5p80&o+O1*!A$=+vRiuYNl^geIAA~_j{ z@t`T69zi{|q0A$T$C_HSiJIzf$4FY8vudLF3bt3lo`!RGx69NvF{ z&-)Fs;9D5#{SJrzZz%KujP@~@;FDpBPk}i;3oP*2pxS4L2Qhet3rL6`-ts*<7cEJ9iw`Py=sO6Bs z#0SKIp&99w@$y_WNq)disjtvgWMMQy_K7I~aV<0|VsK3zCG#8KUel))_{TAPb3pOU z1*`8^aQWte*Eb)seG4JzTLc4ri(#1WIGE&H0@Hj;jqo4I5ahdHl6YGw2t}MVv~oO* zmEuzwO=cix66wQTsgsK6d}SUv9ug-NZ!%6QR^%!>z!uTJ5P=Gklk3Ze-RKcXPjb89 zti6%k#>&W@oNv&`#{pbG5m6qVZpusO&1hKwZR>tZnKjqaXyGyW4G=-^WYd&o^rO^h zmStOQNAO?gk+&&73S0NX*?h4nk367$AU$^%c*FFyn8*r#zWlSWt(y(5N4EjKlaZTk z$ju};eI4NTZ34e`5-ciEuf4N~CRfv8RO!o`p{+ z_)UE|z!8mf!8vT|CrG_Np?^DO5UmTL0njU*nCcE##^2%miYK`wL+F;>`<_JUJO!%nY1H$l zAmDq(Ai|C_Z0aSBLEP|xmvr7Jkc*rf$ccEyICEPrPB7S`x!(LPIJc+4zum_+_p{;z z?KA8-NS&b7hf^$Uf~*0@bQAy54I06%Xaw{Q^Lbscb#IhT)tt2t&hK#q(Dxr4-4V1V z25!FuK0kV7zXekTD-`(cru3!Qpru&QLZ#=qJ9EQe_JWZ8GwelSvnSHRHnzG(r>{sH z%e-I#g$$MYB$unv>l~UzCt9HsI2LZdS<&1gnXlHJyH~U1?L^HfBI@}u3{SL37AY>( zkeTAc*}~>1>d+{Vz_{C<*E)U~x4aLchLLvT!gA11(}sfLFF@jkBNs-1*FO?8e-v{4 zF&OMGg5myAQ0N~G6Z~Ufs(&2J_K%18{t2+eUkWGsCqcb`GMwZugQR~7oQ=O1_$!QT zccTa_?NAS6*ne@GItile&rJU&*EI%TuQB*~4f_iZDKt2X{kO=4w{V|Hn=Hh{i{%;}2{~d(=-=kpu10(!Lpg0>$ zVaphUqA><5#|RbmAmj9txH&jYz97Qbms83LzZ3M9rRhy8Y+saPi;IwQ{Ml-zoCjXn z1Hqm>2%Oo2!IwP*a^UYia2dxu{?1+zpyrA|SB)Cy)-UM^YYoCW z9$}de)2asfDtnc^##Q3=qY(JBo)VM>s4Ab7Ik|9mg@%{?j*|&oy`%WW?Pkn8UncS!cb5HSs zMt1neQgHdvDR>+y_#;yAWWOnR)1csaF{!LFr*pICV|q)AeigCE_)45fuGkLl7)>dc zFYAOM_xOy4?h{B`feq-HYHhy3t`y;Sre+-W7&mb%N3kYQY0|sP& z34^o0f>`#~P?G&mD9`>E%*g%*j>YGTv%fdyqycE$6v@fpg{j7u7FHQMck|d=;+@#H zjqjISD~30=`zndNN3M`7qcNnna#f|Y1Jh86<>}wFsHyBc@?NCJCm?bHkd+ezZ%!Ee zIRhXkCl~T_A}};34@Tz5Ha)f2iV`%%2g}shkY%oHFp_ltUn=0`hVyA)0dx6k)j}XS$&sA=8H{#*0}YfXUqi zp&joVv|TA^n`nNgS&&p{FD;T)Qe`r1XVxY@rhL4=p<>F^FY?guP>sF0tG0 zJLWUCZQHhO+qT!(w#_xRjWxEdHMVCB&ioJd-tRtD@2*OB()}S-U6oGmBv-DV;a7jz zVnlq-CBcF3VEQG^90DMh(C}_n!hs`@CHH#?pE1w{CpjNyfR73u8f$iKwbDY<_@I4G z0O`1oxhUnI@Y}&R$bNe&C1(${Dtym$nBq@&yAvt4@S)qUvmUDEE`b>In>(V@K%N`~WEa}0)25d>KiR9z92{TAY~?6cq(QPD5YV-c~29wPSs zJ{IMU$A28mMeUX0OQ0iu-2o3hii0=GbpcJ(4ar}>JU=&Eqg(64YwveuyXHUW{J&tl zYtOFyKK*XrBU=2^@yCoSd$;;bjB4#T0J1ey6Pmwod|y2xB-szx`fo^YI})*N_<+~I zgH?16m(u#o;r7f~mApOrx-6NV-ehiC@SG{LnE;f}!L!i54+j6@CTP{FN@ zlnwD@VV8!c1aYfCE(-bQpeVqR697Madr&z?mx6WFzkG)Ex4_R1NR|TqnN$O^YlB}y z7=n10lGZ(`ft(_nTP}U{MF^|Y20pDzmj`Z4es*IEDHc{W^Bi}#W%@rt`&+;6dN%5Z z^zb)eBpcc9{W_sD3-Rjh*M5ZwaQg7-ezXcBjiH2oHbul&@L`bEf!BWb3cwbS3n<56 zW51lE@1D6O;F2|NVc`Wz`Or=rZUMtNdtJu2n<;~c34bLnoLTB1(wZzL(X`i^2_sA< zs<($+3&7!4RUhxG+_Kz zf$|_M`@JqS27~MC{Muyc0t>^uJd3<;^6rgfKnB$fn%3WC2-}U2*AKY|>l*{}3QfIR z&Imra2x3qG^aV@1h>5FhyTXvKAjKLzRAZ6=CEIuIAWzMj}_9PJQMhgCUFLAc-5Li$Lv{ zH=gLj2VA~douHvyxu&M>J}_0GTeSYD@V$n%p(^hBrZk;cwS4KiFsMGEbs|_$XQM9V znDm@>Gqjn@SxKE`2KjwdX)ecd2Z9Me1O&5i0xcPWH3oU@!NG@I?h!&kJQxW&Vglgc z!z~@bP{CmfNijq31~8`p=mW~Wt=ydG*g<3oP-((0j>OFn<$^x-xHC}d{jG*%x@f!* z?%?Hvb^}(9JUhE+InaFwGePvWE{vMs3g8(1ECXV?oHdklyiTqIQA#6<;{$D_Z3C9$ z<84(6fgMRQwu%A_mA1V368NcGA6EbdURtv|jhDv#f}?$O)DRyshPDFWdV_l>SnF^U zGJ&xMxuUwki!7hW+m}PdwdYeIr-@Ej_w*Cuf8CVeci=D`rViInmB#VgYG3njhRC=B z@TMo^x8NKigr3x*LFEGldsu%aSd2t(ZB0+S%HB+JUSYZr!XytKh?M(ZHPH@z`_y4B@f_6! zRqNjEX7%JybHKIZ{C$fbDNG?v0pS#BhqjK zv}Lns`SN7d3puXEBpm|P1$`|kR7N(Lp>^~I`0B(XRxP|J5JUt4pwD}HdkFk6`+Ee0 z0-jJXLGeSkdjyFA3I*K!a3;aCKN)Q4z=@&rtyc!JFK`*;H$ZKmum4~Vr=Hpq)B4uK z@7B%|x)-z@d^gl3=w@hS0Kw4Wmc$b9C1udi6`^++H-DD%IuGn|5ijFH}G9h^9Ig0EySTK?^d^3`-qp)>~HMbN*iVt@%Jq$x%xFB;A?&>_w;P zNPDpJSEailoDT96wsWtwKGmNa?eq9)yPl?uOIi8|pksDfVi_mN=Ow6tpJx5a#XenH z`O!3;1uLaIr2bL!!k}5waoU_yb{)p0G@Yx=bs~Rjg2F*O+Ib+B%a~%1=3mKBc5b}D z^U0KEjeghUqF3R>zR+G@Gc{o)Kx8{kLk>S*=ViYRSqvoHVTd5sPk;>-I7j#gfi488 zP>hkg8EiDP%E;Q1Y6^xfc%(43p0^oWJ#?i%Ywpg`_!O)HE*C0Nk*+yxWuR=%o0De= z2qPSOU;5)ytOD9SoP7|lQ2kZ!)YOx52_jq=?^gE|^;O3bwi}5XZ3mDGeG@(t#2|b! z&?lmkiQW0@IIOjSs_n811!2ZUzqSpX z6G5feq8;ZG`|nx#;2u$X%0&%IUNB3^z=!P0Zb2@AxY{~x;cl~&KhCNIq?LhmUqi_S zM{1bkC;mX0qg=WXE6y03o{+^C_^KClmRSbX|B35b-Xa&I@AuGI2Q zr1i&|BUb&qm=JvtI&VC-Q$_%6PbBtZD-|*o+bJcQt72t>g7IcaqOz)@E5**@S!Lvz z;fs5o*%&%19_lX44mfBOYiY?8GMq_>lf=8tz|G?ayYZ>dADB;^?m`kpL)cyI<_rL;`LjzdA?3 z{}~F$+j9G|Q|`O;WAo3Z$d%u3+bx8A2XcSDQ=X&lz-t-h*bZ_Oac_s5yRyWL-iO@M zeaoDyQp=%EV!Dp_1>BoQXvZjSYtp%2kCx$LE@lN5DVe4aN{V9;H1WWJnc;`jJ!%VVF6$e+czp4kg3r)W&g@)tc;@ zU3POrSIg9p0h6A7O?`-kw$60Px0cqwuD9;{{UMo1{m=(rq_*7w7t?#Xp8EZKhM&Pl z0W0ake1w^I_ZToAODu-ETCK{rUz3Q@@Pf(S{Gc%_aWA%6a~fun@>`c-^ND*t5t^m* zgomxRZt0@e;&SPgX2=zqr`7OAd0lqC`BkQ`cW4{Vi8^D$?0mL>e%t{9QYZK(Cpq|B z*Xfxzy9K_%E0(*Y)!T#{LpO_J^p0zhxyLK)?wVY=h`gt2olwXJZzlQsID^+JDT;!6 zi$?kmve}p74ULXLOoPgaZcZ;G4evJW%uQ6{o}EOH+#BkWa2J=*w%_7GWYE>p=qkfL6T>PT`|s(H>!&9DCrVcIgYl1hNLA8X&idV_KZNr*O3J@uCLS3%>$BX`eF3 z5KE&2#D>8mq7((Ad0ZqAbSpjLqDioKU1Ut?+I_KEz;-m?yl^RAG9P=j? zbwTS8<2I*qsdFqZVhJi=@#>y$H7$NTQr1a?7E#ekAomnw51v8lt9l*2{+;4A%+c)n zIx7rNjd-M8e&GWhocn96fh9+M>Sp$zO#0wbwceMr6omYU|LuP>jf!DC4}k&&0-AvY z0%H6>H+#ANU!zymQCU<({90f?8-Z#DNA3PqG*^}y^$VkVijy!(r5kk^DSrWb!*GMq zD(W;kK*|El+;tRV*Z0BUm1K#Jf~ZGv>|ipF&&R!Q+rcCGrjI`WoH5iEkp&4VBbG4a z!f3&s(J6V|o{0%#*bdl_ZF)h?M6b!ZQ_HWln^Mq|a_=Zet7hGLSzjZzlbqh4rtkO1 z$ES#3{~Ws=aKlzwXR$e;MSFsm-quPiyMFMucV*Rvn+(dH!DOOX^P}>*c^mJx@87at zz6X}4N;1qA+NCj_HRzMtWtQsHs_-5eGiy&jcK+2%b}fdM3aZ=0NBu!>QAy8#AFG}# z^r&~Bf z*~k-h%kQrm^-&V|@y{~9C;8^LfhwwRiKG^S$);!S=3gk1a>E$NlYEZ`HVO{~!$kqo z#`Ut$Naj0Qi0ISmq^b|HM}JGq*?Yr4MtOwXtIfxt6KHGHIiTo<=RM<2wiVtC@a%2u zOqZ*5#O$OjCYM&1zN8@N1kd~pnP&`BBAb}K=V(YqML|rMQDa~+FN&CT3ubvm13(4B zkRbk@D$GqoX0n2it&iO(Ef~waaEgV_#{(}wjyDDZSqUD&hG0ma1N9={KA}oQ7X8x7 zA?G^vbh34v7Q(akiuQJJVmM^98crph^oW-aqo#(u4R}-*;}lJc>KIxak3*T+=gk$N zOGDzuI;xP_=galy_Q5Ji+7JOUo?vMr$ zW4E@8xUmtzN=)jCB*VV`Y~O(=+ zGo;+C>j|%c$&E$lJmkG}pLpfJ9Og{l1bp72{BqjDn2+BCK^Jo+q&px@d#$H66ca^k zd%J}v*g>nG@K}ix9L|b(aSUg;xj)u}cUI{CN9_HYh)?PJ=bnhdP%k734%o}TfKU*n zetb?(NluQcw!&PD~*Ty*$)NIxQDi*F#i-|(;aXx6X=ZGDaEDyhdCGL`h~S-RFaxp8?! zy9R40%|E}@C&Nte6de@@L#DqN0RXfZ951q-EZN-LSh z5yJg0$O4$y;Z;7INCcm&t5GR8Q?%~}*IRaWZgFwtviHue>w zLfBC6h7nKe{8atDZOS^~vZAF(4PKsG*%m2WZdO94viPt=%dO4LOv+)SgAKs}Xe#l1 zFYVoA7A2m$+s7R8xZ?QXxm`hfFigY!U3B+)JC^2GDSZ}XCCO{uMY;LM~+twNVLfPBkDAl2;;35m`y#1wdRZLLCERa=Y=-*~Dj zPEZt;3X0PLUK;G7TOi(NlZB#`$rwxvk-EOZHpd#=iDEO{5D^>H@yyOsc6bNZM6NBK zaBPh&k!}Y_>l*y7x~$~$GUwdgDHdmNQ>02)^UEcA2-qDMN|HSyn{;f}9+^9%aVDGv z1cw`Q>!*)5F1RZ`LggfuXWwk{=O(ISTo_z-_2>YS>1toKc`Bg4f&47~?H4mVSn)!N zA7b$;JitDV-}FZ(NS1919%?P<7G}=lMqK~$lLVJuaWU(@N=26ESg))>WCS}6$3t-US#VPJ_;`ycV5wkn~ z{;sBNV5@0R)Q9I}axe|hgkS<8locNOl8TxSrXyZ+7MSC1%nX8`>r`u^=2q&w2o zrQlwP$>Z_~cbv>0e57IJobQ-M+8*=o8C~cf3VSbh|DK`q$fNotP+!In zZ=v*F!Fpa(lHM|ZkfMzjWZF`?EmY*^k0=@Zb0~4kvfELRgRdrM3o{Gw3ZsZ8uQ*`4 zC=t5Vh1pG8tFDQE6FEZjIaKW`Dy>D_0v`W%ey!*Q+|zqkXpeOrV|y37cf5Co<8k#L zLyfcL+&+(Ez~LX0$2$j)ajhQWO%TWPO&fExQeystuXrG z{M~Nmt{sf~eND3zMYXyt$2~F|TBQ1%%$9Timu3S9zbZJqUa>9{6yN#qwxh;9xZuq< znjWcd^Kn`n!U00$fA2_-E1>&kf5H|CEeOT+N)Nel8&lj0t?H&14a;dsaC zZqmSW@IDmdAt^Pnxa<)q5Ga4@?y^Zrn!@b) zI>Uni`mP~Htr|KJ#dsT`+lvIBoz!+Bp@CR1|IgZBIr2So(e*SO^d_>s^lJ>^ncOD( z6hz>C2(S)IJe+Wm;rbX=P1zY4NvY0qmD!34n!k?hu}oGEMe_=#?!tN3XeAHadGcrf2|QF_w_E-;9Qs6A!)7%;*7NFyQmDfLxXdawWR@Pf#SQZuW$Mqqh>^%5 zPFT;7K#kElnAsRB9FM{Lxm&PW+CM15d9yGqq|K-$+v2kIu*s=>)WAm5FyO@wY?&D} zd`pU-<@sgiAx8m=WE3MDwTlo?d@q>>&&U2b92;bQieHYu>u8@uNDq$|JhIS8RXar56x@neD0Rw$z|2We(Y8i4 zw(PDVt}~v@Ys}Z-4*eU*LCmk<*JzVMO1~GeLe@qu9pl~0!zs%1mr%;S^A8%37 zRS)MVp(knwcphLjdi#qV#n8UL^M=Z2@(1c5W)Kwv!oRs7{0FMKVEIKCwx#aoNJLcy zX!u5}&-Ea#KYhb)O=6-T^^12z5)>5hPLgRc5cl_SB!1Bo$)+Qf(qNWL$u6qV&Y`AR zWeG&HP%0ybmmE-=h;QHC;+FwiyZ|rm8==IWCVGyLdRE`5&|G$P!+MB&)6#>ybXVX% znI`xBA^+V;`I3SNsc@(P=y^hSmTk^7FJxR~HJvcbXv`=On_5IxKjmh(0&lZI+f{-` z(;h=;jwG;}H2U4n%iF4Jt^2@P=85J2ddYsPGpVGgyC4tgSpfbw@u45vCYn_q=2k>h zU-0WMZen_na2!pYEbkbPg0{HCI+P^>@|8)#wP6T+ySxX_Inx;zmJp`PmN_wdi&{MG zMTDX-1EQHgFatx#Z?_N}XS$JA&aF54+F3*&XW(jAm)Jla?*Y(VL%Y5?^^;j41)rjF z-B@)M@b%*i6Q&5(?|oQUEy#`tGK-$Lmt3v;yO0`Y{n7AlV)S>M{~B*y!X8@L{lr?V z1VBJE|6MmB?BHN)W@P`rc;D7&+9|58V)@T>q<=b(grcFXsez$tB0}wPD5nZGA`z*P zqGiXMb@XSMX?S3yj*`YQ<+EG$;@F`?$~DVb8YijOoMp&zCt4-3%W=QW3tY+aOh1ya zOuN2QgC$ng|hLg2bBK#{nmQ{p}9AENigiH|r?Qc`>|F}^;8 z=iTp59`v0Eyy3iU29?0$B**T(=zqcW91XQ_(p?(6^qdJq8T{y_%xgOY=aFY#%OYuz ztO^yXtUfnV)H(db9_o&hl)b>kx?V)yF6^ajIr11DDzsFfL_%^aR+57gO9G(b-3=S+ z{k-BWSq?oM8oJYLq{oheV_&h08!OhPY$ZX9Bwt;$X0l^UDauSu#p@FJC+w{1J@-x> z&8}S%FAGs;R!*06DIbHl2O`t24`D&Nj-_xGe3@wKLzzW7Nv0DU#e&9Rju>ZUPy-ht zUR1d!cp{myVqn=KSf^<;)2rwzDid$ARHP0eCJ}d8P)0~)ec=9dwK7OGz-f7Pi)t6t zkiuR;)@XUyf+36hYvW==~ zZ3ACw#4tpYTX?K2d$TppoAIn#Nh!5%F?`#zQs^eTm;V0^+~hhfs>HDC~0vtT<*4 za7AK)mN*_4Jnd~oIYjhUxK_5T4v!1nOb|tkaU_Ar=x2hNtLBS?#tw>XI7AW!cSwUu zOg%|6lm7T=OUdfDb$CmVY8AoVNX2g4sc_63!g1JxKhb|3R50?w$&J8|nN%v0lKY`W zr(hE0xE=x(*~h>fnKgOeGkTI^l`s@{V;TL~yI!O_JSZ8<@DylvIA7Zl*IDYZgY>iA z*hx(2&q-QvRpq0bmV8N({c|WaXPD+I$%pZ6xZ`eC?MpSCpI z4t%&zn$bzH5};U<*c;Q!71(50mo%UxR~p@008G7X{m1ztxE`eC(X9yn2|{oVNE0(d z5S|B*6VxAdX0;$E=!&hPT<(u9rK&yYAG!KMHc)q>PkhUS`V?Hi8blV^J8pzuM}uhc#LbVb<5 zeTbC$mEuf6ur4?V%jAI>wUpQuQ3yH=?OQY{8xpa=xcX7SKXlyYSRC9F4lIh!EQ;(F za3bMsIoGGVgo}q)v7~j^Q?!UyN@1mok#uAF-Fy2m!WBPzkW_(w*ro0x1 z^#sd7r^KT-jV$EbGhsVyYlj);nE)Gu)+EtVzjJBnSGz|wACOF@wVloMpF%WS%|SvZ zJPY0dTM}Y?ip4r>nGQK>1FTgjxhZ9N^oNPCkCfFls&upwg|yw$COkz~+9_D#Y^x#Bg&@&I z5-SLIHI;JaPa;aH4>F}nnsb9FY=aZNBGn)oC*xX{Jxx)UEeI+S!jON)To~W!htU(4 znYo};?PpDL`elk+0vDSQ(#4c7CN*l5#3avrJ>cAm(Lx&tkv7boCd{&#zpv0mW%Hjz z^!ulN=z!J&lU9l-KE`8FJuwSquq$=f8BQf;l#>Y(Mu&|^V~O&d3aOM@8PaDg$9vI+ zbjb>*wYAB#NI%$G4nr|qDyx^MalT#Gmz}AIiDsWc>G0r5UKX8OHBdHL1EMyKgr|5M zD`)I(`9~7scO2q(r%`&ZY1|XG^t&vj6SiV|npUk2CAo_w+0~ciYWwCa`_ph6npT~T zhQT>s?(XZ+lcUkTKd}K8ZpF*4|99f#-F^?6P(E)!+6WKyos~NLRno?DBL+RPg9tu+ zg^;pnK=7GcLJs-4ji@+7*w?Yf;*ASFl9xNiRJWGQ4R6sUs1SmzhB zO^i^GgQr-zrFa=R*;~ux>1Q0bcycy1T+lniq<)rs=*t@SR%Qa`Tw$ANYxy|CM0@AO z%GDXG_?bt#?mz2}vaEYYl5hH##Jv49z13jtq(%d3twOidy#2jmHaP)kbJQ_@mxUPE zJ;tb65DlRFNCeX+9oRGgetD40LWR8YkC!O2(+c3`ub^7w9#a^zm&8rYrJ|TnT$f0) zl8_lI7dEM)DgIY^&67&E8@Iz3i?;mkj=1jdNJz5Yr&q z;>|l}AICAzVN|CZ4dZRuGrw)0#h>nLyv`*0RsHYbrY6?_-`d>75@+0z+5o z?$q+Nf=D!r#Uhy>HbX~<8vsBcL#`NWdP0<@YDTR())5?@W2j`V^RKC{uwB^HT}a420{bt*t9hiU z69glq08FtDq?CJ!h8%$~?JrL3R}{^$d{LGF?+LwP7W5T4(=(6h>Hpm5OsVcGk(fWU zEO;IH9tG(LM=5F?aQ)dyDt%=2Rurk{obXxlXrBVlli&Xxm3ZdNMY|OihTmD<$@6QY zPx&_A8W4u}!SV#eqk85OKc)XU=_9@o_!a++ef%M!ymuJWt?l5g`=8`_Sz^24uv1x; z=R!4o%wT#_Z>in-Hz3cw{CqXdJXA5mz%=x>gKY2@ny^#vEQpYk7BRs1w9x@_L?OE! zlf9I5@+tv+(k3i?6%fz(NiY4)sd_|dk(h9W`>}|{Van*9v^v zCS>ausXk=$p-`P2k{6KC*T1+w^h5CS7ABsJAOO45CSg}fsAyfXT8e!qDo^m*fz zkHPN`NV87cG_}u_-$S#Ky0azskS>#z+YmQDldb|87+R*dI+rF~D|bng9FWG_B9CSx zk9bI*#E7|sl>0=K`~H=d@H>VoryG}ETf zyC8Uyid|4e?W~5=U4`fG2A@`8&sz0RFaBg0oE5H~n%A(@Dn^&G(~Q_9el+>{XF&OY z_F3doICKjkwD;IqK(zCM>DdHY{SfC~j={I5F;~moi>G)c!GY#a8~1%po^P>#OQf$( zB)Qu%tw-2Cd*#}|H}HR*wT${SI%EF;G3kD0E&nYLQ^m{0)y(dHnY5&)Lwl;IJ@?N_ zEj+XPHQ%m*nUc5Hqgt(F7~zUYSry1xC#8wyVlJ$*XOI&~X}OAagyhAoh8w`>xTg(JLn+o z7}QVAqkbsLLnx2T*@4=+kILg$=4^!>P}am5EWje;s7|GouN%~Kr5NV|_7&k3)la~p z&{B+Y0#l8|8L!hR-GF|wc_zZr+c3X+{M z4T8ah0jo>wNQI$*;R*2|8z^7|0iHJkfYu!az}gyNe^?zWWcRz9i|#r9T?Z+if)8Xe z*EJ045H?IQk%g9R+M;qKb4l%Ao?-);HOiy8EuYGV=8gC2?T5{<0sqSBklzcPiU!l4 z`Uvfp$w-Ikj(L*_OlJuoyM+nVfYF^@Py?w$_k_c!JD!F3(xtdvor(qFVCn+<3VYKD z>^nUA%nKEO>dx!X+Jl=CfcZdq5DyG6w?}%#_$vqUJ<+YTr*8kjfo_lFN#l~;e>G(v z$OrO0GqMSGZFr5kHn~OS$noGF=)rh{>WT4SANay}gXT%_;2(& z;};St0nR__tGg!v#y>DZ0e+40ii(ks{t9@|3Y=xi$9M&C>FdYHWPtX~e1i$lryE$6 zzI6*B(hrzBv~>i>=-_+kj{X=B&;PyBgDF&JfUk{J6&Ge~xBTVGjBJw~J6A`JFHY|L!gaFT^ZP2UxiZVhCo5by5;345M0wKAy+fZ0@XlfSrvnrZ%2pvq~gVv3s#Wd1%BEoD$=z_ED{)Fr*NxW)}H~s7q0kVxqoK(+da+|h{ zr4N@Mo16JKVCZ^UOYNBVs)KHdPW7;K{qJSOR9sO@%C>E0tj5jbl!Nn(huOL8w>e&2 zYNx54ssO|9TlP-gGU1lnc962_Zm-YeCO3bFp2d^0 z*b1tSagjfxOGo<|DK*@{Ru(7Y1LG(Z^0Xy6%930tg#o?JE6qb{;W~H2ct!VM@G5ln zB_gy2%a_lPInC$~Ev!UlcH&ttCVJh$^5Z z(<`x3#cYjPWg$78-cA`j9>e++ess zWG^IIMzQcy;Htr2etB9j+ulx;oy{`+J~*`;KdSYEi5jVL&q_r06&d1iN(d{yqvJL) z6(iM8y_ReiO~U4d;KTkxq+#{Ul)ij~ifqM{ zx^@H%PGu=t==f|PIphBAPb@(bhQmE`A4*ITaW-AaFo_AfIq-pE8J$Xd;u5)L(H^g3 z9jlULJ-1}i7RjA&Cc*O<<}RM6hT9zjC3_7FBe-uDqo|pyLf5Y=ZT!twbj6C zaLgGi9I#hUlQEl+3`r_<%~AI4TACPc%3txM&0W}oUxA;n-b^YK^&!n+Hl|@~PriUK zz1V2tu`*OoFHkLyJ-UBohPyU@fYCyW3sbJF5~bX(9pI~8aapp~v2?5h>{Lg3kW%Wy zJoNIrkgOmpl*ORSV}^PMo@jI&Yy>hVJxpV8!AFj5^6 z&Up@hAI+=$Gy2T9IxeP`Dvh}>X+w&8uw0bIKe#*uqgt0DWOGZ217NT;eEwyyzxs%r zf}Y!)N0};aQx!Fvxce#dt8O9 zGp zl`MtgjKB=#iCWyhS=z%duI)=Cc}?cgOdjQ`Rf#Hkp~SEVfFT2A4BM5CmG0G!+NE7PQyTP#Wzy3H*#EV~DD zqjs=@8F&vTw+71_TE&1xqnik2^?(pP3^jMRKct%9jI)&80^@0D`2dFUBY8{)YM*Jt znn_9NW9sGDMO~SbFCEopjdt5YVDp~G=RF**a+d`9kIqqPi625i&@4x1M2&b7 zf!{i$2?;@&szV6(=>{DIA8I`5 zGL>jzEAK^3sv#%}4B2TVz9U0a+u$ppz0mzRIKE%E9!a$IiAS5xM?|DIe-a^+yICaY zi90wXTKgG$(<*sm9DaN_(QXvGRqp6Vy3lTvx;5_jNB*G^DEcZo#UJR8grgFu`-p0I?hp91htw_7@gC?zvE7sm zq&$@|2Wma3kUB%kLPfK`hhKZkQ;GEcKOSQ$M6-sUaJj%p*;?pAesb0;RZ^2v?09g<+1zmOAsGFD4@3T z+3kLfBzmGp(R5pz%O5i4@8|V~`OgD+1*U*d<8T_5j=jQ3ASE}!rI?MGLTVWTum00fKZ>b>?m?(=BALFk`uXSZ z_i9FM2~$lulU^=I*SL5j9hdrg-5oFvR;UZQ;w{g z*=XPsk4qli%c;O6xCBDXLVPl>zJSoZs9*CDreF0DXOFUT#Sco6)Gx?1RiBPaDW8-} zE1#H4EuWk#R{{M1z)v5+@}!kSanVF}aw?F-EB4)RRN1NGT&qu_C3_;yFm(}#)G0%4 z{q&aP)~Vwh*sIv6?~w3#sy{CN$tsn9oensaOPYQs9v^u}9xr`AOR_k%kp2=ykcRoB z9arWf?T|%4c@fUs5#ADhGOFb8q(Rp43P9R?bRUoC)xEdnqh2o@^CsE>h4u?IRaTHH zdy*edeWxB@e#ahnd2}HQsQRwPn7Igic!DKeJr_vVEjN(7Eb^o$HeYc>(5?O!UNI;# zp!UlAk{O?TGLX_QG@$Cx?~}f_{=^=)d4fw?bsKuqWBiS?;y#dKuel12(z$;?kGTk! z?lw?i-`)xE9ua({(%iTG`hm3$`Z8M&*DmILc>;c zgMkef3RH)h>|s0h$1FemH7mM_TZNwgW0z=w@AW6TU{&BehI1zHSR%l3n} z!_yDI)#JDIi*JFi9@@7<6NF#Aa$gS4?(0Xx;kN=p{nDK3cbRc^>RJ1NWf0-D)%)Ah z+#=H8G_BWzKxw-iGme#T&Ah@CblMI7uLf5Zbns^0&%^gq=D zsyYfwf|z_wI;Zw+x<_TYs-h`$gvZ1f+o^)=8LaDq2gH#~{8KBPDXuyTSNFet5haIZ zSb6_ZJT40ueVA7a4u*x>C7(_Cp788uvao#KolJTFxoFCX45Wlv@hZ>%9$YFgQD=3b z{>!4+kRV(xUN8pIQDH1K!YneeL2Fm%fX^ffa%3BpaoH7;l%X)HxHLpFROKr#H zlG4L%v_68C@@AS%I=#6PD{Yx50|P0{w%4W1cg1LD?9y*!3Nnr zz^)bJm9&GwhLz=h=E?X>UT=%RYteZ+&afDpSbmJB7mx9gW8Gy)JG*qUHnf=w3uDGXUDKT6%ic;tb+jVz=A!*Z&P^A7u8Tf4vguF~62OaDgv zKWKUX9{{YFi;0n=+5fVtRHLEeqN0ZSC7<3W`WkuiOrX@N5`}2(Zm$@%PAs&j^T3CHZDyJk#>K@_%=>V!w$R6VWQV^w3 z4554iA`{&~1=Mt02_6;Cf;(=qV(1~Uyd-C&gd`W)J}Z7HXSpb^`4|=te%m25PhLtr zwuRNU3YY>4ugGn6#0lw=iSY0PGA^k>!dwJ&mhXI=3#kFIr`9kH@r;b+;O~+?@!QS_ z4$@|%D>)u3*UU3VX}hB z^f~g}iDu+H<=lNy+O!CYTqQF8^#j>T3gwxUvf*SUvQqACm8icO@ny@NnsAsaAuB|N zk^6Ip*Di0{B0B>>(UxoC|9ok2M9$zI-?U+tS3Z>60z?Hz90P>BWn4PfeavR8+i6)D z%bjNu#tF;Mm85w{?j)_#e<4eNs?=N$3#kdFG9YXGTWo+NZ+RfvfUi^dGw3_*pxbyqr2)9o1}xw@QPhP2lLcW+EA86F7G^!=z<#1Eq=i ziR*NR5#%&$vCZ?0;}T`tkwQsJ{RT=QcWry6Y_?T0bN3oWF$#}acdUo$Wl>^wL3Y2` zoY{;6+>&Cae303d!vJ6ua5*XG6wLgkjQL2u z^0(mh(3Uh`h7ODzX*DC{oQU#NN-AyC?<#O(Bu4IPE~;1t%7Y1aXlCDRRALzU+pcQS zA$)hLq;3l-u@+A7>;M2nH|S^exG99{se`Gn479%lw0&34eHOC~ZJw5+E+jepZzK1I zN#~BHXES@Dzb=0qL~U>j=Yqgigmt3nw9B;V2!Hw@PLCq>Jx8S6`0%EY4z*o`VM>yZ?)QD!M=U;@ac3xX?YN^dOkC& zb0rtwQA~cx=D6;Qh1A@ZR+BbyNk#cz^FtX|nN+NLPmma4FWWTxt2I?L_d3#gGR@*;}@OMWK^Y`y1 zJU^82zj@OG1mYR)U(-82l<;?F4h>H3gL(b2;=ggyzk%Wz?p_0&-iYw~a>n`wj^poM znZq3_5AF$$?r1zeT%ZcZc>jneuuB(*)K-i6=(5RKe|574c||+DSE)RSprf zZPMPcu*1wuHLqW0jYFTX)gfdeoY7ijUkrrwM%8;-->1~7jl+1%4Ks(%4Xx~JEZzIU zy0@*I^P?@YF&H$hF|Ub-wE2M9nZ*z`8jUO(>><=)Y*%Z^ZEy!mpI-#|m$lU=1DYGZ)}sy9=w2b2jM(I1AsywRjMQI2`xNx{NK38Y#27#}W?H6F%F<9WO5GEpcSSQhl zeMd3_lKH@2#4(ii$bEel87+oACm7(G(xG26xCGF z5B`?^ISKWMg4mfruBN1>WI3h@E?%E=#>&&$S%oaDV+xezDVo~zDh+pDi<~u6CCmI_ zj6cMglEiUrE;rSdzp+|jD=_tyGo{NVXf*GX#F9u7sFTWa-0a$-f9dGt{-ktby6A%G z(&={5I7h67F%3;oT3y+`wWe7&afxoM%@H1}CywrCqNIT5Qg5C*gY^3UXy$tWaCo^W zfIMImbu-Htn@;Yu*{O=Z?Vc5!lakbD&?8I3J51iyUUXxK*kvThX_aOOq{&tGiBkA0 zZp*lmG#xq8n|w|~vLh+gNjVxOqUxh_F7Em~#>Dapcw`{Xb}c7Rt*FW_9j({b_F+$W zxiridhHbF6R*NL;Hork=E;NF!Dq_~D*b}QVm;=bB=mWJh2HVl=!M5oNzP?O13Ol9h zs#2$shq9tJZBcUP+GAW5b+0PzN1X#6p-t zi1NE5wYd%3u$=2y5eut{R8TLO|4#B+EFqQtCwWzoluDefQpIL?8ibd<-(ENc<6fk8 z3zHt<->VPBA-`yL9nv+b{~<@@JqM#G>H7;jlqV4H!-)P^uq=Fd<28i z&zkw9my%sR?m0Mdo^HG;Fe*_CmA=5r=XI`_V3W=HzbJdh@JbggTR0Wlwo|cf+qP{x zso1tFwr$&}*tX3tr_br`dv@R3&;I@`JnPT9CdZg_%wk|m>#xGbnmC_i)|sp3Ko$C) zg2wQhM%8p%&yD@%H5^Xq_D+}8Pk?xQ?MM}oa@RY~Yh8jMLoD$ex?8we;WjN` z_y#cWms%jstnG&;uxqWLdzQ)yhUD1x^;jO(eVg-AQICyS*A@b9n-R`g%@`{?!N=Tg z+|lpPS_#x~5Pi<6*arsnqdf#=bX*ZItjq)+4iu1`N>k0+4jA7@{H6!1}rEk2AEz1^inMW%S-*u>tSh+jb<0O2>RyiXax2J z?(+$uawm(hn?o?cD;ntQhx$p9_fFYxS3TR`-OKYyP5NA&y1%6#?i;iB4n}p2XYcpr zAMsA6wadFl@`gN!=C^X;B|M$cwHJ(6iR1+n+Y4{K3Wo;bTYsbf|6>m zU1ZEPD)9;tQ*=E$O8#{ZdMt7l9TOSh{V&UUNBib*o<9Hp^uAkK+W##w%Nkf18#?_* zX-_QUY-RP&XdI=$EeXUA@9nAMK+4W+@%{-4mA_3uj)FiaurEhPnlyQ+m5?-9wXRJ? z^)78eq_({BtoshNyG{aJTeqB+HJrg(&-nK8@d&F2cjmsFI<5aB0yY_&ic?MhrwC!9 z7PBzAcs^F6A*jn3oeDEYcx!Zq)`L({;YD?R#xPv)x!(c_{NR&^5ZiO97i9NRI?ewibVKa<21wah4meV z$4&c^kui_}SY83QZrVD>R(Gn|_3)^>`wh2;PJ+N`TL(N#jCsb&FM7s8q&2qIJFqaO>9g|%QIV`i5DRsV$BqOS(`;^e34IXs&H`f zLh^lD;!pLmWVKkx1ZWrx=3+^eQ6=<({9?r^g@k)8Lc_GO>?~d;9u!F#(ovm+Qe?^W#+I(a5ma|3m$u1%oTKC@ zB!%pe?=#q=K*1rj!#69pPL}}dO(?0m>QW5Q!j!j9SL0pApkEbn%5J;L+Ttm{?jim})8&HXajTX2m=l5~ZY}IGs?B(Kvc>?1PU&uS7Ev&N4 z;$bC6?)Zk^$|OPCTtJf?F+=r=Y@sJh$F1|HQrH}_Q`afBQ{>6Riot`&_E_Gga9NxE z)spTR62o>F$vRcc*=Bk4gAM!Sdcm7zCeei%x$@M>i~}?B7ps`H>CkQqs8iTNjjsA; z4-NfH2hnb8s26v11o?Klo)k}IH37wfN)c)CRFs3eBI1T65x4M|Bed?E*4>dgYlbC$ z+eRenYvmBJ7(IHQ-G|DSyckUpJx@lV5&ASX_Vj&pikwUjUy)nV*y+g z2-=}`aVYi(DMDHYyBuh?26Dd$4S?7YGUPCZrp0IxG*jVgs09Rd0;9=;!x+1<1^2JH z=Rjwz9Ay-5bpoK#DAm~&6&k6!*OOQXZ%L^Mafd{CR4XUJuP_p!fj|&)`u5GqA@P%W zc&>cm%eu#gdg!z%G0xkF%9wF>XfG5fOOIu37|S+uMlwlCJ#Mn=6lZf_tK{v$nv$}h zhcDO~SS-yjvp91IsY$qPjsC#A>CP-h3Q@j}-}n&8*-oHQ)nUa#f(TDDKxfXW#&odq z15@{}e4paORn6qeJy6(;Z{!AOJJD=R=rTQnKO7X!I%KHyY7saq&wgOm(0!_~{q0AL zLON=*`Vua}8+B33{cLcfy)gLdx)TF)p7)s+^#wU9vyku}#pGN3<~!4TnbY#C`kxHbVW566YcXqZ-VX;kRv5mhty7#yWsM|w z%{cCJ6N6U<)HGdqEt38j1j}*%5=sp>@R}#&`5C&az9Nm)8-m*HqbQRS2baW%A+FKY zI5vK_9|UXl-Xo?N;Y6EvAbOXup|MA?HQTJb(@ti=W>KfORI5#Nn;yaCHjmID#2SCw z8UMGoHqWQ)cH13ET-ZEO?*=<~t$FSj*}9wG;U6?J^$kJGmJ9Yi`&aJaAnt~*nXiV4 z1v*nAO@2ntUv!#-0G>t}PHHJXj|g`T^U@|rZ&1@>+N0Sy=NtBJi%^tk>uo|U1E(zs z&?BDU&i%MKG4XwBE2B6#j4k;)_7;WU9c`q6?T4!%cs$Xr5UOI1`)4onmZAqlnLp9F zmF#WjLl?LIf(DNo!Xuh|r%uc7=0@RfhTZ>r#Qm@6tM6oPYony^X!*|!TlozWe@j4o z%4n)-plZ;dQtyILHU-s{gh3=<k{8Pl$Kd3=A^;lahD4_HBhULGs+1huDP4RIqwBf}&@Pap*! zJP_c#Quc|4Q#BI#c>deJ&$WK=;W*)3R}Sf-;4K2qeWKZ9kDhtb#|AzJDv zBF-rvj8&Fw#QJD6VLwKya%-}!^{KA%*poWNbu5jO2pqIJBb*~lNG~OQrW5(|-KJH3 z9vn^2JDMWC>VU7zw?#ktnwLN1*cIwjSJ3EWCMB>3jtbPSDN37lnw?88m|k8A(*l1EBI4>mUd zHbxRJfTl{XiDj%Yy3L?P`aF|{XD~e@n0Rl*?;E&^)fooA@%Ql?_b%T5K=~%-|W9+lApE=-} z90#*?MefAQjyQ~2(d&9sm#3spGJDoi3`Nfq_`Zcmp&!8i-mV{foy3%V7lmlwYm)!# zisb)MOemRK8yhJaTkG4I**X{#)BmemSJ;sGhxG>2*tAzDkQ4etLZTIt(t!6uMX~}T z#uE-9UKY0tavHe?PfR@%_5{Q}C)o7@Jfy>sS@4APg5$G^*)d;FrRWVvQH)0UKXBG>_6}0_qph(Cp?tThgJ9l6&a%#tT$rCKFwlLKtMrZ9%D$=2yj@o`uaYbU z4e5h*Ml~QGV$c}`myem{qa3nqD9PX3@1MEXr|91=@g-G|jA{w!Vk`V)+1>b>SM)AC z81h)4Ygn_~2wzc8+j=@hFg^Sxq&UyY=w%_2aI$<*MNT8bVa$@u9`z=Rs?(FL{69en z1&YO12{(x3k0xDfrevkGR9Wb=_J!x$dj#VRX%m)+xPtLcpf!kst=m2{JMUo5!7N-q z<4jFbz*qioN56*V2d|9XLL45$nynqpR&1SO$n zp^}+{vA&VW_qMF9gZqD3LDV$t4}Rzn-v?WDM4KwuDN;fNQ-NK4*bcrZ6IbKOk%@RW zW-z$z+=1=mBIz|R@wbPYj*TDCv*GZ?9A=T?3bZ)R(r^*&oWCB|TGa^B6ch=Fs)rekv7%==#XRWa@P zSVMIt!e{bKbLDP3?fLfD>D&DQ1>pTG5B;>K1+DES5}+6ngkH9@7?+x4ET3#@e8aSF z5ZaqULOUKGnw?^cX4Lv~Np^8h@wq{ZS25=3T0PfWrvJ$DCI~%!XY3=Q&g&bZKx?NR zIT6nFR+rI@JBSai9-8s1hI+xO^HN0im3-EnyS9c&L9vjH%E7>5XJ;t0b z+xFRTvR`SD7a*{=5H`BgYiLS3G(0>-ENT)GRE3OL0i{B5W!hPAK)pgPNkH#1rNw~c zzU6{gT9Gm4nSJmYW@ND`afCz3-J$YZm!Qqe-GxQ^EFUti!}1OCBB@bo1!{56=(m#h zV@G>lL|#4e!{j<6r00_Tw%g{kr$IA~xv7>S4dezEB8LUEoJ~f~gS08#gVp9^MXuFm zVfORT-z}-YOk?XyM-C}E=x&L$6%b^WcK+Em-bps; zcCJ-=7i;87l`};*ovFLxVWyzOyc&x!$9$3LI5)A#yE|vGof*}cG2&sKxS3LCO^+2B z_WUF^6>Fl52GrrM7Yn$`1XF|>?D?uu7i*x@>@3jP&+POkDn{6bFD+?T6L*_@oM54sjS%wMV$JF$1+yW0%IEY*1?kf zuE;LoK8K7I0dt8g*Ym5l%QT53^De|FM)_#1{^7kOeR*_eQ#5-n6Z-Tt0Vy4w^ zpvy;^JKStTN?xm`)P4Ad`LXBX_^PA9?9_5y>kEIj;m+T1d+83NsFUu$!b9W4Y}Z7y z7cgo4`Q93o8xDA`2~KhD@K<#v?qy&9)U}J}>7?p)m|p!gaG|9IDy}t_DmGW+l-bu3 z{iF5;lhm1us#rZ22PO1_t;f9PMSo_ccwcx%RBP!rm~GBMMP|FJY7dDmf6ttbap^iZ znw5kRjK$V(dXnPvrqxj;{9#iC5iteg?lz(;(Sn|kvrinkhS+=Bh4Eu<3vA`dYtCzJ zlJS>Ibcj^$(D?$gZshv5dYLB14bv(OK_|Q<~(D zF(^9<&us4YBI6;mgsj=tIMQ99KJ%oyO#i1_!faM!C9dU%uL&=|Zf>-6^!u1Kw2FJ; z2)UioIWgHoZPg-;uVaq{?|#Mnsma&Jm56}o{v4X8yJE;15bERL-nO%yN=Upunsdt5 zE761o%4zAjp57^3SQi(&o_-dhFH!$HgwH21FXcIy?`=ZpM?X7Xwsky+eJpa$P|;S{ z8MKZr{uG zkgaK1a;n!^A!#>EA(OcBIM>!4%; zyA!iP++vzU?NJD2Z_~Up4^7Wr@8xC8{(64u$<)yUkGdcAf(Zf}p(f1}Ib*;ao4=JE zd#9Y4(b}eH!+^ow>6Zvi$fb$lGAK@oX3`OcYi^^2K7g@m4jPk|(y)e7c>clkskT{0xLlfNriuxTA}DY|qUIqe%drnp0v|e5$5(O)>37_-=hQ_3 z?-P+k0$+T58BM9cHOVOLx-~H6IS(k~Bw zH955glSwiSgkxq8DCP#|0>I4(++8@QR12(maECg+$IHicJm{lUK|ZXGtwEKof!Wv0Xqd8gny@Rn zIDF~4?!H5PH2b;qst~r=BxkAblOv3sW{@#8Uv!NgY~+sdBvCtb@ZQln0c3kYpS@}< zAQ5z>UAd*rP`OZEqFkM;-Z{0}8O(hO<5bQnS%H=NK(QMCXK2Yka=Zon^RGM<6OS36 z+jqN$^sUGz_BXS*;C}&T{{%n3-#a?#+c=3hJ2^WT|Eoz;{6~}aJW;ilr=LbptE8ex_zN|XCk;3mxv6atg$|OgV&tHp8;OK`F?`-)A zCOmadVd`g%f(C5U8#SDH;#0OU-W%X07r}wk7Dg6gU>M0X{03^BnbZo*`fn&S)H`gu zv6sfe^f#$srv`U8J}OCm*B#ePCAgiig$>3T1#;CY7F;+eTDa6vOZ3N9Cetw7lIN=y zMvj8>YN`P0MsgE`ApJd{{dc}O6#e%#D#3$Wp;1H9^INY_HdZs!r2#x(9wrOSX59k3 z)xk{0zt^PYG7C$D+lwfIX!U{`r)PK+l6#aj$jrek1x(+>>RA(kS~tz55NPsBLU=f5 zGR~gnybs;O9a?0{cd6&6l(c=fjwDMVJ+W?#JU3EJU4G}yV4&I&b@kVyQ>s4$U-ZMT z&$74dgKIGapNV&1^wJE~NRQn|=otgIS74v^mmQ_Nchks4IOUDK^fYef`EL1f-|5s4rpT=FNWcg1K%4F1J0m>Nvp9;7Fcw)j{LIlLCeE6k# zO$0X?YsPiZR<5IUlJI-Jb3*eaVLnVZq8L|JDb!JNm@hS+SLQ)!F|FCRy1Z~zf* z1$@1k{sK`R{p*uFv5zrgy7U&j#wxN*8$60WPLm{z-IFx(DEpA7DEgHS5ueXl1PjbA;9c^Fr9S&A zm0PvV&9Hu|6FX@(24TMqhSpQUVuX{7FG8LAm0dUpRQ;j4tI;bd>T<%JW>j8VvL0u4 zWf4!6gR$?kM#PL0p)1e`+r-I?x7Nx!SV(AgNuwl1f%Xe;skO z?nYlI*M(R}nk9LxUS!X%{J){OCvE5^(ZR! zUZ6J=QXp|-g`)N&W$QG!uP|EwFrV;3MlIJNXv8jKOoNgLxAC=A_Pu)1aRw~a62$Bs z*%y@e7J@e;e0lzxsbl}g=8z2dF82Xmm6hwrw29qXM7{4{mLi=I|5Uhq`^CvONXPp( z{es`g*4o@qQQyS)zkoU8f5|=-D*Y4FDB7rNqVYwM<5zk&YzC+N?cc-?F*~5fyjldY znR>#INN{0OzrnoQNV|jNRvsph7uHPL6(GCK8EU$!(DUeTz`}TBJN0zIZpy&><@Eup zhZ+Hq8Ccpcfe*+S4Xj|1p>XKjC`~q!DW6`s7aXmQ;|TrA;R-mtWso{$bGx(-3#8tJ zGwm#}g=V97*HbPwtWy<%W}qFrgkT=*CX=j%8`!0H-8MRD#NBOlN8!o>oK>a7)ohZ| zs+rE4x+XSu<9suct}q?nvauJ9j#*1A#Nd3MM| z4Nq~vsJR5vc29QcRQYkyjBJt)_pzpt`@b z=EQU?n)d68N-ae+Gy_!x+a)3;WIjRuJ=8-{pO&S3(|ruzyS_qy)1(FT{|7!J;B0PX z^q+QJscQKjLXk4yR%$6sT5AH<0m4{_t9GR*ng!HqRvN&Gl28_BqYh%ItnF!&prwqT zWLa@@wT!Q`7+(p|S1VfIno_ZF>|`r$mcfq`sy?}LHI>8btIR?9e5Nf8<|iGg zqir!VSqx_6ATjnu zJPlACddFnDoGK#t0gnci`-boDLSs6GfGh@|$4vqFx}!R(-&w5&8HTbI8|wp@T|HT5r@g!o$;iVq0-H8sB2x2cT`PV9Ghar-=tvb zTdH;p*Nszobq8lC2TnQ|2Q;KR{IUDp#z}_hmX8(kvAUL)u$ZjiTGWxtohqS6p~~c+ z?q6S3Ad4{{>H+&nLhjS|_&;m`~LcEt+bp%0@ zCSQR3h9l_tky*nG!haTJ$gLOr77N$RK8rW-Gb%{L#B&dDjfOAjS3ZEq5Dnd^?pG{# zqaZzz^&4mpKM`?TMd0vqlLfyrN9w>>f4t@y$SNW@E)D$kB2Xhuu$&9u@f*Iw3ei8N zgok+0su40fAyVqrE^~B&K5W7$FpViEnXi&5xRk92+NsXFV2R3p}Z6FD%3p%FDH2)<+yew!}HaI#2``@jkmQ zO1FqDOqDr`sK7Ju9nXR8%*)l-)A$(Nb&a1x4f6pA6^q=Zne>Yym&I>vGii5-9A-Ha z>Ys`_xSk5+TsM!!iTY^=uv!9`Dee2Z+jIuULp&EkkAKlrHypNcb^E3z6u#9Px&LP1 z`_GQ;e`NA3r4^fRrD<+fncV^OpBu}PfZBD)0xOb&Y7!}YYxsy1jVJ;(r=(Sg?QF1l zVqQR3UH~2UKZuhdA%JPQuH{2pn;_I9l^%Ls(>SvoO%B)J&Yn_i0fw&m1i%gTf$jM7 zb_ln05bf3bP_$rn(nIYbmgorxqOcGdT1G=O32hk9bFyi<$oI4Nq2TJF7@;>DvBnrl zl;!UgC~VWxb<**R#RaR?!)>T3lG?`LnN(O8^8TD=)m!i5Oj(j>*PfEPLk0n=`g*smrNQQh?EgOBl=3Gk3X0`IJ}uK_5DTu1{28 zNitBEMv1aW5?hUjY~53PqA~M z!ka983Wi!7LFW-LVy4dsL*`*~f{j>SCXLor;Ivb^i{yZ|$AZEbmUDfHjOF(>A{SfE z-fxCiI`TdEHe(_9B>G5%;Brr@fY5dZgH!|bN48Gp22}MhwiJ8^A_k=hE|X&mS?z&_ zNQ{Z_k+GJLH^RebE?UDM?D1FGQ1x#O>&Ai#O~GPG0bd_mxt}9*Eqx+f$cL4!Mf-P} z%#xMy;+jNeldI|0;LD1zDZ73v!bl3caE5@R=c=}DNE7#db#my7@~$|r%&?tV z5|jpT3NYUXU`P8M0`xxM!{hD$Mg89Ag0(Jzq$LZc6$3SV>@d8sT@4O)dH&y^%>Qs|&Ij8i9#BwFK~NtTP+S*K z9TCvO`vpW1Py`t1oQi=up^wag4kz!gf{KNGL`xA+nx*jl1^@Vo_YMOWP#zJ`sqKmT zj)C~OJS7oO6`09b_}`c?8Ss=+oi1uoP*b$j5;D%?6F*K<9HyovX{aeACMj*4&FiQ0 zY2uvLIMxfPs_NyRB>Q79YjY@Ivs}E~hO86CVX1MTiC^3{pcBMdbL2DT<5I=d-X}S; z_sx{*$u$HRnH}ew+@4ccncTYVPt{*t)MKfU%=JMn%xq#~6ctl7I zxnM(sDiGFfd*+GqPDavfx|>OKjvH!{S8Jp#`kMj(;0pQagwGnw6p1?G8Fn2Ppd%el zSB@*R@y+{^BjD%@4q34;1od59_f-eRXw7cH)h43ibN2RXY&M&%7H&@bnM~)~Y@9@I zay`~dSe4|ei-Wg1zbm&FKO$k?Ez{}MR*aPtN>oVU>Vl`M?XmGBZ(R@mtzZ+FqF~VA z5?Y4iST@J`F1Cd)HlDWDtW&m@{oXelA2B$ zw|u{QYY{2q{OWRHzF5w~1wD|WgpG`ex~lQTpD^GD`yD-glnTsRZ`f(mqboh+9zyU; zEL^)FpBR2PQ6TGuqx%r$3AJ`ozK!gu3WC>^-EkAlGE`9tm7T@Vk+Zb%yL*Bhw<*o$$vY|EQ^V}G6uQCQS5MIIrT9Ju63}RE` zA*#>YvLK&40a@X6A>0SVqyqAplgHhv9~9*&&^ddCar`~+#jBW~xE ze(&jnyCH&--NQhd)?kY`lH#)60pT*<8P*eIzfSA7-oeFIAo~alLc56%$|>71UAEmh zg8W2dGu<`zdxU|U?xUsG-$7x1mq@!AoK9T@B&%|sD<%3|?Mt!awGEmi-^=O}w|uI6 zRV3q%KEQ6{07X~U*f6J75`!JDgv>vCcQmH+WnpK{O%pe- zjJ@^M3qg$K_+X#TtRC7nzF1x{?! zT;50OCocoOd*hz(J70>r4NL7YUDrtaGoLElO^ZcLre}+V0PPoC;AsK&n^-FvfzOZ1 zQj*XGcP42Xf_v0RR;DMNXwA_dEp*R#H83EbegG=Mpv`-*l>wd2;jA*3q*KxwhJ`C6%WYSW&}4!CinEvXix! zX;7uY13K~p$)hcefz*_xtorx&G=`So!*gh8@Mo-ZXq=Hrtf84b{2cu3yEWN@t3${J z*g1!}Ik}zFvtiSB#Ye&p-GQ1bxKFiYn^BJFgX628fjsly_kroL`MO=^&_U_MxLudl zi+&0gC;>Xeax8n7Uvi3u_qtcpmqh9evG^G`Kt|5Lv-Glf;_&VQUgdGub9RPakb$Dn ze7HVYGLP?Re7X*(>p^ym@qO`YrV@5SkxsLTO|h(p>aQ1fb~Rf#Be{zngUHu6_VEh& z2r^GfU=R4F3dlQjNl_Cb*UQQ~%6)z)RT2d+qt25RbQm^DY^( zOPp|q-*hI2E){@_6Au5fnkr}L^s0W#%{KuKSoNn$;{B=I&w@llWa%EaqX?=n%md0T zwgJ9Tc8>tZ24(0YvEmq$u+aaF&YlvzbD%_wM@cP;ynhEx z3M|g#hQ5o8@bCWN@8-?_E;JOJZJfSmoP^yBjqUz1qW3RwJpMn%^M=3Xt;wyzkrN|I zw2+ag29oY4G4o0dn6PkL?!D1TFODy%(y~x^V#8#4u7P)Y;kH8CRU1@58Haw*!W>M9W@;U~|15rjK4UZ4JX5se028Y^rA8>+L#0XZ5*7fqwWE<#K0uXLIjej_8rYF*>N~?grApW3<(5 zQX2{RVF(}{LLo95Ew3aH3Sis}F}9vBl|V(LX`bnq3g{Uk5V*C zLEG|s`i(omD&9oeN_y?N(%On{MI-B;Oxz zJHX!?{#|}|MH*9V9_*rjq7{$vTRP9w=j-JWr-vI^n%IsA28dPKMv|PWSWavwnQzYW zl9CL5WaaHPs=}pUt;|NaRuu5Wdc(n(?mCIDV^)t?eZC6z)JgIH=Z9hcnxW0&V$~|P zQ^uI>h>2*BQ#KJN=iE{*FC-?v<`c-}TJ~1iShmw@*{Rz`)zM>qpXI%l>GsapD5foWQ@0#N4$H5C>em3+yTkeB=u?pN3GxbX zVu=GY+#*~?$Og-(2lM1tr{kP^o5)E;rHr-B9@hm%oX2jvyvBC@Ug#-;1b#?H46WY0 zo>h!sVmeoaj-GzTax}MVU)Nzp*5ns^r0obhZisfmqL+3IsKwXgEDsw9wYD5w19*LBgvbr>ii~S_5x^37wB16w9Z$+6iiymGvslo5d89jZd)eYxR)K|r+XCnyJ!*%ozO0bGwYflD>NiGti2 zY7WKp0h=)(G^eEZ4~N+kS|jeEcME6rXs|?{ZySmjv;@y6s)XG>X#YL<^sso&-F_1g zbKi(9*WUy#{wHGlFS=Rv#1UB-`AZtnC4OV74gx}ma0J256-f**ln-7I&~Mv8On{Dm zcJ$ncv4s=K)Kt6$_zK8&@U0IDr8J(x6{)b{Jy1D0`RkWPp|VEd!Is{Ohs)!p7{zGH z$h#l>&jZXa6)gt?_DhF6*pRI2T^q7XKP7(4051whiV^Z4MZru+dy7;> zisI|^0g=R`&;cimDmJt;D`3K?U%we&@k!nO-{CAXnexAX!3Q8!Bv?Ky9qFHove$~lvmw=~Y z$uS$tQZbaEch2dl?SRb~ldqFuP~@yd7$4SPqSWZ8r;mEs)1g3JFf!}%DT~p=9R>|b zRNGqk?GRjNYZd<~sA;t+C!Vrak1n0mA8#2F_IjJcojMqMZpm&TjcHS6FR>iX$|!g+ ziI?CjU22x(3o42vO(7rcP)B?kW{P^NtCWKgM;h@@H&|~lJ_L2f+}pV+ks|i=$5Pxv&g^|a)hzCLmG^BP1x_TK5>mWMPC8B(&}JQ zn9v&|5}bmdw>*|~K7<>Ld(YrxfYnb49_p5~!`vYgJ^E~XwT&QL)|QP} zV{9@@+QWK4)#wl}FhM?AhZx1u&>&X=Guh!GTRA~ZGuG%W6=yiWKiEN90xe!!ljhn? zZmHSY*jaCEZKE%JqSo(>ovMtZ&izNF&gC)5NWxcQl%tB6pg@7+UweLDMn zK9*d*{EfnWvM>1BsWj$OH%Ci**?_d0kfy2(pXHdl$if7#8O zGZVKpK%61~_jeJNbSDy;~ePy0kBncw%EO0Q&csKc31b}uiGab8XX1h=(Z(U3eGd!yc{ zWCJKIZ^QJgu+zqfD*i05ui_}jH@cumGy`%G@>G5H6+I9P_rw^^kj>jnF1yeyNJsAl z1Px6fH6@y}GA1fFp9UFgQbZpxvBJ7~Q%B~?u$DI!B*7#YR`kjpSSUXtUbY>Ddl%fp ze`&vL-+jLt3I9cT+lvtfogIL;iq~Ut%z`bB(Dkpmli%L4){oBY?@@d3G)LNxe2ag+XArRq$~RVBV<&!` zS-`4~aM}|^L52B(kZ^Gw+<$dq^C-zlMdl95-~6SJC1-_g%=iX?43PeQf%4yl?0<|g z{U_>UsfeWdeH#vf%1T8J8eB!QMxNkTY2%{gw<P zE_Si*sT3{aMT71QlwKP7L&VhbXSz$#$Kr{nOUfi7;&|bho6FP26W8>e&J=q_$k+Qj z)US;e^1L6W!X3emgxP&(fJUEmgndyZzvK}B^WLNSLhb+!0Ed7FKq4bb238!Tt}XrH z#Cb{x7YPpdF>S9gFu^#6MR|7y5YbgXqGRXYyaYpJu+u`G>|P$BGHt%%7~#n_fERpAuzNq6^v*cpXDf2TQ8YxEhDy*VxI3Zjy$W%&26e&EZd=bS?QC(Xe_uh}$NV);9WLqZ$Ra9VI zK58CY-LvM5T52shA{7Xv&rsu(@TynOk)IN!GE{rvB_K&S?#V|>W`K6SUvD1L`Drzw zQJ4W#bSSB0N-{ZM3EkiFmuZQ1$0to8+TylE{lzb9xR3yxKy7;Dn9{md?o1mvJS|Mg zVN3_ZI;Q!N8u}Cj(Ji+*_0A`+Be7sohD`FgRrYHib{wrT`_e)^c`b4F$!$$oFm~CW zDbJg#0LAzInIj5)V@xCo(y^C|#(Yg7Z~i->aZYF(xAX$}>zk_hCvkm2YCj^}ty$P8 z%)hUY$B*Ad{W*N`)giIjM6x_LWGvj`>SC%=&QuSOjAFV9$~d~eXRBdB{Z7x9!(r^eQCZSZunIY$0crb(F7-%v8+i1Ic1f`) zjE4nMJ}w!ke3RLXUeVx|(cmi0S(qo75UTQhBq~bZ*H10Q-RJT-hG`|5IS8A`tU#9> zX8UU~H_(6Pt2OdxE)a2#UNWGuhO`R77a8Zd|(3aJ8w z>|zs-5}*;pQ^jNuMkztWvvcucNI=CyH?K=b`YOR2*G0|8-?O+n?8o^1O-LYEjko`# zJ5qHhy!t&?#4Q{hhefy~Jn8J}NwN(PVyl85P)xRoU@t}3am9ECDn);==@E>pgaan# zMSXf+uam}m#@Z;_6dl&sxWOj%GnSO;@J7KTR-T$$W%{{pl2!*s3}q1SqINvb#Z>?x z;4!5Wnt?e?on~Bc-3&aUaJ^rux*bYK7-u#W{5-~Avr!Fh zGLIh^eWj|S2$#Oy5{BuQwPVz=O8KE_(vj`lqa<&OQ*;(5oGjCJ2sv*&a!Oj3FJ#Qp zi%xKBq^js=Q7q8WsZmsG4(fad8lC}Yr&(b#gd2ars&L(|UB+O*l<_NtNmsP7kZ4#2 zEN1YNncx<+lLFVCvyu@qza7TWDv5VggljAahuu;Ep6MvyH^QrtVqAuhB-9 z>{-;YX#}u^uf_>lite)%?rmgU*7;~!`gJkbc;u9wr#-Q-B3R!dJBZx`JAe3Lv}vIy zic_B3CzezX)oQ$a*{6E)WxjU_-Go7zrB9iK9#!)8mzEs77Px2lyCt{zhHn0U(7ylL zbpH!xlNCQHgCvhU{8c=!kcM1}ul57wU91KlX+9_(5lIn$R!R%pssEH=y+O6ubtDVp z0mThqktcvM5(=+}YzJf+bGp;I#;k{jP<>75u7GU~jU>N<-n`%4z;d1SW zA0xt;3Zbl&Nn*g-Tp{VWlQjd_Lo(Hjgkv&rYL#%x*!=5!|M~rF$g^)bc#gtT_&PbK z31U#i;U`2w?%b{RCTFaPD)vBT8e~Fft^W=-T>M}~xk8^uYN`x=w9rBlf8xEzI%R0k zB@^46yiMeS`b?W$bC=NV&%K-Uz*UE5elJ8B+;bP{+m*Zwmt+Ov+r;*XNG15w{zA?) z`L_8E)We6l=#5Gxjm4!~MskM69jy^a6egr~S?Xf+?WMR*^8Ob_EMtbh9~+H&_<+0o};NHH}=e>~2A zjCOzb*#E1<(EkD2{By|ff5JA3Yc}(I@Z4DK_6coFiSZ8RX+^|+%se>eiGjaD4C?GCM^jDIMwh!whj&N|^Q==P{(YFIC8ABM&Q@tGUmcYef)aY7mwpa^r3V;sqaI`m zFXS4`@u`sBKy8iZj(dqV`xKRl= z(JG&52!!OZ^ij_+Lg}0GjC+HJ9wxi+V5iG(`!MG*w6pK*Omqm*v4pqbc?PR+;4?VzCCmG!aYkR3?+!Wl=1>kr{ebn*n; z!JVP^qwIm+Wq_%ct_)z_J(%+Y?SNJ;keX!U2ds$d<-R1;t8IJgrMwfVMZYvCpW;|Z zd!=~Ia~RMe_(vq^2_)~8sS3pIoRK_ZR6Bdg^qvvoqm3a#Q-`n^>6Fec6s$O7suZk} z)u>jb1Jx?a%Drd~qD9O_wz#SvE*E?Lne!3}yweW9nir+n zYrUHIllO-rM9*HnLo&4K@Bqq$~1QAPHHD99P;mxHyM8)-v!plyJY%q9)M1A&c*g;FNkLV*oCOtTN_AC56F` z7i0zehj8>Iq~(C-m7*6C%hxmOQ~a5xcQC%T4Kt=RxeT@+4}@RFjPaJ9u4mV$G_TKR z_3dvf;jtu*1` zxfB7C7{Zc+t>012UiUL0WraYIf1VJ*LSZwGxptEE1(EinDWWlw67ZE)G?$y7i4Lj3 zd27^7LB&BhXQgq<*3p2env#2$XlOfMEzaN2^r9ZJCl#%L|RbH01G`qUBmc+8LJeD7b=J@Hi zpC|b#Oi|1&ExN0kjr>L~n7~mJW5o(TjtI^fW5f})o?S)#jYKolr5pzkfidI`~5&4$R%jW?^waTWP zij_@NeoT!+d@F&mN^mt-RygEN;Oi933QIkd+&lh7;ZC14W7i%DDp8G?1ETJZP>lj2 z@0s!=#zE z22DUNAB*VrXfbW~aWSuni1n|#L{|fMeLBStS01T36`L;(D5RB0=QS8Pi_?KwM68>x z;OCWHI<1q>COAWhM0|0#gw>EMzS}=eY_!VTe(VBKaaG&EIdWK*O1$Ur>Sa~wITxE7 z;+4fjr>SD)N(U=#gB?$C4}2@+GR|dSR=jOva!4@B6KCy3=`CnVl4$!^^je%~s3v$o zyKfL;m6LPNiH>Z_y6L;2s0yawlu?`g;7*6AqwbT<6}nbi>#`HzIjCbz^@%B>%fAUNUUfJek@K*#{mIO35@MZN zL!4HErEkwJ`{CN{7z1E@AsC(D@^&6cYt_AK>#$Z*M;vm{VHU?AXVTLI=T!%f2xA6` z8_c^CPrHL>g!K1Nkam#&P<^7%zC;Dwwb64_>Dg&zJ^TrrKXY%`z7HAYe)DKujjbaW zu5yA=bfEJSmA!TSi2?!{p06%@)02Qv`D5lY zh_|Pc2mVT2wZ$!$)Y=w{=h{Ks2ynKEHD4GkA0ef^k&b$@pHtt|Cfj>8`^}!4OX}Ib!qPZkfZ*ISaR_R>Uj4ZhWk^cHq@m<8pw|MmzMSG7Sn9ser zSoqQY3GuzX*8O*Qu0kbN7G=6g;h4cw=?z}7P(X-{!I}M@8DxBooZaPyb7E(oBoiEs zc>~ek?eKm4!87@sR3ug)a`j*?@DER~P(zc5PyocbFy*=6+1X*^Zl#@pLkm&2hq!Yn0sO5dk)GC1y$wm*{SHVYN z=h8tejqdOWG);Az$BKo+1!0jmPIdA-nkC*bbCZ|Q5ArS1-%(y5{`o`f4;sV+_B9;Z zf2|Myw#@e*P2Zw6Mz+QP8?*nU$dVJJZRZ70f~OBm*zM;bSd!R_;ADkxsfAPo2}o*{ zC=(XxHcV%u(>MwS|1k{){wb(8`1%f`h2sae8i@}nvDad3zg|sjaJt6$eta1c1t7#Q zMZW}!_z=)%(0UXc#uU$&%q8pIAH$~%R@&GF4!*s_@^@64VdPtxyED)Qb$w z$as&S>^McZDxGazsgwN_Xv85|! zBH3iFRY-e2${A*4uK+!YU1O9Zod7G73ui@Yr@A4V+Cu8kb)ldiasp7#0E*mw5zfk= zDa<;AOH7?|I+Hg)ZcRg4!djTULVqOIh;L(=z(zzF);*$LNY@|g5ebu>uN2h)ZE}SW zD5}TEf8ll)rWR;ee~2*lSa}QE01i`s3Ry$7-bJYCs-jBECCZo0W5xCv zvq_#+Zj%lIj;4`VJ^wWtgJ7U9687sdT>6y;@o!hr|5qe7iLj%Ks*TBiWMuz$g}ki# zKL}VGCWC&4ov<)J1!8?!$W*PKas`@Ujp2O31byNrr&OK9TUcg$Q=!x9@hhDU3s;+V z#c7aA-pg+O@{;SULO(<~UfHR(=a25|5y$KI$7fsLZ>?eF0em{i_Ovn6C?a-UFzgJp zKuqu)BegzRFT#~Jxy)W#aLo;1ymIbddECa&g%ray)OL4puB+b~arUu!+}av?U0K>Q z*QY}pNMPg8Y3DEgyWht{Hg^=I3={H{G59DBBRL5%tldKb7KP$@JkhhUu*HViGA)V` z-GItjrZYi`gzPOzS-&QyrfE?zh^U=JMxqWi`e=k%(zHzD>TQCVakOi3e0u7-hr9CY zOdWqNu)=w+-q7^51Su&rc>Q2Kw@t#i$`H%)96XB|=&H1S;Um9%1YfQ&jcPYoavOG9 zUM?$UXp^qGaL6;FthMs>@+JA*&U^zq(h}_lpCNNqL9NZ)3F^DF6EjxwSlsWxjKE7x zFp@Nd*pTT#tdGI*o0_HUM%IEgOWLD(WjF0ThV;*zZ)q(IQFR2f1ViSkv_y-w9_xjW0P5ASY3kZ`NYF1wY!}kq8#qHA zId7Totl1iEFC0J72>OpqXv*FENKwI2Op;V+_Vc1@RFmS>Zy~9v#BSoFY*l!MTVPAz z0}j*%>Zv!B?Xd=^)NZq&!7Q0%P*LqLgJ~5NGW(-cv78Vs|Bi*#LDZ^P1zC(epW&iTIq+}msz-yiCh4mg& z>8Mz|=QD*=--Zdu8@H{z#O2LgcwCs($N7xi3ehb}Ek6Gqa`@sng#b$|z7?Kqb@nsa zY~g&P3^9L=^(?Lw9OSpyliMbn$eQcAn@?Dwbwy(!6Bj_Z)B2U%Fm<(A4jDg&i{vEj zvcOESA5ktJKge;92!p`K4xeAdx1V!Xcu#AF4o|r~+t?mh3VRv#v@*!HQZZwav;4Dbpr+Gn7E`OF!B)pJ8 z5$PYyF6C3&QSC5x)}G=b-oz;i30GmPBt79(!DSedk{?B`3ghc1KGE5<;;YW;kD}Av|mjQH*p)R+l8xE%v;a>&)8^-n;8M2bBz( zWK!!!l^DQgkwa*4(w2Zb>XRx7O?R_C*4_n&V#7OBrv}F(u+a7ZfDmF)jWd${zv# z=3R9gPf#+($F>;kaHu`hUhPTePDF?l%(lOd?-e##anuEpz7qkv47ar21qkLj)hS0L z41Tuxi078rV9B|whCs@=bS|cG_T{S)AVN{ocd4 zO^3=?VM3(cH6PPrTx(LED6hFH>Zx2N8O@@(oY9?}#{bf~OF1`CJ1^H=K!@gAtf9Il zvjZ*QO03XmS1%8gCvg%_4LQQLAh*H{P;7_e2HpL)$a#P$rmz5=FatDnBR3e)S9i(~ zgHvqal6@!cz<93JpZn>#YM#h(_6eqQ2|jI5)*aF^FF;Qlv`LpFWQs`xWQmD1CtKcl z6>ZZXXTqlY_WhkH(_5puAV70*{_jQgQzP*T1}x!J3ze@fqLOSi{nvG^V+U`}H^fbX z*iTr;vlWc|B|?6Wp(+(Uh*-kz+7v?13S@$?)G+Z+PFNV+!x^PF42VDN_dvHD;t9e_{JzAsWMoC)h1T z9P%{pu*x4V%NX8BfsFwP@zWiCMiDKI#^4~TeF_x;<59p{dvD};<@ZEyb;nqO>k8wM zP62!lIr$#0*tgz+ZWiChLdvW7V$Tv5e^ah|I3i5zq4|>vGl|Box{qo2@ZnX{T)}V~ zrfJ&xwn>L8g@D*sH@-X>*Z7f=)L}E47dkq_%@ir}>1Gw9ZWYm<{Cs*$;Afs z^64Dy@_n~5aIe@P7Eae}6-CNLvU~)dJk!q0Ea1P7nLxb93n z1B2k*MI76=uU2-ZJ!WbAc62_2fGcHlDxa_4cAE@K0hQ3nUJ8v*GL9StU#h-Scb#9j ziZ)NLVWPp-XOxbos@;EnNwFLRgtR7FNR$PR!lUx5#{OVb zk>WgQPFjnY2af8z)FQu83=oXLS$uQ<`7gxF{kq%h>leP1L;e5Yi=d5-tlY z#eXHcMXUWM(^4$SO_-$z*`OPK_es)aL`O3q-AC7bMZDxS(Dc=YMX zqwl_jaa&CJ)((Wp(HZC8@x2xNm>N@%nx`ApYMADHyZE^5n%*+Yd4IgF=>c1b#ZPoY zEBQ()JWrUAV4{{3OqhqtjNiwG>ZBYo1a)-a$>{CG*_PU|=FFDfaraTxU(n17_p^ zC#erz3L4p|EgR{Z5ySHHGi*n0F&N8;(g>55Ve)@Ww1t;3NkR`haBD+q}vu3sTbagVZM2_do z2vs7r$Ods?dEs2Kiq+0qFzFW%6GPGzcvr0oo5?B~<)Z6Zx3Ne=zQ(Pol^d)n;Z#=t zqhZI2qveydgs!3!8V_J8c#s@>FpUXY)LJbt#kz*a1ZLb|DYiHxC}x=om3x$xx@I?1 zuhk+&M2@W6T5!yAr5h8;yNaV(+oq7b$$+kU{LI6Nxjv6j^TASZEZgOP@~M(K&|Ash z*|nd#%}1h9Q(NVuK86&Gp1`^{&{khF!Icz>1ZuaTy^T^~-*~jwnG-Mui{&O?M~Bgx zN0tIxnOnT?4TirXjEj%?f{}Cbve0YxveAqFlCZR#)g7W6J67pmbJG;^_lVeWqaGLI z<;V8#Zx%ng2cCb}{63U@*Vo4pXHAv&k!HDAS8>ZTpyfVhuS6e;;Mspj%xA{UqbOpa&e8t=>2xU935{ln}-_sX*N-h_(V@URe7 zt$=SJ8nTh1QeZ~Sk+kB^g&T#tkgjWWi3um#rHS+bH9aetr}JbJ1_hpzzJ#7 zN))*|qohcH4WZt}b}d|mKFwZ8b1N&>frTWqbd2He!_4p``QpT4u6k9i{x)Jcd5#$x zPt%Dcg0)jsdzKv$tO>G#XFB{lDdp+~gS}G-S`lTJfil36ryGx@i8(9B3K$lV9su=I z6>Ht#Pu-?1n6}r$k5`Ma6eEc20h^dFS$?11AjjQsBJ<#?{K2h%U#dGqI%Z9QXhJH9 zy`LQO@Br|)D z90L~mio~o~!?*_Z)^VF~P9mHGx3Bf+4lZg|H44Wa?scR5onnO1xmvt++!XEb97|oP z-S+_DVN>XB)cav`h#B0GgV_P11Fx8; zjMhwj#8 zYvh+C$H~Oa=|6dfEG1caP)5WoqWS=QFN(9i0<6{*3_3DI`X6$ZEUSZ&5XwMPT1~Av z7r36uK>l8QlT0Ea8fl@6qO9eq4ECD)*T*l(^0M7oUmXPb_up0wt;%zE;ogS!{ZKsY z?}VO4ET&BP{)<9lm*59^{0Di~?A}GhzlUkO4p~$R;uB2&e_NR|;XD zW7?#gtLB>wB63W}&Aj^~Q5&AY?6*evhmkadivcs>l(;IaH;5*GLZ3icE49-tGt)8A zu4w)b7cPyOf0}?_RDPmlL>bB9r_ErRG#Ver3O~*_r?NNdZnZOL!fQ(QtNJ*6M)yUF#Erf`y;9OTbS6e&g=$ zdouxo-`kTFyI%9PoVYa z*WNyd^zEC#zZPTqp8ww;txDs~5qTN)?-H=FzB4BJTM2Y*dI0X2o;cz6 z^ih4VAMC@iB&<8%@=mq%E=cdB;?>~ECJQJD<eghF(GB5kcX?iQ9e;Ja#cn?S`n*5I|7JB@LRiXRQYc*NuNew& zY|MiafWPW-pdU{7D;B^*6N1cSDpWcmi5VMo!^=Yz6dUYzX75>`;VCryEUW?5fG6Ld za2tr2ZZ8EZAI@7cbOB)GK^|-nl%J3AWA#3lc@g>gfKbwoWbT~?c?GvjlF_5=MkhsR;E+?v~v-^^MZ^kY*aF#BO z9)_2?c`P0QG}+HEJnp_Pq-Jl{L>Ey&ArvP*C>7Lnx(4%E&gH_W_Z8+yoMA=|4nCiZ zG!3JsHYW%Yv-aw22}6N0nmyz|eEXdEqr8@yjg+mrvbWb5NTLG(`Z>0%LTmh% zFxQncc3U&k;JVjWRn&i@oULrsu%~)6i{9YCDc%G#ti(JIQsLZAcWmQ@K z%?nd2LBYt%FhGtzyQ(y(JbSYa7FilcSG3n#j7=SFqq&F`cqAG>5J=Pl=^@&<@)Snb z46bx#Xf!l8tR#tA4?eZzP$Ye!t=QYJT&Pit5u>*I<`2F5I2GI!u;%0<)j;FDK|M^! zn=(%Z6s%KEL1M3=)4EZyr!_Z&ZgI%y>+yklG}4lLuKYfHHxd)R7O7IYmBp^K-%im> zyj=6F0^njLw?Q2+h02R};>%cggH_zHOfgq(fgFIo>dit@LnCUW&R8@RNk!R+sX|() zfmHikP}xGV77>vx^%NiOfc6P;gx(s6HOW-JL4H^1o4(;ow8P9(zwuvL(;+B!RT_^u zK{#|~E*no(y>WaO>Z7+W3BbEhxuLG}73~Y{Xxt!CRv)e*-Dnlz_`a}B@q*Z+Y6pT( z`I3dfH+Vf3BCZ-au1X|gdL9$@7^@k1NR@`jy`nkcMOCzeJVA@3l`e*)1szc}X7$IQ zL3Cm+Cc&I$mdHr2Pn2e6O)-6A=2ev+`pK{)Xt0UDN@~NNNueKTIV$kPp&cJ@x{g>w zJ1lv8>fqSOG*V&AyNzf=VU6Ntzq6kqswpaX!4NrTmqRB5OrTSKn1E52A{|ZCvRMh4 zU{4$%a)AG9zPN;~?~6HO_L8KLfJzIO6d|Fb;B(Qvr}Ux6B()>5X&&CtduK{Knh(`f87&o5~Nv zYoQ~Hd1y5jmuLLhel}G{x8VJt^w8P)ZRAEb;8P)#E4CN(04u8b7lm?b@;3UqRWR)o zp?Y5GWxvh(sKtXJf~$1?i!QP6k|<0fj-UBZ%`?@Jci?TjI1r&W*E(m!kro z@PO!s9h$QaAc?{AaQq408D17XQww{_V-&{~QI7qX*VvxC8L^iQYg_OhbnlX-E!*zT z4ecEPpWT&E4_wDc;O2hcmA%3BerKBc@qwSK!_1Kv=m{apt;^rEtS#iz~++Xpvle^<^ zzkw^5UDm1(h;wx0pm5CWcOq*ZqsPIhqSXeU<|jOM6yuO?=Usq!Ekh+eAf%TSyx)Hu%t)Zk3q${#^s#%p@KD|i25b>qd%^Mz> zR{esjLFQgmZbBkI7hfz6sv_8H3H)^SWZWR46GD;uPUPQ{D+p(cn6EiV?9b^%OgL@m zO+=wEW%Tv8u#DdkZM@|Q%|NclipLdId|OBcu;Mg;>vReH+8%cA&awU~t<9W7O8xl> zCrFHEkj6JW!xKZ1O;9DDP^N5^EYC<&GPW?!a0AQah8DZWSLPWM$GOu*0Rl8VnX30gO^5?&VFqvUMJLrC`&~C8bz6t%$riuR= z`Am%e?{2~>;J72UDB^HWGAWFtcKux4oyeU$eLkts25_wm}SZ;?27nUj4tXcw7k5-*d1IdRDMR=d_ zQA{g!XX-+_WrmtTdIMBS;eJ>E`SwAsK`Wb;_c-15eq-mTf}9FY1h&;_UY~j13YtrY z^09E0zqOyGy#BmVWrc2HA)4yap17ECD^+%C5`rGcbXtR~o0vH|Hr$4W6cveN zb9xJcB@xreCB%EsKy~$MBi@!_(m|rLM*8>Z#`kYc^`8w5HI6xij>k{yT{LwK{bSgS z29;Z_HpAnCfU%VMy5ioDz_kL&;yA z#2Ed|EO^DSUs6Y+KGFHs*rQT^<6pTg)F=5rC$TzaqQoILHbj>ZAbpNSamlgC5d;Xr zXguPH;RI@icSt)Ya@ej4_h{o?{jxuXPw0dozDYy&5s9pV!K((M#EFyJN5n<(Z9;E; z)f)*5`HGyxuIDCVD4GlB*(%_OlSR$e=>{R_`v%x}NkvWbJl$F(P0N)wx(`x;$eXB? zStYv0We=z(-{$;O78)OR%UVKw;U73Id<4&bNihF4tF`sa5=}L*jPt}AnoJfuY+mJV z0?46yL{&A~c){zNt>fic43^#3{>6MI>LY9UCM#=g|BE~(X)b&p_M>ZWjck3MxatHU z{BNld7p|}e(+3hSC*RTRGa{Tm{^n)yhf2c=BR;nB%6;}THA}uxm6A=+aC%-34&>sC zhXQ8y{Z^S=$fe+Nx<=1pW@f3O>U?@JXSlCCew36^P)v+$R+b+q-O{12=5ry*LT1oKAzZTfOA} zUWNV}y#9L``Y$^oaLf@~^$WG)Nf8o;>nm4c{Jw$IkM4_xXT|*kwO|HEV~{yrgd~cx z4+OK5(3U4C80{dY1mb-`Y!txlIm`BXg9DJ+<#bvd_hn{zJuod}rG|=*Wh>sEAJ1E& zeBPdK<-f`8%RvrksNL#8^3g!pLjs;Ezo5#IHR@+&UEA;xR|af`GaEaHF|i0BX zAj8V0%{GPKDynMvASK zNlb3|A*CRr3ohuX;&C-TN*58Eb%~?jLqtVnF!@P2k{*3yLm`ct;2)F?#$1lje~^r@ zq2KQhX@&dr*Jv;+k`0$?mqeQdvNhT>3!uRlC9mgBU7KaK``T<8iwf%wQ3cP4!ykC< zf3^0FMH!_Pz0;)Rp~0=AxvRHO3J7+xS$nTj@$Y;YpR)$ z*K#b+P9P9NOThObT^n#$u8LoiTg(n3r){tP0i#&p9$PhML+QIJKx>Xi6VdxeytQv5 zTC_%ss`e8?Ox9}?(54e!k{qa!6vrJBlC0<~;;9By`eTh3A?n4(GH7+h1*YY49BQRNw)S7Ng9h(Q|3Tstf}43 z5O#Y(VQAa0xVaWqonf9(8T%WQ%{ksIRq#-FE%p7Z(>zbN_My2-*39y-R zPB*xkd)G)$a(8N!%Yx%LzV1)~2>qWRNsx*z{soI9PzSU2nFJ&S^36iet^)tSDyR=h zY$s47q$=qL+28vUseF8O5KUlj$`AX@hF(|ov1$!GE;7JLVzt{gs(mGs(EN{wD0Njb zUqKD%seEWU*xbfmUWxkF1;{VSmBi z_mSV+su42&xMrJX4!!KXd+hGg%MP98}=@7XR^Xi zpBwzsb#xF!QlYg(^LnBNki{}5`Z3hGvgz7vZkRGnoHFes!- z=7{WUzoB>EBsJ+Q$JH7H;AV9gQd#}>GiWLQ2$|I006?$LW{a;I-8IwV;mkshW$4;B zA&uy??;V{8(=cmfLxOIFvA;VEGTd(-o6Ijin>t#tUfxjTw&_g6hj_(O|AiXYI~jEy ztYcYDzdUpvkAgS+7Dy(O&M;YfKb^rm;jPITt3tth`}(s&qVJvcOy~#NAs-j%Of1Qw zvHu<-B}5@9h1p#&+lulAvkW74h2@~e2&AfV7G0F#L??LpFry&sK>Edy)Vncixayz4 zWa6rU^s9QgQL}{lWO}RS_;;xFg1irm<~hJykfyFt@$aFE6R5%YhU44!uaQ9!) zRxzaCzOnz$#_Iom;s3+iSfl~trM>9>nNu;6d|){eZ#42d5Q8C{c$E<<97@j64k+2HPtIqlZr~xJ&)dg^<23Ix_x9V{)aOY?&&L_yTg8z1H^I)sk;j*cZ{4x@ zCt=_(cgqeh*qrayn1A8Qi>`l-FnQ3c^|qthWlw&3u9d=FAb_xLvHHcsy41>J+wig6QO|7~fH9fcNF zHwmH^&-OH5h$)@iRn0+k0wFB-M#@IjL1PDfF<%TF25g1K;t(-mfCyiYn7K{^UizR` z1^)PTu->l}`B>To{bev1M3J5@!3#KU5R72NH@kyO?M-xn{1cyV2RWK=_5iuUD}R-o z?kRk+U4vMmuB63#xjLrmtz+HO)#(BHdk4IjZ3G*6{@CtOw-r}5&K7|}H)-;OalzQd zmAT;t$t>`x;*IOc)%C%4yUp2G-qTe)M_{pANxKVsf6T2}ws*1Cp~cTr+9D42$ayHy zbo%84gn1L6H!hB*L#fW((3J%@<@za~n;U5wQfDq%3V~gGB){%w11As*w}?$@f^_nT zmeG+0Tb?w7`%78Sa4Qm$fDV_jT6Lu0#1p@Xggc$OY3f44x`K?$I#%CqU?S-Zraf8L zh#6@*Dd?|o?Z$+S&+0nDY=1VNEmK^tNErZYfzwg)92XdCn9Sop`~yPqQ-aI6fyHv* zcR~f|U#q{tePVMmx9RZN2k|sUKQnuk5RQD%$Y%`Yr zcScpLP-7g6S7Z@sh}6K)?`Ygs4W)0&p%cdMYNRfIVZ+s)AB{;tR3q+0Z?+XQW$GJ+ zII*`pbDR&P{E#}_H$+3rN`bfryhBKs=cO*urXk@lS#7!m&LwSwV)cx`S`forde-ci zwDrAuMfJ%b$BIHLus{Yl903{h6b!>E4KsaMO)%FT;U9Q|!tLgagGGj2gmlQ?uT)7V zmKc2SA+sZO8@D)v*bq9uyO9jGW~0DVB7_;}|7gMbsWt^KW+r zgZ++r4UfLkv<;@gAQGyP@*D;Y@Z`efrP;R#v)+>uwmKHD-7?>KzG?M;yY&;qa4Vv# zW*UU|n(du`;c>pkXFSK@t+R3BNvtBKspi&SA{{}78kTUvki9e$l|WT zO6yX-5Sr*^zm4-xOl28-`(8r~6Pajp@5aMOp$*X7_nlS zq#?YvNF#xfLbcmcW`1jIv~D4M3bTY|BzQVA%<)IR$@fpO6GLCd+T+>~2zOj6+3@Wm ze2T<|{fXN3(8!@5mWsg=G^Wl-vIHZ5J`jTO(;m!L0>Zq?xt+s2OgNzX!!K$Y+ig}z zlh^7Z#tTwvhn4vP&6GaB?)OApD?w}%1UtS9&0BI<)Y(r5{2Hs!i9RAzG=HPId;!2O zWLR=M6pfGU8V4Saqm6?4m0}`2X;R9(yuMY%s=16+lS@`A?uMZ{Y7-0!XLZtdJ4Hu# zo$A3(5jk?Gb9p^yZl5b@^ z$%x}wbi1Q#;~8yIX`_25vCT#}25D1RCz|V$u%+FFri)c@P7*b!(xQhG&jNG}*-6{; z0~b~-w>a>U1s#DG2E|CK&S|GkvwzK}zhQ1r43JkA#fG~`_L#Onl6)MNr?T&94CJSU??2=&fI>&DA;_3zz=4VzlnGkK{Ff?rYW#FY%7+nz* zR;|_xZl)!utW}GHg_crA2OYyNLmE63<5!f%A*yoH?%JB(GabyprbZqiL1z>qKUzUR z6(5_iB1wMldi`96^x%NMy+q=37wSdkgSw3(!ac&+K|Tq<-o)6Qs0~9L5#;;e2>PxQ z(FcA815yv4j@w-=@@Bl963LtPJTf`gySjaS$kJIjkN4$ddK&mWEY0-J7+VtLCzceqBz zQ;o7Ehnik?!-4vgP>;pVh=-?=55>-mgjJ3>Ov@otWI1}MHnpJySQp{+Blm57i5!u@PgE;i=3hKp!Z08EV6L_c!$#SHS zHt=2m$r>VwG?6DoHJ?acP{EtTA6urKm(BWan=8F+;P0U)_B?h>R#dXklbqBW>Gg&@ z*WI7Boh$rn_nBEkVszPWx%F+`yf0(pgX?tr;EG=qySwD#(!{*{r4w1)d_aixjlqo8 z!Uf%|%EE=+%-Z6qBXf36$gNrdgfw&S+0%|b$7drncEv!`5?xIoL{xOwO;NAsa`fD9 za*WjJ&Rt+Utij@$PZ0hLMH(*eVj7XX)e|F0wLzjLdiqp?DbLqjnHh9ma7usRrGY z|WRp zph1;aJHbA))UcxVFl*9oy)g|XsZmFQqS@?30-+f~gHsb{5w8#+7T7qdE40?+sPV8u z6NyJ%e=?hZmYfiuHIP3tWjJfZOanbiokc23L;eL)3KQsAT}uVHzwRh_s%0mVOscL( z37=2N5BKH@G};P>lrMMt8EImIHWss4t+2`&-70uTV%=6;d|CVti^|S2Rn{71*BNrO zHpVWv1N>THQ1@(9B0N*WpAE}e5yl5US`~QwRQCj}kPzzBdHv*Wp&laTiOBeZ38#?v zc7^8k%GRQUad3STvLpXAiY?sKSbJJK$Gm2-Pj_Ld5dvAbTxv zTJ2W1F`OMnPJ0OD1#~?xt~Us zuboQ+*3?jCGI&G(km*N|X_st+k5q$?Sc8vX!&aVVPod`ZOy#fH%3q)SlYfNY72`F@ zZ=$>n`6j&ilz8#gN=Y1q)Fjmp9>_Y*pK6UEmSyteljrw1_tMIrcmmdiuhfqIDyoQ= z^S(|K+J+6uRRy@Y3<5G_x zT0py3I0qwFPK$>T6#H;6I(sT7df!zx$>Tjc9bd&R16_|@m10Gqc;u(C%!_0%r`t#%I$E; z(Qgey>I^P=vGUn^c4TG)ABVN^%eo88>wwq4j^NSVd1Ra%GjyZtw>38$4onpfp;b7Q zUJq+TT-5JZbuWK(RA{cY$eHB8m9rhrs;(!9&$K`MYz#_S5wNtb;I40EFr$ZYcQEIS zV3M>id#Gk}9%N-@eEiJ}{;PQg%bfaTG-z=Uwx!lnU0{fD(%SXgA)xJGE z^`{Y^I)eYv$+Pv&+H&`I8>gCT_3o$P4t|`d8*i7(b0*m13y0e@2&=iqVDtwy)%N~UavU~vt#IJ^3WefLS$GgsGd?}kCWREHD*GO z$*+$Dbpq?FT^px<2SlYn{-pI8DN7Ejv7XM)BD2DS6qhrUcI`$1j4c(UZV#G;>Z&R8 z^J{a`Bv2OM=0AL=YE)b>m!w%#3NvS?lI;hwbjlnD+^d1AK@n2hF(%%st|nh=v{8#HXE2y2dfB+IJ$qXKU3m4c_J(Up7W(U5V)IS85FP0`uP0>F9~5S@o7=qiItzU%iF5=WlvdEuNuR0 zHv_7Q?-IY4DISu$8?AkvvJGLb6nz|+U0rs#t@N`4Mk;OVbE_7-vv9U33a{SUh#afK zIS=5jzML9~Cue(?MIGxlsWMxveR%NEi7No-iPP`O8tR?_gg!{^Pns^BC8;wxjwFuA zwwP+R%Orzx|H_=i#2yo}pq$vlmURL1)gI{W-!J&02}RS&rGT&WDI?13&X%85j_nbY{Jq4vSyLi} z3vI=IzEMUM~B?9OhJu_&^(Tw`&mF@j6l_4_P8{_N{&6;iQ(kt zn>#pASDhQ+ z4kQJl0#!kdvttQw4z5Y?=Lu%J+j&KhMgMetYtuJ~*#px$R1oubIFtVq=i)*M9UNBZTikyl?YUo+Vt;$ z*=Dp(kL@P4s;0)JE!T>8B1)g*SNigqh(F z6|WiCe;plB^SA_Mh`Wy&ZFnVT)V$s}^IQ$E+a-C9c)5Yf-wi5nc&2+!*ZSFh$xXc0 zL$7x_c%FD|x~FUSZ+1gpe)jxL&B(F4SElzl8fwsc-w4%oqeJi6Ilkvx*aN?sy*1qv z#rFwM(KxMfn;zeIUklxTfvfmKJMJ?SxqY~&ijU>?X#buq{{f-*BA)#h`T6fe=-Tnn zukX-}TY9`pi`jEZ@peiAmFN^qBV0&YG?=qSlvs32Zv(U4bRU^vc$XIQ&1WoZF2d)c zYiw0?63!a`QOrF_dKk)Z9vTymSR zy;Yi9P)ppT=3!)BXRR8vt^DQSeeITEBS|A4o6VzciAHJp1!sww%d$(wP0T{>F-K6d zZdCy2xg1#WV@z(uo_E<+chcrMdM3Qd)EcymwOXgBTx5AAha(?A=sG4Lfb|rT78?_H z-7}P!q@*CwCCLo@F(3Et=+b*)3$Bfwr%^gZQHipecHDD`rf(o z<4#PxH}fJYR;*gJR_=|G|-Xd})&9vU-fI1Mt9wF31Emkg`kxRysHoAUR_XH4&K@t*Zhlp8L@YYoBFb)-Dcg_|RR z?)6S9qkp@0x>nP18Al6!wLvEP=5dL}Aw%9;^Yi@6 zW$Gm}aZM_bPjf>G4?g~7&CWDV>7I>d$h#7Na7@T-aRc|Q0n~|6BU|B*7g#djV>r$mF5giXQmMhl~FbY#6TRG4@zs$gG1&IMEAW1}*Qy7$vBdE{j!jDBq(A}7&JCKt03 zi7~@`eE&v0uYYT(tB`g|NSbMm6^tR`(ZI4JRo3uqr~Y2Bp=AU_mz$y4D%T-lgPra0 z>Y#qMW({4)*MT9T>TB%{=_-G~9(&xnqJH=CxdS9Zq>s@CYO?g)-g`P9*zUK|DK+NC<=SBXD-_ zpjs%o`z!WXH_Icmt}YAlG=67{DhA6Qcm|h8faKs2Ln&{@a4E@?M0DlxoYp!~>}`g=C@+n=`9TAaFw%s``&BR-5wWYTC|E(uyn6M5m?b8Os0HM!yDjWUEm z1{Kxn%7-C`mtL8{KQ1ynUja37&`4P+oI-~|8Fk@L6J>EEW;r`(4PvS>vFyWxbOwLnQc2pgZZ6&P) zF>u-9ib8&9-S_-S3JDzINWy&DstU`be&f%wB%74!JNe(qH%QkRZH44a8fJ`0=kxEX zE}4HdrDAjuuMJ{Jr7Vj2ZrA!lSAHLeCZJWN8~k>+Au+H2SG)W`N?LYyBqk+kWxLY! z$8Caq#EG4qkYZAd#w(!ENfb{2pY=fu&`_x)C7E)D;smK}Vp|PiA(J9gVj`RFN-nsg zHE;%%wp%6dpW&A{I_V8u)iMF$Ymj%y?wZ^Mlh%mn}b*| zkhy|&D8fCApWFB{<@;XC-M7Tw@jB6;)vL+AaAOM{JpAQ!D=Kgn*I60hx~!>4K;Ktq zr&eClD8~G$>@tt#fyUw5=63Sk;z zd5+@J@R)pXSb626d}{ekO<6${p%ZY52QQ?v1VO6opl++*uo;muL`k04MLIErKE%SP<{yma-4yL^1B&o9AR0&t!lC|8nGC*Cma)6)~6J84@qhs5`}nI+G5>~`iaH@ z+poNB_kw23rf<$nc~AwC`5NM~r%8mZq5sByA!7_t(9D|qBu?$qoHPfNgu+QarYrR$ z>H)#y1wIS7!T*9MRMq?KZf6VC^*eu zryZRm$PEi=aer1liew6emzp2So0Teqc%#%67rpuJkEA)DX3yyFECG~Ya5?IMVYHn5 zg`+Z}2}R-ILz8#KWGYe@iIVrgJOKxZ=>d!hX>&Plm~R0|D@@V9tspja;W696f^(4y z_C?as_^ErKAy_?mvr3NXN(;ih9IO)odFuievem~TZep^$rxZjyKK6;1P^s!3<3B@w z>n#Tp%~d$ej+rK{C4*%OH@|;CiSL)HR9;x0rj#-lEUSCtAZgrIRIgQjunlob7%)6e zmn!cQ_2ho4zF*0$wu{x<`Zrgwn&{*iM(;y_s<&9-w-9$c@UgfQimZOQ8y4_w6tHz$ zS#N-fp+H65-z71#O(qV1&vV%613adXkzr&OaM|B&yi>@kads@cQf4+!yP%97f=XzXu!0 z5oYAGcw#AUiLyUPCsFAZSh!*whp5a@Yt{{Frs@T;tA|4&OCtForA)(IJcz?r1>VYC z^9jV%isAK!+XI>Hh9fjq5I~x&nPMkh4<}vUw|rJ?oF*SSju$;CM_G{1x&(ZdF9tyh zetZkCDsEH`5C|GA=u3}np$rZ8^d`=5`PB!Lz>`O191l3Xn*v#nCrdU4iQW*9O31jj zuoguH*x|?oI%J|f0{T86Lr_KT!hOF;AsSH8(a3F>DF%xo;D6$CD&_C$WGMPsGkT;b zSYmdhx#t8!-+zxyk+#SJnqSBt(c&IrclS|<8Yt!(#JNjJL`QBQ=Xrzgv}*eJmr%$j zg>m4xsEMz7$)XQ*MK(Vv*7H_hQjXWDZN8Zwt4B&z{OhVXq6PH1mRNy5kwWcAU9hYu+M(^xU1fsyINI>*R5 z83E8Xi5u4r?i}2W)lW>KOx#+?uMgK%t&BGJaP*9r0AqB+D6=}SxybYL(Ig4>p@zIMtO}fT_CC z^`i88T0-^Df>8~d(e?mehxmGCiV8-jD5CHahcg`sDW!x1`BY-d-;d1&*bh}&kf{!+ zN{3iUlq>V7?bF58^9rirGZVkup6R(}gBh3>9%kjG_T1FvJyE{oE`iXtBLW7@PN>zH z!-hoz3Da4uoc#ptOE!bJ4^3W@HR;vcV3)=(RqDqRDIx@Td2HCicPo5l2?hV z>LfJ`5rqr`<$l5Z+k%)J^^vuVBgzZ^Lc%Qy34KR;5;=^kYCP=x&F+Gr^+D z$8DFb25U;PM`ZPD|9fqKRmAbD|JM=p_+A?wm)9{aDPP@rQ-VtC!hz>v{w?+WK`i(|zOzw}1szm=6+_F{Kp$2{eM5hie|PBPI3;$CgyJcyID?{`VYj&k?)PxaKriHAO(pRa(tdb zjzM9Z$kw1FEOl$t5=6T)*69SRL$^5(#W~S``@@kyp+xrofZfOkD;1R=dh?J{xcAdP zXJ#52et0BfbAj;mw}cSccqR*ea(o$sTO?Z*`?W)gq|C+=yJyptP6ckF{JZqj%qp0f zxLLe&q=vXn;0?)n@GTlkqv5ZsF0X?!?YHZAGvih)7!iwNj`af# zw->z@bJIF4uB|(lRuFXX1=|(11GVmB=C=BYSBi5wFpKg5lHF2sINTokqQdFIZ)b9o zqpF!ZeHqgfM;XD2DBVYUlxsixnm7E&r(gX$V&oMW^%o>sHN|vo% zca~!W>#@&Q#WF`tSNw*u7V-65hILoS8~%UypFjW*#?3+E$LIXLNUdFn>Z#AW5|-^1@hP&#_pgw3ePSLe7OH zR;mAq0JC9^hli2Edl1POpjgUpXftAKrtmA;|NVxJYYn) z?!X2(R6`6*8LuMUQlCNZls3)y8?#1FKSs<;omj4rH7hR17i$6n)XKWiN)Cbu~xKaaX9-E>MzI><I z)Vr~7j=7_R5ljLFQqVG9MP~8GNs!!U*H)2;752EX&$A-j5mg5!J%q%O=|Z?Ez6dWV ztkaU~M#mT#@Po?g#EaJ32?Ih@2mS&BmQGmu2Le-Tgdt`#I%D+cH3Wa9T` zRK?Q6>9cBv)^49(VQ!hncL_ENc&pmOSf-I4C@qC^2>va=lFr}QXP1e31ULmT{){f>Xx()09)c{v>0}vn)S6&T89DFy;(&K-hWbp zt`1g{_)iE43HgD9K*GiI6?Kw>QPL84S+LIouz7EQ=_pFmu?|x|Hu1>!?XKBrZ`JSQkA+y;z5R>s8AE0m6 z4$#>k^%$M1W_@HN>d5#Ej7?>2_G{Z59H`*AP)WAf57=_N;*#|oAGpZ4I5>o=Ufe}+ zb>+uO+RM0j4&hBdo6LLF#TI>LefXPN=KheV?b6D?xe0R|yE;0=szx1r=*V2%M@URx zA0GhMV2r#5X5lpixB}rHRfJ8>;cn7u8H9l`i-8DUrP5l{N^lf-5-Qymw=A|WW|sDb84l;&5VoN$SS&&Z-rO; zGr2ubu(0=7$CYL}-POjgXGiVV-Dy6TUTN;p=`_1-#_HXprOBRD zEoh{nQ<*b`yeE!ucNXit)+_`DGGw8xAy1djQ*6)RLf136G=(nd)8~-ZRuLl}od))k zpSn!2mU!yKJh#g2PBia@=A@y8w3(1S=yZHFT3J|$n@m{01{NRw3>;kq^3;Lr$(JmQ zIS1UyEv`wHQt@jmYPJ%ig{t1vbWYwRgd!IZv3%tjE zlRi&s3hEHt%2P9K`AgI_RGGF=)6lC?b3P_h9h@xZ>S~sWlW2_su5teu;Q=Zp#Eurx z7>L}Zpqjd35~OV?>)Elk>EC~MqjEA4Au|2@ygk|hkjgMijwU&x>jb^@V zpf{=D-x9;WiKZrn#7LPmqsl|pSF6Rp19+Ggmr$?FEKg7Oc$<_dZaG^_2SV(gqZZjs zNOK-Ns90;A_Su!xT)$2F^GY>wO6^*L4G4|2v**Oqx&T61Fz|*Zxjtzk%=l=NLGCwB zXN*tCLeY4;104gITrEMFLUU>b#-~X|OEc?#egW5Vpjd7NwOPUcq;4>8E>%K@_y|nk zNFDqQnz_8Nf)C|%8o)eK0k&Wxp`HZE1U~x1rXTL=8Z>*^`VF~=1< z5<55G=oQIrH4q5 z1;*gV&2oFxH=vy>JkvzoQbnx zBW~F-ly`|X(tKRp#Iurj*%o8HQqrV-J?qkCxB+W!&Bori^>5Y1P-7z+&YF$0xeHKr z$pUA6o~ahY%?Gnt5^-oxdML5vyC~MKb_h_$Vk0Q9h<6vKV5Y1r>DU}R`#PWFPqzOQ z_rPoZ=MV@>U2fXSMxqlDQE>qPcT8Zj6VycG?IObo&gRx~s(c=`4~Keq!(4J{5mB|| znm%`@$lfh!nr3fTDk5K=A#!PNAf7`NN7vaz{3j^Gj3Zg?`eSjTo_tp2pkQrPEeU%Z zE9pc=UzNdfy!j1MxmVAz)IlL&Db$q0^i^{rWg9x~&x78vCtp??3nzA< z7FC0IhZ{XrEC^9CWvGoaNyGj!(_wC+h4@TR1xifRN@ST8UCBn3rcKT7V%XXUnLiNBEurc^S3F<#@gx| zqm{WT%x3>vy;K^zhaj_T)>=4C^0kkR2f+qq~@4Op%W6S z4$K}{yY`hGSl;-@76#)VVgNCJTbLQb6UVf&0)lc(L+_J8q$!jlm>HsV76+ANevU%0 zJ~O`x!VBaIN8HXFAXI8^b0Gb5>U#{I#aGqY2-!95N0v{J-;@eWPdP3yTvP?3c?)J( z>|wGHM4^)-cL)%RGVBQbmHHIGBn#BAhUPI+hHIH~if*Zu8}`(htXoG*p$llRGWkX4U?&8#r%>+ELd83G!iu#KZ^xXupijI408dhf${@=Sfj-DA9BuLy;? zHOPTZno7Q71~Q+$d7Qfx!?r;oX4RpPl<{~Y`GsoV;=iuE%Pr^hEf_&kNk6E zuCc|I=3Fi>=cQ2+r|6BKchY|fXX(mB@K~T63_Qnm zaJa?Y1^9OrQl?4Qbfj)pZ_FOeH@!Uiu*G9LzWpjRFvQ^z_x*EKEa(xD6SB;gS4hZa zk>h``FBH+}3fFksYVRM&EYk9da0qhmb62@7z0LkAhl$`xF(6#wk})i~`%B+rlVAXX z=%rIFz#Jn|{2F4vzyT8YjI`2+UgT%Paz~zYpMR|bQludJn?%-IGh6;oXB;Ih6vkVm z37DFAH1dH^&mChO&;Ltw_smeqUmO>d3e;^}irY}}CP|#zh8G~ojckj(8lsry%Q*@x!nw^Z)|6`t)68a$ZSw5IH_8%cJ=xf27 z8FOT^{|AHj4U4Z9el+}n>`6g6zmGFMm=lNDARbpM_>KJyc;hj7;FrW2J1Y9@xBq#| z?g!uQTN~pOi(MLSYtvt}+6dCK1-##WgK?l#+Jys|cd!XeCX19%b~lnvyye@{!Z9 zQ%X*l9hq)^dYQxkQj07=je+|(P&W|5-jkq>JrZhoqIn^EFd)L&DTzJVBobjMQbmJc z-K=i4bUzoCTU1|A7gQxV!i=*^#un&Mj5FX1d~C{0`Z^_Tn+6y*#MO3QbH1a>VV-h# zi`;v!`0O-3%3cHH=~t%*OeF0;p6rkOOb20q4cMua)v&@b_4@QI3;S=Jhe8trEV960wWrAA5`$Mt_ zud0FDmI$A!@(rzUbG|&;dDsxL+< z5APD3fWFDKdty52pP2>7Tve`ziY*kab*p8e&xOg7u|U}hNpOqWXQ9dvj-?AtnyHLHaSjy%4&{==ls z6ryi}o}xxc10)(r(73Y`+3h;EedS*VwB1K~UFOsG1erEt&XEJEWVH z@))6rJVDcC0Qp8Md)0yCYp*d!RSZZ`eTt|%>7Z=8ru-N>9n{&Cq^`LtlAUvvcGzKg ziCkFM@t~;lQlR6B=_Vt4=E3x}=PXLKk)^IVFUl>rE*tZf{gEx$?oBr|+rrXj zOZBz4xGYHqNEzs2#(%I5TNpmL%Dh1@5u;NkOOZVa^7RHK)0QB9n5sfbBm-!^({Fc+;EEQ4M4tD)cQz-i-13Mzh&s6{*ty0`<@lu zL(U7E5e|6~G>W7f`hDA!R{Gn%FhA@xLXuiesZQiJJT8HdmE5OJcy3TwBBoVp3{{of z-5^wf;7TrHNXIyh{VxopY@1;P3C47RGXWYSh;DfIByWM>Sej5$-f~zpjT|nCGR0>%!BeW^UejYZx zM|#DkVYNeS+c?jBLZ?SKen;P70yZe1k(LtTHDuJ#1rx|0<-%xHHJR zDZg0>AKdoom~+U)L`TXd-frkCa{|-ZQ|pti75p7^e(={9Eb`2oW*aqrS8%~JOIOg4 zSG*++te;Zs28Cwb35o7D3bhwy*tEf#6>Fl}pEbLld#JrrY`$S`w)e$r+KRO-CMknh z&Y`r}gyd=Bw2|h1^)sbuGI+MQ46Ng|Hlf>GI_{xO--c-B3^<+(U~rxc(rf{B9AZya z;d!>?_&1sEE<4(tyNlWwi?w)#9xtEMKZFpsFcxZl^=+;jTrWe^J`rxdp>Mv8#%rd} z)AVF(?#S4mQ(?TV|7V@%GDRM@q^jAbjd5&$o_r!%7_8drN0@j^V-gMMakfpL+1(ppMPFphZ*0_v5^zyWn{ka%M#?fdM&Z)|ko`73Q zm*!*bGEmD=UzLa`*RIT|O0_mZPWIli0*1zs8QCVq)_5Ygiyltsz~Z8(T(CU^V{A6! z{i=J$(xt>5@D%4?$oQQmJewBzHY%xo?ab2UN1BX13)xnjbO>ffcrzosSv!m=bg;KW zvvPNiHz^c}&KUtvUB%Qprmle8(^gxwHcR-6zXcYNn~5bA!dKX0`^$)%8u8@xm&#bBT3#{8${A~&7cozDC} zBVaecFZcp4dw}kA&0EifYd;ymfrRLt8|3RN4Tikp}*Y1Fbm=c!>* zGJ_nRc7QG6q+MF@1AXRAo-C0LNs6#L5?2msS5=t!F^4guA$`WvYCta6zp$U$!S7?K zYWj37^NGTDjJsCTxE&tk1x9QsJZQjiz?i#U{TyN z%m8v(1xNGt47NXj3X;U7(6K@d0bb`I;{T`tA4`Qu0ai8`%a#*FtB89%eia)tCRZq$ zb#g{qEE$?baBd+c_MreQe})3lo^u~TiZx(tAK0BY%?c!u%x`SJ??8~g%`8j`oHUW; zXMnNj+m;a%1;&i39040rfPp8e9B{x!-@y+A6>O24W(zVp=8ko8w)j z5dDv^PM|otUy11cW0JiGV0w27^sk>k!ywP7?%FD)0}7~d9xT+~`+e{F27R~!qWI5r z+9gBHF%E>q^TZ9su|-jUUXJO8>KE;yK!KahUDOF5MFpFD@tfqhysz-kS&hJ+ty#T? zWk39@qLkf#lsDheh_Du`Y1N&TDaV| z?6|x|Ts-hVdB@@k?kL@#C!28aw0GCJyyb*;qa$(4E{!B0qS|~pY{8kQXCJBNy*3FE zWSbDdN){T+rFLaU2pI7~#NB!>(`W89EVc;z<4P*&mMl7ZhontP4;hz2|0ywy($lE` zo)ma3n3r!-=UdP)>*~OzalJ4rF&}jIN?FM%xxxcW40ti zS{SA1ut@CJ`X2b(YT!3m;3gzqFH5$)G)Lhg9B$1~e`No{OsokOl=v&nbp8qpXTBRr zzc{^Z=69&#Pgw;?w}mHJfii;itCR*cO8qr&1WhsnMPdbQ<$bq~vW=&_NeIyvw^?-=d6K(uOrSI*7t zwrK3D>W5hRBhIxowaDNiEQ3&2$a)_s?7ZQ$bPM~OQwN*Y(Nz7xQdOIVnoQ)hz|gd| zxg9+3$IfX;rZkhlRdWZMmeEw>QCGx%zK4yd7>%I%t;N#Ig4lXC|8JefKHDnNG7WWw zp}AEC6J>>-s@lDG>9^Lse+30>H4oAXr>2&%iWbdJD=vy^I_e7NKTg!vWl&X1EUkCa z>bT1gmd$#7cP?xDs+OJF5KUIQd=;^Ho%H4{$)GG`e!<0iz1p@`&F$^YkTX=&zoW^M1wtd=B=AT{X;GY(Z<9u2peHwFVLm&3ForZkc zk>-^DJ;@R4@Ul{!&q zORgABCXf1td^jAi5%j>kMvu~od^u8n`u_KGXSaLE*E={Mpf8I558##m83ZL{Yi+0R z@Dtha-?Brx(jmPxhq6a}?{f}JC+^}`Wf1BdR{^W_ILAchIAqK&^s7NQ>?KR24=L0+i6mvYZme;f|6%0V|5N8a_KUb4UGa7L z*WsoEpc`F5FB*Ji_R<}IufG+77{8INKND3Llf=48prf-~1>E~C*J>Ztn5`1ttFl}q zy;@>jrM~uw=bE)jAJtgCnA4iCauE{k5R z*}RLyI)ksSIAvdv7tO#?ju>qfF{HJ%71Sc3D)Lx%QziY8OnFq?DSrkhsWP8w09}ja6KW8QO)960Gt(*D={lRAE_A2BA zb;W`fc8MpSu&Sq?wg+IPL{>r5HuhJ#;*vu4TyrXZB2*=Kd#|a?SNoi`52kvw z*ViZi+078~91Kl{E|wuab}BcU3XkXE8x0pzsBPRbPz=?6W)lUR;xavwD6OWeM6x+& zhl1) zXrr9U?AD|;1;sY9`tMZcZh}Imb$bB7Hl#x0mh}`0>*povp^Z{1wTme`Yl`im_5c&x zkO|3K)^n)!F3f8Bp$X6~COmVA_V1hVfwH=D1rSo@rLp52JMP&cNwi!!Tbf){iu@-g z2$Pr+!eGMJX!}NCj{=`<^aHjABlaO?ii5#6_L*=;eqR(gz7qC2lyjDkOyr({>%)m1 zNGa}Zb8}nrMsB3SzEbA|$36HLwE_I>7uSza{?l3}r9?WkmN%%$m(6O|d}N#z-#tUJ zC;cAe@8Iv{8#1yl2;b$K9+?mPul!wPGFQ1>lnA-({*cd%S}x&~*(@SW07w7spz#ZY z|5&awBPxb(zHNcN?n#!J5*|)*B@_hfqg^owZla>(LI;s*#`?j5*`3j;O!_8GqNmY3 zU81M4L#~v|m{F{hjcH*aXDYjJH~H+JJjJL!M(HSH+6ZQO>U$)LRkFk>#@BYK=FtO> z^iA@_Ok;;gz%a*r!`IVVr>~rhPg-4zZT--L^~E&a51{~)od!nxNP63EAy`*(=KC!_Ph1ez9C62OPpKJ8}(X=Yt1pQomh3O zTB$fWGN6fY1-57M?>tx?R)wm#2O$iXv!~_wqu2V>G&j-V-`ZvrQhOJb8d5AwdGtLJ zY4tSdO+v8QY&1seuCB}l^Nr2K;kd-)l6_CmOA3n`+2<={OSJI_HD$v3kK_i?Q)#&I z#_^*>tag;#)9Dtm;&<=v`akg<6-$ z^0>#@z^bI~^B6A!V6o!^38s%T7fzx{Tm9VO*glMli|P7hIG*fQN(Dbz7X?<~G}`N( z+GyHi>_zyfN1*uWv_}(Wo0`(sHOiz}8k36`SpQmPT0LOrNvEh7ppq7DFHIJ0yF95l zZ)436Tm+6LXe^Ob(E-ez)iiKZR3Mi1Xqu`d?}o9?l>aS_JdxOwp2}(Cru$XI1BRKJ8HbhDi|R^+RBHq(>4*nGK|p=mRBOg_@x)c~PHiwbL6m5b|V%!G{TR@Iolz&nq>J;MN6nE{$#4>N`GDaihz)xk0te}t7Y`J zAE%|Ju6rcbRf)zQH2+L9LDT*$Ep;|tcrNLvKYd+5POCKm0(;~Tm20-S7#v7*vT6W; z^R`{e-+3Sk{wgXKEg?)L&I+ZLhc8Ks4bKNQ4FkK05D6M=3kw5iQD)eaZgc}QoMl}S zjugJE55_0^Fr#iHZ=Od*fb$o(D&N~??i_Ouk9prFO5UsB^*t1pBoW`Xi&G0nE+4K_ z=Y&4h#qDWHxhmOX>uEz;F^?zIiJj5fPlqpSJK)>M?3nEF>-)Vc7wJ@(43-H*D}}nv zWY=M#rf`K*JUBe?rVnl>7PqC;Ii{_uHR5{@_B9@bN%F-b$v5VcsurNTNKR3;j{(GZ zNpNS4ip^VC_R+_FIbFS50&@`8@xqxp2T?~P^u`@>7CFMNF0Gp^Gk>#UM@ErK)tCtG z*3`^dRqk#v)Im(?QNDVI%S`r_c=3oO|4FfS4-Zo|)J6Q~t0w#UtnE`GZ1}P9q;dnp zKCB*-BCKxQA}Rbd*fj?G%nkNf|JgJ$9J$86WtBBOVrT?8sb`p2nLYM%+XOjj&{XmS zmNlHR_Q={YarBBdt-ucf`?pl3rc8ec2UW@y0kZV*%3caH(@S+dQfKDaCyYq>*hkW(c}b%HGTv^%H(f@u`mMl_J~gRb2 z>DW$Qri_6oE)hJ+*qUT<#j8$qtgf_~dGA>((Au)HSHp_ zJ&VVps>9?;t@8S|)jC}IPS0JTvqrlpTQ*ys(@u$+PiD$a-k~dldS|Lp+h)C%%*0gt zp@W7E>&nK8?E2lc+3R!T2LsJFL)D=r&BRJZN=sJbq3mjSuAXq8k?;?`C+EbSbMfK1 z>~g(AuS{?wcS=g+yhe9ly;q?5tH{Egut^juev6mMBf(K|y|TEb>FjbkMuigT8fCK; z>cX;gdzHa@`&d+2CXFVzaY9wZxPTX7a+Q0dvaBX-V-rDDRaHt=6<~#?xT@lX_FYx2 z8IW`}&xGgnpzZ0W3%L@&% zFMT$0Yosf}DcqfZTrUVmDq6STe1-LqCYj18s&eVqQ4QTXXQ*)uo z3kKKBYsRN9E@#Xe2`$rHPT!m6Zy%s%DV*M9=efbg^IXU<*C-v9<7eE)&XALu4eCXf z+p)eRR<}*SM0U_vZBX>*98v7+|K-JfI#2qdsM{fV znhE>#`g8TkIWfDixNkk_+qsBKAKea>>YXy7(B zC8g(sWgRIk>x?a@yi>-8TB1g&z|yi{1(d=`DLBfPaWW`RiB@U&fmskvtBe?wX#_b> zu2hf~^lsbe+p^WY%W^zf$*x`e!kX7tMeN8}Wf^=z@WiS+597&RWeVqsTx|&F30-vz z{{%BwLH6XWI}h*DLs{jbzQ6@Mb(P?Frj%HzfI!dd(~&(v8MGjJlGdprd&1VOAa!J~ z>KOQjuc9M*^3>4*p1=*>!@K-f{pIzp8*5!NR-d!)Xskm@tVBSd7xZn3o(>1Q6IOKr zPpV5@HR5Bemo+9JFk z|BRZY{`FGbvwlywc8TtZfLx60s;u6bsCW<5M!CY-%%3BGE z`~6?#*04MHDEb`!eR};$X??E~vKZTc0zAGaHUHg=t|~n8s{9Gxe*4K7`2UeFqi_AcOBtw2kp7{g{>djY-y9U*k_Ab+nIp0n^9+mhunG>E{{@Dr+HX$M`Ul%I z+3N5jrAaZ|SDD>!&>z1yRxoOdG9Lmix%MDCd*zxJZ{}s?8lMlibMPK3rA|9AP*i!F zh0;x{54m52vI=R8e_aXFdzp)HRup?CbPIYZx=rB0haX%|-bZwgsVT^GY8qC$z-vNFSmji0!+KU+~J%}~&36KP?kqnhY7DKZWa(XWCu(Ko z-Bp_7p4!GY+&Z22zazNM_10={SHJ4WC$>VQ;n(DA#Qai# z{4~q+g05-y&>F+{^z$xad`pXKMuw1O)mMtIhg<6R!Q=oGVp7&J~m; z+>vivlL5fQ5dm;#tq7btYY>T=RU{%QWPIUn94x`w4{mCrk$waA^FMN)#w8W#brsKl z%6({MJV2-^ZqL6Wt(z<~FSV_gbTq1-l-9p}kBnU!Y)xET+P!!`TwS)`eZRlIZMVCh zj}8aNAn<_w0IX#&8UN00*yW%gcnJCk;Wt5_6WU@Y_2F6ZZ+ivB7MA4MqTKZuH)VC; z5)^hpsUpktSa!2*V=)VzxbSg?=qRIs0Q@$qWRa|n>aq0`nUlEK8F5}kQmXkxNnSz>v7T4fal9B6z-Ui;8Nna#^XO+Aai=L|*39|vJa1>+B zkf+oSQ&il9s+LxMX4<=@^^7d@C4(J8-jsat6MQSG=aXGT={C-MJb?45%n zi{7o_*tRFOZBA@E6Wi!`Vyk1@wryu(+qNf@eEHq`{&U}Y>#JL}&#qp*`(Rg}v+Fqz z)`Eqq3hQ@d0W&AjATx^Y`?XEU~k*{w+x__1LSc z7eaReY%kxEIz7^4N6qEMxW0};@bcYHa}*qJnY)~a0Ff${InA6s$&tAuVbF-)C;uP4 zPSXv{FO6vBFdkcauubg3#}Za5z4Z7h36-zyvuZp1cj?wtqH7L82nsI|wd3zBs^#nY0&D5kvvJ!8 zi;MLZE`GtiT9bla!+KYTh$$;u^b!RJ;EKd4kuP*tMjW{W)mXqN>}}X6oT;fc_n)K_ zO4JSPf=PJF1>uVm>$@o#MD zy+F^9sY=sNnPU#t+Qc{fbgr>3>Ej#IPm$wX(@*i^9n;T)(AKV7&aB4)>^)ig*Vbu-`Ptuw9ODkxo1{vw>7a}FNH=FMFuAMgGnOl*Nx`8jeqN06pTmw z=(&TjPQDaMiI&D3UgxsjN08NKq(WIJw`8Lmyc^lR&hCM$PbLjTlO2Af|U zEtQ>Iv)%bNxLJtubtpJl@QkNL(-0tP3oKou%Yp3bG_8n0 zUJl)KG86l2x*X9YiNH5G+k*dA(T(s!kU=^lW(eBSo}uVMa<)I1iK=h?+5OMWgqdc= zJNH~b|DwP9EHc56)&loLFWNPI^|J$)6(8K4@mvs7z0z%7*^EG3^9m+j?bP{${1ir1 z|6tY&DY-E(u3V{ic^phelkio~%%j!-`RQi=ADpo=bbW+|NvefYsnrhia&MVH> zSF4%qmiIqG8s0|x1)y>;pGNcdMbf&AA|WLEJLiA-K}`I6h!YO!y@pYnsjZb2Q>O$K zDgn90GTt6Rp$Y)Rt4H_a%7yA|GS2i16y&z&$0wUdY!^|jezzg?BD#0bxx8P{7f%5N zusUZ#(dh)C&HxF#l2>GTwLtmdP%G^Yjq?E7J(XZ)%#HxD)C1vs19je}*y4PhyqRD) zPP!mh59EE3@t!$E@uHA!xE>-2Mk z051?#f$x(?t4hj4_i0;ktNIHDBO+&(ctM7ZFsS;52@3?23)*K`2dXBfEH*-%H%j@= z1ZV75_VKP7OIKr-F_At|Eao7`aq@C+CoLc9cZ@T|3O5I%T2xZ?)F6SZTo_iiM{;^jOE00zBxGEi zTn8hKou?sdYuOyXa<42~9egBpE?muPXSp=_rg^d;gHVs!+%XlZ(H*FIGf-bk8mHtYi z+P)<}dBCQ9MupBuB;`3@!+mYmI{ZN>UXhMv=wI0qIA;?cTGP4}Z;d(rC3ulZ*^(2! zPKYN%Cw(&-0AhZjY>ADtX?^N##jr_paX%qFT`I9lwfW6?U90UoXc@tdh=yflJ4l;xgh8 zYO!K2R0DRVmnK)kI9y|~V)`42RQ}PzBC{PnT+*7N@QlirPuG~Tc)%nJJsmb?{G%I< zWo*on+ek053Oa#GZ$31VxHb{>=F?+5graH8qPgb5svBYq(EYa`5>x6U5WA0W8@+$k zm6FNOjMkEO&rr5h{XM7tx7Ne&IXQte^ID2k67uM5RrD$~`2#kO?@EmTTR2mw#{3Y) z&d)Y+l5u-;$Vv7=8$1pa_vM;yTlMt+7916@S_2P(xge<@D+!o z&ovjwXPdF#gli6IbuW(325sohf9R3L%x0AHeVhlBV2@nVfb(U+>QZeL%FL{>Z)Iwr9Ab+5hsi64q_~Ez|=FR9M&FRGcoIWM8z{FB|Qw zN#6xb2QKKj^qpj6Vm2zrwf~Asm*z%g6KhxZ;JU?0ag#Mqeb$`Q+Jxjms_UG@7@qc5#{|~#J@5y0B z5DE(Fn?4-?#R!11mw;L>nxD$Tkbpu(l+UdiYWVptYpBcB_p7LC@es{M0%~S=>alAm zVZJ~uPX%!rh?18UDj$wnqQhsq-X8cM8e!?wKX5QH*sKfB_aW&Lp#HKzu+1C+^QjpcwO^jlDk%j58+N3fxbM-G>^*f$p}mF8i}S1L!rF^VNkkiuYX z2<~`SSHssdzrQ~>w>+Qy&GmM$4>gt8=YPLQ9AE1_`tsd*o8ehW%oXrM>1#LkMN<1{ zhDY>J@Bfw*)x{=w<-`6R`>T!nA%p%mO=oYy@I`yw0V1RWt;b}D5jO?wPD;?t*uK7Y z7uD#tyAh#+^!AUoTN@whwGRobZ!uD>nSb5zy~9Fd@v054l578{AiwDOzDT3|l81Z8 z_x#-Vgl=;gKd?VHLU#7hu{U44FF*T36z?RpKjJQbQ_=`(LST?&4IB^H8l3pBhC1b zaH+qr+DMg%;DR?M@wp_Mg)i=N$Nz{4c!}R>8>r!Rf*$+Pm{!M z@;lz;BI7JII$A2zNbD9QkULaa_sH2qFyZjC+EDW*eo=2FUVzW#K{)925v>y>ss^<= z)6$j_kW@1;DzU23gK5th{xwhVxw*9ZqN;22$BTYS*R{b+<6(Ehb(|@~v?GHW)hWI1 zI1_V~vA>)UwkTb;=I+{c#nxY1J1N2c`U*Zv_Tvmo2dor`0hYZ$H8tCE={s3*kVdds zT4WEi$a;9jP=rpVWN_X}CQg-;yULca3c?M^H&Y|Akfe*rg)}5ZDd7bwLalUlMD?q6 z?3Cb}M@;F9^k{dbd6d)1D@lkDLpR(qtH<>!lL(4SdPwdbkttJ$3RR=ox)CDG5>1); zYlin@=7hPi76+X0tlwrW6GJP+0<`F}19=j9djiA8iAjlgHe(kOMlLLCpM@=@o4PB5 z;25^%3*0ht&Z83CvSUya3lra3YH^!02Ad9F(Qw$5?29FNUDVB`D4g)>q@B8gt*EE? z+pc7P$|V@}ToPH!6r;WzCSjD=SJbEIRc4aDIA={*odre=K}qZAXTw@GlUG+v1UJbfEH9dh>X1p> z*szgQCl|@55B(XY_+(OeNDrGh#ju4qPJX@kmmUn9{#C2G^2QcHn%S#RYJY2iCdcU) zq@aKGhdjsj(>l9jB3D{!?L(c{Ek-D@tl`bZ^<2k~GQjL%<$O{8Q_gtu*kRtmjK1-a z1MJN=j!l5Nf;1k81soTmDjEKpkQNl-*zMzNNpRTii5Gz>IWv(0^t{teBwfi?{?2-s zz&IZ>SzAImi)^{wr*t?kR1o9TRViEbk5XsBr1EUY0>ojbu{8ayjjSAE7njounU{v6*;S!Cl0glF>b8NFF=0f9QQ7?f zSDV~)jxOrN?2b&EAZgf0yNf!i6r)}glWv%H?Ja;*qtZA=i;fR@vOp3mZel;I!9x#A zal$y46i;oAdb!*KcC_6_<##X7w2;K+!@R&^-^q+^YJW!VehG2w<+{O#3idS2K-i zlipXsZc;8^G!x`ZiWD~yOsI*~&#}e48wc;aw5*mOI(UEVxM|RLKahQjiP@|VZ zOzwo+LX<+|4SF}5)0mK-ZP)bxu?}@s^Sun5L*RFY@Tx8qN^)*pSy+wI?tsuz zT-mh@PXmgpfefkC>wqqe?l~N7A|pAdgZFX`w#v^YU^${Vn3}UkW)(h}oU$*S4aH1+ z5E7+KFDc6Td{GG8p^ee)T*$amJ(3SdUnr@kM141^VQqxp)Pt>JkZR6%f$GFIMh)<* zJtt7A4}kOBeF^K6Y}O*^o;*$>%uA$1xn;h(XDILtLVz#uH@;bvQ)W%;jNwB3*&tiO z8FwbR4{@wN1}7wQb|PmqFC>&x|6Qx8aX1P@0_XxvDy06$+HzU)SgXv7j9e2xpL-&O zb>Z2qq~Rgsy{D(0B8>E3=`d~z2I8ewLjzfv-l@~2Zl`ajL~B*Vsg9`1s&CFG5|+YVg8C#bGTYvf4PEj zhUe(bVxQYy$7$QL3}3TLik%85sYuXQ7xR~eKLB;RPypgYKnGCvqvB`EcWt?E5-`Ro zO&AIN^e-${4NVf*<=*8%bU4-Sh=JU&YFb38a;SwPQI7ompkWr<88o;BuCMWK(kUFb z@ziiNPs9vOoDBLxW`~AwvszlL)@tpe6fHyiI{{NhVqw=Gqoh0w=f_w4D*%c^4O3Jz z-vtmtEBfs=J{vjeX&vM=-zvaF?TZ3VXoi?ir~Sp}XPmCn4OdT;t+Hz(tt32g+jda)FYVNBD|LL-eWG|KO6a_Uj0oC3O& zk||nH;)_PXWusE{cp=7!k>cRy;ot03ylUZyw-GUASn^twA6g8I{ZOcV5_5s(`6Tq~ zb@ELIy!E*5;ge3OZ3ymB3YQqlTUokRoXGcS1`dIuJI~G6C7=!?46bM~7P#K6W|vzf z^=20vMRgYpXIjt;OEGQ9Cfb|IEBk!5W^4)8@-x#~;Tt%^3If|$PBXyX!2~8X|FPW%AY2sS}b9PS<@1b*-E@j*}-`*+}zG@e&Tybrq)tA+?r;MP0Zyi3N z*&kv*s`bsaw+VvWg=`8!)^2PzfKmJQRAx$_+y=N-(#@_DahQx3iw(AUru-j9IR+O# zT=HUjs=^?ln^2--~f`z z#uc_$tJwv=*9+(>kHEVx^7|c(V%;YvR|qKYT%*3_IKe!>m!>4l*Y$1dD>^Q z^u}^m%Fwii#*q{lIjOK8PBzk z*eT*3i3-#`k{2N;QH`CYkvvN>8ABgs(a171_QFLUmX<@W%~Sipcz{G!zN0-K{!=gU z0d}>|L0R-`-|LQUlhnY%uqQxrD3hCddq8#{V;jTa!1wr4aj5fEuZ!w__^)x-tMC+R zFRJYD=)YDZO7Vp^TPq3228zK&i8IxwN0U~tIh^?MpP^&OQy{ixWfPe?%6=dUSw1I> z4>_r{7=DtAxhPLR!k-t47RtuphDog-fJE=&i^n9Y`-3GzSPx|Ys*sOY=y~`iGqHM_ zvHGLD*<%^B(-w#hnp-0MyiBm0IS0(G({VLJK}am6T`f4*Qq0$Iid$6G-NJOZEQx>x z8b?aVlp@U6G>Tgm)m>yZOf8WB7aB(*$QeaC$2bbdIGS50)m=(9Yq)pFnakk@?GM@A z0Z=CFjgTY_Nh@p$Y1%q+Or?4Bjv_D_uYu?kDh6q&CUR+2Z)L6+KiEa&q^5`j#{44L z1(|gl>2(|9_0)1yroy^fWi99!90i*p`4m*Hbg*1j$nUbH`ynm2l1raiZ^zc9MkZRu zqX>bS!rWC8{^DVmu3?u$C-3g;lZ!BE>vv1c)fVOH%JO3XLaY9u=AUL9n@*(RmJ61- zXNIY|Eq|4b80yBYXqgQLtr4$~D-F8IB({Zd6J;=6Gf-V|L&b|e4b;^I$~p^rLv0I4 zt@hToti2?p)ouvDkAN*j!%o;s5wHu&x*POWF^Fg8fG3pILWpOa009|8?@*9SZTQtj z%DN%#=T%#WJ6j0{Uc*1=tDs=s0ewhlt43gaqJ~Upt1MvN5q+`ftCJAVCScy_eFnH- zb^oyH{!!L#HzHi}JFwhh z@r)Yq4*=7b)95c?0p|Tl51x6!kdxVW@7gCwQn!P?S_<(j3HCR-Pf(JDBipjoD0C}U zr4!uj*;Z}cv)`h7AcqaY5Src)TFy|2ce0PRYZw!@N(y|+0A^Sai|3gXp*2n{ryIxQ z3LVClG(euRjs}7=xvvC$6#*<$!H_}>pAH|ajtr}gjIs{BWUFKM`fw#pR-a#;p>S%x$fXF^%${Er7xG(Q$x zaA?&*_MJ4@j1}YFk1Ku1Mb7w*GG{T0!y9^bC-vtI`x)WAUvm0m)Kscb%O~;W7vph4 zAz*!FJMj@|s)g9>;zxP$oQAwjVKFJePxKxno?~HwU@9rC$FUzaamoCrjOp`KBHj1Z0)^ ze;J9EGIFsLb1*ggAC8@BEqFuK70=I^?u1(UnmceIU`)NoMnivqA-e4-zbyh(Py~bF zZgEsyt({rJp$zM=XO)duW>M2cMu`L=Hm0u&DS5lnZ1i%&reeSC1XiWtbKey+nqe(PQ$_>6URp~ zp~lA(LD?(5!5b&nPW?gWt1e$p*v-Zr_{VJQkG-2q$6bz`9{bU_yO+(6;L@)?g0Hf@ zT=tJf#4lq>)ZY`bLJPMp*E_Sf@c5rgv8*3zgG`=h@_f(x3`GC%Z8|0j{aOz+Uy+Ia zm4<#bnDA_y%YJ1t{QY77nVR`^(EN+-@5bd6-{!|isJk5)CyA{n38?7N$Uw{zV?*!= z89vtqkhl(nPc&g-p!7sa3RQq!n2xx18!JKW8!WJ%Oc8uFF zxg2~O44S{m;oX`E#W43Q_rn{x=|`-i#`~4T<~orZf;uO zFKrHe#CjbaFke#*`>+*WUQ@JYO*JWLSH5qOPq| zL@o_N6l&(|oeNkm?eaxify28PoDU}`WKg2$_C&tH^!>AaiLlb2HD3&Roej%+FIVa0u$0gaLp0ArqZxs?F`F}7G6x(Z1)jScmoTS3YYZUg&p(f z7CmOam~t`+w?L%tF{A16o!@;^q@82X4^*C)w(j`7A7u;|7WX=D^v6BkC-WIb5;M=p zp23b(?i}S+S}GW8z<{Yqh91FqAN{~cQg7!N=8%g;WC)zNnYVZ3mGIw|p^KN$ZlawU z|1W=31lQ*$@m6wiOUohbXQaPf5{}2CZ#0lZh7m4<64Y5R#;VrqxO1{cO5Q$fm$(3E zIZ@E1EBh>ie+9xdMQ#$^-Q!!#swQk}A`omCvMucAQK~;@9~-{|B+~*rXt(3cKZlDx z$#-Sm@~ui(E>}a>&gI7c0Mtr=z!4Yi7w%1(D4Ns=RKG0h$_SV8^a0iJ9r`^Hrr`;h zvIq7_GCFPjqksyzXLDaOMf2#4J+@E;!LlTx^*78wrdEVKewRc_wqpY~iF z79&-UDDJuy-5C*0)yV?AWYP~RFvj5>Y(Zrk!PMV7g|(ghv{8N;V_vDwLV39xod0%G zQmIW+XK1Jruk=?8c>{%P5z=Vo6P@m4O;u|ZQ$}@F7H@65NChlq@^g@(yxk4S zS7qHXdc3eG+q)w@T|bDPF9ss$4)2;O%VUN5?7${1+(nk|n2F|xNpX1J+ujg}=7)^+ z=}~1l>gBK}hvDSa&I@GP*p=mzz9o>q-5mOh`wf)#v%}W)64+eM2N*VPS$&Y8C(Sjf zuG@<40;eypEf7JVk-G%~zYlJiL9HHnR9zC63KT{y?ojlp6BPLfC2v_e_Gj2hxS0p2 zBm+@xwt_<0ywKf3!4=T)N=L`<+@H}7XFi2zdDzk5`2GddJ>=~@#=V}ZyAD2;&<=it zGoBCg5{lhk>{Aly8$+yI6o{}l%puQHa1+U-7=}I=5iE$KOP-m-0WFWsgI321O?bD% zblpA#?J>2oixzO%w}ti*@kpGgoUdWdG;=m`o%cR^2 zt0^W{m@0qZu~%?@Fq5~PKXbI-8|Sg_DTvU}w?(z%_YBRnaH~)D&ztkK&p9|I<%)B8 zps>%`KW68ObAITG)pSaiWU@5QR8ZWy;x!ndQ-fFOsVFVhEcK~Zn*n&McITh4sYh-5 z3tis5pM54}y6P4K(WNUz;)uOY6a-|j)HJ$Rf~@bR6z354i(Ai=l6gqT2!3IfRmf4W zrpGZ3dY4{JTXmd0i!Wc_BTSb?*QYKdH0|2%N39ddT%qjfs%DXt|9Z_>*|8wFzAUAq zCj6(??Z#?kk@rWIX`DEMHrwiAQIi+1D}Qx^g4UmWy(|B^j_UHNm^S_1RbKhFR6iYk z+k%r-0?K)tUAQEtj_0Rgj$F5LMW_v>qUPoB3DQrF;dv_q?mD`bSJU)9HRz9-l8 zJ0!Rs5HYCA!Yb@MYSC(J*=0q`C!6B>g0lrGg z6I8@8$RJ9yL0~n3$FIKTy$GCwuvXXkYsLkKLeCZ?q)G;XUK!?K(B??0CA;R!&;|Rvb0tQgm%PdSd1$sYQeaKaWYPpXU0rcKLoEq0wV5Xxf~LF zXh)brYVxtzeb9y%P=3p2W%_lX;?=_JErN0uNnB1bvq0DzcN7P=r(-K_CHgCw50HO%?#F=`Mt-@L z_?ZxaY=^hh1!@C#1}&cyo6AvB%2JuAFKVn)lAsydNaLma0`e;2V-O$(PK}tv@g1=?))4pPcW0V ziRfBwy-k<=w0I5Hq>h}H97xmg>eqF#suPx|^uIANn~ZtHVfz=XAWUvPSK~4J6JEEq z6zoM@2S@=XHK&1Mu7#p)duZNu2A9JU^~jw=zZVi~$^=*xH~+iMqZ1JpbL&i@j!wZr z<4uQ~&uv$-6;`D?xyrmN`{+$@M=GLNB%Kfb#EiMhO(S_NLJ)x;H#*b*3 z<1?B(8A+gDVOLE9`%+sjR5(wk-B1^ZEk4k~lBA(Mhled_Fezvl?^L8vi#weFuaEv{ z!d-$cUcxV4>ac32tx!$#p%959S}4qC=qsJ!woLp?Is$dk3q4#Jse9fG8_B z(sf_bGvFC7NiHP1kY4m+Pxm$c&P}|3I;o4`QX>5w;Cv@bkLF;U>=7l`6={A~2?4=1 zbnbHy&AUT=(Y1@;?P|p3RPQ}(`XrO;g;c5MIXRQRoSdq7z{UcMY`3R5tnq+ei^Ob~ z!HUFS0L?QdD76iv`G-pLkMyk{b%QX`0H9}ogYV&;svTB(TOvuTfU;v;06;15ieHyt|;p5-=< zB)}*_&IriU48RbQ*r!3RuX%?%9##kLvd~v=YrE8ISGQtlPbe0&m5e!?bT6r!#u#4p zkYVxS?MNxvmo$oUD6GYZ7Q-jYa9Nkvsy=6ourIvGRIuh!p;wveKxS*lq1Fb?FbOuQ zof96X50`f{nm_XT1e_K~DWSydwl_25w=2hR8TlcD^LqAfqI?6U+Ts>4ENQmXi zq(($ZAB&C^hk`W<8zq@ohZALVH$-3WA&U18)9P{BdB>ttBickCf@^r1IjZOWuxZdt zMve3Bs|e#sE%0l->ff*K?eh%9&sxP3Axx7aus0!*&tBnAMc`MW^rsN+!`GSi`&SeD zJFb;$*i^_sTfgkc9FUc;Cjjgy6V?%9gd7`<;8${jqD2xC*QTjkG73S=+3qVz{~cN2 z0Y~70+kf>`(vChHP^0PE15Ofn|1O{GW4Nqrx{?7lo3z7%si;_$hs%~SVZ*hsQSLBN z?#j~by0X666_iF!HV9FTjYIoY?C)9Z9f^mx%hVD0ddl%9T@N{bRY(f33Zxihgp0^2 zyMj?7r1nnO*6Euss%nfy4@=m?%c9PV+95*DSw&5G{_|&5CZI$Nq2T6HkRHsR!YdaJ zmrcc1(nSBx&dHjAu@?-LUHT>Vz=F|M@k^BLAL*)a?NC%xhjNX5(JzQh%O@wDEqYC^ z1*SkO9bbP9-6Lzd@85`4y3bi>>e&_kg3z^U&edogU$T3Q%FEVpUpNP}cVz!Yz06yJ z(zyaw5nlhK!we*qbgq9W#XGEM!QnOg7-QQ{45he&7RIU+5oGpw~+Sy2A ze(&+pMR~!rpF_`Uq+l1XM&TMMQ_)Q_oYirQYWW1$wWZdz#r>z}&IlfkVxgzBh!`%i zdX!z!H(N3Z9=>DO@{!kAlWn6PUe0jon@~w4ayTy!hW6)p2JyhHl{)4~SUWCof938- zxCT8xgZQl*{k4QKal|JW|F$o8^XfhY+m;Jng6kb&%Uh51=F!gm0;5h|CGlO*JK zM^{;eCR?d;1m2^|Sljbj=Ad)b8IrT$!Zww~Q>}iym;06DJ=6Z{WNP#CdV(u81f_DQ z6t!NDK#V8$9%lkJX;e8!*c0tL3$j#Mp&(1t6Y5Ai=|oAPkU#DoY$A%9DZeZF9&VzN z+Cs@d%#-j4F{zRIL}~k{C;X9JlDpEjI8U52=#fCui?X0_d-y%cgrxfZ0qtD`$$8S5 z&U_BDz8TNjUH)$|oWaoWCm!vi@hUD7yPYbOcA-I(-fStXL+hxc*|C$_=@~2sG*pQJjr%QA3bnCR zzLN@>_WYn0rNx;)+hUWD1tl1oP&=uMOzZNkijS0=qQ1z4P5MV)9G^DEwRPZsBlzgcxVy) zV>TnB=@kplqK;P?Pp$+X@{Y>^^*cY3Y));C70^u1%~uk+60g=@0G{xmitt+*GR(cq zZ_PFvZlnCysWef_h;@ln-jd2NPdEIZMGcjl9qSyph*VDaoVE}vOk4JOiT3z`!RUcj z*D3zXBPbs?_3Y^lUMX2E$*EmOLKTYqG+Kj|Q(A6mXbf0-jgU&f)C(K#*^Hh1HJhq| zNG$-fXQe=tQ^#uXL%F(1|97c${hrjo-4=!(tVcGWuJusn15|u3#LYsj3iCx`*wLQ#y9k=^cK43DfCp!sI;RY&G@^ zH1tay@ezh89ehIoba@_eqEaIp#33l+{A8e-3Q8j6+E|d9G77Y{xtQ=fyOa>Tio8f{ z197GY(1v#Br8DLV785P!>}9F>>U2IpJsxWuvAL z|I0<pOe$YF`gQGiWQENk9}I?i!8jr3y}esOw|BC()jcPKzB-?*td;uTfk0)6;! z(5A4+4A@vZ3eXqNRERGF|ICuHftXV$qZs259;6)uEMcy2yn&cY88}HFJ{Uw_NGt?4 zrbt5Eh<6AA@5~1I76R$y3Dl(?y8*eEgbAM~CW3dSgM5pEyz>NZz({GUsU;1I3L{wq z#ptD|KxuRb0tt>qI;h8-L9|i9SW87>Avh$zK>w#7cRS!?%jdhutQ_K72OQf>6l4}pjwSpa~^ zwscNkCk1o)CEP2a$$x-S8vOXjGQwsD+WsoMPw71~)$ZeB&z9@w_X=SM#s)=-v&>?g zhrcq=W-mPG$Y)PnqEX1ZAGxD;t{WMBCPkfNOEr4OOgYdtjRG6&;9?>E8gSJ9u_R6I5hcTgimyH07BQq<$ z#d=1%PN4RrnL$bF{M#_aw^g`n8R}6?x`{TpDqTv5&M_$y+hIH6*A(`5Rv>9Eiy=!z zL9Oji@d+COL1OXC{E~648Xz0mZLF+~^kGs%uya|8ve()SXGD=FiY9tNKdMYNNaT@N z<^$nMXI55dkviVgU&CQehR%?(2OcY~WpNho3&ze3+l~)r2_^RYr?q8mf4B{YE5Tfb z_xj9>+lR|fXjHIArrF0@=0}G|1s_SduYjh{L|6YcZqyT}@@p4dv1v=Rp=5;(k(Ey0 zE?~l0@8|u}vv2LX3a=tNK1+wueB`p~+51^I=4}=`AD=pZ)cSlH>ZBW5*Z7 zSQ+j1+aioWO=>UNMRNVIZn)|4Ua%Wt`y!hzcm|Kgol0H5#jso~)H{In4;EJmbSug7 z0%Pqx!rmQ98B*)we2Fdz=>vzR{SS$r8=0rl&nK7jW$0P3n_az#ah&V?k zQ`iHEjd zsg%cvZQpS(wmJV^a*8ZUal2O#W{4RVUGDbLH+;EQiDM|Q*z5Y`%1TZ>0%6@4%+0Tj zkk-u7gCRhK)^k~=A(0@9cEYI(|y6VVoR+uADVgPOY+PWlSEaoP}lS z70^UE^V13I#Pm{EIcro41KW`$vek(u(*3puq+m55huSs^ZMA{^2OK+pKOf6)am=mf zfmu(9WT}NGx{9h_RZl)%UK^9#G8xOMEU0Cfj)5Y7kZng`F7;FnkGPxm)|guo%+q0< z&s7#AynK|luR8LG3z3p!p55BlNUrc^FuM8x0>7>wWzR$P>3Iz_^3pH9SbVvu>36Fm zn9j<=FOadpim^HGQcFSa{{#ayc3n6$1qjx}gVA0{dJc=AY+j=sA$ar1K;auE&r$H^ zhVCerNjY?$xXI}aAhrPjc{YhmU5IrRH_)Ck30 zC?s0-B@?5uvEVP6IS>Y1ak6Afy}`;iYG__1)J!TqgC;>FzG6Vm%6K9V&#!f}TBcsz z?SQs;OcgFJ82(Z_KBgzMn>t=D9xX||ovdhfa2r75#oz;|WHr^^P{Y;LvQ1zUQ>l(* zQNlEl6pyCF%G%|L5x4(!3pLW7BDfBG#U)`Oi(&3os;H;sO*~z+xSL4iIkt_z+<|RdLe`#XGg0z3m-?T3qO?ukxkNq=llqs?3adgA zlltw_g7~p20PLgyRvz)~?iUqC`C68YW|j|vJu&iI^+2=d2JPuqr5_7)m1FHRiTZ!( zN`%bz-)4Np5POcEvJMFU#;Os`O6)BB6smJUUTyzTnQdd{UZgB9T_)pQCaOE*b;s)x z=7DOO%5J_@>{ZF;9@k(SuDp?ChKMzhDq1{?tVS@K^9pMh;d-(uSY2EE#<>h=xdgUk ziFZ5G5qg~53B9BLtya}|i$Ot_esnMS3UVbvJC7&bo@~O(-`?fo{bOHrM82hiMa-ZX z#Ct47ONW~C&8&Y|sZMhFhWtNG329kU9mnsGZ~_Ym2-W}JDyv~+Yh`NWYWCkNY_~S7 zhuRXRpu2fOx*Vl2S~yUc08NxKQJ5Sw8D&-)hn<9c3_;3K`o}mKLi*H@HuLH*;&;*1 z`npE_d_^;$zM3vi!?Aq08t}_@siN9$X}w$B>7xB*%hP42>xGr+y*c-X=gp?~HP6@A z&QUg>;N7-w7^opC&oCl@`#g9w>$VL)$DeBJ7UQE2k<()xQ7HIF`|c>?YXrVVpJMhc z8yCjl0^=)Bv!60TZ}6}7U0myr4xHa&F&5=_dMy0Ny>9*Riym``O#L@{x8BxWa$g_) zh9BCZr{J*ydDEVsKJYu&KMH7UOa{PqYLg1c#6T;JYCCNl6W<(5$50(SAf-@X z4e9Gj?pF_Z64(pa9hu2_%CAA}4~R8>rpifUQE=N>hXMnHo@S=)TPj}KqhjGs#LO`rS3?A%vTa-S%ghPC+xjADY zipbt`y9mmd36-;O`0-;6T@U>dF$@aqVj1$CqX%Bzm+!BaS77#DjUdDE+8XFyKx~fi zjkUac%qpQ?Bj=_AaIx0?oL`{Mo*0AQ#J8?hb+Tl;Zw)6y^QN7$PUE0JVJcKuaYZI8 zCwa9Jde!vM9I3v4b_>U}d6^3XDL80^-q9L7UungvJ0O;*dQz{yxDs1TN!YiNT`=S- zUW>dr(0^;CF2KK#O)wbV#afY^@})$QYcis)iHCOKiQq?40e;cX;PtM#_;oyKw6d!R zs?f}07AwcfO@5pogv07H8ozDW7$3)gNeNDO*b)hQ5c*G}Z=7dbl3df*DWjuk&aAi* zqcA{uh^#_O=|S!?!_J0pl4@!HWOfkk2wME7918X)yKPG3k`(1HQ7lZFBz$gSp&iQe zqv&DP?la4zKA&6>g2MO^r{@v@=*4Zg>NLI)*1+{aqf16O@lX>L+U&lR^Jm9Q!6CRG zyqwG@OHjb7J1)^>tDG4frO@$^KuF0^6+W1%J6sQKcr$JaNEK2NBfU{=devEo8|@TO zIwv0q<``5DDyi|pkk_mt)p$!63w}ItWW9yNjMUBgHa;lzC`JAJ?PUgLST z_SxVFnz6UH1-kek<3o=5)x+WZAjipQ8I#Ap2|MItkp5-Bx4Wk=GfEY?pHG>VVj_K? z@oJNnLiFC#iieY0@prAY#6c*|PkhC?^kc>?ZJ+n+@$)(32~#kjn@}LmgX^^dSFNqDh=)*mQhH*#h!i}q@trQW}tc@!cz&DMJuK>b; zqkr6rLojH=FnpH#Z8IX_-oq$Sb%vC>v9XToOWTqKTx`uYbRI*v8xln3GNz={O9c<- z>fe&*%ctp2OAcsW(9pLxmT-KMq=5v?xIAT=5DGiz>ZAd?pdVY1iQL0hd*SeY^f6SC zF7)U|TjZo#HO8gl#zAwgtPT3tK-H5;)?;l!C-pLiv*@^3=@07svAc{6;X?oqXAu^D zdn`l+0^ho_jMsT{I(FhZ8IwD;c-@;Ab6wSDAGEloul?cOX8YaG1pP}3f01?v*_rGD zHd=~ADE_rA`VeeLuwq{KEXpo>OCi}R$+uVbQ?yyY0YPQ8f4yAKit({@)uSm$ZP@qg zf4Ww3c$~2n3yE=Y01|^t$>=TTB)RQWn5i5e=RcLaCKL=J#_mnuI^xw7ILmx+GQ-uR=xh0CZ+042s89 zP!Yk88$`D8sJz^oX+-pF)O2?sKieV|PYgG2S(a?aSop+A0TAJYa&J2}dRq0jauP-C zY14pA!VWO{vxmw#q!Do=qbaa1h?&RB5SCrWNV6GkN>{+BS^M4*-q%ZQ$aOvxqNVm?Lv(jP?gQnUg^5%jmfkfQWHR@M3{ z$lgfd>beF?&0oArt;J+Hv4|8QxR1Cq#80IkWGu_YKfAGN9)Rd&r|?sy^QMQt!DR2@ z?O9(b!A37yVCf*HQjHS;m6P9^hn`aKR>Kb=9TaONPs%OY{;?F8W3}F=Z3wXB?mLD>KFrZx4Y9IZa$guK zo^de+N?F(`*w_P*iG<$(rDD@W>|!}t<@ak6yWmgZk!Kbws!0LI;Ho}>C7NMNg^28V zg9zvpoQ`%+KgyvDIzDKDyH&^IbxEP5qaOSEp~9_6_R$n)IW+1`G{w9{h?Ms#!U8WQ zFgApd21TV7H#7d}njkhGx?vOl5lqti$cg&B zMGa1*|Bth8j?t{^@-5r$VwY{(wr%SvTU|D~Y^%$*ZC96V+qyO1H#eDilbM^`S-FGqvD%(}VVUo!)`hUtNsxP4mRMy8RJv8KgqU98q9bQOO{$+9d z1ps8P(!m=(EGHk4_ds98n7+1KA5z6MTSq8#d_XNdF!@kh)v8K8j_pylIj$JDO+O!L zgW>1$KhrVy0bX{`B*f@)`Q6R)NEEtn%pQbx_SvH{%Y#2bax*GV#2P8pI0Gl*`foDP zGke3&%&g>U{n165h**D!`9%^WD|gP7W>TlO8S5PPfF@h>FsYt8`w%YHKp*zO)PM^7 zQ0b$zr$U0tH4Q|ay+k@EwQz%RrCy~5Z-=_bHE5sFBVAs!$RS(4o8i-~G0)o|UH*Oo z))joU9NY_gl{Y{)<`KL1F>ix<8FuCp^<1oB3FZ;nB8PB!d{&QqnOvB+%a}LRZ^>Ai znh%-}_8roHy;p~ATmO~c1Q?Z*;W_R3P%+bh_9tkGaWKYg80quLFmkX0m)0EOU8B)K43-stp2P(4#u}y5F#O9w! zo^yr7F?p*SKukC2-A=Q=7Deo4+$ET8M;v1c3wtMP{E{wHcP>1AmWKvFs!RN%IkrG! z$^gb>-WY5Soy&fa5uqt%k<65$7}3r!xbf^Okec|1M--X%Z6+gxJ35s5F$H}^FD6E(?VpoQC+4alt=LUHhBCXKjOb_^mf!rn;=B2G`XxxV{x<$&+a zezcK$SobG4K2<>yRuDSzRqtL?3D(7`7z>y>d24NniIGV$+Au#6iH*>t?(rnLwce~iJ52mS3z3C66i3#pA@wk`3k$1yXNqm2< z+tQv6JyX4Ers^fe?`z9=z&p9GgDK^uKEb3*o%f(CaN@*&F+!w#s-Ze{kKY@0jG^R! zLWOmb6RaMwHsTA!zd&KWPz73ry#mE*4F+uoMr0=&DX6@c3DkyM z*x#0t!`7Bzya~?A_M&FF372bzZ^Ma^SLbodS16vRs>0gV0J~wwMUrFjZD>WOW z)GRO0+6%*4Q{cfPwc^5}ab;YP9g{UP~BNI8ja-*=}{Yjaq zYOJtY0pg)PT*h-zY(^%er~#z;jewIbE45Pgr<5#vB#Z-$(?>1)<)dD-H}60pANCOD zR$UfzKGWAQX+|TQ#ML$0EjmDO^$pFDW3&~v1B~`#uZ?TJ1+9VAi||K`SVBg^2b}%N zQm>AeMqCv{SJl)eyT;#*)UynpC5$dDDtEd^|3hgJ0zc}Z*dDmIuo^C^g=cggKA-W5 z7?>`uh;6oK41LhI-vo;VMbMasMxL&TEUb0SAKRunDQHYpvLom(7#7bkm>6%O3>&_T zGM9Rypq+`q&g7@gIC?v16YO`>UX{Ry zN)aCZud37F9<%`+2v+AyekP!M~1i_t9hK=61s8%sJqCoi;W^v@4l7c0=#hteQ&=g9)USV{Pp|XE{**5 zfH^D)XiPwICfqK8HKf?D6z!85H(&tHnqnC;sU2Zn7o--A-8AP1gZ5CDrtTR1K2eg7 zScN`M<-^-)foU4(9i)NfLV;&q&yN&dZ=Zhu z=>NaP!8$cS00G5*7w+FsZXi2Hb9zI2Lt~3?;Y&MPTRVUgy^SHjoSFVVTBHA^FB+V@ z=7g$>JKP;gBKr--UKPr<+$;pAT)Sw}m0>4bu}1|L?0Cy( z=6WtX9)aaTH(#ZSK;+`ud&WHG=z7~f(EZ4o9CbxyYhd1Rdeq_TzPfVr?XG`0*{Z$- zb_cWbs6`&`!0KQ-X8DP7g&JrVi`#TZRyhDO`&;L^JZ(zOmJ#G&F)ety49g~W<7jYn}aDQO! zXLk6=wt-1h-lO|_gR`2Iyu_-^TU@qUW13uu>WwfQ&6vUuS*stqbN7mrzg2Pf<5SEE z0z1@475)}km377T&dza-ZAX!npoNsRlu>@Hv`Uil(#Voo6q02p77dgps=c&hIiJ>B zh2&9Y%S<;&Q%Yv5t{&{K<7%?(pWDPvNu40;%9=Qu$5&9F_>ay`hF*!w!(6gXhMrTnkzyX>+z2rO4GUD zv-9h!8Scpk15SfY8QPQ!)=~y%=glH7_*;ogw5F)7^MpZJT3Q$lKiD6=9!zA$uUwT_ zjNz)1Euxxf)U*HY-DAl7JBs{o~Bq_~_8sF@5@+BWB@KIZ;7Dv?5 z&D|Dc({U17`OlWSQKZR^j}b1$86DoZUS=WMx-Ul`dA9`N0eG(ZVO!4o(K|+JELT1> zi1H>R!X-RIY%DyVJTxV5oJ}oovsL@dCiztr z0$j#)q`J5Jf9}FrM+*D?EGH|5+j;@4uN$&IUi0=2KWRy4I=Hgm+-w0*DCd=aWE2%38 zIsFj%8_IWon>)8EOT9%2{`Zz$s!~=-sVnOMorys(k2CC-to z+@fx7^sXstm@NN}C+3ISFJ0jIL9MB!aHgX2WVK|;#5(N7z9w`)X#jDNkyQ=#$ic}X zZ4>FS6(|0IP#NvZpOZ1TSh?VDm-H!mOz-aw3PCT!2Pi_&v!Ze}g6uL#NN8y{%;f#1 zk%!$N*Qs*ej1zVAd112RnUyx!+qyqEm%%@qwJSVSwjZH*Auaj!b?2MFhT&V5y)%q~r$Cwr-kCWe zU*+aE69>iM@%!}xpEF{Ty}ZI)?r(_1sYU@NZFOzAf_mb$eecb0mfCiwuTG)E0Opg#cP!98 z+3vhDW?u5bL^qDSUR0s$AqV~S zrr{&ww$bmKc`nc!x-eG#w#QKzV#5gH$stlL)@dsQZ_!Uw6)weA2jssa{0(xQ*b=p$ zcxkkrK*rV_Sj}fLY~MC(KVd(>k35E89^g%M<$Uy29QLJ4FPnnuZ8Or!WFa7&1jR_- zf)mX7b00&or$T|$60X2Ue~J-B40ljx#HTW8kXA{b4XJfl@`{feJ+y0~lW)Nzk3qL4w#Tp=&?GKWz~lx19MN*% zjh`6cQh5!7{9z%*VMFXFzvva94=g4*JBEt$na{FFh$OFB-i z)kad7%u*w6m4>mL{a*1aAGsTyrlMZM0u_U2VA5}%e4w%^xb6Z6th)zW+&t_u!i&8& zUH^v)9ZrbQl(L=M=Id4Lft_z0-)wFU>cPEYRZ*sGZc{iPkcTn)y|U2&!w`ejx##OY zoJx*N1OWg$XG3R8JHUU*e_86#-id?gU-FO7b>s0!KYN6J*_+k3 zV?jrx{=yIn@FxKYUq-4X^(HCL*l1}7uC=1J(ykQOF2k@{oWtPRm4q)}$gLDV)AZ6; zt5ma&)z^+yvn~JVetComN6FYa?DV+XoalJzX16=^+Wmlp0H#raU9Z^-VJz)gg1K=4 zWp8sp1td?|wJ<_@tv{1>k?yYn8jPwN9wpB(K%23@Md>brkKK&fF6|4j+#){dX18p& z@j;*36eB($y7r8gd;l`Nzv4iJl$gFggz%9Z6-L~Gc`OWOdI;0*2_5zg)2_TAy6E4L zPdp^FVqrWcdgOLu+poWwP(7#sp70VKcda0E5%<5r1mV}2Q2eet70PRPE5 zee}A|Nl@JwJM47tYC%V$&snhaVb}Rk^go_EuTz3Mi1rbM^w4k9>J8iTX~KCQgNh&6zuFn!?5WeK!AJc+SHH!$>>w8FRC_A_+bZY z8&PBKtz5y3wt^H9Dk|r;ny|4G6!6ubqKh9r6rX3pfx%1qBZkC8@NT_JA*kTgN7g*F zDWt(rmBKoOz3?#%A_)f_ril*i$+4K+j%)2)=5Iu?mf!=0%;fygBrS4TdHSS@n+RbN9)EK5YHBK9A#DQvTX9v*o^*UhjYiGgz%(PTH*^l*_6k1VrlR|UgfsChQA zW)xXQ3)sQ-36m}#!LYS7mw~KE!$uJUFM3eLcyoPBXi_kX&{7K~ON;&Gw3yA>P(&?k zj@>$P``x}vh5WU#gjVqwLsCK~8+g%I3%z9X&Mx|NxTn+?ZTd;&qo;DDc`^XmE0JVX zwv0IgJ43|c9ZiK{=ClL>MDXb>K`MIk#Lj$QIDDRjyAvSIOgRS)FCx6lur`h+iv!N4 z+u+0s-c3|^w2MPr4xdfQ#-v6YsTo7D^csF^{`wqq`C?Wfmh;}mgwg&!WLMHGy+mAI zJBKe(I>d|L`x03#!3j&7BIt)Y_pX>2w>De4Cy>`0t>06wi(j2X`n3Yki}aw-)*&O4)0Pxo71nSZ>c_5S#bgv>g|{ zC(k92UwzyVn-AN(?`wfy+wh2d(bMkN`W;uj2Q5N*?-EIhgx8Fx`F#_Hs7-UG%+p4$ zn~$E(8_BvuviMb{t(sR0frzO$%ejf-=oA@{DZ5OY2n2eGXk<|e@g@-5c5AWP+&mWj zluXMzigKpzDug}?bO(>6j016UwXA9qza0^wg^G9436e?iNmOgaqZ6RK!Iu#HEeBK% zfbKo)S*zkCvUhqhZ%Boc+!x&MZ|_|z7#6^+7DR-TBG#$;NQ7lE@)Uz8LvAA!$oo`; zWl;?qp-e;4>4XBInBiEJgOZ36ajcS|a70sO6}Ur6no18xd=FvL$W6N9U2i7*mR%;e3o)tcF+}$C)2OJ|@K{)cdPzjFGAZit_`R(-gd2X=Y$_6-xF5Gu|e)VcaJ zJif5+TST|gQGJLJGUNGcD!K93$YLpZn|urHeJ3DWC-&eT9@7!S8P&q6jEjr+nIZ|vncer%QrrfDPnwM!2#HuFgr4@%%8;cIZX!2EeHM$P(N>*B5SS(%zbm06PHkO1( zjd*7vN`t{DtXR3RT&viS)P)@HQ21V083=V8%H)=D7;UMSa#%j!K{%;i{35oKAf{Db zhg|(h`}Ini%&JRN<*c@t3O-JEuKDs94Q!+E~*dgiNu^ z_>BH^fleUuO8<|~9zBlpkI!KPF#OQ|zgOJ^;4qWGlUf0LwvUj8cFix^%J!LUKZzk4 zuyh!JjsQQFxDmLxYInb{y|s3#wm>%<(Ex_@CPlkIMYS*h z^Y)qkqlGy{K$tx}q7;YLC19AwFs=q^yLuhKdmrJ*HxXr z@68^s1|M`x$pJ^YK9E&|x-AG#+vV81chI+_sWHqB7%-Ol0Z7_(Q;l#L67VeZDU%E* z51vDgux-cFlp3Lcrp(NGAj3@A3*9!Cn3y+Th#JV5N($`?{T5)x`#CeRPL32>oZSU^ zqu3&86Bp=Hom&G5$o6nOv^h3_c6v-zP`PREwo$unZNY+~)mES~W+GRab*7#<8(q}e z-Zj36!`rii+DxaMSm!>_5JCE(3xYwwl7!)|ru36xJ{Cb4BSL<|hBa=_zHkZ`R+Dz| z!+gog#F}fOl`q6cqmgny1#q*1AGJ?s^s4XB9)j6pmIX;04ue3uS6bT}=PCEVJzu^v z&QsQ0i=E*sJ~%;>lJU%#*m+Z}3&vYNM{MN^hopGVXcF5A)G|Z1lO)*reTlGm4`GWz zyIA|L`kZM#-%SSu*bDbpEKS~k+Q=U+g4iq2xOOx7XFrP@-mZe5fQs2Pu~2sox3{62 z1|OB)?s-dLlUK{FarHtogK>7&Lj?qap!LKdZh&RDRclO;5EeODljWj|vNZUxumn~% zbUv{F*60LM})bUw{g%a@1?n&Xl3Oi zMG&-4+JmM*^KN-@HbdC)Y3+=$72fP-ag(djqo@pP)z)Ln(5b|gx(w%UJx8`xqA*=}ANf`5vpKZg$|s1|WQ0DE_?^*?zILkH zco2KM7rL#D2<4MU_bYn&^(oEtF+)etCcq!N>KfQ>YxBN~5CLr>kQ(`c9uzU?XrR4l z?{nWuD-naWxvq3G1l!1NhXNVXr2^=Ec{&Wwi%Jzd6pEs$`4NoTNxAU^D8psp9)Q2a zf{A}I8#3nF;wuAq46H+eywKV0UCcmFGxjqjqiffxi@fgXuo^UAU|&6qV&)hzbkY3; zBa7@Cjxo$!7T>{XllzEf@e&sC#`R~6C}}V@95gpjJ_9hMcid+eOQ)NO{U&B0znz7nd~! zI5iek75wiXDQ60PPZgxK1rVL8vKnQ)XuEQ&^&*TNLl>HCmB^b8t$?M48+Y}^Ly+NZ zJ!9~gO6TomE*kq)D~s)C(KJ3}%wp#1K7K5$4oRk|riuyv7RZDT(?x%#ke>z{li)Nm z)oV_W1|ev|i#@WH0n)5Y{c6T-T7hXc)5^4(eLp0KT1FqOYyyAULqXck0T#K@-6op<6ZQW-m-P98K1%Lg+3E-IgoK^E1&e)3q z1jPBj_3cbuO##mIqW|$LW9j5<3NUq4cCoj&b9DYU{H93V+8xat-Isi2k}QKT2rZrl zt?uXCBsfaptP}-|B}g8j0%~97Upck}6MJS)%j(*asiRir%9?dPd^uy#tE#wjMyPJ;QR1s?4ZMZqePt!0vK0+s-6jb&+ z0g(Bny$*)AP6yB4q+P!t2M;25Z%GM1>)bsl0;)x7WjgGM0;@9E{~|Fh&BmhpuICRQL>2D*z(U`y$J4> zjq2#rh$Kc;Xla-xcKCZ&n_@Y4A%O&iz4H<@p9Ytu8A4V{xI`sMA#_!melD&&0HbVh zn>sF>5&~XB<9K{=nZ|t!@6LRk@VUh~>%^>@sgPvMpGrw%?@Wi4Hyo`+N!4bp_JPJF z_%eQGM#I#m6FK8l49rKXw$+p$1WJ>@rW8dm3lkPr3Wk4MT!SO)G*4z}7jYHih17zA zOX9zn_MG4sFsSUXv1$@nn=B2C9gZ_1L0s;S&~5*!u8_$tRZOB_Ko&a0QPvKzWP85x zFt<7QE@!4gkHpp^!;STG2$kFDd0#iXY*(Wph}_E##4tVM6%0N@H?*Qv|J~ z2KK#B(|W!h6bs$~Z2w9{1;vC^Y<5nfs92sxU!8OZYVVWgWuCU>^!!1p|-Me zzcYavE}+8s*si(1%w>w|*Gu&nHIFi$DURqx06 zazN#|0X?+}uDE*zK%t7Ff-lnv6?jH)SPG^dk(SG_Q zkL*mokw-+&Sy5Yil0W=~KV! zy-&~2TS@o0biP$&1~HIO-J;}2A4&%)yj=RBnUW|>S&1c<;or&l49x3xGPo@~OC}p- z-Wd7JQ%jtORDwZsCR%NdWMqPxA#dR65?~%snHh{*6co782kG309R4WLPEp-Pl)s}W zPx!Lw8BZT+*^Z8pijO43TPe^KA(oLcD%#M!Yev>gWt#;=@(PKpjAa#6!A|s<;e4KKW<`A-_24T6{A)eYrR3mshpj9A!}+|88hVNUzmoP4gx? z=Ouax4AMwFvdb3SqkXdud#%$t9iW!(sJNw$2jw>3Zb{nR-J-6Fql9NzeV8v2p(cwD ze*_gHWs9v?PJ1qFwu2{en0b}DIM2oc_xPf8k*ui$>|&eQkAoYQ9^0lLJOf&!J?zXG zejlda&fS%!3Od_K%bGscdcZhN1|X@wNx$eU@&^XXPSVboPW5U_G52ImJn2p>Z|D#V zbFBxKza;4OM03l1>&?>X+%ynCLXkmsY=CZNL%#p~dUoh(1mfGy7Gd?Lw@MeC{It|@ zz)(U^PP(|`Gdd+Le)EA;zSun;Pk_on*$mHEU$EJcIuFj6GH}@8%(+g3#Y}^3Kg8X> z%0D-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 diff --git a/test/commons-lang3-3.18.0.jar b/test/commons-lang3-3.18.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..9359e524af3832d16fa50a11e6bddd6b5657a7e7 GIT binary patch literal 702952 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�VcIXhCioC0KammW*4`!*NL33 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 i8L^koZWJlO}Bge*gQp&5Ca)av)US8o{Yh0u8 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⋙3w>_8rL@{#L1s!vUnT|t?jFR2(|HIhEg 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