From: Jérôme Benoit Date: Fri, 29 Sep 2023 18:00:01 +0000 (+0200) Subject: test: switch to node.js test runner X-Git-Tag: v1.2.23~12 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=6c43b4416a202dd8f4cd62a3d141182fcf18e0e5;p=e-mobility-charging-stations-simulator.git test: switch to node.js test runner Signed-off-by: Jérôme Benoit --- diff --git a/.cfignore b/.cfignore index 608afbfb..64b72cdf 100644 --- a/.cfignore +++ b/.cfignore @@ -22,7 +22,6 @@ .nycrc.json .nyc_output .reuse -.mocharc.json .release-it.json .xmake.cfg # Logs diff --git a/.eslintrc.json b/.eslintrc.json index 2b20e8dd..ddb47174 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -3,8 +3,7 @@ "root": true, "env": { "es2022": true, - "node": true, - "mocha": true + "node": true }, "parserOptions": { "ecmaVersion": 2022, diff --git a/.mocharc.json b/.mocharc.json deleted file mode 100644 index 916e8a6f..00000000 --- a/.mocharc.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/mocharc", - "parallel": true, - "diff": true, - "recursive": true, - "extension": ["ts"], - "package": "./package.json", - "reporter": "mochawesome", - "reporter-options": "reportDir=outputs/mochawesome-report,json=false", - "slow": 75, - "timeout": 2000, - "ui": "bdd", - "full-trace": true, - "enable-source-maps": true, - "exit": true, - "node-option": [ - "loader=ts-node/esm", - "no-warnings=ExperimentalWarning", - "experimental-specifier-resolution=node" - ], - "require": ["mochawesome/register"] -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 2243f8cc..df91b616 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -6,7 +6,6 @@ "dbaeumer.vscode-eslint", "eamodio.gitlens", "EditorConfig.EditorConfig", - "hbenl.vscode-mocha-test-adapter", "ms-azuretools.vscode-docker", "sonarsource.sonarlint-vscode", "streetsidesoftware.code-spell-checker" diff --git a/.vscode/launch.json b/.vscode/launch.json index ee5fd984..4f200ec8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -22,10 +22,7 @@ "continueOnAttach": true, "autoAttachChildProcesses": false, "timeout": 30000, - "resolveSourceMapLocations": [ - "!**/node_modules/**", - "!**/.vscode/extensions/hbenl.vscode-mocha-test-adapter-*/**" - ], + "resolveSourceMapLocations": ["!**/node_modules/**"], "skipFiles": ["/**"] } ] diff --git a/.vscode/settings.json b/.vscode/settings.json index 7d1ba7fd..c4fe6683 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,13 +3,6 @@ "source.fixAll": true }, "testExplorer.useNativeTesting": true, - "mochaExplorer.nodeArgv": [ - "--loader=ts-node/esm", - "--no-warnings=ExperimentalWarning", - "--experimental-specifier-resolution=node" - ], - "mochaExplorer.files": ["test/**/*.test.ts"], - "mochaExplorer.debuggerConfig": "Debug Simulator Unit Tests", "cSpell.words": [ "backoff", "benoit", @@ -38,7 +31,6 @@ "measurands", "mikro", "mnemonist", - "mochawesome", "ocpp", "olivierbagot", "parens", @@ -47,7 +39,6 @@ "preinstall", "Recurrency", "RFID", - "robohydra", "shutdowning", "sonarlint", "SRPC", diff --git a/package.json b/package.json index f3f41ca2..965854ac 100644 --- a/package.json +++ b/package.json @@ -75,12 +75,11 @@ "lint": "cross-env TIMING=1 eslint --cache src", "lint:fix": "cross-env TIMING=1 eslint --cache --fix src", "format": "prettier --cache --write .", - "test": "c8 mocha test/**/*.test.ts", - "test:debug": "mocha --no-parallel --inspect test/**/*.test.ts", + "test": "c8 node --loader tsx --no-warnings=ExperimentalWarning --test test/**/*.test.ts", + "test:debug": "node --loader tsx --no-warnings=ExperimentalWarning --test --inspect test/**/*.test.ts", "coverage": "c8 report --reporter=lcov", "coverage:html": "c8 report --reporter=html", "clinic:clean": "clinic clean", - "robohydra": "robohydra test/robohydra/config.json", "git:sinit": "git submodule update --init --recursive --force", "git:sdiff": "git diff && git submodule foreach 'git diff'", "git:supdate": "git submodule update --remote --recursive --merge", @@ -133,7 +132,6 @@ "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-terser": "^0.4.3", "@rollup/plugin-typescript": "^11.1.4", - "@types/mocha": "^10.0.2", "@types/node": "^20.7.1", "@types/sinon": "^10.0.17", "@types/tar": "^6.1.6", @@ -156,18 +154,15 @@ "expect": "^29.7.0", "husky": "^8.0.3", "lint-staged": "^14.0.1", - "mocha": "^10.2.0", - "mochawesome": "^7.1.3", "prettier": "^3.0.3", "release-it": "^16.2.1", "rimraf": "^5.0.5", - "robohydra": "^0.6.9", "rollup": "^3.29.4", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-delete": "^2.0.0", "semver": "^7.5.4", "sinon": "^16.0.0", - "ts-node": "^10.9.1", + "tsx": "^3.13.0", "typescript": "~5.2.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3098e78c..d6b3fdb6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,9 +108,6 @@ devDependencies: '@rollup/plugin-typescript': specifier: ^11.1.4 version: 11.1.4(rollup@3.29.4)(tslib@2.6.2)(typescript@5.2.2) - '@types/mocha': - specifier: ^10.0.2 - version: 10.0.2 '@types/node': specifier: ^20.7.1 version: 20.7.1 @@ -177,12 +174,6 @@ devDependencies: lint-staged: specifier: ^14.0.1 version: 14.0.1 - mocha: - specifier: ^10.2.0 - version: 10.2.0 - mochawesome: - specifier: ^7.1.3 - version: 7.1.3(mocha@10.2.0) prettier: specifier: ^3.0.3 version: 3.0.3 @@ -192,9 +183,6 @@ devDependencies: rimraf: specifier: ^5.0.5 version: 5.0.5 - robohydra: - specifier: ^0.6.9 - version: 0.6.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) rollup: specifier: ^3.29.4 version: 3.29.4 @@ -210,9 +198,9 @@ devDependencies: sinon: specifier: ^16.0.0 version: 16.0.0 - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.7.1)(typescript@5.2.2) + tsx: + specifier: ^3.13.0 + version: 3.13.0 typescript: specifier: ~5.2.2 version: 5.2.2 @@ -229,7 +217,7 @@ packages: concat-stream: 2.0.0 d3-fg: 6.14.0 debounce: 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 end-of-stream: 1.4.4 env-string: 1.0.1 escape-string-regexp: 4.0.0 @@ -358,7 +346,7 @@ packages: d3-selection: 1.4.2 d3-shape: 1.3.7 d3-time-format: 2.3.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 distributions: 2.1.0 endpoint: 0.4.5 hidden-markov-model-tf: 4.0.0(@tensorflow/tfjs-core@3.21.0) @@ -529,7 +517,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@20.5.1)(typescript@5.2.2) + ts-node: 10.9.1(@types/node@20.7.1)(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - '@swc/core' @@ -627,6 +615,204 @@ packages: jsdoc-type-pratt-parser: 4.0.0 dev: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -647,7 +833,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.6.1 globals: 13.22.0 ignore: 5.2.4 @@ -674,7 +860,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1497,10 +1683,6 @@ packages: resolution: {integrity: sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==} dev: true - /@types/mocha@10.0.2: - resolution: {integrity: sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w==} - dev: true - /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} @@ -1600,7 +1782,7 @@ packages: '@typescript-eslint/type-utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.7.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.50.0 graphemer: 1.4.0 ignore: 5.2.4 @@ -1626,7 +1808,7 @@ packages: '@typescript-eslint/types': 6.7.3 '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.7.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.50.0 typescript: 5.2.2 transitivePeerDependencies: @@ -1653,7 +1835,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.50.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 @@ -1677,7 +1859,7 @@ packages: dependencies: '@typescript-eslint/types': 6.7.3 '@typescript-eslint/visitor-keys': 6.7.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -1790,7 +1972,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -1798,7 +1980,7 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -1851,11 +2033,6 @@ packages: string-width: 4.2.3 dev: true - /ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - dev: true - /ansi-escapes@3.2.0: resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} engines: {node: '>=4'} @@ -1933,14 +2110,6 @@ packages: resolution: {integrity: sha512-36j4l5HVkboyRhIWgtMh1I9i8LTdFqVwDEHy1cp+QioJyKgAUG40X0W8s7jakWRta/Sjvm8mUG1fU6Tj8mWagQ==} dev: true - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -2216,11 +2385,6 @@ packages: engines: {node: '>=0.6'} dev: true - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - /bit-twiddle@1.0.2: resolution: {integrity: sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==} dev: true @@ -2338,10 +2502,6 @@ packages: resolve: 1.22.6 dev: true - /browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - dev: true - /browserify-aes@1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: @@ -2496,6 +2656,7 @@ packages: requiresBuild: true dependencies: node-gyp-build: 4.6.1 + dev: false /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} @@ -2678,21 +2839,6 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} @@ -2821,14 +2967,6 @@ packages: wrap-ansi: 5.1.0 dev: true - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -3094,7 +3232,7 @@ packages: dependencies: '@types/node': 20.5.1 cosmiconfig: 8.3.6(typescript@5.2.2) - ts-node: 10.9.1(@types/node@20.5.1)(typescript@5.2.2) + ts-node: 10.9.1(@types/node@20.7.1)(typescript@5.2.2) typescript: 5.2.2 dev: true @@ -3372,10 +3510,6 @@ packages: '@babel/runtime': 7.23.1 dev: false - /dateformat@4.6.3: - resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - dev: true - /debounce-fn@4.0.0: resolution: {integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==} engines: {node: '>=10'} @@ -3398,7 +3532,7 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.4(supports-color@8.1.1): + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -3408,7 +3542,6 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 8.1.1 /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -3423,11 +3556,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - dev: true - /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -3585,11 +3713,6 @@ packages: engines: {node: '>=0.3.1'} dev: true - /diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - dev: true - /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} @@ -3682,14 +3805,6 @@ packages: safer-buffer: 2.1.2 dev: true - /ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - jake: 10.8.7 - dev: true - /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -3903,6 +4018,36 @@ packages: ext: 1.7.0 dev: true + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -3917,10 +4062,6 @@ packages: engines: {node: '>=12'} dev: true - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true - /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -3992,7 +4133,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.50.0 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0) @@ -4093,7 +4234,7 @@ packages: '@es-joy/jsdoccomment': 0.40.1 are-docs-informative: 0.0.2 comment-parser: 1.4.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 escape-string-regexp: 4.0.0 eslint: 8.50.0 esquery: 1.5.0 @@ -4178,7 +4319,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -4463,12 +4604,6 @@ packages: moment: 2.29.4 dev: false - /filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - dependencies: - minimatch: 5.1.6 - dev: true - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -4513,11 +4648,6 @@ packages: rimraf: 3.0.2 dev: true - /flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: true - /flatstr@1.0.12: resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} dev: true @@ -4642,10 +4772,6 @@ packages: dev: true optional: true - /fsu@1.1.1: - resolution: {integrity: sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A==} - dev: true - /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} @@ -4758,7 +4884,7 @@ packages: dependencies: basic-ftp: 5.0.3 data-uri-to-buffer: 5.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -4823,17 +4949,6 @@ packages: path-scurry: 1.10.1 dev: true - /glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - 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 - dev: true - /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -4997,6 +5112,7 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} @@ -5069,11 +5185,6 @@ packages: resolution: {integrity: sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==} dev: true - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true - /hidden-markov-model-tf@4.0.0(@tensorflow/tfjs-core@3.21.0): resolution: {integrity: sha512-q8VeBNCyQ5CNsUlbt4T5JXc+pUeKqq7LEGjs4HiH+thgZ2fuyJ9pf/V66ZFx9jZobXkwxVuQRWKZa3TwOFW+zw==} peerDependencies: @@ -5135,7 +5246,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color optional: true @@ -5145,7 +5256,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -5180,7 +5291,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -5189,7 +5300,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -5463,13 +5574,6 @@ packages: has-bigints: 1.0.2 dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - /is-boolean-attribute@0.0.1: resolution: {integrity: sha512-0kXT52Scokg2Miscvsn5UVqg6y1691vcLJcagie1YHJB4zOEuAhMERLX992jtvaStGy2xQTqOtJhvmG/MK1T5w==} dev: true @@ -5661,11 +5765,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true - /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -5850,17 +5949,6 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} - engines: {node: '>=10'} - hasBin: true - dependencies: - async: 3.2.4 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - dev: true - /jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6068,7 +6156,7 @@ packages: dependencies: colorette: 2.0.19 commander: 10.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 escalade: 3.1.1 esm: 3.2.25 get-package-type: 0.1.0 @@ -6146,7 +6234,7 @@ packages: dependencies: chalk: 5.3.0 commander: 11.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 execa: 7.2.0 lilconfig: 2.1.0 listr2: 6.6.1 @@ -6234,18 +6322,10 @@ packages: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: true - /lodash.isempty@4.4.0: - resolution: {integrity: sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==} - dev: true - /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true - /lodash.isobject@3.0.2: - resolution: {integrity: sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==} - dev: true - /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true @@ -6461,11 +6541,6 @@ packages: moment-timezone: 0.5.43 please-upgrade-node: 3.2.0 - /markdown@0.3.1: - resolution: {integrity: sha512-bf3LyP/7Y5WviTbaJvNtD1OXt07qn5HflK1boIpw4yCxNH1/apZBZ6wn2SkLtZ79U1lSltcQ+56PJDdUuwWYBQ==} - hasBin: true - dev: true - /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: @@ -6541,12 +6616,6 @@ packages: mime-db: 1.52.0 dev: true - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true - /mimic-fn@1.2.0: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} engines: {node: '>=4'} @@ -6607,20 +6676,6 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} @@ -6797,70 +6852,6 @@ packages: obliterator: 2.0.4 dev: false - /mocha@10.2.0: - resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} - engines: {node: '>= 14.0.0'} - hasBin: true - dependencies: - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.0.1 - ms: 2.1.3 - nanoid: 3.3.3 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.2.1 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - dev: true - - /mochawesome-report-generator@6.2.0: - resolution: {integrity: sha512-Ghw8JhQFizF0Vjbtp9B0i//+BOkV5OWcQCPpbO0NGOoxV33o+gKDYU0Pr2pGxkIHnqZ+g5mYiXF7GMNgAcDpSg==} - hasBin: true - dependencies: - chalk: 4.1.2 - dateformat: 4.6.3 - escape-html: 1.0.3 - fs-extra: 10.1.0 - fsu: 1.1.1 - lodash.isfunction: 3.0.9 - opener: 1.5.2 - prop-types: 15.8.1 - tcomb: 3.2.29 - tcomb-validation: 3.4.1 - validator: 13.11.0 - yargs: 17.7.2 - dev: true - - /mochawesome@7.1.3(mocha@10.2.0): - resolution: {integrity: sha512-Vkb3jR5GZ1cXohMQQ73H3cZz7RoxGjjUo0G5hu0jLaW+0FdUxUwg3Cj29bqQdh0rFcnyV06pWmqmi5eBPnEuNQ==} - peerDependencies: - mocha: '>=7' - dependencies: - chalk: 4.1.2 - diff: 5.1.0 - json-stringify-safe: 5.0.1 - lodash.isempty: 4.4.0 - lodash.isfunction: 3.0.9 - lodash.isobject: 3.0.2 - lodash.isstring: 4.0.1 - mocha: 10.2.0 - mochawesome-report-generator: 6.2.0 - strip-ansi: 6.0.1 - uuid: 9.0.1 - dev: true - /module-deps@6.2.3: resolution: {integrity: sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==} engines: {node: '>= 0.8.0'} @@ -6992,12 +6983,6 @@ packages: transform-ast: 2.4.4 dev: true - /nanoid@3.3.3: - resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -7153,6 +7138,7 @@ packages: resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} hasBin: true requiresBuild: true + dev: false /node-gyp@8.4.1: resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} @@ -7206,11 +7192,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - /normalize-url@8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} @@ -7372,11 +7353,6 @@ packages: is-wsl: 2.2.0 dev: true - /opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - dev: true - /opn@5.5.0: resolution: {integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==} engines: {node: '>=4'} @@ -7408,11 +7384,6 @@ packages: type-check: 0.4.0 dev: true - /options@0.0.6: - resolution: {integrity: sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==} - engines: {node: '>=0.4.0'} - dev: true - /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -7534,7 +7505,7 @@ packages: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 get-uri: 6.0.1 http-proxy-agent: 7.0.0 https-proxy-agent: 7.0.2 @@ -7853,14 +7824,6 @@ packages: iterate-value: 1.0.2 dev: true - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - dev: true - /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true @@ -7898,7 +7861,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 http-proxy-agent: 7.0.0 https-proxy-agent: 7.0.2 lru-cache: 7.18.3 @@ -8035,10 +7998,6 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true - /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true @@ -8094,13 +8053,6 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -8366,21 +8318,6 @@ packages: inherits: 2.0.4 dev: true - /robohydra@0.6.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-kSLoeDBfnGnIkln+nmyfWPHsQSOPz9K/Lb0CDWvCj70Af6K4R5qM54q6DW/IeUUxJY7pI6zi5rHNQZCZnWgfgw==} - hasBin: true - dependencies: - commander: 2.20.3 - ejs: 3.1.9 - markdown: 0.3.1 - mime: 1.6.0 - qs: 6.11.2 - ws: 1.1.5(bufferutil@4.0.7)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - /rollup-plugin-analyzer@4.0.0: resolution: {integrity: sha512-LL9GEt3bkXp6Wa19SNR5MWcvHNMvuTFYg+eYBZN2OIFhSWN+pEJUQXEKu5BsOeABob3x9PDaLKW7w5iOJnsESQ==} engines: {node: '>=8.0.0'} @@ -8509,12 +8446,6 @@ packages: dependencies: lru-cache: 6.0.0 - /serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - dependencies: - randombytes: 2.1.0 - dev: true - /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: @@ -8669,7 +8600,7 @@ packages: requiresBuild: true dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -8680,7 +8611,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -9107,12 +9038,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -9155,16 +9080,6 @@ packages: resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} engines: {node: '>=8.0.0'} - /tcomb-validation@3.4.1: - resolution: {integrity: sha512-urVVMQOma4RXwiVCa2nM2eqrAomHROHvWPuj6UkDGz/eb5kcy0x6P0dVt6kzpUZtYMNoAqJLWmz1BPtxrtjtrA==} - dependencies: - tcomb: 3.2.29 - dev: true - - /tcomb@3.2.29: - resolution: {integrity: sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ==} - dev: true - /terser@4.8.1: resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} engines: {node: '>=6.0.0'} @@ -9329,37 +9244,6 @@ packages: code-block-writer: 12.0.0 dev: false - /ts-node@10.9.1(@types/node@20.5.1)(typescript@5.2.2): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.5.1 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.2.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - /ts-node@10.9.1(@types/node@20.7.1)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -9416,6 +9300,17 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tsx@3.13.0: + resolution: {integrity: sha512-rjmRpTu3as/5fjNq/kOkOtihgLxuIz6pbKdj9xwP4J5jOLkBxw/rjN5ANw+KyrrOXV5uB7HC8+SrrSJxT65y+A==} + hasBin: true + dependencies: + esbuild: 0.18.20 + get-tsconfig: 4.7.2 + source-map-support: 0.5.21 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /ttest@3.0.0: resolution: {integrity: sha512-bLo+LdYokiDZHVFIWJmC5afoh7wZ+o1h++0XXKh01+yprzz8CnaiGNcbcbqP0e3+iyDqclLI+rM0j/9AwmRljw==} dependencies: @@ -9578,10 +9473,6 @@ packages: dev: true optional: true - /ultron@1.0.2: - resolution: {integrity: sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==} - dev: true - /umd@3.0.3: resolution: {integrity: sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==} hasBin: true @@ -9736,6 +9627,7 @@ packages: requiresBuild: true dependencies: node-gyp-build: 4.6.1 + dev: false /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -9789,11 +9681,6 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /validator@13.11.0: - resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} - engines: {node: '>= 0.10'} - dev: true - /varint@5.0.0: resolution: {integrity: sha512-gC13b/bWrqQoKY2EmROCZ+AR0jitc6DnDGaQ6Ls9QpKmuSgJB1eQ7H3KETtQm7qSdMWMKCmsshyCmUwMLh3OAA==} dev: true @@ -9969,10 +9856,6 @@ packages: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true - /workerpool@6.2.1: - resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} - dev: true - /wrap-ansi@5.1.0: resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} engines: {node: '>=6'} @@ -10022,23 +9905,6 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /ws@1.1.5(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - bufferutil: 4.0.7 - options: 0.0.6 - ultron: 1.0.2 - utf-8-validate: 6.0.3 - dev: true - /ws@8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} @@ -10094,11 +9960,6 @@ packages: decamelize: 1.2.0 dev: true - /yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - dev: true - /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -10109,16 +9970,6 @@ packages: engines: {node: '>=12'} dev: true - /yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - dev: true - /yargs@14.2.3: resolution: {integrity: sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==} dependencies: @@ -10135,19 +9986,6 @@ packages: yargs-parser: 15.0.3 dev: true - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} diff --git a/test/robohydra/config.json b/test/robohydra/config.json deleted file mode 100644 index abd684f8..00000000 --- a/test/robohydra/config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "pluginLoadPaths": ["test/robohydra/plugins"], - "plugins": ["logger", "wsServer"] -} diff --git a/test/robohydra/messages.txt b/test/robohydra/messages.txt deleted file mode 100644 index 88e12182..00000000 --- a/test/robohydra/messages.txt +++ /dev/null @@ -1,7 +0,0 @@ -GetDiagnostics: - curl -d '[2,"123456789","GetDiagnostics",{"location":"ftp://localhost"}]' -H "Content-Type: application/json" -X POST http://localhost:3000/message -TriggerMessage: - curl -d '[2,"123456789","TriggerMessage",{"requestedMessage":"BootNotification"}]' -H "Content-Type: application/json" -X POST http://localhost:3000/message - curl -d '[2,"123456789","TriggerMessage",{"requestedMessage":"HeartBeat"}]' -H "Content-Type: application/json" -X POST http://localhost:3000/message -UpdateFirmware: - curl -d '[2,"123456789","UpdateFirmware",{"location":"ftp://localhost","retrieveDate":"2019-01-01T00:00:00.000Z"}]' -H "Content-Type: application/json" -X POST http://localhost:3000/message diff --git a/test/robohydra/plugins/wsServer/index.js b/test/robohydra/plugins/wsServer/index.js deleted file mode 100644 index dfb42689..00000000 --- a/test/robohydra/plugins/wsServer/index.js +++ /dev/null @@ -1,62 +0,0 @@ -// eslint-disable-next-line n/no-unpublished-require -const RoboHydra = require('robohydra'); -const RoboHydraHead = RoboHydra.heads.RoboHydraHead; -const RoboHydraWebSocketHead = RoboHydra.heads.RoboHydraWebSocketHead; -const RoboHydraWebSocketHeadProxy = RoboHydra.heads.RoboHydraWebSocketHeadProxy; - -// eslint-disable-next-line no-unused-vars -exports.getBodyParts = function (conf) { - let wsSocket; - return { - heads: [ - new RoboHydraHead({ - name: 'message', - path: '/message', - method: 'POST', - handler: function (req, res) { - const msg = JSON.stringify(req.body); - if (wsSocket) { - wsSocket.send(msg); - res.send('Message sent'); - } else { - res.send('Cannot send message, no opened websocket found'); - } - }, - }), - - new RoboHydraHead({ - name: 'close', - path: '/close', - method: 'GET', - handler: function (req, res) { - if (wsSocket) { - wsSocket.close(); - res.send('Websocket closed'); - } else { - res.send('Cannot close websocket, no opened websocket found'); - } - }, - }), - - new RoboHydraWebSocketHeadProxy({ - name: 'proxy', - mountPath: '/proxy', - proxyTo: 'ws://server.example.com', - preProcessor: function (data) { - console.info(`From the client: ${data}`); - }, - postProcessor: function (data) { - console.info(`From the server: ${data}`); - }, - }), - - new RoboHydraWebSocketHead({ - name: 'WS Server', - path: '/.*', - handler: function (req, socket) { - wsSocket = socket; - }, - }), - ], - }; -}; diff --git a/test/utils/CircularArray.test.ts b/test/utils/CircularArray.test.ts index 34839dcb..90404f87 100644 --- a/test/utils/CircularArray.test.ts +++ b/test/utils/CircularArray.test.ts @@ -1,24 +1,26 @@ +import { describe, it } from 'node:test'; + import { expect } from 'expect'; import { CircularArray, DEFAULT_CIRCULAR_ARRAY_SIZE } from '../../src/utils/CircularArray'; -describe('CircularArray test suite', () => { - it('Verify that circular array can be instantiated', () => { +await describe('CircularArray test suite', async () => { + await it('Verify that circular array can be instantiated', () => { const circularArray = new CircularArray(); expect(circularArray).toBeInstanceOf(CircularArray); }); - it('Verify circular array default size at instance creation', () => { + await it('Verify circular array default size at instance creation', () => { const circularArray = new CircularArray(); expect(circularArray.size).toBe(DEFAULT_CIRCULAR_ARRAY_SIZE); }); - it('Verify that circular array size can be set at instance creation', () => { + await it('Verify that circular array size can be set at instance creation', () => { const circularArray = new CircularArray(1000); expect(circularArray.size).toBe(1000); }); - it('Verify that circular array size and items can be set at instance creation', () => { + await it('Verify that circular array size and items can be set at instance creation', () => { let circularArray = new CircularArray(1000, 1, 2, 3, 4, 5); expect(circularArray.size).toBe(1000); expect(circularArray.length).toBe(5); @@ -27,7 +29,7 @@ describe('CircularArray test suite', () => { expect(circularArray.length).toBe(4); }); - it('Verify that circular array size is valid at instance creation', () => { + await it('Verify that circular array size is valid at instance creation', () => { expect(() => new CircularArray(0.25)).toThrowError( new TypeError('Invalid circular array size: 0.25 is not a safe integer'), ); @@ -41,17 +43,17 @@ describe('CircularArray test suite', () => { ); }); - it('Verify that circular array empty works as intended', () => { + await it('Verify that circular array empty works as intended', () => { const circularArray = new CircularArray(); expect(circularArray.empty()).toBe(true); }); - it('Verify that circular array full works as intended', () => { + await it('Verify that circular array full works as intended', () => { const circularArray = new CircularArray(5, 1, 2, 3, 4, 5); expect(circularArray.full()).toBe(true); }); - it('Verify that circular array push works as intended', () => { + await it('Verify that circular array push works as intended', () => { let circularArray = new CircularArray(4); let arrayLength = circularArray.push(1, 2, 3, 4, 5); expect(arrayLength).toBe(circularArray.size); @@ -69,7 +71,7 @@ describe('CircularArray test suite', () => { expect(circularArray).toStrictEqual(new CircularArray(100, 1, 2, 3, 4, 5)); }); - it('Verify that circular array splice works as intended', () => { + await it('Verify that circular array splice works as intended', () => { let circularArray = new CircularArray(1000, 1, 2, 3, 4, 5); let deletedItems = circularArray.splice(2); expect(deletedItems).toStrictEqual(new CircularArray(3, 3, 4, 5)); @@ -87,7 +89,7 @@ describe('CircularArray test suite', () => { expect(circularArray).toStrictEqual(new CircularArray(4, 2, 5, 6, 4)); }); - it('Verify that circular array concat works as intended', () => { + await it('Verify that circular array concat works as intended', () => { let circularArray = new CircularArray(5, 1, 2, 3, 4, 5); circularArray = circularArray.concat(6, 7); expect(circularArray.length).toBe(5); @@ -98,7 +100,7 @@ describe('CircularArray test suite', () => { expect(circularArray).toStrictEqual(new CircularArray(1, 7)); }); - it('Verify that circular array unshift works as intended', () => { + await it('Verify that circular array unshift works as intended', () => { let circularArray = new CircularArray(5, 1, 2, 3, 4, 5); let arrayLength = circularArray.unshift(6, 7); expect(arrayLength).toBe(5); @@ -111,7 +113,7 @@ describe('CircularArray test suite', () => { expect(circularArray).toStrictEqual(new CircularArray(1, 6)); }); - it('Verify that circular array resize works as intended', () => { + await it('Verify that circular array resize works as intended', () => { expect(() => new CircularArray().resize(0.25)).toThrowError( new TypeError('Invalid circular array size: 0.25 is not a safe integer'), ); diff --git a/test/utils/StatisticUtils.test.ts b/test/utils/StatisticUtils.test.ts index 6fb30488..d9aadf0c 100644 --- a/test/utils/StatisticUtils.test.ts +++ b/test/utils/StatisticUtils.test.ts @@ -1,23 +1,25 @@ +import { describe, it } from 'node:test'; + import { expect } from 'expect'; import { average, median, nthPercentile, stdDeviation } from '../../src/utils/StatisticUtils'; -describe('StatisticUtils test suite', () => { - it('Verify average()', () => { +await describe('StatisticUtils test suite', async () => { + await it('Verify average()', () => { expect(average([])).toBe(0); expect(average([0.08])).toBe(0.08); expect(average([0.25, 4.75, 3.05, 6.04, 1.01, 2.02, 5.03])).toBe(3.1642857142857146); expect(average([0.25, 4.75, 3.05, 6.04, 1.01, 2.02])).toBe(2.8533333333333335); }); - it('Verify median()', () => { + await it('Verify median()', () => { expect(median([])).toBe(0); expect(median([0.08])).toBe(0.08); expect(median([0.25, 4.75, 3.05, 6.04, 1.01, 2.02, 5.03])).toBe(3.05); expect(median([0.25, 4.75, 3.05, 6.04, 1.01, 2.02])).toBe(2.535); }); - it('Verify nthPercentile()', () => { + await it('Verify nthPercentile()', () => { expect(nthPercentile([], 25)).toBe(0); expect(nthPercentile([0.08], 50)).toBe(0.08); const array0 = [0.25, 4.75, 3.05, 6.04, 1.01, 2.02, 5.03]; @@ -30,7 +32,7 @@ describe('StatisticUtils test suite', () => { expect(nthPercentile(array0, 100)).toBe(6.04); }); - it('Verify stdDeviation()', () => { + await it('Verify stdDeviation()', () => { expect(stdDeviation([0.25, 4.75, 3.05, 6.04, 1.01, 2.02, 5.03])).toBe(2.0256064851429216); }); }); diff --git a/test/utils/Utils.test.ts b/test/utils/Utils.test.ts index 1e0cff5a..5592e68f 100644 --- a/test/utils/Utils.test.ts +++ b/test/utils/Utils.test.ts @@ -1,3 +1,5 @@ +import { describe, it } from 'node:test'; + import { hoursToMilliseconds, hoursToSeconds } from 'date-fns'; import { expect } from 'expect'; @@ -35,8 +37,8 @@ import { validateUUID, } from '../../src/utils/Utils'; -describe('Utils test suite', () => { - it('Verify generateUUID()/validateUUID()', () => { +await describe('Utils test suite', async () => { + await it('Verify generateUUID()/validateUUID()', () => { const uuid = generateUUID(); expect(uuid).toBeDefined(); expect(uuid.length).toEqual(36); @@ -48,26 +50,26 @@ describe('Utils test suite', () => { expect(validateUUID('987FBC9-4BED-3078-CF07A-9141BA07C9F3')).toBe(false); }); - it('Verify sleep()', async () => { + await it('Verify sleep()', async () => { const start = performance.now(); await sleep(1000); const stop = performance.now(); expect(stop - start).toBeGreaterThanOrEqual(1000); }); - it('Verify formatDurationMilliSeconds()', () => { + await it('Verify formatDurationMilliSeconds()', () => { expect(formatDurationMilliSeconds(0)).toBe(''); expect(formatDurationMilliSeconds(1000)).toBe('1 second'); expect(formatDurationMilliSeconds(hoursToMilliseconds(4380))).toBe('182 days 12 hours'); }); - it('Verify formatDurationSeconds()', () => { + await it('Verify formatDurationSeconds()', () => { expect(formatDurationSeconds(0)).toBe(''); expect(formatDurationSeconds(1)).toBe('1 second'); expect(formatDurationSeconds(hoursToSeconds(4380))).toBe('182 days 12 hours'); }); - it('Verify isValidTime()', () => { + await it('Verify isValidTime()', () => { expect(isValidTime(undefined)).toBe(false); expect(isValidTime(null)).toBe(false); expect(isValidTime('')).toBe(false); @@ -85,7 +87,7 @@ describe('Utils test suite', () => { expect(isValidTime(new Date())).toBe(true); }); - it('Verify convertToDate()', () => { + await it('Verify convertToDate()', () => { expect(convertToDate(undefined)).toBe(undefined); expect(() => convertToDate('')).toThrowError(new Error("Cannot convert to date: ''")); expect(() => convertToDate('00:70:61')).toThrowError( @@ -102,7 +104,7 @@ describe('Utils test suite', () => { expect(date).toStrictEqual(new Date(dateStr)); }); - it('Verify convertToInt()', () => { + await it('Verify convertToInt()', () => { expect(convertToInt(undefined)).toBe(0); expect(convertToInt(null)).toBe(0); expect(convertToInt(0)).toBe(0); @@ -123,7 +125,7 @@ describe('Utils test suite', () => { }).toThrow("Cannot convert to integer: 'NaN'"); }); - it('Verify convertToFloat()', () => { + await it('Verify convertToFloat()', () => { expect(convertToFloat(undefined)).toBe(0); expect(convertToFloat(null)).toBe(0); expect(convertToFloat(0)).toBe(0); @@ -144,7 +146,7 @@ describe('Utils test suite', () => { }).toThrow("Cannot convert to float: 'NaN'"); }); - it('Verify convertToBoolean()', () => { + await it('Verify convertToBoolean()', () => { expect(convertToBoolean(undefined)).toBe(false); expect(convertToBoolean(null)).toBe(false); expect(convertToBoolean('true')).toBe(true); @@ -161,14 +163,14 @@ describe('Utils test suite', () => { expect(convertToBoolean('NoNBoolean')).toBe(false); }); - it('Verify secureRandom()', () => { + await it('Verify secureRandom()', () => { const random = secureRandom(); expect(typeof random === 'number').toBe(true); expect(random).toBeGreaterThanOrEqual(0); expect(random).toBeLessThan(1); }); - it('Verify getRandomInteger()', () => { + await it('Verify getRandomInteger()', () => { let randomInteger = getRandomInteger(); expect(Number.isSafeInteger(randomInteger)).toBe(true); expect(randomInteger).toBeGreaterThanOrEqual(0); @@ -198,7 +200,7 @@ describe('Utils test suite', () => { expect(randomInteger).toBeGreaterThanOrEqual(Math.ceil(minimum)); }); - it('Verify roundTo()', () => { + await it('Verify roundTo()', () => { expect(roundTo(0, 2)).toBe(0); expect(roundTo(0.5, 0)).toBe(1); expect(roundTo(0.5, 2)).toBe(0.5); @@ -213,7 +215,7 @@ describe('Utils test suite', () => { expect(roundTo(-5.015, 2)).toBe(-5.02); }); - it('Verify getRandomFloat()', () => { + await it('Verify getRandomFloat()', () => { let randomFloat = getRandomFloat(); expect(typeof randomFloat === 'number').toBe(true); expect(randomFloat).toBeGreaterThanOrEqual(0); @@ -228,7 +230,7 @@ describe('Utils test suite', () => { expect(randomFloat).toBeLessThanOrEqual(0); }); - it('Verify extractTimeSeriesValues()', () => { + await it('Verify extractTimeSeriesValues()', () => { expect(extractTimeSeriesValues([])).toEqual([]); expect(extractTimeSeriesValues([{ timestamp: Date.now(), value: 1.1 }])).toEqual([1.1]); expect( @@ -239,7 +241,7 @@ describe('Utils test suite', () => { ).toEqual([1.1, 2.2]); }); - it('Verify isObject()', () => { + await it('Verify isObject()', () => { expect(isObject('test')).toBe(false); expect(isObject(undefined)).toBe(false); expect(isObject(null)).toBe(false); @@ -256,7 +258,7 @@ describe('Utils test suite', () => { expect(isObject(new WeakSet())).toBe(true); }); - it('Verify cloneObject()', () => { + await it('Verify cloneObject()', () => { const obj = { 1: 1 }; expect(cloneObject(obj)).toStrictEqual(obj); expect(cloneObject(obj) === obj).toBe(false); @@ -285,7 +287,7 @@ describe('Utils test suite', () => { expect(cloneObject(weakSet)).toStrictEqual({}); }); - it('Verify hasOwnProp()', () => { + await it('Verify hasOwnProp()', () => { expect(hasOwnProp('test', '')).toBe(false); expect(hasOwnProp(undefined, '')).toBe(false); expect(hasOwnProp(null, '')).toBe(false); @@ -301,7 +303,7 @@ describe('Utils test suite', () => { expect(hasOwnProp({ '1': '1' }, 2)).toBe(false); }); - it('Verify isIterable()', () => { + await it('Verify isIterable()', () => { expect(isIterable('')).toBe(true); expect(isIterable(' ')).toBe(true); expect(isIterable('test')).toBe(true); @@ -316,7 +318,7 @@ describe('Utils test suite', () => { expect(isIterable(new WeakSet())).toBe(false); }); - it('Verify isEmptyString()', () => { + await it('Verify isEmptyString()', () => { expect(isEmptyString('')).toBe(true); expect(isEmptyString(' ')).toBe(true); expect(isEmptyString(' ')).toBe(true); @@ -334,7 +336,7 @@ describe('Utils test suite', () => { expect(isEmptyString(new WeakSet())).toBe(false); }); - it('Verify isNotEmptyString()', () => { + await it('Verify isNotEmptyString()', () => { expect(isNotEmptyString('')).toBe(false); expect(isNotEmptyString(' ')).toBe(false); expect(isNotEmptyString(' ')).toBe(false); @@ -352,7 +354,7 @@ describe('Utils test suite', () => { expect(isNotEmptyString(new WeakSet())).toBe(false); }); - it('Verify isUndefined()', () => { + await it('Verify isUndefined()', () => { expect(isUndefined(undefined)).toBe(true); expect(isUndefined(null)).toBe(false); expect(isUndefined('')).toBe(false); @@ -365,7 +367,7 @@ describe('Utils test suite', () => { expect(isUndefined(new WeakSet())).toBe(false); }); - it('Verify isNullOrUndefined()', () => { + await it('Verify isNullOrUndefined()', () => { expect(isNullOrUndefined(undefined)).toBe(true); expect(isNullOrUndefined(null)).toBe(true); expect(isNullOrUndefined('')).toBe(false); @@ -378,7 +380,7 @@ describe('Utils test suite', () => { expect(isNullOrUndefined(new WeakSet())).toBe(false); }); - it('Verify isEmptyArray()', () => { + await it('Verify isEmptyArray()', () => { expect(isEmptyArray([])).toBe(true); expect(isEmptyArray([1, 2])).toBe(false); expect(isEmptyArray(['1', '2'])).toBe(false); @@ -394,7 +396,7 @@ describe('Utils test suite', () => { expect(isEmptyArray(new WeakSet())).toBe(false); }); - it('Verify isNotEmptyArray()', () => { + await it('Verify isNotEmptyArray()', () => { expect(isNotEmptyArray([])).toBe(false); expect(isNotEmptyArray([1, 2])).toBe(true); expect(isNotEmptyArray(['1', '2'])).toBe(true); @@ -410,7 +412,7 @@ describe('Utils test suite', () => { expect(isNotEmptyArray(new WeakSet())).toBe(false); }); - it('Verify isEmptyObject()', () => { + await it('Verify isEmptyObject()', () => { expect(isEmptyObject({})).toBe(true); expect(isEmptyObject({ 1: 1, 2: 2 })).toBe(false); expect(isEmptyObject(new Map())).toBe(false); @@ -419,7 +421,7 @@ describe('Utils test suite', () => { expect(isEmptyObject(new WeakSet())).toBe(false); }); - it('Verify isArraySorted()', () => { + await it('Verify isArraySorted()', () => { expect( isArraySorted([], (a, b) => { return a - b; @@ -435,7 +437,7 @@ describe('Utils test suite', () => { expect(isArraySorted([2, 1, 3, 4, 5], (a, b) => a - b)).toBe(false); }); - it('Verify once()', () => { + await it('Verify once()', () => { let called = 0; const fn = () => ++called; const onceFn = once(fn, this); @@ -450,7 +452,7 @@ describe('Utils test suite', () => { expect(result3).toBe(1); }); - it('Verify min()', () => { + await it('Verify min()', () => { expect(min()).toBe(Infinity); expect(min(0, 1)).toBe(0); expect(min(1, 0)).toBe(0); @@ -458,7 +460,7 @@ describe('Utils test suite', () => { expect(min(-1, 0)).toBe(-1); }); - it('Verify max()', () => { + await it('Verify max()', () => { expect(max()).toBe(-Infinity); expect(max(0, 1)).toBe(1); expect(max(1, 0)).toBe(1);