From b3a878f0592df555f82e056d8c360c75895957e6 Mon Sep 17 00:00:00 2001 From: "Michael J. Radwin" Date: Sun, 30 Mar 2025 12:16:56 -0700 Subject: [PATCH 01/11] Partial implementation of Temporal replacing Luxon --- README.md | 2 +- package-lock.json | 4809 ++++++++--------- package.json | 2 +- src/AstronomicalCalendar.ts | 110 +- src/ComplexZmanimCalendar.ts | 400 +- src/ZmanimCalendar.ts | 74 +- src/hebrewcalendar/HebrewDateFormatter.ts | 11 +- src/hebrewcalendar/JewishCalendar.ts | 40 +- src/hebrewcalendar/JewishDate.ts | 21 +- .../YerushalmiYomiCalculator.ts | 33 +- src/hebrewcalendar/YomiCalculator.ts | 15 +- src/kosher-zmanim.ts | 12 +- src/polyfills/Utils.ts | 38 +- src/util/AstronomicalCalculator.ts | 10 +- src/util/GeoLocation.ts | 8 +- src/util/NOAACalculator.ts | 22 +- src/util/SunTimesCalculator.ts | 14 +- src/util/Zman.ts | 18 +- src/util/ZmanimFormatter.ts | 41 +- tests/Utils.test.ts | 14 +- tests/kosher-zmanim.test.ts | 10 +- 21 files changed, 2843 insertions(+), 2861 deletions(-) diff --git a/README.md b/README.md index d3f52fd..c7be329 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ The `options` object has the following structure and defaults: ## Note about how zmanim are calculated This library uses [Luxon](https://moment.github.io/luxon) as a date/time library, since Javascript's `Date` object does not support setting timezones other than the system timezone. -All class methods that return a `DateTime` object will be in UTC. +All class methods that return a `Temporal.ZonedDateTime` object will be in UTC. # Breaking changes from KosherJava * `AstronomicalCalendar.getTemporalHour()` returns `null` instead of `Long.MIN_VALUE` if the calculations cannot be completed. diff --git a/package-lock.json b/package-lock.json index 03822b3..e9a5f6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "LGPL-3.0", "dependencies": { "big.js": "^6.1.1", - "luxon": "^1.26.0" + "temporal-polyfill": "^0.3.0" }, "devDependencies": { "@types/big.js": "^6.0.2", @@ -39,25 +39,35 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true + "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.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.25.9", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/ansi-styles": { @@ -65,6 +75,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" }, @@ -77,6 +88,7 @@ "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", @@ -91,6 +103,7 @@ "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" } @@ -98,14 +111,26 @@ "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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" } @@ -115,6 +140,7 @@ "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" }, @@ -123,15 +149,16 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -142,73 +169,48 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@eslint/eslintrc/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, - "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/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "license": "MIT", "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 4" } }, - "node_modules/@eslint/eslintrc/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 - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "type-fest": "^0.8.1" + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.10.0" } }, - "node_modules/@eslint/eslintrc/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==", - "dev": true + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "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.3", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -216,83 +218,100 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "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.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "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.3", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { "node": ">= 8" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/big.js": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/big.js/-/big.js-6.0.2.tgz", - "integrity": "sha512-7NdmOT3zjtghMofDwP1nAJCJWVjc/96V5msXRAZ4lPrvpGlajA95VQec7OXwA2wQaVmhjt+F5ko8pjvQU1tTFA==", - "dev": true + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@types/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/chai": { - "version": "4.2.18", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.18.tgz", - "integrity": "sha512-rS27+EkB/RE1Iz3u0XtVL5q36MGDWbgYe7zWiodyKNUnthxY0rukK5V36eiUCtCisB7NN8zKYH6DO2M37qxFEQ==", - "dev": true + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", - "dev": true + "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/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/luxon": { - "version": "1.26.5", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-1.26.5.tgz", - "integrity": "sha512-XeQxxRMyJi1znfzHw4CGDLyup/raj84SnjjkI2fDootZPGlB0yqtvlvEIAmzHDa5wiEI5JJevZOWxpcofsaV+A==", - "dev": true + "version": "1.27.1", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-1.27.1.tgz", + "integrity": "sha512-cPiXpOvPFDr2edMnOXlz3UBDApwUfR+cpizvxCy0n3vp9bz/qe8BWzHPIEFcy+ogUOyjKuCISgyq77ELZPmkkg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/mocha": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz", - "integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==", - "dev": true + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "14.14.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.44.tgz", - "integrity": "sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA==", - "dev": true + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz", - "integrity": "sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "4.23.0", - "@typescript-eslint/scope-manager": "4.23.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -311,74 +330,19 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz", - "integrity": "sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.23.0", - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/typescript-estree": "4.23.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -392,15 +356,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.23.0.tgz", - "integrity": "sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "4.23.0", - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/typescript-estree": "4.23.0", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -418,37 +383,15 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/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==", - "dev": true - }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz", - "integrity": "sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/visitor-keys": "4.23.0" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -459,10 +402,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.23.0.tgz", - "integrity": "sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, + "license": "MIT", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, @@ -472,18 +416,19 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz", - "integrity": "sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/visitor-keys": "4.23.0", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -498,69 +443,14 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/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==", - "dev": true - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz", - "integrity": "sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.23.0", + "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" }, "engines": { @@ -571,26 +461,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-module-context": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", @@ -601,25 +484,29 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-code-frame": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/wast-printer": "1.9.0" } @@ -628,13 +515,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@webassemblyjs/helper-module-context": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0" } @@ -643,13 +532,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", @@ -662,6 +553,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -671,6 +563,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/long": "4.2.2" } @@ -679,13 +572,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", @@ -702,6 +597,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", @@ -715,6 +611,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", @@ -727,6 +624,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-api-error": "1.9.0", @@ -741,6 +639,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/floating-point-hex-parser": "1.9.0", @@ -755,6 +654,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/wast-parser": "1.9.0", @@ -765,19 +665,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -786,24 +689,30 @@ } }, "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "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/ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "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": "^2.0.1", + "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/ajv-errors": { @@ -811,33 +720,37 @@ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": ">=5.0.0" } }, "node_modules/ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -847,6 +760,7 @@ "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" }, @@ -858,10 +772,11 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -874,19 +789,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "dev": true, + "license": "ISC" }, "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" } @@ -905,8 +823,9 @@ "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -916,6 +835,7 @@ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -923,8 +843,9 @@ "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -972,6 +893,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -979,8 +901,9 @@ "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -995,10 +918,32 @@ "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -1032,7 +977,6 @@ "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -1087,46 +1031,50 @@ } }, "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "minimalistic-assert": "^1.0.0" } }, "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" }, "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", "dev": true, + "license": "MIT", "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "object.assign": "^4.1.4", + "util": "^0.10.4" } }, "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" }, "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "2.0.1" + "inherits": "2.0.3" } }, "node_modules/assertion-error": { @@ -1134,6 +1082,7 @@ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -1141,8 +1090,9 @@ "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1160,15 +1110,23 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", "optional": true }, "node_modules/async-function": { @@ -1186,6 +1144,7 @@ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true, + "license": "(MIT OR Apache-2.0)", "bin": { "atob": "bin/atob.js" }, @@ -1232,16 +1191,18 @@ } }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" }, "node_modules/base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, + "license": "MIT", "dependencies": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -1258,8 +1219,9 @@ "node_modules/base/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -1267,44 +1229,6 @@ "node": ">=0.10.0" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1323,12 +1247,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/big.js": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.1.1.tgz", - "integrity": "sha512-1vObw81a8ylZO5ePrtMay0n018TcftpTA5HFKDaSuiUDBo8biRBtjIobw60OpwuvrGk+FsxKamqN4cnmj/eXdg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", + "license": "MIT", "engines": { "node": "*" }, @@ -1338,12 +1264,16 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bindings": { @@ -1361,31 +1291,35 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "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/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "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.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1394,20 +1328,23 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -1422,6 +1359,7 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -1433,6 +1371,7 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -1441,77 +1380,48 @@ } }, "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", "dev": true, + "license": "MIT", "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", "dev": true, + "license": "ISC", "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.5", + "hash-base": "~3.0", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/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 - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.12" } }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, + "license": "MIT", "dependencies": { "pako": "~1.0.5" } @@ -1521,6 +1431,7 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, + "license": "MIT", "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -1528,28 +1439,39 @@ } }, "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/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer/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" }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true, + "license": "MIT" }, "node_modules/cacache": { "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, + "license": "ISC", "dependencies": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -1572,7 +1494,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" }, @@ -1585,6 +1509,7 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, + "license": "MIT", "dependencies": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -1655,41 +1580,49 @@ "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/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" } }, "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "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" @@ -1702,10 +1635,14 @@ } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -1715,6 +1652,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", @@ -1732,28 +1670,34 @@ } }, "node_modules/chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/class-utils": { @@ -1761,6 +1705,7 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, + "license": "MIT", "dependencies": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -1774,8 +1719,9 @@ "node_modules/class-utils/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -1783,11 +1729,26 @@ "node": ">=0.10.0" } }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1797,8 +1758,9 @@ "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, + "license": "MIT", "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -1812,6 +1774,7 @@ "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" }, @@ -1823,31 +1786,39 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" }, "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/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "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/concat-stream": { "version": "1.6.2", @@ -1857,6 +1828,7 @@ "engines": [ "node >= 0.8" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -1865,10 +1837,11 @@ } }, "node_modules/confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", - "dev": true + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true, + "license": "MIT" }, "node_modules/console-browserify": { "version": "1.2.0", @@ -1879,54 +1852,33 @@ "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, "node_modules/copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-concurrently/node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "deprecated": "This package is no longer supported.", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, "node_modules/copy-concurrently/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" }, @@ -1937,39 +1889,44 @@ "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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" }, "node_modules/create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" } }, "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -1983,6 +1940,7 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -1996,13 +1954,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2013,32 +1973,38 @@ } }, "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" }, "engines": { - "node": "*" + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", + "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==", + "dev": true, + "license": "MIT" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -2103,49 +2069,65 @@ } }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, + "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=6" } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "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/define-data-property": { "version": "1.1.4", @@ -2188,6 +2170,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -2196,49 +2179,12 @@ "node": ">=0.10.0" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -2247,8 +2193,9 @@ "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2258,6 +2205,7 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -2267,6 +2215,7 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -2274,16 +2223,18 @@ } }, "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -2296,6 +2247,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -2308,6 +2260,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" @@ -2333,6 +2286,7 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -2341,10 +2295,11 @@ } }, "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -2356,37 +2311,36 @@ } }, "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/elliptic/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 + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" }, "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==", - "dev": true + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -2406,22 +2360,25 @@ } }, "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1" + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8.6" } }, "node_modules/errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", "dependencies": { "prr": "~1.0.1" }, @@ -2429,15 +2386,6 @@ "errno": "cli.js" } }, - "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, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, "node_modules/es-abstract": { "version": "1.23.9", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", @@ -2614,46 +2562,56 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "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": "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": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", - "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -2662,7 +2620,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -2671,7 +2629,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -2690,6 +2648,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-config-airbnb-base": "^14.2.1", "object.assign": "^4.1.2", @@ -2711,6 +2670,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", "dev": true, + "license": "MIT", "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", @@ -2718,251 +2678,139 @@ }, "engines": { "node": ">= 6" - }, - "peerDependencies": { - "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", - "eslint-plugin-import": "^2.22.1" - } - }, - "node_modules/eslint-config-airbnb-typescript": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-12.3.1.tgz", - "integrity": "sha512-ql/Pe6/hppYuRp4m3iPaHJqkBB7dgeEmGPQ6X0UNmrQOfTF+dXw29/ZjU2kQ6RDoLxaxOA+Xqv07Vbef6oVTWw==", - "dev": true, - "dependencies": { - "@typescript-eslint/parser": "^4.4.1", - "eslint-config-airbnb": "^18.2.0", - "eslint-config-airbnb-base": "^14.2.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", - "dev": true, - "dependencies": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", - "dev": true, - "dependencies": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", + "eslint-plugin-import": "^2.22.1" } }, - "node_modules/eslint-plugin-import/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "node_modules/eslint-config-airbnb-typescript": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-12.3.1.tgz", + "integrity": "sha512-ql/Pe6/hppYuRp4m3iPaHJqkBB7dgeEmGPQ6X0UNmrQOfTF+dXw29/ZjU2kQ6RDoLxaxOA+Xqv07Vbef6oVTWw==", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" + "@typescript-eslint/parser": "^4.4.1", + "eslint-config-airbnb": "^18.2.0", + "eslint-config-airbnb-base": "^14.2.0" } }, - "node_modules/eslint-plugin-import/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/eslint-plugin-import/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" + "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/eslint-plugin-import/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "engines": { - "node": ">=4" + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "license": "MIT", "dependencies": { - "pify": "^2.0.0" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/eslint-plugin-import/node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" + "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/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/eslint-plugin-jsx-a11y": { @@ -2996,28 +2844,6 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/eslint-plugin-jsx-a11y/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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/eslint-plugin-jsx-a11y/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", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-plugin-react": { "version": "7.37.4", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", @@ -3080,31 +2906,6 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/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", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-plugin-react/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", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -3140,6 +2941,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -3148,106 +2950,87 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6.0" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { + "node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, - "node_modules/eslint/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/eslint/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==", + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/eslint/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==", - "dev": true - }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/eslint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -3262,6 +3045,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } @@ -3271,6 +3055,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" @@ -3280,10 +3065,11 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "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" }, @@ -3291,20 +3077,12 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "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" }, @@ -3312,29 +3090,22 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "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": ">=0.10.0" + "node": ">=4.0" } }, "node_modules/esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "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" } @@ -3344,6 +3115,7 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -3353,6 +3125,7 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -3361,8 +3134,9 @@ "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -3376,11 +3150,22 @@ "node": ">=0.10.0" } }, + "node_modules/expand-brackets/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/expand-brackets/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -3391,20 +3176,53 @@ "node_modules/expand-brackets/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, + "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.1" }, @@ -3415,8 +3233,9 @@ "node_modules/extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, + "license": "MIT", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -3425,23 +3244,12 @@ "node": ">=0.10.0" } }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, + "license": "MIT", "dependencies": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -3459,8 +3267,9 @@ "node_modules/extglob/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -3471,8 +3280,9 @@ "node_modules/extglob/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -3480,169 +3290,95 @@ "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "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-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "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.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-glob/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, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/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, - "dependencies": { - "is-number": "^7.0.0" + "micromatch": "^4.0.8" }, "engines": { - "node": ">=8.0" + "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "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": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", - "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "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/figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "deprecated": "This module is no longer supported.", + "dev": true, + "license": "ISC" }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -3659,10 +3395,11 @@ "optional": true }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "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" }, @@ -3675,6 +3412,7 @@ "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", @@ -3685,15 +3423,20 @@ } }, "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==", + "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": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/findup-sync": { @@ -3701,6 +3444,7 @@ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", "dev": true, + "license": "MIT", "dependencies": { "detect-file": "^1.0.0", "is-glob": "^4.0.0", @@ -3716,6 +3460,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "license": "MIT", "dependencies": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -3735,8 +3480,9 @@ "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -3747,8 +3493,9 @@ "node_modules/findup-sync/node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -3762,8 +3509,9 @@ "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -3771,11 +3519,22 @@ "node": ">=0.10.0" } }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/findup-sync/node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -3786,8 +3545,9 @@ "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -3800,6 +3560,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, + "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -3822,8 +3583,9 @@ "node_modules/findup-sync/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -3837,17 +3599,20 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -3855,16 +3620,18 @@ } }, "node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true + "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/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" @@ -3889,8 +3656,9 @@ "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3898,8 +3666,9 @@ "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, + "license": "MIT", "dependencies": { "map-cache": "^0.2.2" }, @@ -3910,8 +3679,9 @@ "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -3920,8 +3690,10 @@ "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", @@ -3932,15 +3704,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=", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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", "optional": true, "os": [ "darwin" @@ -3983,8 +3757,9 @@ "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true, + "license": "MIT" }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -4001,15 +3776,17 @@ "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.*" } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -4074,17 +3851,20 @@ "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4105,6 +3885,7 @@ "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" }, @@ -4117,6 +3898,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -4124,11 +3906,12 @@ "node": ">=6" } }, - "node_modules/global-modules/node_modules/global-prefix": { + "node_modules/global-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -4138,39 +3921,12 @@ "node": ">=6" } }, - "node_modules/global-modules/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": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/global-prefix/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" }, @@ -4179,10 +3935,11 @@ } }, "node_modules/globals": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", - "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -4193,18 +3950,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/globalthis": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", @@ -4223,16 +3968,17 @@ } }, "node_modules/globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -4242,15 +3988,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -4265,32 +4002,22 @@ } }, "node_modules/graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "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==", + "dev": true, + "license": "ISC" }, "node_modules/growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.x" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -4309,6 +4036,7 @@ "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" } @@ -4374,8 +4102,9 @@ "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, + "license": "MIT", "dependencies": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -4388,8 +4117,9 @@ "node_modules/has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -4401,8 +4131,9 @@ "node_modules/has-values/node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -4413,8 +4144,9 @@ "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -4425,8 +4157,9 @@ "node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -4435,64 +4168,25 @@ } }, "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/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 - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.10" } }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -4516,6 +4210,7 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } @@ -4523,8 +4218,9 @@ "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -4536,6 +4232,7 @@ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, + "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -4543,17 +4240,12 @@ "node": ">=0.10.0" } }, - "node_modules/hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true, + "license": "MIT" }, "node_modules/ieee754": { "version": "1.2.1", @@ -4573,28 +4265,32 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", + "dev": true, + "license": "MIT" }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "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.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "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" @@ -4606,11 +4302,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -4619,29 +4333,34 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "dev": true, + "license": "ISC" }, "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" } }, "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "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/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { "version": "1.1.0", @@ -4663,32 +4382,22 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, "node_modules/is-array-buffer": { @@ -4709,12 +4418,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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 - }, "node_modules/is-async-function": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", @@ -4756,6 +4459,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4784,7 +4488,8 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-callable": { "version": "1.2.7", @@ -4805,7 +4510,6 @@ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "hasown": "^2.0.2" }, @@ -4817,27 +4521,16 @@ } }, "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/is-data-view": { @@ -4876,33 +4569,28 @@ } }, "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, "engines": { "node": ">=0.10.0" } @@ -4910,8 +4598,9 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4937,6 +4626,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4961,10 +4651,11 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "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" }, @@ -4990,6 +4681,7 @@ "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" } @@ -5016,6 +4708,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5025,6 +4718,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -5182,6 +4876,7 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5189,29 +4884,33 @@ "node_modules/is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5239,13 +4938,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.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" @@ -5254,32 +4955,40 @@ "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-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-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-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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -5287,12 +4996,6 @@ "node": ">=6" } }, - "node_modules/json5/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -5310,11 +5013,22 @@ "node": ">=4.0" } }, + "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/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5346,6 +5060,7 @@ "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" @@ -5354,47 +5069,22 @@ "node": ">= 0.8.0" } }, - "node_modules/load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.3.0 <5.0.0 || >=5.10" } }, "node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -5409,46 +5099,47 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "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==", + "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": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true + "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/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0" }, @@ -5470,28 +5161,32 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, - "node_modules/luxon": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.26.0.tgz", - "integrity": "sha512-+V5QIQ5f6CDXQpWNICELwjwuHdqeJM1UenlZWx5ujcRMc9venvluCjFb4t5NYLhb6IhkbMVOxzVuOqkgMxee2A==", - "engines": { - "node": "*" - } - }, "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, + "license": "MIT", "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -5500,26 +5195,29 @@ "node": ">=6" } }, - "node_modules/make-dir/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/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, - "engines": { - "node": ">=6" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, "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 + "dev": true, + "license": "ISC" }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5527,8 +5225,9 @@ "node_modules/map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, + "license": "MIT", "dependencies": { "object-visit": "^1.0.0" }, @@ -5551,6 +5250,7 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -5562,6 +5262,7 @@ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "dev": true, + "license": "MIT", "dependencies": { "errno": "^0.1.3", "readable-stream": "^2.0.1" @@ -5575,40 +5276,31 @@ "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.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "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.1", - "picomatch": "^2.2.3" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -5618,28 +5310,32 @@ } }, "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" }, "node_modules/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==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5648,16 +5344,21 @@ } }, "node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "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/mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -5679,6 +5380,7 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, + "license": "MIT", "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -5687,42 +5389,25 @@ "node": ">=0.10.0" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "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": "0.0.8" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, - "node_modules/mkdirp/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, "node_modules/mocha": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", "dev": true, + "license": "MIT", "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", @@ -5762,17 +5447,29 @@ "url": "https://opencollective.com/mochajs" } }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/mocha/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 + "dev": true, + "license": "Python-2.0" }, "node_modules/mocha/node_modules/debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -5789,61 +5486,15 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT" }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5851,73 +5502,17 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/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==", + "node_modules/mocha/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, + "license": "ISC", "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" + "brace-expansion": "^1.1.7" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/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, "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" + "node": "*" } }, "node_modules/mocha/node_modules/supports-color": { @@ -5925,6 +5520,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5938,8 +5534,10 @@ "node_modules/move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", @@ -5949,28 +5547,13 @@ "run-queue": "^1.0.3" } }, - "node_modules/move-concurrently/node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/move-concurrently/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" }, @@ -5979,10 +5562,11 @@ } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/nan": { "version": "2.22.2", @@ -5997,6 +5581,7 @@ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", "dev": true, + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6009,6 +5594,7 @@ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, + "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -6029,26 +5615,30 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, + "license": "MIT", "dependencies": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", @@ -6078,35 +5668,16 @@ "node_modules/node-libs-browser/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/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, - "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/resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - } + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6114,8 +5685,10 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6123,8 +5696,9 @@ "node_modules/object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, + "license": "MIT", "dependencies": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -6137,20 +5711,36 @@ "node_modules/object-copy/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object-copy/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -6176,6 +5766,7 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -6183,8 +5774,9 @@ "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.0" }, @@ -6235,7 +5827,6 @@ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -6249,11 +5840,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -6283,24 +5890,26 @@ "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/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "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.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -6309,8 +5918,9 @@ "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true, + "license": "MIT" }, "node_modules/own-keys": { "version": "1.0.1", @@ -6331,27 +5941,35 @@ } }, "node_modules/p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "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": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "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==", + "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": "^2.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -6359,6 +5977,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" } @@ -6367,15 +5986,17 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "dev": true, + "license": "(MIT AND Zlib)" }, "node_modules/parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, + "license": "MIT", "dependencies": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } @@ -6385,6 +6006,7 @@ "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" }, @@ -6393,23 +6015,29 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "dev": true, + "license": "ISC", "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6417,8 +6045,9 @@ "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6427,29 +6056,33 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true, + "license": "MIT", "optional": true }, "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=", + "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": ">=4" + "node": ">=8" } }, "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" } @@ -6459,6 +6092,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6475,6 +6109,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6484,6 +6119,7 @@ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -6493,6 +6129,7 @@ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, + "license": "MIT", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -6504,11 +6141,19 @@ "node": ">=0.12" } }, + "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/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "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" }, @@ -6517,12 +6162,13 @@ } }, "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "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": ">=0.10.0" + "node": ">=6" } }, "node_modules/pkg-dir": { @@ -6530,6 +6176,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" }, @@ -6537,11 +6184,78 @@ "node": ">=6" } }, + "node_modules/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6561,6 +6275,7 @@ "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" } @@ -6568,23 +6283,26 @@ "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "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" }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -6592,8 +6310,9 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true, + "license": "ISC" }, "node_modules/prop-types": { "version": "15.8.1", @@ -6611,14 +6330,16 @@ "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT" }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -6629,16 +6350,18 @@ } }, "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -6649,6 +6372,7 @@ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, + "license": "MIT", "dependencies": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -6660,44 +6384,74 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "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" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, "engines": { - "node": ">=0.4.x" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true, "engines": { "node": ">=0.4.x" } }, + "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/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -6707,6 +6461,7 @@ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, + "license": "MIT", "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -6721,10 +6476,11 @@ "peer": true }, "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6735,11 +6491,26 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readable-stream/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" + }, + "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" + }, "node_modules/readdirp": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -6775,6 +6546,7 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -6805,10 +6577,11 @@ } }, "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6819,8 +6592,9 @@ "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true, + "license": "ISC", "optional": true }, "node_modules/repeat-element": { @@ -6828,6 +6602,7 @@ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6835,8 +6610,9 @@ "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } @@ -6844,8 +6620,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" } @@ -6855,6 +6632,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6863,25 +6641,59 @@ "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": { + "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-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT", + "engines": { + "node": ">=4" } }, "node_modules/resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -6895,6 +6707,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -6904,11 +6717,42 @@ "node": ">=0.10.0" } }, + "node_modules/resolve-dir/node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/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/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" } @@ -6916,24 +6760,27 @@ "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12" } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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" @@ -6943,7 +6790,9 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -6959,15 +6808,16 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, "node_modules/run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "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": [ { @@ -6982,13 +6832,18 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } }, "node_modules/run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.1.1" } @@ -7013,19 +6868,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "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/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/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -7043,18 +6906,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, + "license": "MIT", "dependencies": { "ret": "~0.1.10" } @@ -7077,17 +6934,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, "node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.1.0", "ajv-errors": "^1.0.0", @@ -7098,25 +6950,34 @@ } }, "node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, + "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/serialize-javascript": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", - "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } }, "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/set-function-length": { "version": "1.2.2", @@ -7172,6 +7033,7 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -7185,8 +7047,9 @@ "node_modules/set-value/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -7194,17 +7057,29 @@ "node": ">=0.10.0" } }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -7218,6 +7093,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -7230,6 +7106,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7315,6 +7192,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7324,6 +7202,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -7341,6 +7220,7 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, + "license": "MIT", "dependencies": { "base": "^0.11.1", "debug": "^2.2.0", @@ -7360,6 +7240,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, + "license": "MIT", "dependencies": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -7372,8 +7253,9 @@ "node_modules/snapdragon-node/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -7381,49 +7263,12 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.2.0" }, @@ -7434,8 +7279,9 @@ "node_modules/snapdragon-util/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -7443,11 +7289,22 @@ "node": ">=0.10.0" } }, + "node_modules/snapdragon/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/snapdragon/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -7458,8 +7315,9 @@ "node_modules/snapdragon/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -7467,26 +7325,60 @@ "node": ">=0.10.0" } }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, "node_modules/snapdragon/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true, + "license": "MIT" }, "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" } @@ -7497,6 +7389,7 @@ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, + "license": "MIT", "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -7506,10 +7399,11 @@ } }, "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==", + "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" @@ -7520,45 +7414,15 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", - "dev": true + "license": "MIT" }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^3.0.0" }, @@ -7569,14 +7433,16 @@ "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/ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, + "license": "ISC", "dependencies": { "figgy-pudding": "^3.5.1" } @@ -7584,8 +7450,9 @@ "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, + "license": "MIT", "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -7597,8 +7464,9 @@ "node_modules/static-extend/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -7606,11 +7474,26 @@ "node": ">=0.10.0" } }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" @@ -7621,6 +7504,7 @@ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" @@ -7631,6 +7515,7 @@ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, + "license": "MIT", "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", @@ -7640,34 +7525,51 @@ } }, "node_modules/stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true, + "license": "MIT" }, "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", "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" + }, "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, + "node_modules/string-width/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==", + "dev": true, + "license": "MIT" + }, "node_modules/string.prototype.includes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", @@ -7785,12 +7687,13 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -7799,8 +7702,9 @@ "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" } @@ -7810,6 +7714,7 @@ "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" }, @@ -7822,6 +7727,7 @@ "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" }, @@ -7835,7 +7741,6 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -7844,64 +7749,77 @@ } }, "node_modules/table": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", - "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=10.0.0" } }, "node_modules/table/node_modules/ajv": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.3.0.tgz", - "integrity": "sha512-RYE7B5An83d7eWnDR8kbdaIFqmKCNsP16ay1hDbJEU+sa0e3H9SebskCt0Uufem6cfAVu7Col6ubcn/W+Sm8/Q==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/table/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 - }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/temporal-polyfill": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.0.tgz", + "integrity": "sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g==", + "license": "MIT", + "dependencies": { + "temporal-spec": "0.3.0" + } + }, + "node_modules/temporal-spec": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.0.tgz", + "integrity": "sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ==", + "license": "ISC" + }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -7915,10 +7833,11 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.6.tgz", + "integrity": "sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==", "dev": true, + "license": "MIT", "dependencies": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", @@ -7942,6 +7861,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -7949,14 +7869,16 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -7967,6 +7889,7 @@ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, + "license": "MIT", "dependencies": { "setimmediate": "^1.0.4" }, @@ -7977,14 +7900,16 @@ "node_modules/to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true, + "license": "MIT" }, "node_modules/to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -7995,8 +7920,9 @@ "node_modules/to-object-path/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -8009,6 +7935,7 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, + "license": "MIT", "dependencies": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -8024,6 +7951,7 @@ "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" }, @@ -8032,10 +7960,11 @@ } }, "node_modules/ts-loader": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.2.0.tgz", - "integrity": "sha512-ebXBFrNyMSmbWgjnb3WBloUBK+VSx1xckaXsMXxlZRDqce/OPdYBVN5efB0W3V0defq0Gcy4YuzvPGqRgjj85A==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz", + "integrity": "sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^4.0.0", @@ -8051,44 +7980,12 @@ "webpack": "*" } }, - "node_modules/ts-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/ts-node": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, + "license": "MIT", "dependencies": { "arg": "^4.1.0", "create-require": "^1.1.0", @@ -8115,27 +8012,30 @@ "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" } }, "node_modules/tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", + "json5": "^1.0.2", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -8144,16 +8044,18 @@ } }, "node_modules/tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" }, "node_modules/tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -8167,14 +8069,16 @@ "node_modules/tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true, + "license": "MIT" }, "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" }, @@ -8183,21 +8087,26 @@ } }, "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typed-array-buffer": { @@ -8281,14 +8190,16 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" }, "node_modules/typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8298,14 +8209,11 @@ } }, "node_modules/uglify-js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", - "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, - "dependencies": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - }, + "license": "BSD-2-Clause", "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -8313,20 +8221,12 @@ "node": ">=0.8.0" } }, - "node_modules/uglify-js/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/uglifyjs-webpack-plugin": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", "dev": true, + "license": "MIT", "dependencies": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", @@ -8345,72 +8245,12 @@ "webpack": "^4.0.0" } }, - "node_modules/uglifyjs-webpack-plugin/node_modules/bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", - "dev": true - }, - "node_modules/uglifyjs-webpack-plugin/node_modules/cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/uglifyjs-webpack-plugin/node_modules/cacache/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/uglifyjs-webpack-plugin/node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/uglifyjs-webpack-plugin/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/uglifyjs-webpack-plugin/node_modules/serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "BSD-3-Clause" }, "node_modules/unbox-primitive": { "version": "1.1.0", @@ -8436,6 +8276,7 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, + "license": "MIT", "dependencies": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -8446,20 +8287,32 @@ "node": ">=0.10.0" } }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } }, "node_modules/unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } @@ -8467,8 +8320,9 @@ "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, + "license": "MIT", "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -8480,8 +8334,9 @@ "node_modules/unset-value/node_modules/has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, + "license": "MIT", "dependencies": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -8494,8 +8349,9 @@ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "1.0.0" }, @@ -8506,17 +8362,26 @@ "node_modules/unset-value/node_modules/has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/unset-value/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" + }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=4", @@ -8524,10 +8389,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" } @@ -8535,31 +8401,38 @@ "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "dev": true, + "license": "MIT", "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true + "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/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8569,6 +8442,7 @@ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "2.0.3" } @@ -8576,36 +8450,37 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" }, - "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==", + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "license": "MIT" }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" @@ -8620,6 +8495,7 @@ "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "chokidar": "^2.1.8" @@ -8630,6 +8506,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, + "license": "ISC", "optional": true, "dependencies": { "micromatch": "^3.1.4", @@ -8639,8 +8516,9 @@ "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "remove-trailing-separator": "^1.0.1" @@ -8654,6 +8532,7 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.10.0" @@ -8664,6 +8543,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "arr-flatten": "^1.1.0", @@ -8684,8 +8564,9 @@ "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "is-extendable": "^0.1.0" @@ -8698,8 +8579,8 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "anymatch": "^2.0.0", @@ -8721,8 +8602,9 @@ "node_modules/watchpack-chokidar2/node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "extend-shallow": "^2.0.1", @@ -8737,8 +8619,9 @@ "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "is-extendable": "^0.1.0" @@ -8751,9 +8634,10 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -8769,8 +8653,9 @@ "node_modules/watchpack-chokidar2/node_modules/glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, + "license": "ISC", "optional": true, "dependencies": { "is-glob": "^3.1.0", @@ -8780,8 +8665,9 @@ "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "is-extglob": "^2.1.0" @@ -8793,8 +8679,9 @@ "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "binary-extensions": "^1.0.0" @@ -8803,11 +8690,23 @@ "node": ">=0.10.0" } }, + "node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/watchpack-chokidar2/node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "kind-of": "^3.0.2" @@ -8819,8 +8718,9 @@ "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "is-buffer": "^1.1.5" @@ -8834,6 +8734,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "arr-diff": "^4.0.0", @@ -8859,6 +8760,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "graceful-fs": "^4.1.11", @@ -8872,8 +8774,9 @@ "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "is-number": "^3.0.0", @@ -8884,10 +8787,11 @@ } }, "node_modules/webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "version": "4.47.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", + "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -8937,6 +8841,7 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.4.2", "cross-spawn": "^6.0.5", @@ -8961,10 +8866,11 @@ } }, "node_modules/webpack-cli/node_modules/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": "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" } @@ -8974,6 +8880,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" }, @@ -8986,15 +8893,27 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, + "node_modules/webpack-cli/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/webpack-cli/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", @@ -9009,6 +8928,7 @@ "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" }, @@ -9021,6 +8941,7 @@ "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", @@ -9032,6 +8953,7 @@ "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" } @@ -9039,14 +8961,16 @@ "node_modules/webpack-cli/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/webpack-cli/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, + "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -9058,51 +8982,72 @@ "node": ">=4.8" } }, + "node_modules/webpack-cli/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/webpack-cli/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 + "dev": true, + "license": "MIT" }, - "node_modules/webpack-cli/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/webpack-cli/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": ">=4" + "node": ">=0.8.0" } }, - "node_modules/webpack-cli/node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "node_modules/webpack-cli/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": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "locate-path": "^3.0.0" }, "engines": { "node": ">=6" } }, + "node_modules/webpack-cli/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/webpack-cli/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" } }, "node_modules/webpack-cli/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -9111,10 +9056,11 @@ } }, "node_modules/webpack-cli/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -9124,41 +9070,85 @@ "node": ">=4.0.0" } }, - "node_modules/webpack-cli/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "node_modules/webpack-cli/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/webpack-cli/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": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-cli/node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "node_modules/webpack-cli/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": { - "resolve-from": "^3.0.0" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/webpack-cli/node_modules/resolve-from": { + "node_modules/webpack-cli/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "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/webpack-cli/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/webpack-cli/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/webpack-cli/node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -9169,8 +9159,9 @@ "node_modules/webpack-cli/node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9180,6 +9171,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", @@ -9194,6 +9186,7 @@ "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" }, @@ -9206,6 +9199,7 @@ "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" }, @@ -9218,6 +9212,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" }, @@ -9230,6 +9225,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", @@ -9244,6 +9240,7 @@ "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", @@ -9262,6 +9259,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" @@ -9272,25 +9270,18 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, + "license": "MIT", "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" } }, - "node_modules/webpack-sources/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/webpack/node_modules/acorn": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -9298,36 +9289,12 @@ "node": ">=0.4.0" } }, - "node_modules/webpack/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, - "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/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/webpack/node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -9337,6 +9304,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "license": "MIT", "dependencies": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -9356,8 +9324,9 @@ "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -9370,6 +9339,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -9378,17 +9348,22 @@ "node": ">=4.0.0" } }, - "node_modules/webpack/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 + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } }, "node_modules/webpack/node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -9402,8 +9377,9 @@ "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -9411,11 +9387,22 @@ "node": ">=0.10.0" } }, + "node_modules/webpack/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/webpack/node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -9426,8 +9413,9 @@ "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -9436,10 +9424,11 @@ } }, "node_modules/webpack/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -9448,10 +9437,11 @@ } }, "node_modules/webpack/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -9464,8 +9454,9 @@ "node_modules/webpack/node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, + "license": "MIT", "dependencies": { "errno": "^0.1.3", "readable-stream": "^2.0.1" @@ -9476,6 +9467,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, + "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -9495,29 +9487,12 @@ "node": ">=0.10.0" } }, - "node_modules/webpack/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, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/webpack/node_modules/mkdirp/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "node_modules/webpack/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -9531,6 +9506,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -9589,13 +9565,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -9616,10 +9585,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/which-typed-array": { "version": "1.1.19", @@ -9648,15 +9618,17 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2" } }, "node_modules/wide-align/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9664,8 +9636,9 @@ "node_modules/wide-align/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" } @@ -9675,6 +9648,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, + "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -9686,8 +9660,9 @@ "node_modules/wide-align/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -9696,10 +9671,11 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "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" } @@ -9709,6 +9685,7 @@ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, + "license": "MIT", "dependencies": { "errno": "~0.1.7" } @@ -9717,13 +9694,15 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/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==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9739,35 +9718,40 @@ "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/xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "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": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true + "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/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -9786,6 +9770,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -9795,6 +9780,7 @@ "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -9805,35 +9791,12 @@ "node": ">=10" } }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yargs/node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -9843,6 +9806,7 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9852,6 +9816,7 @@ "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" }, diff --git a/package.json b/package.json index 0d11576..2ed087a 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ ], "dependencies": { "big.js": "^6.1.1", - "luxon": "^1.26.0" + "temporal-polyfill": "^0.3.0" }, "devDependencies": { "@types/big.js": "^6.0.2", diff --git a/src/AstronomicalCalendar.ts b/src/AstronomicalCalendar.ts index 94dfb39..9a776a3 100644 --- a/src/AstronomicalCalendar.ts +++ b/src/AstronomicalCalendar.ts @@ -1,5 +1,5 @@ import { Big } from 'big.js'; -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { Long_MIN_VALUE, TimeZone, ValueOf } from './polyfills/Utils'; import { GeoLocation } from './util/GeoLocation'; @@ -78,7 +78,7 @@ export class AstronomicalCalendar { /** * The Java Calendar encapsulated by this class to track the current date used by the class */ - private date!: DateTime; + private date!: Temporal.PlainDate; /** * the {@link GeoLocation} used for calculations. @@ -106,7 +106,7 @@ export class AstronomicalCalendar { * @see #getSeaLevelSunrise() * @see AstronomicalCalendar#getUTCSunrise */ - public getSunrise(): DateTime | null { + public getSunrise(): Temporal.ZonedDateTime | null { const sunrise: number = this.getUTCSunrise(AstronomicalCalendar.GEOMETRIC_ZENITH); if (Number.isNaN(sunrise)) return null; return this.getDateFromTime(sunrise, AstronomicalCalendar.SolarEvent.SUNRISE); @@ -125,7 +125,7 @@ export class AstronomicalCalendar { * @see AstronomicalCalendar#getUTCSeaLevelSunrise * @see #getSeaLevelSunset() */ - public getSeaLevelSunrise(): DateTime | null { + public getSeaLevelSunrise(): Temporal.ZonedDateTime | null { const sunrise: number = this.getUTCSeaLevelSunrise(AstronomicalCalendar.GEOMETRIC_ZENITH); if (Number.isNaN(sunrise)) return null; return this.getDateFromTime(sunrise, AstronomicalCalendar.SolarEvent.SUNRISE); @@ -139,7 +139,7 @@ export class AstronomicalCalendar { * can't be computed, null will be returned. See detailed explanation on top of the page. * @see #CIVIL_ZENITH */ - public getBeginCivilTwilight(): DateTime | null { + public getBeginCivilTwilight(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(AstronomicalCalendar.CIVIL_ZENITH); } @@ -152,7 +152,7 @@ export class AstronomicalCalendar { * calculation can't be computed null will be returned. See detailed explanation on top of the page. * @see #NAUTICAL_ZENITH */ - public getBeginNauticalTwilight(): DateTime | null { + public getBeginNauticalTwilight(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(AstronomicalCalendar.NAUTICAL_ZENITH); } @@ -165,7 +165,7 @@ export class AstronomicalCalendar { * calculation can't be computed, null will be returned. See detailed explanation on top of the page. * @see #ASTRONOMICAL_ZENITH */ - public getBeginAstronomicalTwilight(): DateTime | null { + public getBeginAstronomicalTwilight(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(AstronomicalCalendar.ASTRONOMICAL_ZENITH); } @@ -188,7 +188,7 @@ export class AstronomicalCalendar { * @see #getSeaLevelSunset() * @see AstronomicalCalendar#getUTCSunset */ - public getSunset(): DateTime | null { + public getSunset(): Temporal.ZonedDateTime | null { const sunset: number = this.getUTCSunset(AstronomicalCalendar.GEOMETRIC_ZENITH); if (Number.isNaN(sunset)) return null; return this.getDateFromTime(sunset, AstronomicalCalendar.SolarEvent.SUNSET); @@ -207,7 +207,7 @@ export class AstronomicalCalendar { * @see AstronomicalCalendar#getUTCSeaLevelSunset * @see #getSunset() */ - public getSeaLevelSunset(): DateTime | null { + public getSeaLevelSunset(): Temporal.ZonedDateTime | null { const sunset: number = this.getUTCSeaLevelSunset(AstronomicalCalendar.GEOMETRIC_ZENITH); if (Number.isNaN(sunset)) return null; return this.getDateFromTime(sunset, AstronomicalCalendar.SolarEvent.SUNSET); @@ -221,7 +221,7 @@ export class AstronomicalCalendar { * the calculation can't be computed, null will be returned. See detailed explanation on top of the page. * @see #CIVIL_ZENITH */ - public getEndCivilTwilight(): DateTime | null { + public getEndCivilTwilight(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(AstronomicalCalendar.CIVIL_ZENITH); } @@ -233,7 +233,7 @@ export class AstronomicalCalendar { * page. * @see #NAUTICAL_ZENITH */ - public getEndNauticalTwilight(): DateTime | null { + public getEndNauticalTwilight(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(AstronomicalCalendar.NAUTICAL_ZENITH); } @@ -245,7 +245,7 @@ export class AstronomicalCalendar { * of the page. * @see #ASTRONOMICAL_ZENITH */ - public getEndAstronomicalTwilight(): DateTime | null { + public getEndAstronomicalTwilight(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(AstronomicalCalendar.ASTRONOMICAL_ZENITH); } @@ -261,12 +261,12 @@ export class AstronomicalCalendar { * the offset in milliseconds to add to the time. * @return the {@link java.util.Date} with the offset in milliseconds added to it */ - public static getTimeOffset(time: DateTime | null, offset: number): DateTime | null { + public static getTimeOffset(time: Temporal.ZonedDateTime | null, offset: number): Temporal.ZonedDateTime | null { if (time === null || offset === Long_MIN_VALUE || Number.isNaN(offset)) { return null; } - return time.plus({ milliseconds: offset }); + return time.add({ milliseconds: Math.trunc(offset) }); } /** @@ -284,7 +284,7 @@ export class AstronomicalCalendar { * not rise, and one where it does not set, a null will be returned. See detailed explanation on top of the * page. */ - public getSunriseOffsetByDegrees(offsetZenith: number): DateTime | null { + public getSunriseOffsetByDegrees(offsetZenith: number): Temporal.ZonedDateTime | null { const dawn: number = this.getUTCSunrise(offsetZenith); if (Number.isNaN(dawn)) return null; return this.getDateFromTime(dawn, AstronomicalCalendar.SolarEvent.SUNRISE); @@ -304,7 +304,7 @@ export class AstronomicalCalendar { * rise, and one where it does not set, a null will be returned. See detailed explanation on top of the * page. */ - public getSunsetOffsetByDegrees(offsetZenith: number): DateTime | null { + public getSunsetOffsetByDegrees(offsetZenith: number): Temporal.ZonedDateTime | null { const sunset: number = this.getUTCSunset(offsetZenith); if (Number.isNaN(sunset)) return null; return this.getDateFromTime(sunset, AstronomicalCalendar.SolarEvent.SUNSET); @@ -333,7 +333,7 @@ export class AstronomicalCalendar { * @see #ComplexZmanimCalendar(GeoLocation) */ constructor(geoLocation: GeoLocation = new GeoLocation()) { - this.setDate(DateTime.fromObject({ zone: geoLocation.getTimeZone() })); + this.setDate(Temporal.Now.plainDateISO()); this.setGeoLocation(geoLocation); // duplicate call this.setAstronomicalCalculator(new NOAACalculator()); } @@ -445,12 +445,12 @@ export class AstronomicalCalendar { * * @see #getTemporalHour() */ - public getTemporalHour(startOfDay: DateTime | null = this.getSeaLevelSunrise(), - endOfDay: DateTime | null = this.getSeaLevelSunset()): number { + public getTemporalHour(startOfDay: Temporal.ZonedDateTime | null = this.getSeaLevelSunrise(), + endOfDay: Temporal.ZonedDateTime | null = this.getSeaLevelSunset()): number { if (startOfDay === null || endOfDay === null) { return Long_MIN_VALUE; } - return (endOfDay.valueOf() - startOfDay.valueOf()) / 12; + return (endOfDay.epochMilliseconds - startOfDay.epochMilliseconds) / 12; } /** @@ -495,16 +495,16 @@ export class AstronomicalCalendar { * @see com.kosherjava.zmanim.util.NOAACalculator#getUTCNoon(Calendar, GeoLocation) * @see com.kosherjava.zmanim.util.SunTimesCalculator#getUTCNoon(Calendar, GeoLocation) */ - public getSunTransit(): DateTime | null; - public getSunTransit(startOfDay: DateTime | null, endOfDay: DateTime | null): DateTime | null; - public getSunTransit(startOfDay?: DateTime | null, endOfDay?: DateTime | null): DateTime | null { + public getSunTransit(): Temporal.ZonedDateTime | null; + public getSunTransit(startOfDay: Temporal.ZonedDateTime | null, endOfDay: Temporal.ZonedDateTime | null): Temporal.ZonedDateTime | null; + public getSunTransit(startOfDay?: Temporal.ZonedDateTime | null, endOfDay?: Temporal.ZonedDateTime | null): Temporal.ZonedDateTime | null { if (startOfDay === undefined && endOfDay === undefined) { const noon = this.getAstronomicalCalculator().getUTCNoon(this.getAdjustedDate(), this.getGeoLocation()); return this.getDateFromTime(noon, AstronomicalCalendar.SolarEvent.NOON); } const temporalHour: number = this.getTemporalHour(startOfDay, endOfDay); - return AstronomicalCalendar.getTimeOffset(startOfDay as DateTime | null, temporalHour * 6); + return AstronomicalCalendar.getTimeOffset(startOfDay as Temporal.ZonedDateTime | null, temporalHour * 6); } /** @@ -535,7 +535,7 @@ export class AstronomicalCalendar { * @see com.kosherjava.zmanim.util.NOAACalculator#getUTCNoon(Calendar, GeoLocation) * @see com.kosherjava.zmanim.util.SunTimesCalculator#getUTCNoon(Calendar, GeoLocation) */ - public getSunLowerTransit(): DateTime | null { + public getSunLowerTransit(): Temporal.ZonedDateTime | null { return this.getSolarMidnight(); } @@ -564,7 +564,7 @@ export class AstronomicalCalendar { * @see com.kosherjava.zmanim.util.NOAACalculator#getUTCNoon(Calendar, GeoLocation) * @see com.kosherjava.zmanim.util.SunTimesCalculator#getUTCNoon(Calendar, GeoLocation) */ - public getSolarMidnight(): DateTime | null { + public getSolarMidnight(): Temporal.ZonedDateTime | null { const noon: number = this.getAstronomicalCalculator().getUTCMidnight(this.getAdjustedDate(), this.getGeoLocation()); return this.getDateFromTime(noon, AstronomicalCalendar.SolarEvent.MIDNIGHT); } @@ -592,14 +592,14 @@ export class AstronomicalCalendar { * @param solarEvent - the type of {@link SolarEvent} * @return The Date - object representation of the time double */ - protected getDateFromTime(time: number, solarEvent: ValueOf): DateTime | null { + protected getDateFromTime(time: number, solarEvent: ValueOf): Temporal.ZonedDateTime | null { if (Number.isNaN(time)) { return null; } let calculatedTime: number = time; - const adjustedDate: DateTime = this.getAdjustedDate(); - let cal = DateTime.utc(adjustedDate.year, adjustedDate.month, adjustedDate.day); + const adjustedDate: Temporal.PlainDate = this.getAdjustedDate(); + let cal = adjustedDate; const hours: number = Math.trunc(calculatedTime); // retain only the hours calculatedTime -= hours; @@ -612,19 +612,23 @@ export class AstronomicalCalendar { // actually not the target date, but the day prior or after const localTimeHours: number = Math.trunc(this.getGeoLocation().getLongitude() / 15); if (solarEvent === AstronomicalCalendar.SolarEvent.SUNRISE && localTimeHours + hours > 18) { - cal = cal.minus({ days: 1 }); + cal = cal.subtract({ days: 1 }); } else if (solarEvent === AstronomicalCalendar.SolarEvent.SUNSET && localTimeHours + hours < 6) { - cal = cal.plus({ days: 1 }); + cal = cal.add({ days: 1 }); } else if (solarEvent === AstronomicalCalendar.SolarEvent.MIDNIGHT && localTimeHours + hours < 12) { - cal = cal.plus({ days: 1 }); + cal = cal.add({ days: 1 }); } - return cal.set({ - hour: hours, - minute: minutes, - second: seconds, - millisecond: Math.trunc(calculatedTime * 1000), - }); + return cal.toZonedDateTime({ + timeZone: 'UTC', + plainTime: new Temporal.PlainTime( + hours, + minutes, + seconds, + Math.trunc(calculatedTime * 1000), + ), + }) + .withTimeZone(this.geoLocation.getTimeZone()); } /** @@ -641,8 +645,8 @@ export class AstronomicalCalendar { public getSunriseSolarDipFromOffset(minutes: number): number | null { if (Number.isNaN(minutes)) return null; - let offsetByDegrees: DateTime | null = this.getSeaLevelSunrise(); - const offsetByTime: DateTime | null = AstronomicalCalendar.getTimeOffset(this.getSeaLevelSunrise(), -(minutes * AstronomicalCalendar.MINUTE_MILLIS)); + let offsetByDegrees: Temporal.ZonedDateTime | null = this.getSeaLevelSunrise(); + const offsetByTime: Temporal.ZonedDateTime | null = AstronomicalCalendar.getTimeOffset(this.getSeaLevelSunrise(), -(minutes * AstronomicalCalendar.MINUTE_MILLIS)); let degrees: Big = new Big(0); const incrementor: Big = new Big('0.0001'); @@ -676,8 +680,8 @@ export class AstronomicalCalendar { public getSunsetSolarDipFromOffset(minutes: number): number | null { if (Number.isNaN(minutes)) return null; - let offsetByDegrees: DateTime | null = this.getSeaLevelSunset(); - const offsetByTime: DateTime | null = AstronomicalCalendar.getTimeOffset(this.getSeaLevelSunset(), minutes * AstronomicalCalendar.MINUTE_MILLIS); + let offsetByDegrees: Temporal.ZonedDateTime | null = this.getSeaLevelSunset(); + const offsetByTime: Temporal.ZonedDateTime | null = AstronomicalCalendar.getTimeOffset(this.getSeaLevelSunset(), minutes * AstronomicalCalendar.MINUTE_MILLIS); let degrees: Big = new Big(0); const incrementor: Big = new Big('0.001'); @@ -714,7 +718,7 @@ export class AstronomicalCalendar { * (noon) will return 11:56:50am. * @see GeoLocation#getLocalMeanTimeOffset() */ - public getLocalMeanTime(hours: number): DateTime | null { + public getLocalMeanTime(hours: number): Temporal.ZonedDateTime | null { if (hours < 0 || hours >= 24) { throw new IllegalArgumentException('Hours must between 0 and 23.9999...'); } @@ -729,10 +733,10 @@ export class AstronomicalCalendar { * @see GeoLocation#getAntimeridianAdjustment() * @return the adjusted Calendar */ - private getAdjustedDate(): DateTime { + private getAdjustedDate(): Temporal.PlainDate { const offset: -1 | 0 | 1 = this.getGeoLocation().getAntimeridianAdjustment(); if (offset === 0) return this.getDate(); - return this.getDate().plus({ days: offset }); + return this.getDate().add({ days: offset }); } /** @@ -795,7 +799,7 @@ export class AstronomicalCalendar { */ public setGeoLocation(geoLocation: GeoLocation): void { this.geoLocation = geoLocation; - this.date = this.date.setZone(geoLocation.getTimeZone()); + // this.date = this.date.setZone(geoLocation.getTimeZone()); } /** @@ -828,7 +832,7 @@ export class AstronomicalCalendar { * * @return Returns the calendar. */ - public getDate(): DateTime { + public getDate(): Temporal.PlainDate { return this.date; } @@ -837,15 +841,17 @@ export class AstronomicalCalendar { * @param date * The calendar to set. */ - public setDate(date: DateTime | Date | string | number): void { - if (DateTime.isDateTime(date)) { + public setDate(date: Temporal.PlainDate | Date | string | number): void { + if (date instanceof Temporal.PlainDate) { this.date = date; } else if (date instanceof Date) { - this.date = DateTime.fromJSDate(date); + const instant = Temporal.Instant.fromEpochMilliseconds(date.getTime()); + this.date = instant.toZonedDateTimeISO(this.geoLocation.getTimeZone()).toPlainDate(); } else if (typeof date === 'string') { - this.date = DateTime.fromISO(date); + this.date = Temporal.PlainDate.from(date); } else if (typeof date === 'number') { - this.date = DateTime.fromMillis(date); + const instant = Temporal.Instant.fromEpochMilliseconds(date); + this.date = instant.toZonedDateTimeISO(this.geoLocation.getTimeZone()).toPlainDate(); } } diff --git a/src/ComplexZmanimCalendar.ts b/src/ComplexZmanimCalendar.ts index 36ec678..6c4bd4c 100644 --- a/src/ComplexZmanimCalendar.ts +++ b/src/ComplexZmanimCalendar.ts @@ -1,9 +1,13 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { Calendar, Long_MIN_VALUE } from './polyfills/Utils'; import { ZmanimCalendar } from './ZmanimCalendar'; import { JewishCalendar } from './hebrewcalendar/JewishCalendar'; +function zdtMax(a: Temporal.ZonedDateTime, b: Temporal.ZonedDateTime): Temporal.ZonedDateTime { + return a.epochMilliseconds > b.epochMilliseconds ? a : b; +} + /** *

This class extends ZmanimCalendar and provides many more zmanim than available in the ZmanimCalendar. The basis * for most zmanim in this class are from the sefer Yisroel @@ -778,7 +782,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getPlagHamincha26Degrees() * @see #getPlagHamincha120Minutes() */ - public getPlagHamincha120MinutesZmanis(): DateTime | null { + public getPlagHamincha120MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos120Zmanis(), this.getTzais120Zmanis(), true); } @@ -802,7 +806,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis120Minutes() * @see #getPlagHamincha26Degrees() */ - public getPlagHamincha120Minutes(): DateTime | null { + public getPlagHamincha120Minutes(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos120(), this.getTzais120(), true); } @@ -838,7 +842,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getPlagHamincha60Minutes() * @see #getShaahZmanis60Minutes() */ - public getAlos60(): DateTime | null { + public getAlos60(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunrise(), -60 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -858,7 +862,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #getShaahZmanisGra() */ - public getAlos72Zmanis(): DateTime | null { + public getAlos72Zmanis(): Temporal.ZonedDateTime | null { return this.getZmanisBasedOffset(-1.2); } @@ -877,7 +881,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar} * documentation. */ - public getAlos96(): DateTime | null { + public getAlos96(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunrise(), -96 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -897,7 +901,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #getShaahZmanisGra() */ - public getAlos90Zmanis(): DateTime | null { + public getAlos90Zmanis(): Temporal.ZonedDateTime | null { return this.getZmanisBasedOffset(-1.5); } @@ -917,7 +921,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #getShaahZmanisGra() */ - public getAlos96Zmanis(): DateTime | null { + public getAlos96Zmanis(): Temporal.ZonedDateTime | null { return this.getZmanisBasedOffset(-1.6); } @@ -935,7 +939,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar} * documentation. */ - public getAlos90(): DateTime | null { + public getAlos90(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunrise(), -90 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -963,7 +967,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTzais120() * @see #getAlos26Degrees() */ - public getAlos120(): DateTime | null { + public getAlos120(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunrise(), -120 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -992,7 +996,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos120() * @see #getAlos26Degrees() */ - public getAlos120Zmanis(): DateTime | null { + public getAlos120Zmanis(): Temporal.ZonedDateTime | null { return this.getZmanisBasedOffset(-2); } @@ -1020,7 +1024,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTzais120() * @see #getTzais26Degrees() */ - public getAlos26Degrees(): DateTime | null { + public getAlos26Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_26_DEGREES); } @@ -1034,7 +1038,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. * @see #ASTRONOMICAL_ZENITH */ - public getAlos18Degrees(): DateTime | null { + public getAlos18Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ASTRONOMICAL_ZENITH); } @@ -1053,7 +1057,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. * @see #ASTRONOMICAL_ZENITH */ - public getAlos19Degrees(): DateTime | null { + public getAlos19Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_19_DEGREES); } @@ -1072,7 +1076,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #ZENITH_19_POINT_8 * @see #getAlos90() */ - public getAlos19Point8Degrees(): DateTime | null { + public getAlos19Point8Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_19_POINT_8); } @@ -1091,7 +1095,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #ZENITH_16_POINT_1 * @see #getAlos72() */ - public getAlos16Point1Degrees(): DateTime | null { + public getAlos16Point1Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_16_POINT_1); } @@ -1110,7 +1114,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * detailed explanation on top of the {@link AstronomicalCalendar} documentation. * @see #ZENITH_11_POINT_5 */ - public getMisheyakir11Point5Degrees(): DateTime | null { + public getMisheyakir11Point5Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_11_POINT_5); } @@ -1128,7 +1132,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * {@link AstronomicalCalendar} documentation. * @see #ZENITH_11_DEGREES */ - public getMisheyakir11Degrees(): DateTime | null { + public getMisheyakir11Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_11_DEGREES); } @@ -1146,7 +1150,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. * @see #ZENITH_10_POINT_2 */ - public getMisheyakir10Point2Degrees(): DateTime | null { + public getMisheyakir10Point2Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_10_POINT_2); } @@ -1179,7 +1183,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #ZENITH_7_POINT_65 * @see #getMisheyakir9Point5Degrees() */ - public getMisheyakir7Point65Degrees(): DateTime | null { + public getMisheyakir7Point65Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_7_POINT_65); } @@ -1207,7 +1211,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #ZENITH_9_POINT_5 * @see #getMisheyakir7Point65Degrees() */ - public getMisheyakir9Point5Degrees(): DateTime | null { + public getMisheyakir9Point5Degrees(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_9_POINT_5); } @@ -1227,7 +1231,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis19Point8Degrees() * @see #getAlos19Point8Degrees() */ - public getSofZmanShmaMGA19Point8Degrees(): DateTime | null { + public getSofZmanShmaMGA19Point8Degrees(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos19Point8Degrees(), this.getTzais19Point8Degrees(), true); } @@ -1247,7 +1251,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis16Point1Degrees() * @see #getAlos16Point1Degrees() */ - public getSofZmanShmaMGA16Point1Degrees(): DateTime | null { + public getSofZmanShmaMGA16Point1Degrees(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos16Point1Degrees(), this.getTzais16Point1Degrees(), true); } @@ -1267,7 +1271,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis18Degrees() * @see #getAlos18Degrees() */ - public getSofZmanShmaMGA18Degrees(): DateTime | null { + public getSofZmanShmaMGA18Degrees(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos18Degrees(), this.getTzais18Degrees(), true); } @@ -1290,7 +1294,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos72() * @see #getSofZmanShmaMGA() */ - public getSofZmanShmaMGA72Minutes(): DateTime | null { + public getSofZmanShmaMGA72Minutes(): Temporal.ZonedDateTime | null { return this.getSofZmanShmaMGA(); } @@ -1313,7 +1317,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos72Zmanis() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getSofZmanShmaMGA72MinutesZmanis(): DateTime | null { + public getSofZmanShmaMGA72MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos72Zmanis(), this.getTzais72Zmanis(), true); } @@ -1334,7 +1338,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos90() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getSofZmanShmaMGA90Minutes(): DateTime | null { + public getSofZmanShmaMGA90Minutes(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos90(), this.getTzais90(), true); } @@ -1356,7 +1360,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos90Zmanis() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getSofZmanShmaMGA90MinutesZmanis(): DateTime | null { + public getSofZmanShmaMGA90MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos90Zmanis(), this.getTzais90Zmanis(), true); } @@ -1377,7 +1381,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos96() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getSofZmanShmaMGA96Minutes(): DateTime | null { + public getSofZmanShmaMGA96Minutes(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos96(), this.getTzais96(), true); } @@ -1399,7 +1403,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos96Zmanis() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getSofZmanShmaMGA96MinutesZmanis(): DateTime | null { + public getSofZmanShmaMGA96MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos96Zmanis(), this.getTzais96Zmanis(), true); } @@ -1430,7 +1434,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getSofZmanTfila2HoursBeforeChatzos() * @see #isUseAstronomicalChatzos() */ - public getSofZmanShma3HoursBeforeChatzos(): DateTime | null { + public getSofZmanShma3HoursBeforeChatzos(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getChatzos(), -180 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -1452,7 +1456,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos120() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getSofZmanShmaMGA120Minutes(): DateTime | null { + public getSofZmanShmaMGA120Minutes(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos120(), this.getTzais120(), true); } @@ -1478,7 +1482,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos16Point1Degrees() * @see #getSeaLevelSunset() */ - public getSofZmanShmaAlos16Point1ToSunset(): DateTime | null { + public getSofZmanShmaAlos16Point1ToSunset(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos16Point1Degrees(), this.getElevationAdjustedSunset()); } @@ -1501,7 +1505,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos16Point1Degrees() * @see #getTzaisGeonim7Point083Degrees() */ - public getSofZmanShmaAlos16Point1ToTzaisGeonim7Point083Degrees(): DateTime | null { + public getSofZmanShmaAlos16Point1ToTzaisGeonim7Point083Degrees(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos16Point1Degrees(), this.getTzaisGeonim7Point083Degrees()); } @@ -1521,12 +1525,12 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * the Yisrael Vehazmanim was based on a misunderstanding and should not be used. This deprecated method * will be removed pending confirmation from Rabbi Harfenes. */ - public getSofZmanShmaKolEliyahu(): DateTime | null { - const chatzos: DateTime | null = this.getFixedLocalChatzos(); + public getSofZmanShmaKolEliyahu(): Temporal.ZonedDateTime | null { + const chatzos: Temporal.ZonedDateTime | null = this.getFixedLocalChatzos(); if (chatzos === null || this.getSunrise() === null) { return null; } - const diff: number = (chatzos.valueOf() - this.getElevationAdjustedSunrise()!.valueOf()) / 2; + const diff: number = (chatzos.epochMilliseconds - this.getElevationAdjustedSunrise()!.epochMilliseconds) / 2; return ComplexZmanimCalendar.getTimeOffset(chatzos, -diff); } @@ -1548,7 +1552,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos19Point8Degrees() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getSofZmanTfilaMGA19Point8Degrees(): DateTime | null { + public getSofZmanTfilaMGA19Point8Degrees(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos19Point8Degrees(), this.getTzais19Point8Degrees(), true); } @@ -1569,7 +1573,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis16Point1Degrees() * @see #getAlos16Point1Degrees() */ - public getSofZmanTfilaMGA16Point1Degrees(): DateTime | null { + public getSofZmanTfilaMGA16Point1Degrees(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos16Point1Degrees(), this.getTzais16Point1Degrees(), true); } @@ -1590,7 +1594,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis18Degrees() * @see #getAlos18Degrees() */ - public getSofZmanTfilaMGA18Degrees(): DateTime | null { + public getSofZmanTfilaMGA18Degrees(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos18Degrees(), this.getTzais18Degrees(), true); } @@ -1612,7 +1616,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos72() * @see #getSofZmanShmaMGA() */ - public getSofZmanTfilaMGA72Minutes(): DateTime | null { + public getSofZmanTfilaMGA72Minutes(): Temporal.ZonedDateTime | null { return this.getSofZmanTfilaMGA(); } @@ -1632,7 +1636,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis72MinutesZmanis() * @see #getAlos72Zmanis() */ - public getSofZmanTfilaMGA72MinutesZmanis(): DateTime | null { + public getSofZmanTfilaMGA72MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos72Zmanis(), this.getTzais72Zmanis(), true); } @@ -1652,7 +1656,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis90Minutes() * @see #getAlos90() */ - public getSofZmanTfilaMGA90Minutes(): DateTime | null { + public getSofZmanTfilaMGA90Minutes(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos90(), this.getTzais90(), true); } @@ -1673,7 +1677,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis90MinutesZmanis() * @see #getAlos90Zmanis() */ - public getSofZmanTfilaMGA90MinutesZmanis(): DateTime | null { + public getSofZmanTfilaMGA90MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos90Zmanis(), this.getTzais90Zmanis(), true); } @@ -1693,7 +1697,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis96Minutes() * @see #getAlos96() */ - public getSofZmanTfilaMGA96Minutes(): DateTime | null { + public getSofZmanTfilaMGA96Minutes(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos96(), this.getTzais96(), true); } @@ -1714,7 +1718,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis90MinutesZmanis() * @see #getAlos90Zmanis() */ - public getSofZmanTfilaMGA96MinutesZmanis(): DateTime | null { + public getSofZmanTfilaMGA96MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos96Zmanis(), this.getTzais96Zmanis(), true); } @@ -1735,7 +1739,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis120Minutes() * @see #getAlos120() */ - public getSofZmanTfilaMGA120Minutes(): DateTime | null { + public getSofZmanTfilaMGA120Minutes(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos120(), this.getTzais120(), true); } @@ -1752,7 +1756,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see ZmanimCalendar#getChatzos() * @see #getSofZmanShma3HoursBeforeChatzos() */ - public getSofZmanTfila2HoursBeforeChatzos(): DateTime | null { + public getSofZmanTfila2HoursBeforeChatzos(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getChatzos(), -120 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -1779,7 +1783,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #isUseAstronomicalChatzos() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getMinchaGedola30Minutes(): DateTime | null { + public getMinchaGedola30Minutes(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getChatzos(), ComplexZmanimCalendar.MINUTE_MILLIS * 30); } @@ -1804,7 +1808,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getMinchaGedola72Minutes(): DateTime | null { + public getMinchaGedola72Minutes(): Temporal.ZonedDateTime | null { if (this.isUseAstronomicalChatzosForOtherZmanim()) { return this.getHalfDayBasedZman(this.getChatzos(), this.getTzais72(), 0.5); } @@ -1828,7 +1832,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * the sun may not reach low enough below the horizon for this calculation, a null will be returned. * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getMinchaGedola16Point1Degrees(): DateTime | null { + public getMinchaGedola16Point1Degrees(): Temporal.ZonedDateTime | null { if (this.isUseAstronomicalChatzosForOtherZmanim()) { return this.getHalfDayBasedZman(this.getChatzos(), this.getTzais16Point1Degrees(), 0.5); } @@ -1857,15 +1861,13 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanisAlos16Point1ToTzais3Point7() * @see #getMinchaGedolaGreaterThan30() */ - public getMinchaGedolaAhavatShalom(): DateTime | null { + public getMinchaGedolaAhavatShalom(): Temporal.ZonedDateTime | null { if (this.getChatzos() === null || this.getMinchaGedola30Minutes() === null || this.getShaahZmanisAlos16Point1ToTzais3Point7() === Long_MIN_VALUE) { return null; } - return this.getMinchaGedola30Minutes()! > ComplexZmanimCalendar.getTimeOffset(this.getChatzos(), this.getShaahZmanisAlos16Point1ToTzais3Point7() / 2)! - ? this.getMinchaGedola30Minutes() - : ComplexZmanimCalendar.getTimeOffset(this.getChatzos(), this.getShaahZmanisAlos16Point1ToTzais3Point7() / 2); + return zdtMax(this.getMinchaGedola30Minutes()!, ComplexZmanimCalendar.getTimeOffset(this.getChatzos(), this.getShaahZmanisAlos16Point1ToTzais3Point7() / 2)!); } /** @@ -1884,12 +1886,12 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getMinchaGedola30Minutes() * @see #isUseAstronomicalChatzos() */ - public getMinchaGedolaGreaterThan30(): DateTime | null { + public getMinchaGedolaGreaterThan30(): Temporal.ZonedDateTime | null { if (this.getMinchaGedola30Minutes() === null || this.getMinchaGedola() === null) { return null; } - return DateTime.max(this.getMinchaGedola30Minutes()!, this.getMinchaGedola()!); + return zdtMax(this.getMinchaGedola30Minutes()!, this.getMinchaGedola()!); } /** @@ -1909,7 +1911,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * where the sun may not reach low enough below the horizon for this calculation, a null will be * returned. See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getMinchaKetana16Point1Degrees(): DateTime | null { + public getMinchaKetana16Point1Degrees(): Temporal.ZonedDateTime | null { return this.getMinchaKetana(this.getAlos16Point1Degrees(), this.getTzais16Point1Degrees(), true); } @@ -1932,7 +1934,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getMinchaGedolaAhavatShalom() * @see #getPlagAhavatShalom() */ - public getMinchaKetanaAhavatShalom(): DateTime | null { + public getMinchaKetanaAhavatShalom(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getTzaisGeonim3Point8Degrees(), -this.getShaahZmanisAlos16Point1ToTzais3Point8() * 2.5); } @@ -1952,7 +1954,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getMinchaKetana72Minutes(): DateTime | null { + public getMinchaKetana72Minutes(): Temporal.ZonedDateTime | null { return this.getMinchaKetana(this.getAlos72(), this.getTzais72(), true); } @@ -1970,7 +1972,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos60() * @see #getTzais60() */ - public getPlagHamincha60Minutes(): DateTime | null { + public getPlagHamincha60Minutes(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos60(), this.getTzais60(), true); } @@ -1993,7 +1995,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see #getShaahZmanis72Minutes() */ - public getPlagHamincha72Minutes(): DateTime | null { + public getPlagHamincha72Minutes(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos72(), this.getTzais72(), true); } @@ -2016,7 +2018,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see #getShaahZmanis90Minutes() */ - public getPlagHamincha90Minutes(): DateTime | null { + public getPlagHamincha90Minutes(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos90(), this.getTzais90(), true); } @@ -2038,7 +2040,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * {@link AstronomicalCalendar} documentation. * @see #getShaahZmanis96Minutes() */ - public getPlagHamincha96Minutes(): DateTime | null { + public getPlagHamincha96Minutes(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos96(), this.getTzais96(), true); } @@ -2058,7 +2060,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getPlagHamincha96MinutesZmanis(): DateTime | null { + public getPlagHamincha96MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos96Zmanis(), this.getTzais96Zmanis(), true); } @@ -2078,7 +2080,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getPlagHamincha90MinutesZmanis(): DateTime | null { + public getPlagHamincha90MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos90Zmanis(), this.getTzais90Zmanis(), true); } @@ -2098,7 +2100,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getPlagHamincha72MinutesZmanis(): DateTime | null { + public getPlagHamincha72MinutesZmanis(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos72Zmanis(), this.getTzais72Zmanis(), true); } @@ -2122,7 +2124,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see #getShaahZmanis16Point1Degrees() */ - public getPlagHamincha16Point1Degrees(): DateTime | null { + public getPlagHamincha16Point1Degrees(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos16Point1Degrees(), this.getTzais16Point1Degrees(), true); } @@ -2146,7 +2148,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see #getShaahZmanis19Point8Degrees() */ - public getPlagHamincha19Point8Degrees(): DateTime | null { + public getPlagHamincha19Point8Degrees(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos19Point8Degrees(), this.getTzais19Point8Degrees(), true); } @@ -2171,7 +2173,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis26Degrees() * @see #getPlagHamincha120Minutes() */ - public getPlagHamincha26Degrees(): DateTime | null { + public getPlagHamincha26Degrees(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos26Degrees(), this.getTzais26Degrees(), true); } @@ -2195,7 +2197,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see #getShaahZmanis18Degrees() */ - public getPlagHamincha18Degrees(): DateTime | null { + public getPlagHamincha18Degrees(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos18Degrees(), this.getTzais18Degrees(), true); } @@ -2218,7 +2220,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos16Point1Degrees() * @see #getSeaLevelSunset() */ - public getPlagAlosToSunset(): DateTime | null { + public getPlagAlosToSunset(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos16Point1Degrees(), this.getElevationAdjustedSunset()); } @@ -2240,7 +2242,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos16Point1Degrees() * @see #getTzaisGeonim7Point083Degrees() */ - public getPlagAlos16Point1ToTzaisGeonim7Point083Degrees(): DateTime | null { + public getPlagAlos16Point1ToTzaisGeonim7Point083Degrees(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos16Point1Degrees(), this.getTzaisGeonim7Point083Degrees()); } @@ -2261,7 +2263,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getMinchaGedolaAhavatShalom() * @see #getMinchaKetanaAhavatShalom() */ - public getPlagAhavatShalom(): DateTime | null { + public getPlagAhavatShalom(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getTzaisGeonim3Point8Degrees(), -this.getShaahZmanisAlos16Point1ToTzais3Point8() * 1.25); } @@ -2289,7 +2291,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #ZENITH_13_POINT_24 * @see #getBainHashmashosRT58Point5Minutes() */ - public getBainHashmashosRT13Point24Degrees(): DateTime | null { + public getBainHashmashosRT13Point24Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_13_POINT_24); } @@ -2297,7 +2299,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * Misspelled method name that should be {@link #getBainHashmashosRT13Point24Degrees()}. * @return the properly spelled version. */ - public getBainHasmashosRT13Point24Degrees(): DateTime | null { + public getBainHasmashosRT13Point24Degrees(): Temporal.ZonedDateTime | null { return this.getBainHashmashosRT13Point24Degrees(); } @@ -2313,7 +2315,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * {@link AstronomicalCalendar} documentation. * */ - public getBainHashmashosRT58Point5Minutes(): DateTime | null { + public getBainHashmashosRT58Point5Minutes(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), 58.5 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -2322,7 +2324,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosRT58Point5Minutes(): DateTime | null { + public getBainHasmashosRT58Point5Minutes(): Temporal.ZonedDateTime | null { return this.getBainHashmashosRT58Point5Minutes(); } @@ -2338,7 +2340,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * {@link AstronomicalCalendar} documentation. * @see #getTzaisGeonim7Point083Degrees() */ - public getBainHashmashosRT13Point5MinutesBefore7Point083Degrees(): DateTime | null { + public getBainHashmashosRT13Point5MinutesBefore7Point083Degrees(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_7_POINT_083), -13.5 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -2347,7 +2349,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosRT13Point5MinutesBefore7Point083Degrees(): DateTime | null { + public getBainHasmashosRT13Point5MinutesBefore7Point083Degrees(): Temporal.ZonedDateTime | null { return this.getBainHashmashosRT13Point5MinutesBefore7Point083Degrees(); } @@ -2363,14 +2365,14 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * calculation, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getBainHashmashosRT2Stars(): DateTime | null { - const alos19Point8: DateTime | null = this.getAlos19Point8Degrees(); - const sunrise: DateTime | null = this.getElevationAdjustedSunrise(); + public getBainHashmashosRT2Stars(): Temporal.ZonedDateTime | null { + const alos19Point8: Temporal.ZonedDateTime | null = this.getAlos19Point8Degrees(); + const sunrise: Temporal.ZonedDateTime | null = this.getElevationAdjustedSunrise(); if (alos19Point8 === null || sunrise === null) { return null; } - return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), (sunrise.valueOf() - alos19Point8.valueOf()) * (5 / 18)); + return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), (sunrise.epochMilliseconds - alos19Point8.epochMilliseconds) * (5 / 18)); } /** @@ -2378,7 +2380,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosRT2Stars(): DateTime | null { + public getBainHasmashosRT2Stars(): Temporal.ZonedDateTime | null { return this.getBainHashmashosRT2Stars(); } @@ -2395,7 +2397,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * {@link AstronomicalCalendar} documentation. * @see #getBainHashmashosYereim3Point05Degrees() */ - public getBainHashmashosYereim18Minutes(): DateTime | null { + public getBainHashmashosYereim18Minutes(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), -18 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -2404,7 +2406,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosYereim18Minutes(): DateTime | null { + public getBainHasmashosYereim18Minutes(): Temporal.ZonedDateTime | null { return this.getBainHashmashosYereim18Minutes(); } @@ -2438,7 +2440,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getBainHashmashosYereim2Point8Degrees() * @see #getBainHashmashosYereim2Point1Degrees() */ - public getBainHashmashosYereim3Point05Degrees(): DateTime | null { + public getBainHashmashosYereim3Point05Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_MINUS_3_POINT_05); } @@ -2447,7 +2449,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosYereim3Point05Degrees(): DateTime | null { + public getBainHasmashosYereim3Point05Degrees(): Temporal.ZonedDateTime | null { return this.getBainHashmashosYereim3Point05Degrees(); } @@ -2466,7 +2468,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see #getBainHashmashosYereim2Point8Degrees() */ - public getBainHashmashosYereim16Point875Minutes(): DateTime | null { + public getBainHashmashosYereim16Point875Minutes(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), -16.875 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -2475,7 +2477,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosYereim16Point875Minutes(): DateTime | null { + public getBainHasmashosYereim16Point875Minutes(): Temporal.ZonedDateTime | null { return this.getBainHashmashosYereim16Point875Minutes(); } @@ -2500,7 +2502,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getBainHashmashosYereim3Point05Degrees() * @see #getBainHashmashosYereim2Point1Degrees() */ - public getBainHashmashosYereim2Point8Degrees(): DateTime | null { + public getBainHashmashosYereim2Point8Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_MINUS_2_POINT_8); } @@ -2509,7 +2511,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosYereim2Point8Degrees(): DateTime | null { + public getBainHasmashosYereim2Point8Degrees(): Temporal.ZonedDateTime | null { return this.getBainHashmashosYereim2Point8Degrees(); } @@ -2527,7 +2529,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see #getBainHashmashosYereim2Point1Degrees() */ - public getBainHashmashosYereim13Point5Minutes(): DateTime | null { + public getBainHashmashosYereim13Point5Minutes(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), -13.5 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -2536,7 +2538,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosYereim13Point5Minutes(): DateTime | null { + public getBainHasmashosYereim13Point5Minutes(): Temporal.ZonedDateTime | null { return this.getBainHashmashosYereim13Point5Minutes(); } @@ -2561,7 +2563,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getBainHashmashosYereim2Point8Degrees() * @see #getBainHashmashosYereim3Point05Degrees() */ - public getBainHashmashosYereim2Point1Degrees(): DateTime | null { + public getBainHashmashosYereim2Point1Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_MINUS_2_POINT_1); } @@ -2570,7 +2572,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the properly spelled version. * @deprecated */ - public getBainHasmashosYereim2Point1Degrees(): DateTime | null { + public getBainHasmashosYereim2Point1Degrees(): Temporal.ZonedDateTime | null { return this.getBainHashmashosYereim2Point1Degrees(); } @@ -2581,7 +2583,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the Date representing the time when the sun is 3.7° below sea level. * @see #ZENITH_3_POINT_7 */ - public getTzaisGeonim3Point7Degrees(): DateTime | null { + public getTzaisGeonim3Point7Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_3_POINT_7); } @@ -2592,7 +2594,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the Date representing the time when the sun is 3.8° below sea level. * @see #ZENITH_3_POINT_8 */ - public getTzaisGeonim3Point8Degrees(): DateTime | null { + public getTzaisGeonim3Point8Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_3_POINT_8); } @@ -2607,7 +2609,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #ZENITH_5_POINT_95 */ - public getTzaisGeonim5Point95Degrees(): DateTime | null { + public getTzaisGeonim5Point95Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_5_POINT_95); } @@ -2627,7 +2629,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * equinox / equilux in Jerusalem. * @see #ZENITH_3_POINT_65 */ - public getTzaisGeonim3Point65Degrees(): DateTime | null { + public getTzaisGeonim3Point65Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_3_POINT_65); } @@ -2648,7 +2650,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * equinox / equilux in Jerusalem. * @see #ZENITH_3_POINT_676 */ - public getTzaisGeonim3Point676Degrees(): DateTime | null { + public getTzaisGeonim3Point676Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_3_POINT_676); } @@ -2665,7 +2667,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #ZENITH_4_POINT_61 */ - public getTzaisGeonim4Point61Degrees(): DateTime | null { + public getTzaisGeonim4Point61Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_4_POINT_61); } @@ -2682,7 +2684,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #ZENITH_4_POINT_37 */ - public getTzaisGeonim4Point37Degrees(): DateTime | null { + public getTzaisGeonim4Point37Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_4_POINT_37); } @@ -2701,7 +2703,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #ZENITH_5_POINT_88 */ - public getTzaisGeonim5Point88Degrees(): DateTime | null { + public getTzaisGeonim5Point88Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_5_POINT_88); } @@ -2719,7 +2721,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #ZENITH_4_POINT_8 */ - public getTzaisGeonim4Point8Degrees(): DateTime | null { + public getTzaisGeonim4Point8Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_4_POINT_8); } @@ -2739,7 +2741,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * {@link AstronomicalCalendar} documentation. * @see #ZENITH_6_POINT_45 */ - public getTzaisGeonim6Point45Degrees(): DateTime | null { + public getTzaisGeonim6Point45Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_6_POINT_45); } @@ -2768,7 +2770,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * {@link AstronomicalCalendar} documentation. * @see #ZENITH_7_POINT_083 */ - public getTzaisGeonim7Point083Degrees(): DateTime | null { + public getTzaisGeonim7Point083Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_7_POINT_083); } @@ -2797,7 +2799,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * {@link AstronomicalCalendar} documentation. * @see #ZENITH_7_POINT_67 */ - public getTzaisGeonim7Point67Degrees(): DateTime | null { + public getTzaisGeonim7Point67Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_7_POINT_67); } @@ -2812,7 +2814,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #ZENITH_8_POINT_5 */ - public getTzaisGeonim8Point5Degrees(): DateTime | null { + public getTzaisGeonim8Point5Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_8_POINT_5); } @@ -2827,7 +2829,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar} * documentation. */ - public getTzaisGeonim9Point3Degrees(): DateTime | null { + public getTzaisGeonim9Point3Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_9_POINT_3); } @@ -2850,7 +2852,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see #getTzais60() */ - public getTzaisGeonim9Point75Degrees(): DateTime | null { + public getTzaisGeonim9Point75Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_9_POINT_75); } @@ -2872,7 +2874,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getPlagHamincha60Minutes() * @see #getShaahZmanis60Minutes() */ - public getTzais60(): DateTime | null { + public getTzais60(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), 60 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -2892,7 +2894,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAteretTorahSunsetOffset() * @see #setAteretTorahSunsetOffset(double) */ - public getTzaisAteretTorah(): DateTime | null { + public getTzaisAteretTorah(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), this.getAteretTorahSunsetOffset() * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -2943,7 +2945,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #setAteretTorahSunsetOffset(double) * @see #getShaahZmanisAteretTorah() */ - public getSofZmanShmaAteretTorah(): DateTime | null { + public getSofZmanShmaAteretTorah(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos72Zmanis(), this.getTzaisAteretTorah()); } @@ -2966,7 +2968,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanisAteretTorah() * @see #setAteretTorahSunsetOffset(double) */ - public getSofZmanTfilaAteretTorah(): DateTime | null { + public getSofZmanTfilaAteretTorah(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos72Zmanis(), this.getTzaisAteretTorah()); } @@ -2978,7 +2980,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * the sun does not rise, and one where it does not set, a null will be returned. See detailed * explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSofZmanTfilahAteretTorah(): DateTime | null { + public getSofZmanTfilahAteretTorah(): Temporal.ZonedDateTime | null { return this.getSofZmanTfilaAteretTorah(); } @@ -3006,7 +3008,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getMinchaGedolaAteretTorah(): DateTime | null { + public getMinchaGedolaAteretTorah(): Temporal.ZonedDateTime | null { return this.getMinchaGedola(this.getAlos72Zmanis(), this.getTzaisAteretTorah()); } @@ -3033,7 +3035,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getMinchaKetanaAteretTorah(): DateTime | null { + public getMinchaKetanaAteretTorah(): Temporal.ZonedDateTime | null { return this.getMinchaKetana(this.getAlos72Zmanis(), this.getTzaisAteretTorah()); } @@ -3055,7 +3057,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #setAteretTorahSunsetOffset(double) * @see #getAteretTorahSunsetOffset() */ - public getPlagHaminchaAteretTorah(): DateTime | null { + public getPlagHaminchaAteretTorah(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getAlos72Zmanis(), this.getTzaisAteretTorah()); } @@ -3075,7 +3077,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #getAlos72Zmanis() */ - public getTzais72Zmanis(): DateTime | null { + public getTzais72Zmanis(): Temporal.ZonedDateTime | null { return this.getZmanisBasedOffset(1.2); } @@ -3092,7 +3094,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * tell if it is sunrise or sunset based. See detailed explanation on top of the {@link AstronomicalCalendar} * documentation. */ - private getZmanisBasedOffset(hours: number): DateTime | null { + private getZmanisBasedOffset(hours: number): Temporal.ZonedDateTime | null { const shaahZmanis: number = this.getShaahZmanisGra(); if (shaahZmanis === Long_MIN_VALUE || hours === 0) { return null; @@ -3114,7 +3116,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #getAlos90Zmanis() */ - public getTzais90Zmanis(): DateTime | null { + public getTzais90Zmanis(): Temporal.ZonedDateTime | null { return this.getZmanisBasedOffset(1.5); } @@ -3128,7 +3130,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #getAlos96Zmanis() */ - public getTzais96Zmanis(): DateTime | null { + public getTzais96Zmanis(): Temporal.ZonedDateTime | null { return this.getZmanisBasedOffset(1.6); } @@ -3148,7 +3150,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTzais19Point8Degrees() * @see #getAlos90() */ - public getTzais90(): DateTime | null { + public getTzais90(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), 90 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -3174,7 +3176,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTzais26Degrees() * @see #getAlos120() */ - public getTzais120(): DateTime | null { + public getTzais120(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), 120 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -3197,7 +3199,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTzais120() * @see #getTzais26Degrees() */ - public getTzais120Zmanis(): DateTime | null { + public getTzais120Zmanis(): Temporal.ZonedDateTime | null { return this.getZmanisBasedOffset(2); } @@ -3221,7 +3223,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTzais72() * @see #getAlos16Point1Degrees() for more information on this calculation. */ - public getTzais16Point1Degrees(): DateTime | null { + public getTzais16Point1Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_16_POINT_1); } @@ -3243,7 +3245,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTzais120() * @see #getAlos26Degrees() */ - public getTzais26Degrees(): DateTime | null { + public getTzais26Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_26_DEGREES); } @@ -3256,7 +3258,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * detailed explanation on top of the {@link AstronomicalCalendar} documentation. * @see #getAlos18Degrees() */ - public getTzais18Degrees(): DateTime | null { + public getTzais18Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ASTRONOMICAL_ZENITH); } @@ -3270,7 +3272,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTzais90() * @see #getAlos19Point8Degrees() */ - public getTzais19Point8Degrees(): DateTime | null { + public getTzais19Point8Degrees(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_19_POINT_8); } @@ -3284,7 +3286,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * documentation. * @see #getAlos96() */ - public getTzais96(): DateTime | null { + public getTzais96(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), 96 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -3306,7 +3308,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the Date representing the local chatzos * @see GeoLocation#getLocalMeanTimeOffset() */ - public getFixedLocalChatzos(): DateTime | null { + public getFixedLocalChatzos(): Temporal.ZonedDateTime | null { return this.getLocalMeanTime(12); } @@ -3336,7 +3338,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * #getSofZmanShma3HoursBeforeChatzos()} should be used to calculate sof zman Tfila using 3 fixed * clock hours. This will likely be removed in a future version. */ - public getSofZmanShmaFixedLocal(): DateTime | null { + public getSofZmanShmaFixedLocal(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getFixedLocalChatzos(), -180 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -3362,7 +3364,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * #getSofZmanTfila2HoursBeforeChatzos()} should be used to calculate sof zman Tfila using using 2 fixed * clock hours. This will likely be removed in a future version. */ - public getSofZmanTfilaFixedLocal(): DateTime | null { + public getSofZmanTfilaFixedLocal(): Temporal.ZonedDateTime | null { return ComplexZmanimCalendar.getTimeOffset(this.getFixedLocalChatzos(), -120 * ComplexZmanimCalendar.MINUTE_MILLIS); } @@ -3386,9 +3388,9 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @return the molad based time. If the zman does not occur during the current date, null will be * returned. */ - private getMoladBasedTime(moladBasedTime: DateTime, alos: DateTime | null, tzais: DateTime | null, techila: boolean): DateTime | null { - const lastMidnight: DateTime = this.getMidnightLastNight(); - const midnightTonight: DateTime = this.getMidnightTonight(); + private getMoladBasedTime(moladBasedTime: Temporal.ZonedDateTime, alos: Temporal.ZonedDateTime | null, tzais: Temporal.ZonedDateTime | null, techila: boolean): Temporal.ZonedDateTime | null { + const lastMidnight: Temporal.ZonedDateTime = this.getMidnightLastNight(); + const midnightTonight: Temporal.ZonedDateTime = this.getMidnightTonight(); if (!((moladBasedTime < lastMidnight) || (moladBasedTime > midnightTonight))) { if (alos !== null || tzais !== null) { @@ -3424,7 +3426,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getSofZmanKidushLevana15Days() * @see JewishCalendar#getSofZmanKidushLevanaBetweenMoldos() */ - public getSofZmanKidushLevanaBetweenMoldos(alos: DateTime | null = null, tzais: DateTime | null = null): DateTime | null { + public getSofZmanKidushLevanaBetweenMoldos(alos: Temporal.ZonedDateTime | null = null, tzais: Temporal.ZonedDateTime | null = null): Temporal.ZonedDateTime | null { const jewishCalendar: JewishCalendar = new JewishCalendar(this.getDate()); // Do not calculate for impossible dates, but account for extreme cases. In the extreme case of Rapa Iti in French @@ -3481,7 +3483,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see JewishCalendar#getSofZmanKidushLevana15Days() * */ - public getSofZmanKidushLevana15Days(alos: DateTime | null = null, tzais: DateTime | null = null): DateTime | null { + public getSofZmanKidushLevana15Days(alos: Temporal.ZonedDateTime | null = null, tzais: Temporal.ZonedDateTime | null = null): Temporal.ZonedDateTime | null { const jewishCalendar: JewishCalendar = new JewishCalendar(this.getDate()); // Do not calculate for impossible dates, but account for extreme cases. In the extreme case of Rapa Iti in @@ -3542,7 +3544,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTchilasZmanKidushLevana7Days(Date, Date) * @see JewishCalendar#getTchilasZmanKidushLevana3Days() */ - public getTchilasZmanKidushLevana3Days(alos: DateTime | null = null, tzais: DateTime | null = null): DateTime | null { + public getTchilasZmanKidushLevana3Days(alos: Temporal.ZonedDateTime | null = null, tzais: Temporal.ZonedDateTime | null = null): Temporal.ZonedDateTime | null { const jewishCalendar: JewishCalendar = new JewishCalendar(); jewishCalendar.setGregorianDate(this.getDate().year, this.getDate().month - 1, this.getDate().day); @@ -3555,7 +3557,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { return null; } - let zman: DateTime | null = this.getMoladBasedTime(jewishCalendar.getTchilasZmanKidushLevana3Days(), alos, tzais, true); + let zman: Temporal.ZonedDateTime | null = this.getMoladBasedTime(jewishCalendar.getTchilasZmanKidushLevana3Days(), alos, tzais, true); // Get the following month's zman kiddush Levana for the extreme case of Rapa Iti in French Polynesia on Dec 2027 when // kiddush Levana can be said on Rosh Chodesh (the evening of the 30th). See Rabbi Dovid Heber's Shaarei Zmanim chapter 4 (page 32) @@ -3608,7 +3610,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getTchilasZmanKidushLevana7Days(Date, Date) * @see JewishCalendar#getMoladAsDate() */ - public getZmanMolad(): DateTime | null { + public getZmanMolad(): Temporal.ZonedDateTime | null { const jewishCalendar: JewishCalendar = new JewishCalendar(); jewishCalendar.setGregorianDate(this.getDate().year, this.getDate().month - 1, this.getDate().day); @@ -3619,7 +3621,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { return null; } - let molad: DateTime | null = this.getMoladBasedTime(jewishCalendar.getMoladAsDate(), null, null, true); + let molad: Temporal.ZonedDateTime | null = this.getMoladBasedTime(jewishCalendar.getMoladAsDate(), null, null, true); // deal with molad that happens on the end of the previous month if (molad === null && jewishCalendar.getJewishDayOfMonth() > 26) { @@ -3634,13 +3636,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getMoladBasedTime(Date, Date, Date, boolean) * @return previous midnight */ - private getMidnightLastNight(): DateTime { + private getMidnightLastNight(): Temporal.ZonedDateTime { // reset hour, minutes, seconds and millis - return this.getDate().set({ - hour: 0, - minute: 0, - second: 0, - millisecond: 0, + return this.getDate().toZonedDateTime({ + timeZone: this.getGeoLocation().getTimeZone(), }); } @@ -3649,15 +3648,12 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getMoladBasedTime(Date, Date, Date, boolean) * @return following midnight */ - private getMidnightTonight(): DateTime { + private getMidnightTonight(): Temporal.ZonedDateTime { return this.getDate() - .plus({ days: 1 }) - .set({ - hour: 0, - minute: 0, - second: 0, - millisecond: 0, - }); + .add({ days: 1 }) + .toZonedDateTime({ + timeZone: this.getGeoLocation().getTimeZone(), + }); } /** @@ -3671,7 +3667,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see JewishCalendar#getTchilasZmanKidushLevana7Days() * @see #getTchilasZmanKidushLevana3Days() */ - public getTchilasZmanKidushLevana7Days(alos: DateTime | null = null, tzais: DateTime | null = null): DateTime | null { + public getTchilasZmanKidushLevana7Days(alos: Temporal.ZonedDateTime | null = null, tzais: Temporal.ZonedDateTime | null = null): Temporal.ZonedDateTime | null { const jewishCalendar: JewishCalendar = new JewishCalendar(this.getDate()); // Optimize to not calculate for impossible dates, but account for extreme cases. Tchilas zman kiddush Levana 7 days for @@ -3721,10 +3717,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. * @todo enable the calendar check for erev pesach and return null in all other cases. */ - public getSofZmanAchilasChametzGRA(): DateTime | null { + public getSofZmanAchilasChametzGRA(): Temporal.ZonedDateTime | null { /* const jewishCalendar: JewishCalendar = new JewishCalendar(); - const now: DateTime = DateTime.local(); + const now: Temporal.ZonedDateTime = Temporal.Now.zonedDateTimeISO(); jewishCalendar.setGregorianDate(now.year, now.month, now.day); if (jewishCalendar.getJewishMonth() === JewishCalendar.NISSAN && jewishCalendar.getJewishDayOfMonth() === 14) { return this.getSofZmanTfilaGRA(); @@ -3754,10 +3750,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos72() * @see #getSofZmanTfilaMGA72Minutes() */ - public getSofZmanAchilasChametzMGA72Minutes(): DateTime | null { + public getSofZmanAchilasChametzMGA72Minutes(): Temporal.ZonedDateTime | null { /* const jewishCalendar: JewishCalendar = new JewishCalendar(); - const now: DateTime = DateTime.local(); + const now: Temporal.ZonedDateTime = Temporal.Now.zonedDateTimeISO(); jewishCalendar.setGregorianDate(now.year, now.month, now.day); if (jewishCalendar.getJewishMonth() === JewishCalendar.NISSAN && jewishCalendar.getJewishDayOfMonth() === 14) { return this.getSofZmanTfilaMGA72Minutes(); @@ -3787,7 +3783,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos72Zmanis() * @see #getSofZmanTfilaMGA72MinutesZmanis() */ - public getSofZmanAchilasChametzMGA72MinutesZmanis(): DateTime | null { + public getSofZmanAchilasChametzMGA72MinutesZmanis(): Temporal.ZonedDateTime | null { const jewishCalendar = new JewishCalendar(); jewishCalendar.setGregorianDate(this.getDate().year, this.getDate().month - 1, this.getDate().day); @@ -3816,10 +3812,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getAlos16Point1Degrees() * @see #getSofZmanTfilaMGA16Point1Degrees() */ - public getSofZmanAchilasChametzMGA16Point1Degrees(): DateTime | null { + public getSofZmanAchilasChametzMGA16Point1Degrees(): Temporal.ZonedDateTime | null { /* const jewishCalendar: JewishCalendar = new JewishCalendar(); - const now: DateTime = DateTime.local(); + const now: Temporal.ZonedDateTime = Temporal.Now.zonedDateTimeISO(); jewishCalendar.setGregorianDate(now.year, now.month, now.day); if (jewishCalendar.getJewishMonth() === JewishCalendar.NISSAN && jewishCalendar.getJewishDayOfMonth() === 14) { return this.getSofZmanTfilaMGA16Point1Degrees(); @@ -3844,10 +3840,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * one day a year where the sun does not rise, and one where it does not set, a null will be * returned. See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSofZmanBiurChametzGRA(): DateTime | null { + public getSofZmanBiurChametzGRA(): Temporal.ZonedDateTime | null { /* const jewishCalendar: JewishCalendar = new JewishCalendar(); - const now: DateTime = DateTime.local(); + const now: Temporal.ZonedDateTime = Temporal.Now.zonedDateTimeISO(); jewishCalendar.setGregorianDate(now.year, now.month, now.day); if (jewishCalendar.getJewishMonth() === JewishCalendar.NISSAN && jewishCalendar.getJewishDayOfMonth() === 14) { return ComplexZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunrise(), this.getShaahZmanisGra() * 5); @@ -3875,10 +3871,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanisMGA() * @see #getAlos72() */ - public getSofZmanBiurChametzMGA72Minutes(): DateTime | null { + public getSofZmanBiurChametzMGA72Minutes(): Temporal.ZonedDateTime | null { /* const jewishCalendar: JewishCalendar = new JewishCalendar(); - const now: DateTime = DateTime.local(); + const now: Temporal.ZonedDateTime = Temporal.Now.zonedDateTimeISO(); jewishCalendar.setGregorianDate(now.year, now.month, now.day); if (jewishCalendar.getJewishMonth() === JewishCalendar.NISSAN && jewishCalendar.getJewishDayOfMonth() === 14) { return ComplexZmanimCalendar.getTimeOffset(this.getAlos72(), this.getShaahZmanisMGA() * 5); @@ -3906,7 +3902,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis72MinutesZmanis() * @see #getAlos72Zmanis() */ - public getSofZmanBiurChametzMGA72MinutesZmanis(): DateTime | null { + public getSofZmanBiurChametzMGA72MinutesZmanis(): Temporal.ZonedDateTime | null { const jewishCalendar = new JewishCalendar(); jewishCalendar.setGregorianDate(this.getDate().year, this.getDate().month - 1, this.getDate().day); @@ -3936,10 +3932,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getShaahZmanis16Point1Degrees() * @see #getAlos16Point1Degrees() */ - public getSofZmanBiurChametzMGA16Point1Degrees(): DateTime | null { + public getSofZmanBiurChametzMGA16Point1Degrees(): Temporal.ZonedDateTime | null { /* const jewishCalendar: JewishCalendar = new JewishCalendar(); - const now: DateTime = DateTime.local(); + const now: Temporal.ZonedDateTime = Temporal.Now.zonedDateTimeISO(); jewishCalendar.setGregorianDate(now.year, now.month, now.day); if (jewishCalendar.getJewishMonth() === JewishCalendar.NISSAN && jewishCalendar.getJewishDayOfMonth() === 14) { return ComplexZmanimCalendar.getTimeOffset(this.getAlos16Point1Degrees(), this.getShaahZmanis16Point1Degrees() * 5); @@ -3984,7 +3980,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getSunsetBaalHatanya() * @see #ZENITH_1_POINT_583 */ - private getSunriseBaalHatanya(): DateTime | null { + private getSunriseBaalHatanya(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_1_POINT_583); } @@ -4015,7 +4011,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getSunriseBaalHatanya() * @see #ZENITH_1_POINT_583 */ - private getSunsetBaalHatanya(): DateTime | null { + private getSunsetBaalHatanya(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_1_POINT_583); } @@ -4060,7 +4056,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * low enough below the horizon for this calculation, a null will be returned. See detailed * explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getAlosBaalHatanya(): DateTime | null { + public getAlosBaalHatanya(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ComplexZmanimCalendar.ZENITH_16_POINT_9); } @@ -4078,7 +4074,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * not rise, and one where it does not set, a null will be returned. See detailed explanation on * top of the {@link AstronomicalCalendar} documentation. */ - public getSofZmanShmaBaalHatanya(): DateTime | null { + public getSofZmanShmaBaalHatanya(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getSunriseBaalHatanya(), this.getSunsetBaalHatanya(), true); } @@ -4095,7 +4091,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getSofZmanTfilaBaalHatanya(): DateTime | null { + public getSofZmanTfilaBaalHatanya(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getSunriseBaalHatanya(), this.getSunsetBaalHatanya(), true); } @@ -4113,10 +4109,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * day a year where the sun does not rise, and one where it does not set, a null will be returned. * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSofZmanAchilasChametzBaalHatanya(): DateTime | null { + public getSofZmanAchilasChametzBaalHatanya(): Temporal.ZonedDateTime | null { /* const jewishCalendar: JewishCalendar = new JewishCalendar(); - const now: DateTime = DateTime.local(); + const now: Temporal.ZonedDateTime = Temporal.Now.zonedDateTimeISO(); jewishCalendar.setGregorianDate(now.year, now.month, now.day); if (jewishCalendar.getJewishMonth() === JewishCalendar.NISSAN && jewishCalendar.getJewishDayOfMonth() === 14) { return this.getSofZmanTfilaBaalHatanya(); @@ -4139,10 +4135,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * least one day a year where the sun does not rise, and one where it does not set, a null will be * returned. See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSofZmanBiurChametzBaalHatanya(): DateTime | null { + public getSofZmanBiurChametzBaalHatanya(): Temporal.ZonedDateTime | null { /* const jewishCalendar: JewishCalendar = new JewishCalendar(); - const now: DateTime = DateTime.local(); + const now: Temporal.ZonedDateTime = Temporal.Now.zonedDateTimeISO(); jewishCalendar.setGregorianDate(now.year, now.month, now.day); if (jewishCalendar.getJewishMonth() === JewishCalendar.NISSAN && jewishCalendar.getJewishDayOfMonth() === 14) { return ComplexZmanimCalendar.getTimeOffset(this.getSunriseBaalHatanya(), this.getShaahZmanisBaalHatanya() * 5); @@ -4175,7 +4171,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * and one where it does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getMinchaGedolaBaalHatanya(): DateTime | null { + public getMinchaGedolaBaalHatanya(): Temporal.ZonedDateTime | null { return this.getMinchaGedola(this.getSunriseBaalHatanya(), this.getSunsetBaalHatanya(), true); } @@ -4193,12 +4189,12 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * where the sun does not rise, and one where it does not set, a null will be returned. See detailed * explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getMinchaGedolaBaalHatanyaGreaterThan30(): DateTime | null { + public getMinchaGedolaBaalHatanyaGreaterThan30(): Temporal.ZonedDateTime | null { if (this.getMinchaGedola30Minutes() === null || this.getMinchaGedolaBaalHatanya() === null) { return null; } - return DateTime.max(this.getMinchaGedola30Minutes()!, this.getMinchaGedolaBaalHatanya()!); + return zdtMax(this.getMinchaGedola30Minutes()!, this.getMinchaGedolaBaalHatanya()!); } /** @@ -4218,7 +4214,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getMinchaKetanaBaalHatanya(): DateTime | null { + public getMinchaKetanaBaalHatanya(): Temporal.ZonedDateTime | null { return this.getMinchaKetana(this.getSunriseBaalHatanya(), this.getSunsetBaalHatanya(), true); } @@ -4234,7 +4230,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getPlagHaminchaBaalHatanya(): DateTime | null { + public getPlagHaminchaBaalHatanya(): Temporal.ZonedDateTime | null { return this.getPlagHamincha(this.getSunriseBaalHatanya(), this.getSunsetBaalHatanya(), true); } @@ -4249,7 +4245,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * explanation on top of the {@link AstronomicalCalendar} documentation. * @see #ZENITH_6_DEGREES */ - public getTzaisBaalHatanya(): DateTime | null { + public getTzaisBaalHatanya(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ComplexZmanimCalendar.ZENITH_6_DEGREES); } @@ -4279,7 +4275,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * * @see ComplexZmanimCalendar#getFixedLocalChatzos() */ - public getFixedLocalChatzosBasedZmanim(startOfHalfDay: DateTime | null, endOfHalfDay: DateTime | null, hours: number): DateTime | null { + public getFixedLocalChatzosBasedZmanim(startOfHalfDay: Temporal.ZonedDateTime | null, endOfHalfDay: Temporal.ZonedDateTime | null, hours: number): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(startOfHalfDay, endOfHalfDay, hours); } @@ -4299,7 +4295,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getFixedLocalChatzos() * @see ZmanimCalendar#getHalfDayBasedZman(Date, Date, double) */ - public getSofZmanShmaMGA18DegreesToFixedLocalChatzos(): DateTime | null { + public getSofZmanShmaMGA18DegreesToFixedLocalChatzos(): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(this.getAlos18Degrees(), this.getFixedLocalChatzos(), 3); } @@ -4319,7 +4315,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getFixedLocalChatzos() * @see #getHalfDayBasedZman(Date, Date, double) */ - public getSofZmanShmaMGA16Point1DegreesToFixedLocalChatzos(): DateTime | null { + public getSofZmanShmaMGA16Point1DegreesToFixedLocalChatzos(): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(this.getAlos16Point1Degrees(), this.getFixedLocalChatzos(), 3); } @@ -4340,7 +4336,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getFixedLocalChatzos() * @see #getHalfDayBasedZman(Date, Date, double) */ - public getSofZmanShmaMGA90MinutesToFixedLocalChatzos(): DateTime | null { + public getSofZmanShmaMGA90MinutesToFixedLocalChatzos(): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(this.getAlos90(), this.getFixedLocalChatzos(), 3); } @@ -4361,7 +4357,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getFixedLocalChatzos() * @see #getHalfDayBasedZman(Date, Date, double) */ - public getSofZmanShmaMGA72MinutesToFixedLocalChatzos(): DateTime | null { + public getSofZmanShmaMGA72MinutesToFixedLocalChatzos(): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(this.getAlos72(), this.getFixedLocalChatzos(), 3); } @@ -4381,7 +4377,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getFixedLocalChatzos() * @see #getHalfDayBasedZman(Date, Date, double) */ - public getSofZmanShmaGRASunriseToFixedLocalChatzos(): DateTime | null { + public getSofZmanShmaGRASunriseToFixedLocalChatzos(): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(this.getElevationAdjustedSunrise(), this.getFixedLocalChatzos(), 3); } @@ -4401,7 +4397,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getFixedLocalChatzos() * @see #getHalfDayBasedZman(Date, Date, double) */ - public getSofZmanTfilaGRASunriseToFixedLocalChatzos(): DateTime | null { + public getSofZmanTfilaGRASunriseToFixedLocalChatzos(): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(this.getElevationAdjustedSunrise(), this.getFixedLocalChatzos(), 4); } @@ -4420,7 +4416,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getFixedLocalChatzos() * @see #getMinchaKetanaGRAFixedLocalChatzosToSunset */ - public getMinchaGedolaGRAFixedLocalChatzos30Minutes(): DateTime | null { + public getMinchaGedolaGRAFixedLocalChatzos30Minutes(): Temporal.ZonedDateTime | null { return ZmanimCalendar.getTimeOffset(this.getFixedLocalChatzos(), ZmanimCalendar.MINUTE_MILLIS * 30); } @@ -4441,7 +4437,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getMinchaGedolaGRAFixedLocalChatzos30Minutes * @see ZmanimCalendar#getHalfDayBasedZman(Date, Date, double) */ - public getMinchaKetanaGRAFixedLocalChatzosToSunset(): DateTime | null { + public getMinchaKetanaGRAFixedLocalChatzosToSunset(): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(this.getFixedLocalChatzos(), this.getElevationAdjustedSunset(), 3.5); } @@ -4462,7 +4458,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * @see #getMinchaGedolaGRAFixedLocalChatzos30Minutes * @see ZmanimCalendar#getHalfDayBasedZman(Date, Date, double) */ - public getPlagHaminchaGRAFixedLocalChatzosToSunset(): DateTime | null { + public getPlagHaminchaGRAFixedLocalChatzosToSunset(): Temporal.ZonedDateTime | null { return this.getHalfDayBasedZman(this.getFixedLocalChatzos(), this.getElevationAdjustedSunset(), 4.75); } @@ -4476,7 +4472,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar} * documentation. */ - public getTzais50(): DateTime | null { + public getTzais50(): Temporal.ZonedDateTime | null { return ZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), 50 * ZmanimCalendar.MINUTE_MILLIS); } @@ -4498,7 +4494,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * where the sun may not reach low enough below the horizon for this calculation, a null will be * returned. See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSamuchLeMinchaKetanaGRA(): DateTime | null { + public getSamuchLeMinchaKetanaGRA(): Temporal.ZonedDateTime | null { return this.getSamuchLeMinchaKetana(this.getElevationAdjustedSunrise(), this.getElevationAdjustedSunset(), true); } @@ -4517,7 +4513,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * where the sun may not reach low enough below the horizon for this calculation, a null will be returned. * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSamuchLeMinchaKetana16Point1Degrees(): DateTime | null { + public getSamuchLeMinchaKetana16Point1Degrees(): Temporal.ZonedDateTime | null { return this.getSamuchLeMinchaKetana(this.getAlos16Point1Degrees(), this.getTzais16Point1Degrees(), true); } @@ -4535,7 +4531,7 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { * where the sun may not reach low enough below the horizon for this calculation, a null will be returned. * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSamuchLeMinchaKetana72Minutes(): DateTime | null { + public getSamuchLeMinchaKetana72Minutes(): Temporal.ZonedDateTime | null { return this.getSamuchLeMinchaKetana(this.getAlos72(), this.getTzais72(), true); } diff --git a/src/ZmanimCalendar.ts b/src/ZmanimCalendar.ts index 0ed3605..580727f 100644 --- a/src/ZmanimCalendar.ts +++ b/src/ZmanimCalendar.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { AstronomicalCalendar } from './AstronomicalCalendar'; import { JewishCalendar } from './hebrewcalendar/JewishCalendar'; @@ -249,7 +249,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * {@link AstronomicalCalendar#getSunrise()} if it is true. * @see com.kosherjava.zmanim.AstronomicalCalendar#getSunrise() */ - protected getElevationAdjustedSunrise(): DateTime | null { + protected getElevationAdjustedSunrise(): Temporal.ZonedDateTime | null { if (this.isUseElevation()) { return super.getSunrise(); } @@ -265,7 +265,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * {@link AstronomicalCalendar#getSunset()} if it is true. * @see AstronomicalCalendar#getSunset() */ - protected getElevationAdjustedSunset(): DateTime | null { + protected getElevationAdjustedSunset(): Temporal.ZonedDateTime | null { if (this.isUseElevation()) { return super.getSunset(); } @@ -287,7 +287,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * @see #ZENITH_8_POINT_5 * ComplexZmanimCalendar#getTzaisGeonim8Point5Degrees() that returns an identical time to this generic tzais */ - public getTzais(): DateTime | null { + public getTzais(): Temporal.ZonedDateTime | null { return this.getSunsetOffsetByDegrees(ZmanimCalendar.ZENITH_8_POINT_5); } @@ -309,7 +309,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * low enough below the horizon for this calculation, a null will be returned. See detailed * explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getAlosHashachar(): DateTime | null { + public getAlosHashachar(): Temporal.ZonedDateTime | null { return this.getSunriseOffsetByDegrees(ZmanimCalendar.ZENITH_16_POINT_1); } @@ -327,7 +327,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar} * documentation. */ - public getAlos72(): DateTime | null { + public getAlos72(): Temporal.ZonedDateTime | null { return ZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunrise(), -72 * ZmanimCalendar.MINUTE_MILLIS); } @@ -355,12 +355,12 @@ export class ZmanimCalendar extends AstronomicalCalendar { * support astronomical calculations (that will never report a null) a null will be returned. * See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getChatzos(): DateTime | null { + public getChatzos(): Temporal.ZonedDateTime | null { if (this.useAstronomicalChatzos) { return this.getSunTransit(); // can be null of the calculator does not support astronomical chatzos } - const halfDayChatzos: DateTime | null = this.getChatzosAsHalfDay(); + const halfDayChatzos: Temporal.ZonedDateTime | null = this.getChatzosAsHalfDay(); return halfDayChatzos === null ? this.getSunTransit() // can be null if the calculator does not support astronomical chatzos : halfDayChatzos; @@ -395,7 +395,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * it does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getChatzosAsHalfDay(): DateTime | null { + public getChatzosAsHalfDay(): Temporal.ZonedDateTime | null { return this.getSunTransit(this.getSeaLevelSunrise(), this.getSeaLevelSunset()); } @@ -430,7 +430,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * a year where the sun does not rise, and one where it does not set, a null will be returned. See * detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSofZmanShma(startOfDay: DateTime | null, endOfDay: DateTime | null, synchronous?: boolean): DateTime | null { + public getSofZmanShma(startOfDay: Temporal.ZonedDateTime | null, endOfDay: Temporal.ZonedDateTime | null, synchronous?: boolean): Temporal.ZonedDateTime | null { if (this.isUseAstronomicalChatzosForOtherZmanim() && synchronous) { return this.getHalfDayBasedZman(startOfDay, this.getChatzos(), 3); } @@ -478,7 +478,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * and one where it does not set, a null will be returned. See the detailed explanation on top * of the {@link AstronomicalCalendar} documentation. */ - public getSofZmanShmaGRA(): DateTime | null { + public getSofZmanShmaGRA(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getElevationAdjustedSunrise(), this.getElevationAdjustedSunset(), true); } @@ -499,7 +499,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * @see ComplexZmanimCalendar#getAlos72() * @see ComplexZmanimCalendar#getSofZmanShmaMGA72Minutes() */ - public getSofZmanShmaMGA(): DateTime | null { + public getSofZmanShmaMGA(): Temporal.ZonedDateTime | null { return this.getSofZmanShma(this.getAlos72(), this.getTzais72(), true); } @@ -519,7 +519,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * and one where it does not set, a null will be returned See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getTzais72(): DateTime | null { + public getTzais72(): Temporal.ZonedDateTime | null { return ZmanimCalendar.getTimeOffset(this.getElevationAdjustedSunset(), 72 * ZmanimCalendar.MINUTE_MILLIS); } @@ -538,7 +538,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * @see #getCandleLightingOffset() * @see #setCandleLightingOffset(double) */ - public getCandleLighting(): DateTime | null { + public getCandleLighting(): Temporal.ZonedDateTime | null { return ZmanimCalendar.getTimeOffset(this.getSeaLevelSunset(), -this.getCandleLightingOffset() * ZmanimCalendar.MINUTE_MILLIS); } @@ -574,7 +574,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * one day a year where the sun does not rise, and one where it does not set, a null will be * returned. See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getSofZmanTfila(startOfDay: DateTime | null, endOfDay: DateTime | null, synchronous?: boolean): DateTime | null { + public getSofZmanTfila(startOfDay: Temporal.ZonedDateTime | null, endOfDay: Temporal.ZonedDateTime | null, synchronous?: boolean): Temporal.ZonedDateTime | null { if (this.isUseAstronomicalChatzosForOtherZmanim() && synchronous) { return this.getHalfDayBasedZman(startOfDay, this.getChatzos(), 4); } @@ -621,7 +621,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getSofZmanTfilaGRA(): DateTime | null { + public getSofZmanTfilaGRA(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getElevationAdjustedSunrise(), this.getElevationAdjustedSunset(), true); } @@ -641,7 +641,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * @see #getShaahZmanisMGA() * @see #getAlos72() */ - public getSofZmanTfilaMGA(): DateTime | null { + public getSofZmanTfilaMGA(): Temporal.ZonedDateTime | null { return this.getSofZmanTfila(this.getAlos72(), this.getTzais72(), true); } @@ -685,9 +685,9 @@ export class ZmanimCalendar extends AstronomicalCalendar { * @see #isUseAstronomicalChatzos() * @see #isUseAstronomicalChatzosForOtherZmanim() */ - public getMinchaGedola(): DateTime | null; - public getMinchaGedola(startOfDay: DateTime | null, endOfDay: DateTime | null, synchronous?: boolean): DateTime | null; - public getMinchaGedola(startOfDay?: DateTime | null, endOfDay?: DateTime | null, synchronous?: boolean): DateTime | null { + public getMinchaGedola(): Temporal.ZonedDateTime | null; + public getMinchaGedola(startOfDay: Temporal.ZonedDateTime | null, endOfDay: Temporal.ZonedDateTime | null, synchronous?: boolean): Temporal.ZonedDateTime | null; + public getMinchaGedola(startOfDay?: Temporal.ZonedDateTime | null, endOfDay?: Temporal.ZonedDateTime | null, synchronous?: boolean): Temporal.ZonedDateTime | null { if (startOfDay === undefined && endOfDay === undefined) { // eslint-disable-next-line no-param-reassign startOfDay = this.getElevationAdjustedSunrise(); @@ -698,10 +698,10 @@ export class ZmanimCalendar extends AstronomicalCalendar { } if (this.isUseAstronomicalChatzosForOtherZmanim() && synchronous) { - return this.getHalfDayBasedZman(this.getChatzos(), endOfDay as DateTime | null, 0.5); + return this.getHalfDayBasedZman(this.getChatzos(), endOfDay as Temporal.ZonedDateTime | null, 0.5); } - return this.getShaahZmanisBasedZman(startOfDay as DateTime | null, endOfDay as DateTime | null, 6.5); + return this.getShaahZmanisBasedZman(startOfDay as Temporal.ZonedDateTime | null, endOfDay as Temporal.ZonedDateTime | null, 6.5); } /** @@ -790,7 +790,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * @see ComplexZmanimCalendar#getSamuchLeMinchaKetana16Point1Degrees() * @see ComplexZmanimCalendar#getSamuchLeMinchaKetana72Minutes() */ - public getSamuchLeMinchaKetana(startOfDay: DateTime | null, endOfDay: DateTime | null, synchronous?: boolean): DateTime | null { + public getSamuchLeMinchaKetana(startOfDay: Temporal.ZonedDateTime | null, endOfDay: Temporal.ZonedDateTime | null, synchronous?: boolean): Temporal.ZonedDateTime | null { if (this.isUseAstronomicalChatzosForOtherZmanim() && synchronous) { return this.getHalfDayBasedZman(this.getChatzos(), endOfDay, 3); } @@ -853,7 +853,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * at least one day a year where the sun does not rise, and one where it does not set, a null will * be returned. See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getMinchaKetana(startOfDay: DateTime | null, endOfDay: DateTime | null, synchronous?: boolean): DateTime | null { + public getMinchaKetana(startOfDay: Temporal.ZonedDateTime | null, endOfDay: Temporal.ZonedDateTime | null, synchronous?: boolean): Temporal.ZonedDateTime | null { if (startOfDay === undefined && endOfDay === undefined) { // eslint-disable-next-line no-param-reassign startOfDay = this.getElevationAdjustedSunrise(); @@ -949,7 +949,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * at least one day a year where the sun does not rise, and one where it does not set, a null * will be returned. See detailed explanation on top of the {@link AstronomicalCalendar} documentation. */ - public getPlagHamincha(startOfDay: DateTime | null, endOfDay: DateTime | null, synchronous?: boolean): DateTime | null { + public getPlagHamincha(startOfDay: Temporal.ZonedDateTime | null, endOfDay: Temporal.ZonedDateTime | null, synchronous?: boolean): Temporal.ZonedDateTime | null { if (startOfDay === undefined && endOfDay === undefined) { // eslint-disable-next-line no-param-reassign startOfDay = this.getElevationAdjustedSunrise(); @@ -1124,7 +1124,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * @see JewishCalendar#hasCandleLighting() * @see JewishCalendar#setInIsrael(boolean) */ - public isAssurBemlacha(currentTime: DateTime, tzais: DateTime, inIsrael: boolean): boolean { + public isAssurBemlacha(currentTime: Temporal.ZonedDateTime, tzais: Temporal.ZonedDateTime, inIsrael: boolean): boolean { const jewishCalendar: JewishCalendar = new JewishCalendar(); const date = this.getDate(); jewishCalendar.setGregorianDate(date.year, date.month - 1, date.day); @@ -1164,8 +1164,8 @@ export class ZmanimCalendar extends AstronomicalCalendar { * where it does not set, a null will be returned. See detailed explanation on top of the * {@link AstronomicalCalendar} documentation. */ - public getShaahZmanisBasedZman(startOfDay: DateTime | null, endOfDay: DateTime | null, - hours: number): DateTime | null { + public getShaahZmanisBasedZman(startOfDay: Temporal.ZonedDateTime | null, endOfDay: Temporal.ZonedDateTime | null, + hours: number): Temporal.ZonedDateTime | null { const shaahZmanis: number = this.getTemporalHour(startOfDay, endOfDay); return ZmanimCalendar.getTimeOffset(startOfDay, shaahZmanis * hours); } @@ -1189,10 +1189,10 @@ export class ZmanimCalendar extends AstronomicalCalendar { * explanation on top of the page. */ public getPercentOfShaahZmanisFromDegrees(degrees: number, sunset: boolean): number { - const seaLevelSunrise: DateTime | null = this.getSeaLevelSunrise(); - const seaLevelSunset: DateTime | null = this.getSeaLevelSunset(); + const seaLevelSunrise: Temporal.ZonedDateTime | null = this.getSeaLevelSunrise(); + const seaLevelSunset: Temporal.ZonedDateTime | null = this.getSeaLevelSunset(); - let twilight: DateTime | null = null; + let twilight: Temporal.ZonedDateTime | null = null; if (sunset) { twilight = this.getSunsetOffsetByDegrees(ZmanimCalendar.GEOMETRIC_ZENITH + degrees); } else { @@ -1203,13 +1203,13 @@ export class ZmanimCalendar extends AstronomicalCalendar { return Double_MIN_VALUE; } - const shaahZmanis: number = (seaLevelSunset!.valueOf() - seaLevelSunrise!.valueOf()) / 12.0; + const shaahZmanis: number = (seaLevelSunset!.epochMilliseconds - seaLevelSunrise!.epochMilliseconds) / 12.0; let riseSetToTwilight: number; if (sunset) { - riseSetToTwilight = twilight!.valueOf() - seaLevelSunset!.valueOf(); + riseSetToTwilight = twilight!.epochMilliseconds - seaLevelSunset!.epochMilliseconds; } else { - riseSetToTwilight = seaLevelSunrise!.valueOf() - twilight!.valueOf(); + riseSetToTwilight = seaLevelSunrise!.epochMilliseconds - twilight!.epochMilliseconds; } return riseSetToTwilight / shaahZmanis; @@ -1245,7 +1245,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { * * @see ComplexZmanimCalendar#getFixedLocalChatzos() */ - public getHalfDayBasedZman(startOfHalfDay: DateTime | null, endOfHalfDay: DateTime | null, hours: number): DateTime | null { + public getHalfDayBasedZman(startOfHalfDay: Temporal.ZonedDateTime | null, endOfHalfDay: Temporal.ZonedDateTime | null, hours: number): Temporal.ZonedDateTime | null { if (startOfHalfDay === null || endOfHalfDay === null) return null; const shaahZmanis: number = this.getHalfDayBasedShaahZmanis(startOfHalfDay, endOfHalfDay); @@ -1272,8 +1272,8 @@ export class ZmanimCalendar extends AstronomicalCalendar { * @see #isUseAstronomicalChatzosForOtherZmanim() * @todo Consider adjusting various shaah zmanis times to use this. */ - public getHalfDayBasedShaahZmanis(startOfHalfDay: DateTime | null, endOfHalfDay: DateTime | null): number { + public getHalfDayBasedShaahZmanis(startOfHalfDay: Temporal.ZonedDateTime | null, endOfHalfDay: Temporal.ZonedDateTime | null): number { if (startOfHalfDay === null || endOfHalfDay === null) return Long_MIN_VALUE; - return (endOfHalfDay.valueOf() - startOfHalfDay.valueOf()) / 6; + return (endOfHalfDay.epochMilliseconds - startOfHalfDay.epochMilliseconds) / 6; } } diff --git a/src/hebrewcalendar/HebrewDateFormatter.ts b/src/hebrewcalendar/HebrewDateFormatter.ts index ab39a3e..a0db4ab 100644 --- a/src/hebrewcalendar/HebrewDateFormatter.ts +++ b/src/hebrewcalendar/HebrewDateFormatter.ts @@ -1,4 +1,4 @@ -import { DateTimeFormatOptions } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { Daf } from './Daf'; import { JewishDate } from './JewishDate'; @@ -56,7 +56,7 @@ export class HebrewDateFormatter { /** * The internal DateFormat.  See {@link #isLongWeekFormat()} and {@link #setLongWeekFormat(boolean)}. */ - private weekFormat: DateTimeFormatOptions | null = { weekday: 'long' }; + private weekFormat: Intl.DateTimeFormatOptions | null = { weekday: 'long' }; /** * List of transliterated parshiyos using the default Ashkenazi pronounciation.  The formatParsha method uses this @@ -639,8 +639,8 @@ export class HebrewDateFormatter { const dateTime = jewishDate.getDate(); return this.weekFormat - ? dateTime.toLocaleString(this.weekFormat) - : dateTime.toISO(); + ? dateTime.toLocaleString('en-US', this.weekFormat) + : dateTime.toString(); } /** @@ -911,7 +911,8 @@ export class HebrewDateFormatter { * @see #isHebrewFormat() * */ - public formatHebrewNumber(num: number): string { + public formatHebrewNumber(num0: number): string { + let num: number = num0; if (num !== Math.trunc(num)) throw new IllegalArgumentException('number must be an integer.'); if (num < 0) { diff --git a/src/hebrewcalendar/JewishCalendar.ts b/src/hebrewcalendar/JewishCalendar.ts index 9f19cdf..88790b7 100644 --- a/src/hebrewcalendar/JewishCalendar.ts +++ b/src/hebrewcalendar/JewishCalendar.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { GeoLocation } from '../util/GeoLocation'; import { Daf } from './Daf'; @@ -359,11 +359,11 @@ export class JewishCalendar extends JewishDate { */ constructor(jewishYear: number, jewishMonth: number, jewishDayOfMonth: number, inIsrael?: boolean) constructor(date: Date) - constructor(date: DateTime) + constructor(date: Temporal.PlainDate) constructor() - constructor(jewishYearOrDateTimeOrDate?: number | Date | DateTime, jewishMonth?: number, jewishDayOfMonth?: number, inIsrael?: boolean) { + constructor(jewishYearOrDateTime?: number | Date | Temporal.PlainDate, jewishMonth?: number, jewishDayOfMonth?: number, inIsrael?: boolean) { // @ts-ignore - super(jewishYearOrDateTimeOrDate, jewishMonth, jewishDayOfMonth); + super(jewishYearOrDateTime, jewishMonth, jewishDayOfMonth); if (inIsrael) this.setInIsrael(inIsrael); } @@ -1347,7 +1347,7 @@ export class JewishCalendar extends JewishDate { * * @return the Date representing the moment of the molad in Yerushalayim standard time (GMT + 2) */ - public getMoladAsDate(): DateTime { + public getMoladAsDate(): Temporal.ZonedDateTime { const molad: JewishDate = this.getMolad(); const locationName: string = 'Jerusalem, Israel'; @@ -1364,7 +1364,7 @@ export class JewishCalendar extends JewishDate { // subtract local time difference of 20.94 minutes (20 minutes and 56.496 seconds) to get to Standard time const milliseconds: number = Math.trunc(1000 * (moladSeconds - Math.trunc(moladSeconds))); - return DateTime.fromObject({ + return Temporal.ZonedDateTime.from({ year: molad.getGregorianYear(), month: molad.getGregorianMonth() + 1, day: molad.getGregorianDayOfMonth(), @@ -1372,9 +1372,9 @@ export class JewishCalendar extends JewishDate { minute: molad.getMoladMinutes(), second: Math.trunc(moladSeconds), millisecond: milliseconds, - zone: geo.getTimeZone(), + timeZoneId: geo.getTimeZone(), }) - .minus({ milliseconds: Math.trunc(geo.getLocalMeanTimeOffset()) }); + .subtract({ milliseconds: Math.trunc(geo.getLocalMeanTimeOffset()) }); } /** @@ -1387,10 +1387,10 @@ export class JewishCalendar extends JewishDate { * @see ComplexZmanimCalendar#getTchilasZmanKidushLevana3Days() * @see ComplexZmanimCalendar#getTchilasZmanKidushLevana3Days(Date, Date) */ - public getTchilasZmanKidushLevana3Days(): DateTime { - const molad: DateTime = this.getMoladAsDate(); + public getTchilasZmanKidushLevana3Days(): Temporal.ZonedDateTime { + const molad: Temporal.ZonedDateTime = this.getMoladAsDate(); - return molad.plus({ hours: 72 }); + return molad.add({ hours: 72 }); } /** @@ -1405,10 +1405,10 @@ export class JewishCalendar extends JewishDate { * @see ComplexZmanimCalendar#getTchilasZmanKidushLevana7Days() * @see ComplexZmanimCalendar#getTchilasZmanKidushLevana7Days(Date, Date) */ - public getTchilasZmanKidushLevana7Days(): DateTime { - const molad: DateTime = this.getMoladAsDate(); + public getTchilasZmanKidushLevana7Days(): Temporal.ZonedDateTime { + const molad: Temporal.ZonedDateTime = this.getMoladAsDate(); - return molad.plus({ hours: 168 }); + return molad.add({ hours: 168 }); } /** @@ -1425,13 +1425,13 @@ export class JewishCalendar extends JewishDate { * @see ComplexZmanimCalendar#getSofZmanKidushLevanaBetweenMoldos() * @see ComplexZmanimCalendar#getSofZmanKidushLevanaBetweenMoldos(Date, Date) */ - public getSofZmanKidushLevanaBetweenMoldos(): DateTime { - const molad: DateTime = this.getMoladAsDate(); + public getSofZmanKidushLevanaBetweenMoldos(): Temporal.ZonedDateTime { + const molad: Temporal.ZonedDateTime = this.getMoladAsDate(); // add half the time between molad and molad (half of 29 days, 12 hours and 793 chalakim (44 minutes, 3.3 // seconds), or 14 days, 18 hours, 22 minutes and 666 milliseconds). Add it as hours, not days, to avoid // DST/ST crossover issues. - return molad.plus({ + return molad.add({ hours: (24 * 14) + 18, minutes: 22, seconds: 1, @@ -1456,11 +1456,11 @@ export class JewishCalendar extends JewishDate { * @see ComplexZmanimCalendar#getSofZmanKidushLevana15Days() * @see ComplexZmanimCalendar#getSofZmanKidushLevana15Days(Date, Date) */ - public getSofZmanKidushLevana15Days(): DateTime { - const molad: DateTime = this.getMoladAsDate(); + public getSofZmanKidushLevana15Days(): Temporal.ZonedDateTime { + const molad: Temporal.ZonedDateTime = this.getMoladAsDate(); // 15 days after the molad. Add it as hours, not days, to avoid DST/ST crossover issues. - return molad.plus({ hours: 24 * 15 }); + return molad.add({ hours: 24 * 15 }); } /** diff --git a/src/hebrewcalendar/JewishDate.ts b/src/hebrewcalendar/JewishDate.ts index 59822c1..e429f22 100644 --- a/src/hebrewcalendar/JewishDate.ts +++ b/src/hebrewcalendar/JewishDate.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { Calendar, IntegerUtils } from '../polyfills/Utils'; import { IllegalArgumentException } from '../polyfills/errors'; @@ -939,17 +939,18 @@ export class JewishDate { constructor(jewishYear: number, jewishMonth: number, jewishDayOfMonth: number) constructor(molad: number) constructor(date: Date) - constructor(date: DateTime) + constructor(date: Temporal.PlainDate) constructor() - constructor(jewishYearOrDateTimeOrDateOrMolad?: number | Date | DateTime, jewishMonth?: number, jewishDayOfMonth?: number) { + constructor(jewishYearOrDateTimeOrDateOrMolad?: number | Date | Temporal.PlainDate, jewishMonth?: number, jewishDayOfMonth?: number) { if (!jewishYearOrDateTimeOrDateOrMolad) { this.resetDate(); } else if (jewishMonth) { this.setJewishDate(jewishYearOrDateTimeOrDateOrMolad as number, jewishMonth, jewishDayOfMonth!); } else if (jewishYearOrDateTimeOrDateOrMolad instanceof Date) { - this.setDate(DateTime.fromJSDate(jewishYearOrDateTimeOrDateOrMolad as Date)); - } else if (DateTime.isDateTime(jewishYearOrDateTimeOrDateOrMolad)) { - this.setDate(jewishYearOrDateTimeOrDateOrMolad as DateTime); + const instant = Temporal.Instant.fromEpochMilliseconds(jewishYearOrDateTimeOrDateOrMolad.getTime()); + this.setDate(instant.toZonedDateTimeISO('UTC').toPlainDate()); + } else if (jewishYearOrDateTimeOrDateOrMolad instanceof Temporal.PlainDate) { + this.setDate(jewishYearOrDateTimeOrDateOrMolad as Temporal.PlainDate); } else if (typeof jewishYearOrDateTimeOrDateOrMolad === 'number') { const molad = jewishYearOrDateTimeOrDateOrMolad as number; this.absDateToDate(JewishDate.moladToAbsDate(molad)); @@ -1028,7 +1029,7 @@ export class JewishDate { * @throws IllegalArgumentException * if the {@link Calendar#ERA} is {@link GregorianCalendar#BC} */ - public setDate(date: DateTime): void { + public setDate(date: Temporal.PlainDate): void { if (date.year < 1) { throw new IllegalArgumentException(`Dates with a BC era are not supported. The year ${date.year} is invalid.`); } @@ -1183,8 +1184,8 @@ export class JewishDate { * * @return The {@link java.util.Calendar} */ - public getDate(): DateTime { - return DateTime.fromObject({ + public getDate(): Temporal.PlainDate { + return Temporal.PlainDate.from({ year: this.gregorianYear, month: this.gregorianMonth, day: this.gregorianDayOfMonth, @@ -1195,7 +1196,7 @@ export class JewishDate { * Resets this date to the current system date. */ public resetDate(): void { - this.setDate(DateTime.local()); + this.setDate(Temporal.Now.plainDateISO()); } /** diff --git a/src/hebrewcalendar/YerushalmiYomiCalculator.ts b/src/hebrewcalendar/YerushalmiYomiCalculator.ts index d0c5785..4d20f0b 100644 --- a/src/hebrewcalendar/YerushalmiYomiCalculator.ts +++ b/src/hebrewcalendar/YerushalmiYomiCalculator.ts @@ -1,4 +1,4 @@ -import { DateTime, Interval } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { Calendar } from '../polyfills/Utils'; import { Daf } from './Daf'; @@ -16,7 +16,7 @@ export class YerushalmiYomiCalculator { /** * The start date of the first Daf Yomi Yerushalmi cycle of February 2, 1980 / 15 Shevat, 5740. */ - private static readonly DAF_YOMI_START_DAY: DateTime = DateTime.fromObject({ + private static readonly DAF_YOMI_START_DAY: Temporal.PlainDate = Temporal.PlainDate.from({ year: 1980, month: Calendar.FEBRUARY + 1, day: 2, @@ -53,9 +53,9 @@ export class YerushalmiYomiCalculator { * if the date is prior to the February 2, 1980, the start of the first Daf Yomi Yerushalmi cycle */ public static getDafYomiYerushalmi(jewishCalendar: JewishCalendar): Daf | null { - let nextCycle: DateTime = YerushalmiYomiCalculator.DAF_YOMI_START_DAY; - let prevCycle: DateTime = YerushalmiYomiCalculator.DAF_YOMI_START_DAY; - const requested: DateTime = jewishCalendar.getDate(); + let nextCycle: Temporal.PlainDate = YerushalmiYomiCalculator.DAF_YOMI_START_DAY; + let prevCycle: Temporal.PlainDate = YerushalmiYomiCalculator.DAF_YOMI_START_DAY; + const requested: Temporal.PlainDate = jewishCalendar.getDate(); let masechta: number = 0; let dafYomi: Daf; @@ -64,7 +64,7 @@ export class YerushalmiYomiCalculator { return null; } - if (requested < YerushalmiYomiCalculator.DAF_YOMI_START_DAY) { + if (Temporal.PlainDate.compare(requested, YerushalmiYomiCalculator.DAF_YOMI_START_DAY) < 0) { throw new IllegalArgumentException(`${requested} is prior to organized Daf Yomi Yerushalmi cycles that started on ${YerushalmiYomiCalculator.DAF_YOMI_START_DAY}`); } @@ -72,17 +72,17 @@ export class YerushalmiYomiCalculator { // nextCycle = YerushalmiYomiCalculator.DAF_YOMI_START_DAY; // Go cycle by cycle, until we get the next cycle - while (requested > nextCycle) { + while (Temporal.PlainDate.compare(requested, nextCycle) > 0) { prevCycle = nextCycle; // Adds the number of whole shas dafs, and then the number of days that not have daf. - nextCycle = nextCycle.plus({ days: YerushalmiYomiCalculator.WHOLE_SHAS_DAFS }); + nextCycle = nextCycle.add({ days: YerushalmiYomiCalculator.WHOLE_SHAS_DAFS }); // This needs to be a separate step - nextCycle = nextCycle.plus({ days: YerushalmiYomiCalculator.getNumOfSpecialDays(prevCycle, nextCycle) }); + nextCycle = nextCycle.add({ days: YerushalmiYomiCalculator.getNumOfSpecialDays(prevCycle, nextCycle) }); } // Get the number of days from cycle start until request. - const dafNo: number = requested.diff(prevCycle, ['days']).days; + const dafNo: number = requested.since(prevCycle).days; // Get the number of special days to subtract const specialDays: number = YerushalmiYomiCalculator.getNumOfSpecialDays(prevCycle, requested); @@ -110,7 +110,7 @@ export class YerushalmiYomiCalculator { * @param end - end date to calculate at * @return the number of special days between the start and end dates */ - private static getNumOfSpecialDays(start: DateTime, end: DateTime): number { + private static getNumOfSpecialDays(start: Temporal.PlainDate, end: Temporal.PlainDate): number { // Find the start and end Jewish years const jewishStartYear: number = new JewishCalendar(start).getJewishYear(); const jewishEndYear: number = new JewishCalendar(end).getJewishYear(); @@ -127,9 +127,14 @@ export class YerushalmiYomiCalculator { yomKippur.setJewishYear(i); tishaBeav.setJewishYear(i); - const interval = Interval.fromDateTimes(start, end); - if (interval.contains(yomKippur.getDate())) specialDays++; - if (interval.contains(tishaBeav.getDate())) specialDays++; + const yk = yomKippur.getDate(); + if (Temporal.PlainDate.compare(yk, start) >= 0 && Temporal.PlainDate.compare(yk, end) <= 0) { + specialDays++; + } + const av9 = tishaBeav.getDate(); + if (Temporal.PlainDate.compare(av9, start) >= 0 && Temporal.PlainDate.compare(av9, end) <= 0) { + specialDays++; + } } return specialDays; diff --git a/src/hebrewcalendar/YomiCalculator.ts b/src/hebrewcalendar/YomiCalculator.ts index 3db647f..a388591 100644 --- a/src/hebrewcalendar/YomiCalculator.ts +++ b/src/hebrewcalendar/YomiCalculator.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { Calendar } from '../polyfills/Utils'; import { Daf } from './Daf'; @@ -17,7 +17,7 @@ export class YomiCalculator { /** * The start date of the first Daf Yomi Bavli cycle of September 11, 1923 / Rosh Hashana 5684. */ - private static readonly dafYomiStartDate: DateTime = DateTime.fromObject({ + private static readonly dafYomiStartDate: Temporal.PlainDate = Temporal.PlainDate.from({ year: 1923, month: Calendar.SEPTEMBER + 1, day: 11, @@ -30,7 +30,7 @@ export class YomiCalculator { * The date that the pagination for the Daf Yomi Maseches Shekalim changed to use the commonly used Vilna * Shas pagination from the no longer commonly available Zhitomir / Slavuta Shas used by Rabbi Meir Shapiro. */ - private static readonly shekalimChangeDate: DateTime = DateTime.fromObject({ year: 1975, month: Calendar.JUNE + 1, day: 24 }); + private static readonly shekalimChangeDate: Temporal.PlainDate = Temporal.PlainDate.from({ year: 1975, month: Calendar.JUNE + 1, day: 24 }); /** The Julian date that the cycle for Shekalim changed. * @see #getDafYomiBavli(JewishCalendar) for details. @@ -78,17 +78,18 @@ export class YomiCalculator { const blattPerMasechta: number[] = [64, 157, 105, 121, 22, 88, 56, 40, 35, 31, 32, 29, 27, 122, 112, 91, 66, 49, 90, 82, 119, 119, 176, 113, 24, 49, 76, 14, 120, 110, 142, 61, 34, 34, 28, 22, 4, 9, 5, 73]; - const date: DateTime = calendar.getDate(); + const date: Temporal.PlainDate = calendar.getDate(); let dafYomi: Daf; const julianDay: number = this.getJulianDay(date); let cycleNo: number; let dafNo: number; - if (date < YomiCalculator.dafYomiStartDate) { + if (Temporal.PlainDate.compare(date, YomiCalculator.dafYomiStartDate) < 0) { // TODO: should we return a null or throw an IllegalArgumentException? throw new IllegalArgumentException(`${calendar} is prior to organized Daf Yomi Bavli cycles that started on ${YomiCalculator.dafYomiStartDate}`); } - if ((date > YomiCalculator.shekalimChangeDate) || date.equals(YomiCalculator.shekalimChangeDate)) { + if ((Temporal.PlainDate.compare(date, YomiCalculator.shekalimChangeDate) > 0) || + date.equals(YomiCalculator.shekalimChangeDate)) { cycleNo = 8 + ((julianDay - YomiCalculator.shekalimJulianChangeDay) / 2711); dafNo = ((julianDay - YomiCalculator.shekalimJulianChangeDay) % 2711); } else { @@ -134,7 +135,7 @@ export class YomiCalculator { * The Java Date * @return the Julian day number corresponding to the date */ - private static getJulianDay(date: DateTime): number { + private static getJulianDay(date: Temporal.PlainDate): number { let { year, month } = date; const { day } = date; diff --git a/src/kosher-zmanim.ts b/src/kosher-zmanim.ts index 9441db0..0b2266e 100644 --- a/src/kosher-zmanim.ts +++ b/src/kosher-zmanim.ts @@ -1,5 +1,4 @@ -import * as _Luxon from 'luxon'; - +import { Temporal } from 'temporal-polyfill'; import { GeoLocation } from './util/GeoLocation'; import { ZmanimCalendar } from './ZmanimCalendar'; import { ComplexZmanimCalendar } from './ComplexZmanimCalendar'; @@ -12,7 +11,7 @@ export function getZmanimJson(options: Options): JsonOutput { const zmanimCalendar: ZmanimCalendar = options.complexZmanim ? new ComplexZmanimCalendar(geoLocation) : new ZmanimCalendar(geoLocation); - zmanimCalendar.setDate(options.date || _Luxon.DateTime.local()); + zmanimCalendar.setDate(options.date || Temporal.Now.plainDateISO()); return ZmanimFormatter.toJSON(zmanimCalendar); } @@ -20,7 +19,7 @@ export interface Options { /** * @default The current local date. The time is ignored. */ - date?: Date | string | number | _Luxon.DateTime; + date?: Date | string | number | Temporal.PlainDate; /** * IANA timezone ID */ @@ -60,8 +59,3 @@ export * from './hebrewcalendar/YerushalmiYomiCalculator'; export * from './hebrewcalendar/HebrewDateFormatter'; export * from './util/ZmanimFormatter'; - -export const Luxon = _Luxon; - -// Exported explicitly as a convenience. -export const DateTime = _Luxon.DateTime; diff --git a/src/polyfills/Utils.ts b/src/polyfills/Utils.ts index fc02203..9bd30ca 100644 --- a/src/polyfills/Utils.ts +++ b/src/polyfills/Utils.ts @@ -1,4 +1,4 @@ -import { DateTime, Info } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; export namespace Utils { // https://stackoverflow.com/a/40577337/8037425 @@ -31,35 +31,37 @@ export namespace TimeZone { * @return the amount of raw offset time in milliseconds to add to UTC. */ export function getRawOffset(timeZoneId: string): number { - const janDateTime = DateTime.fromObject({ + const janDateTime = Temporal.ZonedDateTime.from({ + year: 2019, month: 1, day: 1, - zone: timeZoneId, + timeZone: timeZoneId, }); - const julyDateTime = janDateTime.set({ month: 7 }); + const julyDateTime = janDateTime.with({ month: 7 }); - let rawOffsetMinutes; + let rawOffsetNanoseconds: number; if (janDateTime.offset === julyDateTime.offset) { - rawOffsetMinutes = janDateTime.offset; + rawOffsetNanoseconds = janDateTime.offsetNanoseconds; } else { - const max = Math.max(janDateTime.offset, julyDateTime.offset); + const max = Math.max(janDateTime.offsetNanoseconds, julyDateTime.offsetNanoseconds); - rawOffsetMinutes = max < 0 + rawOffsetNanoseconds = max < 0 ? 0 - max - : 0 - Math.min(janDateTime.offset, julyDateTime.offset); + : 0 - Math.min(janDateTime.offsetNanoseconds, julyDateTime.offsetNanoseconds); } - return rawOffsetMinutes * 60 * 1000; + return Math.trunc(rawOffsetNanoseconds / 1_000_000); } /** * Returns a name in the specified style of this TimeZone suitable for presentation to the user in the default locale. * @param {string} timeZoneId - * @param {DateTime} [date] + * @param {Temporal.ZonedDateTime} [date] * @param {boolean} [short] */ - export function getDisplayName(timeZoneId: string, date: DateTime = DateTime.local(), short: boolean = false): string { - return Info.normalizeZone(timeZoneId).offsetName(date.toMillis(), { format: short ? 'short' : 'long' }); + export function getDisplayName(timeZoneId: string, date: Temporal.PlainDate = Temporal.Now.plainDateISO(), short: boolean = false): string { + return 'unknown'; + // return Info.normalizeZone(timeZoneId).offsetName(date.toMillis(), { format: short ? 'short' : 'long' }); } /** @@ -70,7 +72,8 @@ export namespace TimeZone { * @return {number} */ export function getDSTSavings(timeZoneId: string): number { - return Info.hasDST(timeZoneId) ? 3600000 : 0; + return -1; + // return Info.hasDST(timeZoneId) ? 3600000 : 0; } /** @@ -83,7 +86,12 @@ export namespace TimeZone { * @param {number} millisSinceEpoch */ export function getOffset(timeZoneId: string, millisSinceEpoch: number): number { - return Info.normalizeZone(timeZoneId).offset(millisSinceEpoch) * 60 * 1000; + const instant = Temporal.Instant.fromEpochMilliseconds(millisSinceEpoch); + const zdt = instant.toZonedDateTimeISO(timeZoneId); + const [hour, min] = zdt.offset.split(':').map((s: string) => parseInt(s, 10)); + const h60 = hour * 60; + const minutes = hour < 0 ? h60 - min : h60 + min; + return minutes * 60 * 1000; } } diff --git a/src/util/AstronomicalCalculator.ts b/src/util/AstronomicalCalculator.ts index a08dca6..7547fd8 100644 --- a/src/util/AstronomicalCalculator.ts +++ b/src/util/AstronomicalCalculator.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { GeoLocation } from './GeoLocation'; import { MathUtils } from '../polyfills/Utils'; @@ -110,7 +110,7 @@ export abstract class AstronomicalCalculator { * {@link java.lang.Double#NaN} will be returned. * @see #getElevationAdjustment(double) */ - public abstract getUTCSunrise(date: DateTime, geoLocation: GeoLocation, zenith: number, + public abstract getUTCSunrise(date: Temporal.PlainDate, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number; // eslint-disable-line @typescript-eslint/indent /** @@ -134,7 +134,7 @@ export abstract class AstronomicalCalculator { * {@link java.lang.Double#NaN} will be returned. * @see #getElevationAdjustment(double) */ - public abstract getUTCSunset(date: DateTime, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number; + public abstract getUTCSunset(date: Temporal.PlainDate, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number; /** * Return solar noon (UTC) for the given day at the @@ -149,7 +149,7 @@ export abstract class AstronomicalCalculator { * * @return the time in minutes from zero UTC */ - public abstract getUTCNoon(date: DateTime, geoLocation: GeoLocation): number; + public abstract getUTCNoon(date: Temporal.PlainDate, geoLocation: GeoLocation): number; /** * Return solar midnight (UTC) for the given day at the @@ -164,7 +164,7 @@ export abstract class AstronomicalCalculator { * * @return the time in minutes from zero UTC */ - public abstract getUTCMidnight(date: DateTime, geoLocation: GeoLocation): number; + public abstract getUTCMidnight(date: Temporal.PlainDate, geoLocation: GeoLocation): number; /** * Method to return the adjustment to the zenith required to account for the elevation. Since a person at a higher diff --git a/src/util/GeoLocation.ts b/src/util/GeoLocation.ts index 2a3550a..efe3322 100644 --- a/src/util/GeoLocation.ts +++ b/src/util/GeoLocation.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { MathUtils, TimeZone } from '../polyfills/Utils'; import { IllegalArgumentException, UnsupportedError } from '../polyfills/errors'; @@ -631,10 +631,10 @@ export class GeoLocation { .concat(`\nLongitude:\t\t\t${this.getLongitude().toString()}\u00B0`) .concat(`\nElevation:\t\t\t${this.getElevation().toString()} Meters`) .concat(`\nTimezone ID:\t\t\t${this.getTimeZone()}`) - .concat(`\nTimezone Display Name:\t\t${TimeZone.getDisplayName(this.getTimeZone())}`) - .concat(` (${TimeZone.getDisplayName(this.getTimeZone(), DateTime.local(), true)})`) + // .concat(`\nTimezone Display Name:\t\t${TimeZone.getDisplayName(this.getTimeZone())}`) + // .concat(` (${TimeZone.getDisplayName(this.getTimeZone(), Temporal.Now.zonedDateTimeISO(), true)})`) .concat(`\nTimezone GMT Offset:\t\t${(TimeZone.getRawOffset(this.getTimeZone()) / GeoLocation.HOUR_MILLIS).toString()}`) - .concat(`\nTimezone DST Offset:\t\t${(TimeZone.getDSTSavings(this.getTimeZone()) / GeoLocation.HOUR_MILLIS).toString()}`); + // .concat(`\nTimezone DST Offset:\t\t${(TimeZone.getDSTSavings(this.getTimeZone()) / GeoLocation.HOUR_MILLIS).toString()}`); } /** diff --git a/src/util/NOAACalculator.ts b/src/util/NOAACalculator.ts index acd82f0..fbaae7a 100644 --- a/src/util/NOAACalculator.ts +++ b/src/util/NOAACalculator.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { GeoLocation } from './GeoLocation'; import { AstronomicalCalculator } from './AstronomicalCalculator'; @@ -63,7 +63,7 @@ export class NOAACalculator extends AstronomicalCalculator { /** * @see AstronomicalCalculator#getUTCSunrise(Calendar, GeoLocation, double, boolean) */ - public getUTCSunrise(date: DateTime, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number { + public getUTCSunrise(date: Temporal.PlainDate, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number { const elevation: number = adjustForElevation ? geoLocation.getElevation() : 0; const adjustedZenith: number = this.adjustZenith(zenith, elevation); @@ -77,7 +77,7 @@ export class NOAACalculator extends AstronomicalCalculator { /** * @see AstronomicalCalculator#getUTCSunset(Calendar, GeoLocation, double, boolean) */ - public getUTCSunset(date: DateTime, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number { + public getUTCSunset(date: Temporal.PlainDate, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number { const elevation: number = adjustForElevation ? geoLocation.getElevation() : 0; const adjustedZenith: number = this.adjustZenith(zenith, elevation); @@ -96,7 +96,7 @@ export class NOAACalculator extends AstronomicalCalculator { * @return the Julian day corresponding to the date Note: Number is returned for start of day. Fractional days * should be added later. */ - private static getJulianDay(date: DateTime): number { + private static getJulianDay(date: Temporal.PlainDate): number { let { year, month } = date; const { day } = date; if (month <= 2) { @@ -341,8 +341,8 @@ export class NOAACalculator extends AstronomicalCalculator { * @return solar elevation in degrees - horizon is 0 degrees, civil twilight is -6 degrees */ - public static getSolarElevation(date: DateTime, latitude: number, longitude: number): number { - const julianDay: number = NOAACalculator.getJulianDay(date); + public static getSolarElevation(date: Temporal.ZonedDateTime, latitude: number, longitude: number): number { + const julianDay: number = NOAACalculator.getJulianDay(date.toPlainDate()); const julianCenturies: number = NOAACalculator.getJulianCenturiesFromJulianDay(julianDay); const eot: number = NOAACalculator.getEquationOfTime(julianCenturies); let adjustedLongitude: number = (date.hour + 12) + (date.minute + eot + date.second / 60) / 60; @@ -370,8 +370,8 @@ export class NOAACalculator extends AstronomicalCalculator { * @return FIXME */ - public static getSolarAzimuth(date: DateTime, latitude: number, longitude: number): number { - const julianDay: number = NOAACalculator.getJulianDay(date); + public static getSolarAzimuth(date: Temporal.ZonedDateTime, latitude: number, longitude: number): number { + const julianDay: number = NOAACalculator.getJulianDay(date.toPlainDate()); const julianCenturies: number = NOAACalculator.getJulianCenturiesFromJulianDay(julianDay); const eot: number = NOAACalculator.getEquationOfTime(julianCenturies); let adjustedLongitude: number = (date.hour + 12) + (date.minute + eot + date.second / 60) / 60; @@ -403,7 +403,7 @@ export class NOAACalculator extends AstronomicalCalculator { * the longitude for calculating noon since it is the same time anywhere along the longitude line. * @return the time in minutes from zero UTC */ - public getUTCNoon(date: DateTime, geoLocation: GeoLocation): number { + public getUTCNoon(date: Temporal.PlainDate, geoLocation: GeoLocation): number { let noon = NOAACalculator.getSolarNoonMidnightUTC(NOAACalculator.getJulianDay(date), -geoLocation.getLongitude(), NOAACalculator.SolarEvent.NOON); noon = noon / 60; @@ -428,7 +428,7 @@ export class NOAACalculator extends AstronomicalCalculator { * the longitude for calculating noon since it is the same time anywhere along the longitude line. * @return the time in minutes from zero UTC */ - public getUTCMidnight(date: DateTime, geoLocation: GeoLocation): number { + public getUTCMidnight(date: Temporal.PlainDate, geoLocation: GeoLocation): number { let midnight: number = NOAACalculator.getSolarNoonMidnightUTC(NOAACalculator.getJulianDay(date), -geoLocation.getLongitude(), NOAACalculator.SolarEvent.MIDNIGHT); midnight = midnight / 60; return midnight > 0 ? midnight % 24 : (midnight % 24) + 24; // ensure that the time is >= 0 and < 24 @@ -483,7 +483,7 @@ export class NOAACalculator extends AstronomicalCalculator { * If the calculation is for {@link SolarEvent#SUNRISE SUNRISE} or {@link SolarEvent#SUNSET SUNSET} * @return the time in minutes from zero Universal Coordinated Time (UTC) */ - private static getSunRiseSetUTC(date: DateTime, latitude: number, longitude: number, zenith: number, solarEvent: ValueOf): number { + private static getSunRiseSetUTC(date: Temporal.PlainDate, latitude: number, longitude: number, zenith: number, solarEvent: ValueOf): number { const julianDay: number = this.getJulianDay(date); // Find the time of solar noon at the location, and use that declination. diff --git a/src/util/SunTimesCalculator.ts b/src/util/SunTimesCalculator.ts index 3b6a169..70df9ac 100644 --- a/src/util/SunTimesCalculator.ts +++ b/src/util/SunTimesCalculator.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { GeoLocation } from './GeoLocation'; import { AstronomicalCalculator } from './AstronomicalCalculator'; @@ -36,7 +36,7 @@ export class SunTimesCalculator extends AstronomicalCalculator { /** * @see AstronomicalCalculator#getUTCSunrise(Calendar, GeoLocation, double, boolean) */ - public getUTCSunrise(date: DateTime, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number { + public getUTCSunrise(date: Temporal.PlainDate, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number { const elevation: number = adjustForElevation ? geoLocation.getElevation() : 0; const adjustedZenith: number = this.adjustZenith(zenith, elevation); @@ -46,7 +46,7 @@ export class SunTimesCalculator extends AstronomicalCalculator { /** * @see AstronomicalCalculator#getUTCSunset(Calendar, GeoLocation, double, boolean) */ - public getUTCSunset(date: DateTime, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number { + public getUTCSunset(date: Temporal.PlainDate, geoLocation: GeoLocation, zenith: number, adjustForElevation: boolean): number { const elevation: number = adjustForElevation ? geoLocation.getElevation() : 0; const adjustedZenith: number = this.adjustZenith(zenith, elevation); @@ -230,8 +230,8 @@ export class SunTimesCalculator extends AstronomicalCalculator { * (expected behavior for some locations such as near the poles, * {@link Double#NaN} will be returned. */ - private static getTimeUTC(date: DateTime, geoLocation: GeoLocation, zenith: number, isSunrise: boolean): number { - const dayOfYear: number = date.ordinal; + private static getTimeUTC(date: Temporal.PlainDate, geoLocation: GeoLocation, zenith: number, isSunrise: boolean): number { + const dayOfYear: number = date.dayOfYear; const sunMeanAnomaly: number = SunTimesCalculator.getMeanAnomaly(dayOfYear, geoLocation.getLongitude(), isSunrise); const sunTrueLong: number = SunTimesCalculator.getSunTrueLongitude(sunMeanAnomaly); const sunRightAscensionHours: number = SunTimesCalculator.getSunRightAscensionHours(sunTrueLong); @@ -269,7 +269,7 @@ export class SunTimesCalculator extends AstronomicalCalculator { * @return the time in minutes from zero UTC. If an error was encountered in the calculation (expected behavior for * some locations such as near the poles, {@link Double#NaN} will be returned. */ - public getUTCNoon(date: DateTime, geoLocation: GeoLocation): number { + public getUTCNoon(date: Temporal.PlainDate, geoLocation: GeoLocation): number { const sunrise: number = this.getUTCSunrise(date, geoLocation, 90, false); const sunset: number = this.getUTCSunset(date, geoLocation, 90, false); @@ -297,7 +297,7 @@ export class SunTimesCalculator extends AstronomicalCalculator { * @return the time in minutes from zero UTC. If an error was encountered in the calculation (expected behavior for * some locations such as near the poles, {@link Double#NaN} will be returned. */ - public getUTCMidnight(date: DateTime, geoLocation: GeoLocation): number { + public getUTCMidnight(date: Temporal.PlainDate, geoLocation: GeoLocation): number { return this.getUTCNoon(date, geoLocation) + 12; } } diff --git a/src/util/Zman.ts b/src/util/Zman.ts index fa39a05..f45a7ab 100644 --- a/src/util/Zman.ts +++ b/src/util/Zman.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { IntegerUtils, StringUtils } from '../polyfills/Utils'; import { UnsupportedError } from '../polyfills/errors'; @@ -54,7 +54,7 @@ export class Zman { /** * The {@link Date} of the zman */ - zman?: DateTime; + zman?: Temporal.ZonedDateTime; /** * The duration if the zman is a {@link AstronomicalCalendar#getTemporalHour() temporal hour} (or the various @@ -79,7 +79,7 @@ export class Zman { * @param label the label of the zman such as "Sof Zman Krias Shema GRA". * @see #Zman(Date, GeoLocation, String) */ - constructor(date: DateTime, label: string | null) + constructor(date: Temporal.ZonedDateTime, label: string | null) /** * The constructor setting a duration based zman such as * {@link AstronomicalCalendar#getTemporalHour() temporal hour} (or the various shaah zmanis times such as @@ -90,8 +90,8 @@ export class Zman { * @see #Zman(Date, String) */ constructor(duration: number, label: string | null) - constructor(date: DateTime, geoLocation: GeoLocation, label: string | null) - constructor(dateOrDuration: number | DateTime, labelOrGeoLocation: string | GeoLocation | null, label?: string | null) { + constructor(date: Temporal.ZonedDateTime, geoLocation: GeoLocation, label: string | null) + constructor(dateOrDuration: number | Temporal.ZonedDateTime, labelOrGeoLocation: string | GeoLocation | null, label?: string | null) { this.label = label || null; if (labelOrGeoLocation instanceof GeoLocation) { @@ -100,7 +100,7 @@ export class Zman { this.label = labelOrGeoLocation; } - if (DateTime.isDateTime(dateOrDuration)) { + if (dateOrDuration instanceof Temporal.ZonedDateTime) { this.zman = dateOrDuration; } else { this.duration = dateOrDuration; @@ -114,8 +114,8 @@ export class Zman { * Please note that this class will handle cases where either the {@code Zman} is a null or {@link #getZman()} returns a null. */ static compareDateOrder(zman1: Zman, zman2: Zman): number { - const firstMillis = zman1.zman?.valueOf() || 0; - const secondMillis = zman2.zman?.valueOf() || 0; + const firstMillis = zman1.zman?.epochMilliseconds || 0; + const secondMillis = zman2.zman?.epochMilliseconds || 0; return IntegerUtils.compare(firstMillis, secondMillis); } @@ -179,5 +179,5 @@ export class Zman { } } -export type ZmanWithZmanDate = Zman & { zman: DateTime }; +export type ZmanWithZmanDate = Zman & { zman: Temporal.ZonedDateTime }; export type ZmanWithDuration = Zman & { duration: number }; diff --git a/src/util/ZmanimFormatter.ts b/src/util/ZmanimFormatter.ts index e3e550d..518c9c7 100644 --- a/src/util/ZmanimFormatter.ts +++ b/src/util/ZmanimFormatter.ts @@ -1,4 +1,4 @@ -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { TimeZone, Utils, padZeros } from '../polyfills/Utils'; import { Time } from './Time'; @@ -301,35 +301,36 @@ export class ZmanimFormatter { /** * Formats a date using this class's {@link #getDateFormat() date format}. * - * @param dateTime - the date to format + * @param Temporal.ZonedDateTime - the date to format * @return the formatted String */ - public formatDateTime(dateTime: DateTime): string { + public formatDateTime(dateTime: Temporal.ZonedDateTime): string { // eslint-disable-next-line @typescript-eslint/naming-convention - const _dateTime = dateTime.setZone(this.getTimeZone()); + const _dateTime = dateTime.with({ timeZone: this.getTimeZone() }); if (this.dateFormat === ZmanimFormatter.XSD_DATE_FORMAT) { return this.getXSDateTime(_dateTime); } - return _dateTime.toFormat(this.dateFormat); + return _dateTime.toLocaleString(); // TODO .toFormat(this.dateFormat); } /** * The date:date-time function returns the current date and time as a date/time string. The date/time string that's - * returned must be a string in the format defined as the lexical representation of xs:dateTime in [3.3.8 dateTime] of [3.3.8 Temporal.ZonedDateTime] of [XML Schema 1.1 Part 2: Datatypes]. The date/time format is * basically CCYY-MM-DDThh:mm:ss, although implementers should consult [XML Schema 1.1 Part 2: Datatypes] and [ISO 8601] for details. The date/time string format must include a * time zone, either a Z to indicate Coordinated Universal Time or a + or - followed by the difference between the * difference from UTC represented as hh:mm. - * @param dateTime - the UTC Date Object - * @return the XSD dateTime + * @param Temporal.ZonedDateTime - the UTC Date Object + * @return the XSD Temporal.ZonedDateTime */ - public getXSDateTime(dateTime: DateTime): string { - return dateTime.setZone(this.getTimeZone()) - .toFormat(ZmanimFormatter.XSD_DATE_FORMAT.concat('ZZ')); + public getXSDateTime(dateTime: Temporal.ZonedDateTime): string { + return dateTime.with({ timeZone: this.getTimeZone() }).toString(); + // return dateTime.setZone(this.getTimeZone()) + // .toFormat(ZmanimFormatter.XSD_DATE_FORMAT.concat('ZZ')); } /** @@ -400,7 +401,7 @@ export class ZmanimFormatter { * </AstronomicalTimes> * * - * Note that the output uses the xsd:dateTime format for + * Note that the output uses the xsd:Temporal.ZonedDateTime format for * times such as sunrise, and xsd:duration format for * times that are a duration such as the length of a * {@link AstronomicalCalendar#getTemporalHour() temporal hour}. The output of this method is @@ -450,7 +451,7 @@ export class ZmanimFormatter { * } * * - * Note that the output uses the xsd:dateTime format for + * Note that the output uses the xsd:Temporal.ZonedDateTime format for * times such as sunrise, and xsd:duration format for * times that are a duration such as the length of a * {@link AstronomicalCalendar#getTemporalHour() temporal hour}. @@ -502,10 +503,10 @@ export class ZmanimFormatter { } private static getOutputMetadata(astronomicalCalendar: AstronomicalCalendar): OutputMetadata { - const df: string = 'yyyy-MM-dd'; + // const df: string = 'yyyy-MM-dd'; return { - date: astronomicalCalendar.getDate().toFormat(df), + date: astronomicalCalendar.getDate().toString(), // .toFormat(df), type: astronomicalCalendar.getClassName(), algorithm: astronomicalCalendar.getAstronomicalCalculator().getCalculatorName(), location: astronomicalCalendar.getGeoLocation().getLocationName(), @@ -515,7 +516,7 @@ export class ZmanimFormatter { timeZoneName: TimeZone.getDisplayName(astronomicalCalendar.getGeoLocation().getTimeZone(), astronomicalCalendar.getDate()), timeZoneID: astronomicalCalendar.getGeoLocation().getTimeZone(), timeZoneOffset: ZmanimFormatter.formatDecimal(TimeZone.getOffset(astronomicalCalendar.getGeoLocation().getTimeZone(), - astronomicalCalendar.getDate().valueOf()) / ZmanimFormatter.HOUR_MILLIS), + astronomicalCalendar.getDate().toZonedDateTime({ timeZone: astronomicalCalendar.getGeoLocation().getTimeZone() }).epochMilliseconds) / ZmanimFormatter.HOUR_MILLIS), }; } @@ -537,12 +538,12 @@ export class ZmanimFormatter { value: (astronomicalCalendar as any as Record)[method].call(astronomicalCalendar), })) // Filter for return values of type Date or number - .filter(methodObj => DateTime.isDateTime(methodObj.value) || typeof methodObj.value === 'number' || methodObj.value === null) + .filter(methodObj => methodObj.value instanceof Temporal.ZonedDateTime || typeof methodObj.value === 'number' || methodObj.value === null) // Separate the Dates and numbers .forEach(methodObj => { const tagName: string = methodObj.methodName.substring(3); - if (DateTime.isDateTime(methodObj.value)) { - dateList.push(new Zman(methodObj.value as DateTime, tagName) as ZmanWithZmanDate); + if (methodObj.value instanceof Temporal.ZonedDateTime) { + dateList.push(new Zman(methodObj.value as Temporal.ZonedDateTime, tagName) as ZmanWithZmanDate); } else if (typeof methodObj.value === 'number') { durationList.push(new Zman(methodObj.value, tagName) as ZmanWithDuration); } else { diff --git a/tests/Utils.test.ts b/tests/Utils.test.ts index 7c01d6e..604b3c3 100644 --- a/tests/Utils.test.ts +++ b/tests/Utils.test.ts @@ -2,12 +2,14 @@ import { describe, it } from 'mocha'; import { assert } from 'chai'; -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import { MathUtils, StringUtils, TimeZone, Utils, padZeros } from '../src/polyfills/Utils'; -const janDateTime = DateTime.fromMillis(1483228800000, { zone: 'UTC' }); -const julyDateTime = DateTime.fromMillis(1498867200000, { zone: 'UTC' }); +const janDateTime = Temporal.Instant.fromEpochMilliseconds(1483228800000) + .toZonedDateTimeISO('UTC').toPlainDate(); +const julyDateTime = Temporal.Instant.fromEpochMilliseconds(1498867200000) + .toZonedDateTimeISO('UTC').toPlainDate(); describe('Test Utils', function () { it('Tests Utils.getAllMethodNames()', function () { @@ -79,13 +81,15 @@ describe('Test TimeZone', function () { }); it('Gets the raw offset for Australia/Eucla on 2019/01/01 00:00:00Z', function () { - const result = TimeZone.getOffset('Australia/Eucla', janDateTime.valueOf()); + const zdt = janDateTime.toZonedDateTime({ timeZone: 'Australia/Eucla' }); + const result = TimeZone.getOffset('Australia/Eucla', zdt.epochMilliseconds); const expected = 8.75 * 60 * 60 * 1000; assert.strictEqual(result, expected); }); it('Gets the raw offset for Australia/Eucla on 2019/07/01 00:00:00Z', function () { - const result = TimeZone.getOffset('Australia/Eucla', julyDateTime.valueOf()); + const zdt = julyDateTime.toZonedDateTime({ timeZone: 'Australia/Eucla' }); + const result = TimeZone.getOffset('Australia/Eucla', zdt.epochMilliseconds); const expected = 8.75 * 60 * 60 * 1000; assert.strictEqual(result, expected); }); diff --git a/tests/kosher-zmanim.test.ts b/tests/kosher-zmanim.test.ts index f6f268d..8ff6033 100644 --- a/tests/kosher-zmanim.test.ts +++ b/tests/kosher-zmanim.test.ts @@ -1,7 +1,7 @@ import { describe, it } from 'mocha'; import { assert } from 'chai'; -import { DateTime } from 'luxon'; +import { Temporal } from 'temporal-polyfill'; import * as KosherZmanim from '../src/kosher-zmanim'; @@ -9,7 +9,7 @@ import { omit } from './utils'; describe('Test kosher-zmanim', function () { it('It returns the correct metadata for Basic Zmanim', function () { - const date = new Date(); + const date = Temporal.Now.plainDateISO(); const locationName: string = 'Lakewood'; const latitude: number = 40.0821; const longitude: number = -74.2097; @@ -27,7 +27,7 @@ describe('Test kosher-zmanim', function () { const expected = { algorithm: 'US National Oceanic and Atmospheric Administration Algorithm', - date: DateTime.fromJSDate(date).toFormat('yyyy-MM-dd'), + date, elevation: '10.0', latitude: latitude.toString(), location: locationName, @@ -42,7 +42,7 @@ describe('Test kosher-zmanim', function () { }); it('It returns the correct metadata for Complex Zmanim', function () { - const date = new Date(); + const date = Temporal.Now.plainDateISO(); const latitude: number = 40.0821; const longitude: number = -74.2097; const timeZoneId: string = 'America/New_York'; @@ -59,7 +59,7 @@ describe('Test kosher-zmanim', function () { const expected = { algorithm: 'US National Oceanic and Atmospheric Administration Algorithm', - date: DateTime.fromJSDate(date).toFormat('yyyy-MM-dd'), + date, elevation: '10.0', latitude: latitude.toString(), location: null, From 54391d534fd339d6bac4cb194813162dfbc70c5b Mon Sep 17 00:00:00 2001 From: "Michael J. Radwin" Date: Sun, 30 Mar 2025 13:44:42 -0700 Subject: [PATCH 02/11] Some basic Zmanim times --- tests/zmanim.test.ts | 110 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 tests/zmanim.test.ts diff --git a/tests/zmanim.test.ts b/tests/zmanim.test.ts new file mode 100644 index 0000000..588b2f9 --- /dev/null +++ b/tests/zmanim.test.ts @@ -0,0 +1,110 @@ +/* eslint-disable max-len */ +import { Temporal } from 'temporal-polyfill'; +import { test } from 'mocha'; +import { assert } from 'chai'; +import { GeoLocation } from '../src/util/GeoLocation'; +import { ZmanimCalendar } from '../src/ZmanimCalendar'; + +// eslint-disable-next-line require-jsdoc +function makeZmanimCalendar(): ZmanimCalendar { + const latitude = 39.73915; + const longitude = -104.9847; + const elevtion = 1636; + const tzid = 'America/Denver'; + const gloc = new GeoLocation(null, latitude, longitude, elevtion, tzid); + const zman = new ZmanimCalendar(gloc); + zman.setUseElevation(true); + const plainDate = new Temporal.PlainDate(2020, 6, 5); // Friday June 5 2020 + zman.setDate(plainDate); + return zman; +} + +/* + * | Civil Date | Jun 5, 2020| + * | Jewish Date | 13 Sivan, 5780| + * | Day of Week | Fri| + * | Alos 16.1° | 3:48:37 AM| + * | Alos 72 Minutes | 4:12:30 AM| + * | Misheyakir 10.2° | 4:32:14 AM| + * | Sunrise (1636.0 Meters) | 5:24:30 AM| + * | Sunrise (Sea Level) | 5:32:26 AM| + * | Sof Zman Shma MGA 72 Minutes | 8:35:37 AM| + * | Sof Zman Shma GRA | 9:11:37 AM| + * | Sof Zman Tfila MGA 72 Minutes | 10:03:19 AM| + * | Sof Zman Tfila GRA | 10:27:19 AM| + * | Chatzos Astronomical | 12:58:30 PM| + * | Mincha Gedola GRA | 1:36:35 PM| + * | Plag Hamincha | 6:58:19 PM| + * | Candle Lighting 18 Minutes | 8:07:01 PM| + * | Sunset (Sea Level) | 8:25:01 PM| + * | Sunset (1636.0 Meters) | 8:32:57 PM| + * | Tzais Geonim 8.5° | 9:13:45 PM| + * | Tzais 72 Minutes | 9:44:57 PM| + * | Tzais 16.1° | 10:09:05 PM + */ + +test('getSunrise', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSunrise(); + assert.strictEqual(zdt!.toString(), '2020-06-05T05:24:30.501-06:00[America/Denver]'); +}); + +test('getSeaLevelSunrise', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSeaLevelSunrise(); + assert.strictEqual(zdt!.toString(), '2020-06-05T05:32:26.007-06:00[America/Denver]'); +}); + +test('getSunset', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSunset(); + assert.strictEqual(zdt!.toString(), '2020-06-05T20:32:57.848-06:00[America/Denver]'); +}); + +test('getSeaLevelSunset', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSeaLevelSunset(); + assert.strictEqual(zdt!.toString(), '2020-06-05T20:25:01.588-06:00[America/Denver]'); +}); + +test('getSunriseOffsetByDegrees', () => { + const zman = makeZmanimCalendar(); + const zdt1 = zman.getSunriseOffsetByDegrees(90 + 16.1); + assert.strictEqual(zdt1!.toString(), '2020-06-05T03:48:37.581-06:00[America/Denver]'); + const zdt2 = zman.getSunriseOffsetByDegrees(90 + 11.5); + assert.strictEqual(zdt2!.toString(), '2020-06-05T04:23:08.923-06:00[America/Denver]'); + const zdt3 = zman.getSunriseOffsetByDegrees(90 + 10.2); + assert.strictEqual(zdt3!.toString(), '2020-06-05T04:32:14.456-06:00[America/Denver]'); +}); + +test('getSunsetOffsetByDegrees', () => { + const zman = makeZmanimCalendar(); + const zdt1 = zman.getSunsetOffsetByDegrees(90 + 7.083); + assert.strictEqual(zdt1!.toString(), '2020-06-05T21:04:21.276-06:00[America/Denver]'); + const zdt2 = zman.getSunsetOffsetByDegrees(90 + 8.5); + assert.strictEqual(zdt2!.toString(), '2020-06-05T21:13:45.311-06:00[America/Denver]'); +}); + +test('getAlosHashachar', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getAlosHashachar(); + assert.strictEqual(zdt!.toString(), '2020-06-05T03:48:37.581-06:00[America/Denver]'); +}); + +test('getAlos72', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getAlos72(); + assert.strictEqual(zdt!.toString(), '2020-06-05T04:12:30.501-06:00[America/Denver]'); +}); + +test('getTzais', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getTzais(); + assert.strictEqual(zdt!.toString(), '2020-06-05T21:13:45.311-06:00[America/Denver]'); +}); + +test('getTzais72', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getTzais72(); + assert.strictEqual(zdt!.toString(), '2020-06-05T21:44:57.848-06:00[America/Denver]'); +}); From 14946ad01146f51138b9319c81454a37b078d2ad Mon Sep 17 00:00:00 2001 From: "Michael J. Radwin" Date: Sun, 30 Mar 2025 15:40:10 -0700 Subject: [PATCH 03/11] Fix more Temporal porting errors --- src/ComplexZmanimCalendar.ts | 5 +++-- src/hebrewcalendar/JewishCalendar.ts | 2 +- src/util/ZmanimFormatter.ts | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ComplexZmanimCalendar.ts b/src/ComplexZmanimCalendar.ts index 6c4bd4c..a459076 100644 --- a/src/ComplexZmanimCalendar.ts +++ b/src/ComplexZmanimCalendar.ts @@ -3392,9 +3392,10 @@ export class ComplexZmanimCalendar extends ZmanimCalendar { const lastMidnight: Temporal.ZonedDateTime = this.getMidnightLastNight(); const midnightTonight: Temporal.ZonedDateTime = this.getMidnightTonight(); - if (!((moladBasedTime < lastMidnight) || (moladBasedTime > midnightTonight))) { + if (!((Temporal.ZonedDateTime.compare(moladBasedTime, lastMidnight) < 0) + || (Temporal.ZonedDateTime.compare(moladBasedTime, midnightTonight) > 0))) { if (alos !== null || tzais !== null) { - return techila && !(moladBasedTime < tzais! || moladBasedTime > alos!) + return techila && !(Temporal.ZonedDateTime.compare(moladBasedTime, tzais!) < 0 || Temporal.ZonedDateTime.compare(moladBasedTime, alos!) > 0) ? tzais : alos; } diff --git a/src/hebrewcalendar/JewishCalendar.ts b/src/hebrewcalendar/JewishCalendar.ts index 88790b7..aada463 100644 --- a/src/hebrewcalendar/JewishCalendar.ts +++ b/src/hebrewcalendar/JewishCalendar.ts @@ -1372,7 +1372,7 @@ export class JewishCalendar extends JewishDate { minute: molad.getMoladMinutes(), second: Math.trunc(moladSeconds), millisecond: milliseconds, - timeZoneId: geo.getTimeZone(), + timeZone: geo.getTimeZone(), }) .subtract({ milliseconds: Math.trunc(geo.getLocalMeanTimeOffset()) }); } diff --git a/src/util/ZmanimFormatter.ts b/src/util/ZmanimFormatter.ts index 518c9c7..15f1043 100644 --- a/src/util/ZmanimFormatter.ts +++ b/src/util/ZmanimFormatter.ts @@ -306,7 +306,7 @@ export class ZmanimFormatter { */ public formatDateTime(dateTime: Temporal.ZonedDateTime): string { // eslint-disable-next-line @typescript-eslint/naming-convention - const _dateTime = dateTime.with({ timeZone: this.getTimeZone() }); + const _dateTime = dateTime.withTimeZone(this.getTimeZone()); if (this.dateFormat === ZmanimFormatter.XSD_DATE_FORMAT) { return this.getXSDateTime(_dateTime); @@ -328,7 +328,7 @@ export class ZmanimFormatter { * @return the XSD Temporal.ZonedDateTime */ public getXSDateTime(dateTime: Temporal.ZonedDateTime): string { - return dateTime.with({ timeZone: this.getTimeZone() }).toString(); + return dateTime.withTimeZone(this.getTimeZone()).toString(); // return dateTime.setZone(this.getTimeZone()) // .toFormat(ZmanimFormatter.XSD_DATE_FORMAT.concat('ZZ')); } From c9ba0d76edc72d6a1010363bba5644fefead96cf Mon Sep 17 00:00:00 2001 From: "Michael J. Radwin" Date: Sun, 30 Mar 2025 15:47:23 -0700 Subject: [PATCH 04/11] Fix more ZDT comparisons --- src/AstronomicalCalendar.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/AstronomicalCalendar.ts b/src/AstronomicalCalendar.ts index 9a776a3..10c56c1 100644 --- a/src/AstronomicalCalendar.ts +++ b/src/AstronomicalCalendar.ts @@ -652,8 +652,8 @@ export class AstronomicalCalendar { const incrementor: Big = new Big('0.0001'); // If `minutes` is not `NaN` and `offsetByDegrees` is not null, `offsetByTime` should not be null - while (offsetByDegrees === null || ((minutes < 0 && offsetByDegrees < offsetByTime!) - || (minutes > 0 && offsetByDegrees > offsetByTime!))) { + while (offsetByDegrees === null || ((minutes < 0 && Temporal.ZonedDateTime.compare(offsetByDegrees, offsetByTime!) < 0) + || (minutes > 0 && Temporal.ZonedDateTime.compare(offsetByDegrees, offsetByTime!) > 0))) { if (minutes > 0) { degrees = degrees.add(incrementor); } else { @@ -687,8 +687,8 @@ export class AstronomicalCalendar { const incrementor: Big = new Big('0.001'); // If `minutes` is not `NaN` and `offsetByDegrees` is not null, `offsetByTime` should not be null - while (offsetByDegrees == null || ((minutes > 0 && offsetByDegrees < offsetByTime!) - || (minutes < 0 && offsetByDegrees > offsetByTime!))) { + while (offsetByDegrees === null || ((minutes > 0 && Temporal.ZonedDateTime.compare(offsetByDegrees, offsetByTime!) < 0) + || (minutes < 0 && Temporal.ZonedDateTime.compare(offsetByDegrees, offsetByTime!) > 0))) { if (minutes > 0) { degrees = degrees.add(incrementor); } else { From 5e08596540d1bbc1bfe831e50a199c63c34880db Mon Sep 17 00:00:00 2001 From: "Michael J. Radwin" Date: Sun, 30 Mar 2025 19:06:25 -0700 Subject: [PATCH 05/11] Finish fixing unit tests! --- src/ZmanimCalendar.ts | 3 ++- src/polyfills/Utils.ts | 11 ----------- src/util/GeoLocation.ts | 2 -- src/util/ZmanimFormatter.ts | 8 ++------ tests/Utils.test.ts | 1 - tests/kosher-zmanim.test.ts | 10 ++++------ 6 files changed, 8 insertions(+), 27 deletions(-) diff --git a/src/ZmanimCalendar.ts b/src/ZmanimCalendar.ts index 580727f..4d111e0 100644 --- a/src/ZmanimCalendar.ts +++ b/src/ZmanimCalendar.ts @@ -1138,7 +1138,8 @@ export class ZmanimCalendar extends AstronomicalCalendar { } // is shabbos or YT and it is before tzais - return jewishCalendar.isAssurBemelacha() && currentTime <= tzais; + return jewishCalendar.isAssurBemelacha() + && Temporal.ZonedDateTime.compare(currentTime, tzais) <= 0; } /** diff --git a/src/polyfills/Utils.ts b/src/polyfills/Utils.ts index 9bd30ca..646d78c 100644 --- a/src/polyfills/Utils.ts +++ b/src/polyfills/Utils.ts @@ -53,17 +53,6 @@ export namespace TimeZone { return Math.trunc(rawOffsetNanoseconds / 1_000_000); } - /** - * Returns a name in the specified style of this TimeZone suitable for presentation to the user in the default locale. - * @param {string} timeZoneId - * @param {Temporal.ZonedDateTime} [date] - * @param {boolean} [short] - */ - export function getDisplayName(timeZoneId: string, date: Temporal.PlainDate = Temporal.Now.plainDateISO(), short: boolean = false): string { - return 'unknown'; - // return Info.normalizeZone(timeZoneId).offsetName(date.toMillis(), { format: short ? 'short' : 'long' }); - } - /** * Returns the amount of time to be added to local standard time to get local wall clock time. * The default implementation returns 3600000 milliseconds (i.e., one hour) if a call to useDaylightTime() returns true. diff --git a/src/util/GeoLocation.ts b/src/util/GeoLocation.ts index efe3322..f80d69f 100644 --- a/src/util/GeoLocation.ts +++ b/src/util/GeoLocation.ts @@ -631,8 +631,6 @@ export class GeoLocation { .concat(`\nLongitude:\t\t\t${this.getLongitude().toString()}\u00B0`) .concat(`\nElevation:\t\t\t${this.getElevation().toString()} Meters`) .concat(`\nTimezone ID:\t\t\t${this.getTimeZone()}`) - // .concat(`\nTimezone Display Name:\t\t${TimeZone.getDisplayName(this.getTimeZone())}`) - // .concat(` (${TimeZone.getDisplayName(this.getTimeZone(), Temporal.Now.zonedDateTimeISO(), true)})`) .concat(`\nTimezone GMT Offset:\t\t${(TimeZone.getRawOffset(this.getTimeZone()) / GeoLocation.HOUR_MILLIS).toString()}`) // .concat(`\nTimezone DST Offset:\t\t${(TimeZone.getDSTSavings(this.getTimeZone()) / GeoLocation.HOUR_MILLIS).toString()}`); } diff --git a/src/util/ZmanimFormatter.ts b/src/util/ZmanimFormatter.ts index 15f1043..7b3c822 100644 --- a/src/util/ZmanimFormatter.ts +++ b/src/util/ZmanimFormatter.ts @@ -440,7 +440,6 @@ export class ZmanimFormatter { * "latitude":"40.095965", * "longitude":"-74.22213", * "elevation:"31.0", - * "timeZoneName":"Eastern Standard Time", * "timeZoneID":"America/New_York", * "timeZoneOffset":"-5"}, * "AstronomicalTimes":{ @@ -469,7 +468,6 @@ export class ZmanimFormatter { * "latitude":"40.095965", * "longitude":"-74.22213", * "elevation:"31.0", - * "timeZoneName":"Eastern Standard Time", * "timeZoneID":"America/New_York", * "timeZoneOffset":"-5"}, * "AstronomicalTimes":{ @@ -499,12 +497,12 @@ export class ZmanimFormatter { return 'BasicZmanim'; case astronomicalCalendar instanceof AstronomicalCalendar: return 'AstronomicalTimes'; + default: + return 'UNKNOWN'; } } private static getOutputMetadata(astronomicalCalendar: AstronomicalCalendar): OutputMetadata { - // const df: string = 'yyyy-MM-dd'; - return { date: astronomicalCalendar.getDate().toString(), // .toFormat(df), type: astronomicalCalendar.getClassName(), @@ -513,7 +511,6 @@ export class ZmanimFormatter { latitude: astronomicalCalendar.getGeoLocation().getLatitude().toString(), longitude: astronomicalCalendar.getGeoLocation().getLongitude().toString(), elevation: ZmanimFormatter.formatDecimal(astronomicalCalendar.getGeoLocation().getElevation()), - timeZoneName: TimeZone.getDisplayName(astronomicalCalendar.getGeoLocation().getTimeZone(), astronomicalCalendar.getDate()), timeZoneID: astronomicalCalendar.getGeoLocation().getTimeZone(), timeZoneOffset: ZmanimFormatter.formatDecimal(TimeZone.getOffset(astronomicalCalendar.getGeoLocation().getTimeZone(), astronomicalCalendar.getDate().toZonedDateTime({ timeZone: astronomicalCalendar.getGeoLocation().getTimeZone() }).epochMilliseconds) / ZmanimFormatter.HOUR_MILLIS), @@ -604,7 +601,6 @@ export interface OutputMetadata { latitude: string; longitude: string; elevation: string; - timeZoneName: string; timeZoneID: string; timeZoneOffset: string; } diff --git a/tests/Utils.test.ts b/tests/Utils.test.ts index 604b3c3..4223011 100644 --- a/tests/Utils.test.ts +++ b/tests/Utils.test.ts @@ -95,7 +95,6 @@ describe('Test TimeZone', function () { }); }); -// TODO: TimeZone.getDisplayName() // TODO: Zman describe('Test MathUtils', function () { diff --git a/tests/kosher-zmanim.test.ts b/tests/kosher-zmanim.test.ts index 8ff6033..38d3364 100644 --- a/tests/kosher-zmanim.test.ts +++ b/tests/kosher-zmanim.test.ts @@ -27,7 +27,7 @@ describe('Test kosher-zmanim', function () { const expected = { algorithm: 'US National Oceanic and Atmospheric Administration Algorithm', - date, + date: date.toString(), elevation: '10.0', latitude: latitude.toString(), location: locationName, @@ -36,8 +36,7 @@ describe('Test kosher-zmanim', function () { type: 'com.kosherjava.zmanim.ZmanimCalendar', }; - assert.deepStrictEqual(omit(zmanimJson.metadata, ['timeZoneName', 'timeZoneOffset']), expected); - assert.oneOf(zmanimJson.metadata.timeZoneName, ['Eastern Daylight Time', 'Eastern Standard Time']); + assert.deepStrictEqual(omit(zmanimJson.metadata, ['timeZoneOffset']), expected); assert.oneOf(zmanimJson.metadata.timeZoneOffset, ['-4.0', '-5.0']); }); @@ -59,7 +58,7 @@ describe('Test kosher-zmanim', function () { const expected = { algorithm: 'US National Oceanic and Atmospheric Administration Algorithm', - date, + date: date.toString(), elevation: '10.0', latitude: latitude.toString(), location: null, @@ -68,8 +67,7 @@ describe('Test kosher-zmanim', function () { type: 'com.kosherjava.zmanim.ComplexZmanimCalendar', }; - assert.deepStrictEqual(omit(zmanimJson.metadata, ['timeZoneName', 'timeZoneOffset']), expected); - assert.oneOf(zmanimJson.metadata.timeZoneName, ['Eastern Daylight Time', 'Eastern Standard Time']); + assert.deepStrictEqual(omit(zmanimJson.metadata, ['timeZoneOffset']), expected); assert.oneOf(zmanimJson.metadata.timeZoneOffset, ['-4.0', '-5.0']); }); }); From 3f934523f3630d6d515af403accc345eb897eeeb Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 14:16:32 +0000 Subject: [PATCH 06/11] Add unit tests for every public function in ComplexZmanimCalendar.ts This commit adds a new test file `tests/ComplexZmanimCalendar.test.ts` with comprehensive unit tests for the `ComplexZmanimCalendar` class. The tests cover all public methods, ensuring their current behavior is captured and protected against future regressions. The test setup uses a fixed location and date for consistency and comparability with other tests in the suite. --- tests/ComplexZmanimCalendar.test.ts | 944 ++++++++++++++++++++++++++++ 1 file changed, 944 insertions(+) create mode 100644 tests/ComplexZmanimCalendar.test.ts diff --git a/tests/ComplexZmanimCalendar.test.ts b/tests/ComplexZmanimCalendar.test.ts new file mode 100644 index 0000000..dde551a --- /dev/null +++ b/tests/ComplexZmanimCalendar.test.ts @@ -0,0 +1,944 @@ +/* eslint-disable max-len */ +import { Temporal } from 'temporal-polyfill'; +import { test } from 'mocha'; +import { assert } from 'chai'; +import { GeoLocation } from '../src/util/GeoLocation'; +import { ComplexZmanimCalendar } from '../src/ComplexZmanimCalendar'; + +function makeComplexZmanimCalendar(): ComplexZmanimCalendar { + const latitude = 39.73915; + const longitude = -104.9847; + const elevtion = 1636; + const tzid = 'America/Denver'; + const gloc = new GeoLocation(null, latitude, longitude, elevtion, tzid); + const zman = new ComplexZmanimCalendar(gloc); + zman.setUseElevation(true); + const plainDate = new Temporal.PlainDate(2020, 6, 5); // Friday June 5 2020 + zman.setDate(plainDate); + return zman; +} + +test('getShaahZmanis19Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis19Point8Degrees(); + assert.equal(shaahZmanis, 5821509); +}); + +test('getShaahZmanis18Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis18Degrees(); + assert.equal(shaahZmanis, 5660080.666666667); +}); + +test('getShaahZmanis26Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis26Degrees(); + assert.equal(shaahZmanis, 6590251.25); +}); + +test('getShaahZmanis16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis16Point1Degrees(); + assert.equal(shaahZmanis, 5502340.5); +}); + +test('getShaahZmanis60Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis60Minutes(); + assert.equal(shaahZmanis, 5142278.916666667); +}); + +test('getShaahZmanis72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis72Minutes(); + assert.equal(shaahZmanis, 5262278.916666667); +}); + +test('getShaahZmanis72MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis72MinutesZmanis(); + assert.equal(shaahZmanis, 5450734.583333333); +}); + +test('getShaahZmanis90Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis90Minutes(); + assert.equal(shaahZmanis, 5442278.916666667); +}); + +test('getShaahZmanis90MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis90MinutesZmanis(); + assert.equal(shaahZmanis, 5677848.583333333); +}); + +test('getShaahZmanis96MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis96MinutesZmanis(); + assert.equal(shaahZmanis, 5753553.25); +}); + +test('getShaahZmanisAteretTorah', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanisAteretTorah(); + assert.equal(shaahZmanis, 5196506.75); +}); + +test('getShaahZmanisAlos16Point1ToTzais3Point8', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanisAlos16Point1ToTzais3Point8(); + assert.equal(shaahZmanis, 5073439.166666667); +}); + +test('getShaahZmanisAlos16Point1ToTzais3Point7', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanisAlos16Point1ToTzais3Point7(); + assert.equal(shaahZmanis, 5070305.75); +}); + +test('getShaahZmanis96Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis96Minutes(); + assert.equal(shaahZmanis, 5502278.916666667); +}); + +test('getShaahZmanis120Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis120Minutes(); + assert.equal(shaahZmanis, 5742278.916666667); +}); + +test('getShaahZmanis120MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanis120MinutesZmanis(); + assert.equal(shaahZmanis, 6056371.75); +}); + +test('getAlos60', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos60(); + assert.strictEqual(alos!.toString(), '2020-06-05T04:24:30.501-06:00[America/Denver]'); +}); + +test('getAlos72Zmanis', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos72Zmanis(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:53:39.767-06:00[America/Denver]'); +}); + +test('getAlos96', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos96(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:48:30.501-06:00[America/Denver]'); +}); + +test('getAlos90Zmanis', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos90Zmanis(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:30:57.083-06:00[America/Denver]'); +}); + +test('getAlos96Zmanis', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos96Zmanis(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:23:22.855-06:00[America/Denver]'); +}); + +test('getAlos90', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos90(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:54:30.501-06:00[America/Denver]'); +}); + +test('getAlos120', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos120(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:24:30.501-06:00[America/Denver]'); +}); + +test('getAlos120Zmanis', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos120Zmanis(); + assert.strictEqual(alos!.toString(), '2020-06-05T02:53:05.944-06:00[America/Denver]'); +}); + +test('getAlos26Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos26Degrees(); + assert.strictEqual(alos!.toString(), '2020-06-05T02:00:27.165-06:00[America/Denver]'); +}); + +test('getAlos18Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos18Degrees(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:32:53.265-06:00[America/Denver]'); +}); + +test('getAlos19Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos19Degrees(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:24:06.709-06:00[America/Denver]'); +}); + +test('getAlos19Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos19Point8Degrees(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:16:47.375-06:00[America/Denver]'); +}); + +test('getAlos16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlos16Point1Degrees(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:48:37.581-06:00[America/Denver]'); +}); + +test('getMisheyakir11Point5Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const misheyakir = zman.getMisheyakir11Point5Degrees(); + assert.strictEqual(misheyakir!.toString(), '2020-06-05T04:23:08.923-06:00[America/Denver]'); +}); + +test('getMisheyakir11Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const misheyakir = zman.getMisheyakir11Degrees(); + assert.strictEqual(misheyakir!.toString(), '2020-06-05T04:26:40.45-06:00[America/Denver]'); +}); + +test('getMisheyakir10Point2Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const misheyakir = zman.getMisheyakir10Point2Degrees(); + assert.strictEqual(misheyakir!.toString(), '2020-06-05T04:32:14.456-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA19Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA19Point8Degrees(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:07:51.902-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA16Point1Degrees(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:23:44.602-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA18Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA18Degrees(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:15:53.507-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA72Minutes(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:35:37.337-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA72MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA72MinutesZmanis(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:26:11.97-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA90Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA90Minutes(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:26:37.337-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA90MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA90MinutesZmanis(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:14:50.628-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA96Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA96Minutes(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:23:37.337-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA96MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA96MinutesZmanis(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:11:03.514-06:00[America/Denver]'); +}); + +test('getSofZmanShma3HoursBeforeChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShma3HoursBeforeChatzos(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T09:58:30.268-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA120Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA120Minutes(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:11:37.337-06:00[America/Denver]'); +}); + +test('getSofZmanShmaAlos16Point1ToSunset', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaAlos16Point1ToSunset(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T07:59:42.647-06:00[America/Denver]'); +}); + +test('getSofZmanShmaAlos16Point1ToTzaisGeonim7Point083Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaAlos16Point1ToTzaisGeonim7Point083Degrees(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:07:33.537-06:00[America/Denver]'); +}); + +test('getSofZmanShmaKolEliyahu', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaKolEliyahu(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T09:12:13.415-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA19Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA19Point8Degrees(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:44:53.411-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA16Point1Degrees(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:55:26.943-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA18Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA18Degrees(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:50:13.587-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA72Minutes(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T10:03:19.616-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA72MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA72MinutesZmanis(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:57:02.705-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA90Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA90Minutes(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:57:19.616-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA90MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA90MinutesZmanis(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:49:28.477-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA96Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA96Minutes(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:55:19.616-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA96MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA96MinutesZmanis(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:46:57.068-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA120Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaMGA120Minutes(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:47:19.616-06:00[America/Denver]'); +}); + +test('getSofZmanTfila2HoursBeforeChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfila2HoursBeforeChatzos(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T10:58:30.268-06:00[America/Denver]'); +}); + +test('getMinchaGedola30Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedola30Minutes(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:28:30.268-06:00[America/Denver]'); +}); + +test('getMinchaGedola72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedola72Minutes(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:42:35.313-06:00[America/Denver]'); +}); + +test('getMinchaGedola16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedola16Point1Degrees(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:44:42.794-06:00[America/Denver]'); +}); + +test('getMinchaGedolaAhavatShalom', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedolaAhavatShalom(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:40:45.42-06:00[America/Denver]'); +}); + +test('getMinchaGedolaGreaterThan30', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedolaGreaterThan30(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:36:35.313-06:00[America/Denver]'); +}); + +test('getMinchaKetana16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const minchaKetana = zman.getMinchaKetana16Point1Degrees(); + assert.strictEqual(minchaKetana!.toString(), '2020-06-05T18:19:49.815-06:00[America/Denver]'); +}); + +test('getMinchaKetanaAhavatShalom', () => { + const zman = makeComplexZmanimCalendar(); + const minchaKetana = zman.getMinchaKetanaAhavatShalom(); + assert.strictEqual(minchaKetana!.toString(), '2020-06-05T17:11:55.254-06:00[America/Denver]'); +}); + +test('getMinchaKetana72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const minchaKetana = zman.getMinchaKetana72Minutes(); + assert.strictEqual(minchaKetana!.toString(), '2020-06-05T18:05:42.15-06:00[America/Denver]'); +}); + +test('getPlagHamincha60Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha60Minutes(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T19:45:49.999-06:00[America/Denver]'); +}); + +test('getPlagHamincha72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha72Minutes(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T19:55:19.999-06:00[America/Denver]'); +}); + +test('getPlagHamincha90Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha90Minutes(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T20:09:34.999-06:00[America/Denver]'); +}); + +test('getPlagHamincha96Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha96Minutes(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T20:14:19.999-06:00[America/Denver]'); +}); + +test('getPlagHamincha96MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha96MinutesZmanis(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T20:34:13.552-06:00[America/Denver]'); +}); + +test('getPlagHamincha90MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha90MinutesZmanis(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T20:28:13.955-06:00[America/Denver]'); +}); + +test('getPlagHamincha72MinutesZmanis', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha72MinutesZmanis(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T20:10:15.163-06:00[America/Denver]'); +}); + +test('getPlagHamincha16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha16Point1Degrees(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T20:14:27.741-06:00[America/Denver]'); +}); + +test('getPlagHamincha19Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha19Point8Degrees(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T20:39:48.596-06:00[America/Denver]'); +}); + +test('getPlagHamincha26Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha26Degrees(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T21:41:12.365-06:00[America/Denver]'); +}); + +test('getPlagHamincha18Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHamincha18Degrees(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T20:26:59.132-06:00[America/Denver]'); +}); + +test('getPlagAlosToSunset', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagAlosToSunset(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T18:48:20.736-06:00[America/Denver]'); +}); + +test('getPlagAlos16Point1ToTzaisGeonim7Point083Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagAlos16Point1ToTzaisGeonim7Point083Degrees(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T19:16:28.091-06:00[America/Denver]'); +}); + +test('getPlagAhavatShalom', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagAhavatShalom(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T18:57:37.053-06:00[America/Denver]'); +}); + +test('getBainHashmashosRT13Point24Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosRT13Point24Degrees(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T21:47:04.203-06:00[America/Denver]'); +}); + +test('getBainHashmashosRT58Point5Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosRT58Point5Minutes(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T21:31:27.848-06:00[America/Denver]'); +}); + +test('getBainHashmashosRT13Point5MinutesBefore7Point083Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosRT13Point5MinutesBefore7Point083Degrees(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T20:50:51.407-06:00[America/Denver]'); +}); + +test('getBainHashmashosRT2Stars', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosRT2Stars(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T21:08:26.494-06:00[America/Denver]'); +}); + +test('getBainHashmashosYereim18Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosYereim18Minutes(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T20:14:57.848-06:00[America/Denver]'); +}); + +test('getBainHashmashosYereim3Point05Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosYereim3Point05Degrees(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T20:01:54.067-06:00[America/Denver]'); +}); + +test('getBainHashmashosYereim16Point875Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosYereim16Point875Minutes(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T20:16:05.348-06:00[America/Denver]'); +}); + +test('getBainHashmashosYereim2Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosYereim2Point8Degrees(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T20:03:21.963-06:00[America/Denver]'); +}); + +test('getBainHashmashosYereim13Point5Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosYereim13Point5Minutes(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T20:19:27.848-06:00[America/Denver]'); +}); + +test('getBainHashmashosYereim2Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const bainHashmashos = zman.getBainHashmashosYereim2Point1Degrees(); + assert.strictEqual(bainHashmashos!.toString(), '2020-06-05T20:07:29.052-06:00[America/Denver]'); +}); + +test('getTzaisGeonim3Point7Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim3Point7Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T20:42:41.25-06:00[America/Denver]'); +}); + +test('getTzaisGeonim3Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim3Point8Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T20:43:18.851-06:00[America/Denver]'); +}); + +test('getTzaisGeonim5Point95Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim5Point95Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T20:56:59.087-06:00[America/Denver]'); +}); + +test('getTzaisGeonim4Point61Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim4Point61Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T20:48:25.158-06:00[America/Denver]'); +}); + +test('getTzaisGeonim4Point37Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim4Point37Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T20:46:54.072-06:00[America/Denver]'); +}); + +test('getTzaisGeonim5Point88Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim5Point88Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T20:56:32.005-06:00[America/Denver]'); +}); + +test('getTzaisGeonim4Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim4Point8Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T20:49:37.468-06:00[America/Denver]'); +}); + +test('getTzaisGeonim6Point45Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim6Point45Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T21:00:13.319-06:00[America/Denver]'); +}); + +test('getTzaisGeonim7Point083Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim7Point083Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T21:04:21.407-06:00[America/Denver]'); +}); + +test('getTzaisGeonim8Point5Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim8Point5Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T21:13:45.311-06:00[America/Denver]'); +}); + +test('getTzaisGeonim9Point3Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim9Point3Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T21:19:09.713-06:00[America/Denver]'); +}); + +test('getTzaisGeonim9Point75Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisGeonim9Point75Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T21:22:14.239-06:00[America/Denver]'); +}); + +test('getTzais60', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais60(); + assert.strictEqual(tzais!.toString(), '2020-06-05T21:32:57.848-06:00[America/Denver]'); +}); + +test('getTzaisAteretTorah', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisAteretTorah(); + assert.strictEqual(tzais!.toString(), '2020-06-05T21:12:57.848-06:00[America/Denver]'); +}); + +test('getAteretTorahSunsetOffset', () => { + const zman = makeComplexZmanimCalendar(); + const offset = zman.getAteretTorahSunsetOffset(); + assert.equal(offset, 40); +}); + +test('setAteretTorahSunsetOffset', () => { + const zman = makeComplexZmanimCalendar(); + zman.setAteretTorahSunsetOffset(50); + const offset = zman.getAteretTorahSunsetOffset(); + assert.equal(offset, 50); +}); + +test('getSofZmanShmaAteretTorah', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaAteretTorah(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:13:29.287-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaAteretTorah', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaAteretTorah(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T09:40:05.794-06:00[America/Denver]'); +}); + +test('getMinchaGedolaAteretTorah', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedolaAteretTorah(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:16:37.06-06:00[America/Denver]'); +}); + +test('getMinchaKetanaAteretTorah', () => { + const zman = makeComplexZmanimCalendar(); + const minchaKetana = zman.getMinchaKetanaAteretTorah(); + assert.strictEqual(minchaKetana!.toString(), '2020-06-05T17:36:26.581-06:00[America/Denver]'); +}); + +test('getPlagHaminchaAteretTorah', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHaminchaAteretTorah(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T19:24:42.214-06:00[America/Denver]'); +}); + +test('getTzais72Zmanis', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais72Zmanis(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:03:48.582-06:00[America/Denver]'); +}); + +test('getTzais90Zmanis', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais90Zmanis(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:26:31.266-06:00[America/Denver]'); +}); + +test('getTzais96Zmanis', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais96Zmanis(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:34:05.494-06:00[America/Denver]'); +}); + +test('getTzais90', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais90(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:02:57.848-06:00[America/Denver]'); +}); + +test('getTzais120', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais120(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:32:57.848-06:00[America/Denver]'); +}); + +test('getTzais120Zmanis', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais120Zmanis(); + assert.strictEqual(tzais!.toString(), '2020-06-05T23:04:22.405-06:00[America/Denver]'); +}); + +test('getTzais16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais16Point1Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:09:05.667-06:00[America/Denver]'); +}); + +test('getTzais26Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais26Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T23:58:30.18-06:00[America/Denver]'); +}); + +test('getTzais18Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais18Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:24:54.233-06:00[America/Denver]'); +}); + +test('getTzais19Point8Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais19Point8Degrees(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:41:05.483-06:00[America/Denver]'); +}); + +test('getTzais96', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais96(); + assert.strictEqual(tzais!.toString(), '2020-06-05T22:08:57.848-06:00[America/Denver]'); +}); + +test('getFixedLocalChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const chatzos = zman.getFixedLocalChatzos(); + assert.strictEqual(chatzos!.toString(), '2020-06-05T12:59:56.328-06:00[America/Denver]'); +}); + +test('getSofZmanShmaFixedLocal', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaFixedLocal(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T09:59:56.328-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaFixedLocal', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaFixedLocal(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T10:59:56.328-06:00[America/Denver]'); +}); + +test('getSofZmanAchilasChametzGRA', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanAchilasChametz = zman.getSofZmanAchilasChametzGRA(); + assert.strictEqual(sofZmanAchilasChametz!.toString(), '2020-06-05T10:27:19.616-06:00[America/Denver]'); +}); + +test('getSofZmanAchilasChametzMGA72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanAchilasChametz = zman.getSofZmanAchilasChametzMGA72Minutes(); + assert.strictEqual(sofZmanAchilasChametz!.toString(), '2020-06-05T10:03:19.616-06:00[America/Denver]'); +}); + +test('getSofZmanAchilasChametzMGA16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanAchilasChametz = zman.getSofZmanAchilasChametzMGA16Point1Degrees(); + assert.strictEqual(sofZmanAchilasChametz!.toString(), '2020-06-05T09:55:26.943-06:00[America/Denver]'); +}); + +test('getSofZmanBiurChametzGRA', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanBiurChametz = zman.getSofZmanBiurChametzGRA(); + assert.strictEqual(sofZmanBiurChametz!.toString(), '2020-06-05T11:43:01.895-06:00[America/Denver]'); +}); + +test('getSofZmanBiurChametzMGA72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanBiurChametz = zman.getSofZmanBiurChametzMGA72Minutes(); + assert.strictEqual(sofZmanBiurChametz!.toString(), '2020-06-05T11:31:01.895-06:00[America/Denver]'); +}); + +test('getSofZmanBiurChametzMGA16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanBiurChametz = zman.getSofZmanBiurChametzMGA16Point1Degrees(); + assert.strictEqual(sofZmanBiurChametz!.toString(), '2020-06-05T11:27:09.283-06:00[America/Denver]'); +}); + +test('getShaahZmanisBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanisBaalHatanya(); + assert.equal(shaahZmanis, 4508577.75); +}); + +test('getAlosBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const alos = zman.getAlosBaalHatanya(); + assert.strictEqual(alos!.toString(), '2020-06-05T03:42:07.966-06:00[America/Denver]'); +}); + +test('getSofZmanShmaBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaBaalHatanya(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T09:13:18.278-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaBaalHatanya(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T10:28:26.856-06:00[America/Denver]'); +}); + +test('getSofZmanAchilasChametzBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanAchilasChametz = zman.getSofZmanAchilasChametzBaalHatanya(); + assert.strictEqual(sofZmanAchilasChametz!.toString(), '2020-06-05T10:28:26.856-06:00[America/Denver]'); +}); + +test('getSofZmanBiurChametzBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanBiurChametz = zman.getSofZmanBiurChametzBaalHatanya(); + assert.strictEqual(sofZmanBiurChametz!.toString(), '2020-06-05T11:43:35.433-06:00[America/Denver]'); +}); + +test('getMinchaGedolaBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedolaBaalHatanya(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:36:18.3-06:00[America/Denver]'); +}); + +test('getMinchaGedolaBaalHatanyaGreaterThan30', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedolaBaalHatanyaGreaterThan30(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:36:18.3-06:00[America/Denver]'); +}); + +test('getMinchaKetanaBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const minchaKetana = zman.getMinchaKetanaBaalHatanya(); + assert.strictEqual(minchaKetana!.toString(), '2020-06-05T17:21:44.033-06:00[America/Denver]'); +}); + +test('getPlagHaminchaBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHaminchaBaalHatanya(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T18:55:39.755-06:00[America/Denver]'); +}); + +test('getTzaisBaalHatanya', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzaisBaalHatanya(); + assert.strictEqual(tzais!.toString(), '2020-06-05T20:57:18.448-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA18DegreesToFixedLocalChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA18DegreesToFixedLocalChatzos(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:16:24.796-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA16Point1DegreesToFixedLocalChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA16Point1DegreesToFixedLocalChatzos(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:24:16.954-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA90MinutesToFixedLocalChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA90MinutesToFixedLocalChatzos(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:27:13.414-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA72MinutesToFixedLocalChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaMGA72MinutesToFixedLocalChatzos(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T08:36:13.414-06:00[America/Denver]'); +}); + +test('getSofZmanShmaGRASunriseToFixedLocalChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanShma = zman.getSofZmanShmaGRASunriseToFixedLocalChatzos(); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T09:12:13.414-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaGRASunriseToFixedLocalChatzos', () => { + const zman = makeComplexZmanimCalendar(); + const sofZmanTfila = zman.getSofZmanTfilaGRASunriseToFixedLocalChatzos(); + assert.strictEqual(sofZmanTfila!.toString(), '2020-06-05T10:28:07.719-06:00[America/Denver]'); +}); + +test('getMinchaGedolaGRAFixedLocalChatzos30Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const minchaGedola = zman.getMinchaGedolaGRAFixedLocalChatzos30Minutes(); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:29:56.328-06:00[America/Denver]'); +}); + +test('getMinchaKetanaGRAFixedLocalChatzosToSunset', () => { + const zman = makeComplexZmanimCalendar(); + const minchaKetana = zman.getMinchaKetanaGRAFixedLocalChatzosToSunset(); + assert.strictEqual(minchaKetana!.toString(), '2020-06-05T17:24:12.214-06:00[America/Denver]'); +}); + +test('getPlagHaminchaGRAFixedLocalChatzosToSunset', () => { + const zman = makeComplexZmanimCalendar(); + const plagHamincha = zman.getPlagHaminchaGRAFixedLocalChatzosToSunset(); + assert.strictEqual(plagHamincha!.toString(), '2020-06-05T18:58:35.031-06:00[America/Denver]'); +}); + +test('getTzais50', () => { + const zman = makeComplexZmanimCalendar(); + const tzais = zman.getTzais50(); + assert.strictEqual(tzais!.toString(), '2020-06-05T21:22:57.848-06:00[America/Denver]'); +}); + +test('getSamuchLeMinchaKetanaGRA', () => { + const zman = makeComplexZmanimCalendar(); + const samuchLeMinchaKetana = zman.getSamuchLeMinchaKetanaGRA(); + assert.strictEqual(samuchLeMinchaKetana!.toString(), '2020-06-05T16:45:51.011-06:00[America/Denver]'); +}); + +test('getSamuchLeMinchaKetana16Point1Degrees', () => { + const zman = makeComplexZmanimCalendar(); + const samuchLeMinchaKetana = zman.getSamuchLeMinchaKetana16Point1Degrees(); + assert.strictEqual(samuchLeMinchaKetana!.toString(), '2020-06-05T17:33:58.645-06:00[America/Denver]'); +}); + +test('getSamuchLeMinchaKetana72Minutes', () => { + const zman = makeComplexZmanimCalendar(); + const samuchLeMinchaKetana = zman.getSamuchLeMinchaKetana72Minutes(); + assert.strictEqual(samuchLeMinchaKetana!.toString(), '2020-06-05T17:21:51.011-06:00[America/Denver]'); +}); From b3c95a6655728ffa98d6cf05f4025e67e7e37e81 Mon Sep 17 00:00:00 2001 From: "Michael J. Radwin" Date: Fri, 8 Aug 2025 08:24:52 -0700 Subject: [PATCH 07/11] Improve tests --- tests/complex.test.ts | 148 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 tests/complex.test.ts diff --git a/tests/complex.test.ts b/tests/complex.test.ts new file mode 100644 index 0000000..77555a8 --- /dev/null +++ b/tests/complex.test.ts @@ -0,0 +1,148 @@ +/* eslint-disable max-len */ +import { Temporal } from 'temporal-polyfill'; +import { test } from 'mocha'; +import { assert } from 'chai'; +import { GeoLocation } from '../src/util/GeoLocation'; +import { ComplexZmanimCalendar } from '../src/ComplexZmanimCalendar'; +import { JewishCalendar } from '../src/hebrewcalendar/JewishCalendar'; + +// eslint-disable-next-line require-jsdoc +function makeZmanimCalendar(): ComplexZmanimCalendar { + const latitude = 32.08088; + const longitude = 34.78057; + const tzid = 'Asia/Jerusalem'; + const gloc = new GeoLocation(null, latitude, longitude, 0, tzid); + const zman = new ComplexZmanimCalendar(gloc); + zman.setUseElevation(false); + const plainDate = new Temporal.PlainDate(2025, 3, 9); // Wednesday March 9 2025 + zman.setDate(plainDate); + return zman; +} + +test('getAlosBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getAlosBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T04:42:40.107+02:00[Asia/Jerusalem]'); +}); + +test('getSofZmanShmaBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanShmaBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T08:53:17.505+02:00[Asia/Jerusalem]'); +}); + +test('getSofZmanTfilaBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanTfilaBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T09:52:43.231+02:00[Asia/Jerusalem]'); +}); + +test('getSofZmanAchilasChametzBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanAchilasChametzBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T09:52:43.231+02:00[Asia/Jerusalem]'); +}); + +test('getSofZmanBiurChametzBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanBiurChametzBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T10:52:08.956+02:00[Asia/Jerusalem]'); +}); + +test('getMinchaGedolaBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getMinchaGedolaBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T12:21:17.545+02:00[Asia/Jerusalem]'); +}); + +test('getMinchaGedolaBaalHatanyaGreaterThan30', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getMinchaGedolaBaalHatanyaGreaterThan30(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T12:21:27.672+02:00[Asia/Jerusalem]'); +}); + +test('getMinchaKetanaBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getMinchaKetanaBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T15:19:34.722+02:00[Asia/Jerusalem]'); +}); + +test('getPlagHaminchaBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getPlagHaminchaBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T16:33:51.879+02:00[Asia/Jerusalem]'); +}); + +test('getTzaisBaalHatanya', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getTzaisBaalHatanya(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T18:09:02.216+02:00[Asia/Jerusalem]'); +}); + +test('getSofZmanBiurChametzMGA72Minutes', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanBiurChametzMGA72Minutes(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T10:40:44.331+02:00[Asia/Jerusalem]'); +}); + +test('getSofZmanShmaMGA18DegreesToFixedLocalChatzos', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanShmaMGA18DegreesToFixedLocalChatzos(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T08:09:09.925+02:00[Asia/Jerusalem]'); +}); + +test('getPlagHaminchaGRAFixedLocalChatzosToSunset', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getPlagHaminchaGRAFixedLocalChatzosToSunset(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T16:28:49.474+02:00[Asia/Jerusalem]'); +}); + +test('getTzais50', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getTzais50(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T18:34:36.003+02:00[Asia/Jerusalem]'); +}); + +test('getZmanMolad', () => { + const zman = makeZmanimCalendar(); + const plainDate = new Temporal.PlainDate(2025, 3, 29); // Saturday March 29 2025 + zman.setDate(plainDate); + const zdt = zman.getZmanMolad(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-29T03:25:06.837-02:00[Etc/GMT+2]'); +}); + +test('getTchilasZmanKidushLevana7Days-1', () => { + const zman = makeZmanimCalendar(); + const plainDate = new Temporal.PlainDate(2025, 3, 29); // Saturday March 29 2025 + zman.setDate(plainDate); + const zdt = zman.getTchilasZmanKidushLevana7Days(); + assert.isNull(zdt); +}); + +test.skip('getTchilasZmanKidushLevana7Days-2', () => { + const zman = makeZmanimCalendar(); + const plainDate = new Temporal.PlainDate(2025, 4, 4); // Friday April 4 2025 + zman.setDate(plainDate); + + const jewishCalendar = new JewishCalendar(plainDate); + assert.equal(jewishCalendar.getJewishDayOfMonth(), 6); + + const zdt = zman.getTchilasZmanKidushLevana7Days(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-03-09T18:09:02.216+02:00[Asia/Jerusalem]'); +}); From ee984f21f513425c8b8fa28b841a81eb43f20f47 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 15:33:10 +0000 Subject: [PATCH 08/11] I've added unit tests to cover all the public methods in `ZmanimCalendar.ts`. While working on this, I also found and fixed a bug in the `isAssurBemlacha` method. The issue was that `Temporal.ZonedDateTime` objects were being compared incorrectly. The new tests are located in `tests/ZmanimCalendar.test.ts`. To ensure their accuracy, I generated the expected values from the current version of your library. --- src/ZmanimCalendar.ts | 2 +- tests/ZmanimCalendar.test.ts | 170 +++++++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 tests/ZmanimCalendar.test.ts diff --git a/src/ZmanimCalendar.ts b/src/ZmanimCalendar.ts index 4d111e0..a54e05a 100644 --- a/src/ZmanimCalendar.ts +++ b/src/ZmanimCalendar.ts @@ -1133,7 +1133,7 @@ export class ZmanimCalendar extends AstronomicalCalendar { // erev shabbos, YT or YT sheni and after shkiah const sunset = this.getElevationAdjustedSunset(); if (!sunset) throw new NullPointerException(); - if (jewishCalendar.hasCandleLighting() && currentTime >= sunset) { + if (jewishCalendar.hasCandleLighting() && Temporal.ZonedDateTime.compare(currentTime, sunset) >= 0) { return true; } diff --git a/tests/ZmanimCalendar.test.ts b/tests/ZmanimCalendar.test.ts new file mode 100644 index 0000000..fa75295 --- /dev/null +++ b/tests/ZmanimCalendar.test.ts @@ -0,0 +1,170 @@ +/* eslint-disable max-len */ +import { Temporal } from 'temporal-polyfill'; +import { test } from 'mocha'; +import { assert } from 'chai'; +import { GeoLocation } from '../src/util/GeoLocation'; +import { ZmanimCalendar } from '../src/ZmanimCalendar'; + +// eslint-disable-next-line require-jsdoc +function makeZmanimCalendar(): ZmanimCalendar { + const latitude = 39.73915; + const longitude = -104.9847; + const elevtion = 1636; + const tzid = 'America/Denver'; + const gloc = new GeoLocation(null, latitude, longitude, elevtion, tzid); + const zman = new ZmanimCalendar(gloc); + zman.setUseElevation(true); + const plainDate = new Temporal.PlainDate(2020, 6, 5); // Friday June 5 2020 + zman.setDate(plainDate); + return zman; +} + +test('isUseElevation and setUseElevation', () => { + const zman = makeZmanimCalendar(); + assert.isTrue(zman.isUseElevation()); + zman.setUseElevation(false); + assert.isFalse(zman.isUseElevation()); +}); + +test('isUseAstronomicalChatzos and setUseAstronomicalChatzos', () => { + const zman = makeZmanimCalendar(); + assert.isTrue(zman.isUseAstronomicalChatzos()); + zman.setUseAstronomicalChatzos(false); + assert.isFalse(zman.isUseAstronomicalChatzos()); +}); + +test('isUseAstronomicalChatzosForOtherZmanim and setUseAstronomicalChatzosForOtherZmanim', () => { + const zman = makeZmanimCalendar(); + assert.isFalse(zman.isUseAstronomicalChatzosForOtherZmanim()); + zman.setUseAstronomicalChatzosForOtherZmanim(true); + assert.isTrue(zman.isUseAstronomicalChatzosForOtherZmanim()); +}); + +test('getCandleLightingOffset and setCandleLightingOffset', () => { + const zman = makeZmanimCalendar(); + assert.strictEqual(zman.getCandleLightingOffset(), 18); + zman.setCandleLightingOffset(20); + assert.strictEqual(zman.getCandleLightingOffset(), 20); +}); + +test('getChatzos', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getChatzos(); + assert.strictEqual(zdt!.toString(), '2020-06-05T12:58:30.268-06:00[America/Denver]'); +}); + +test('getChatzosAsHalfDay', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getChatzosAsHalfDay(); + assert.strictEqual(zdt!.toString(), '2020-06-05T12:58:43.797-06:00[America/Denver]'); +}); + +test('getSofZmanShmaGRA', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanShmaGRA(); + assert.strictEqual(zdt!.toString(), '2020-06-05T09:11:37.337-06:00[America/Denver]'); +}); + +test('getSofZmanShmaMGA', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanShmaMGA(); + assert.strictEqual(zdt!.toString(), '2020-06-05T08:35:37.337-06:00[America/Denver]'); +}); + +test('getCandleLighting', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getCandleLighting(); + assert.strictEqual(zdt!.toString(), '2020-06-05T20:07:01.588-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaGRA', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanTfilaGRA(); + assert.strictEqual(zdt!.toString(), '2020-06-05T10:27:19.616-06:00[America/Denver]'); +}); + +test('getSofZmanTfilaMGA', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSofZmanTfilaMGA(); + assert.strictEqual(zdt!.toString(), '2020-06-05T10:03:19.616-06:00[America/Denver]'); +}); + +test('getMinchaGedola', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getMinchaGedola(); + assert.strictEqual(zdt!.toString(), '2020-06-05T13:36:35.313-06:00[America/Denver]'); +}); + +test('getSamuchLeMinchaKetana', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getSamuchLeMinchaKetana(zman.getElevationAdjustedSunrise(), zman.getElevationAdjustedSunset()); + assert.strictEqual(zdt!.toString(), '2020-06-05T16:45:51.011-06:00[America/Denver]'); +}); + +test('getMinchaKetana', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getMinchaKetana(); + assert.strictEqual(zdt!.toString(), '2020-06-05T17:23:42.15-06:00[America/Denver]'); +}); + +test('getPlagHamincha', () => { + const zman = makeZmanimCalendar(); + const zdt = zman.getPlagHamincha(); + assert.strictEqual(zdt!.toString(), '2020-06-05T18:58:19.999-06:00[America/Denver]'); +}); + +test('getShaahZmanisGra', () => { + const zman = makeZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanisGra(); + assert.closeTo(shaahZmanis, 4542278.9, 0.1); +}); + +test('getShaahZmanisMGA', () => { + const zman = makeZmanimCalendar(); + const shaahZmanis = zman.getShaahZmanisMGA(); + assert.closeTo(shaahZmanis, 5262278.9, 0.1); +}); + +test('isAssurBemlacha', () => { + const zman = makeZmanimCalendar(); + const sunset = zman.getSunset()!; + const twoMinutesAfterSunset = sunset.add({ minutes: 2 }); + const tzais = zman.getTzais()!; + assert.isTrue(zman.isAssurBemlacha(twoMinutesAfterSunset, tzais, false)); +}); + +test('getShaahZmanisBasedZman', () => { + const zman = makeZmanimCalendar(); + const sunrise = zman.getElevationAdjustedSunrise(); + const sunset = zman.getElevationAdjustedSunset(); + const sofZmanShma = zman.getShaahZmanisBasedZman(sunrise, sunset, 3); + assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T09:11:37.337-06:00[America/Denver]'); +}); + +test('getPercentOfShaahZmanisFromDegrees', () => { + const zman = makeZmanimCalendar(); + const percent = zman.getPercentOfShaahZmanisFromDegrees(16.1, true); + assert.closeTo(percent, 1.399, 0.001); +}); + +test('getHalfDayBasedZman', () => { + const zman = makeZmanimCalendar(); + zman.setUseAstronomicalChatzosForOtherZmanim(true); + const chatzos = zman.getChatzos(); + const sunset = zman.getElevationAdjustedSunset(); + const minchaGedola = zman.getHalfDayBasedZman(chatzos, sunset, 0.5); + assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:36:22.566-06:00[America/Denver]'); +}); + +test('getHalfDayBasedShaahZmanis', () => { + const zman = makeZmanimCalendar(); + const chatzos = zman.getChatzos(); + const sunset = zman.getElevationAdjustedSunset(); + const shaahZmanis = zman.getHalfDayBasedShaahZmanis(chatzos, sunset); + assert.closeTo(shaahZmanis, 4544596.66, 0.01); +}); + +test('getClassName', () => { + const zman = makeZmanimCalendar(); + assert.strictEqual(zman.getClassName(), 'com.kosherjava.zmanim.ZmanimCalendar'); +}); From 0b3e9ca8f5ff98580b4b01093ff4601543cdad90 Mon Sep 17 00:00:00 2001 From: "Michael J. Radwin" Date: Fri, 8 Aug 2025 08:36:07 -0700 Subject: [PATCH 09/11] Improve unit tests --- tests/ZmanimCalendar.test.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/tests/ZmanimCalendar.test.ts b/tests/ZmanimCalendar.test.ts index fa75295..7eb407f 100644 --- a/tests/ZmanimCalendar.test.ts +++ b/tests/ZmanimCalendar.test.ts @@ -50,66 +50,77 @@ test('getCandleLightingOffset and setCandleLightingOffset', () => { test('getChatzos', () => { const zman = makeZmanimCalendar(); const zdt = zman.getChatzos(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T12:58:30.268-06:00[America/Denver]'); }); test('getChatzosAsHalfDay', () => { const zman = makeZmanimCalendar(); const zdt = zman.getChatzosAsHalfDay(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T12:58:43.797-06:00[America/Denver]'); }); test('getSofZmanShmaGRA', () => { const zman = makeZmanimCalendar(); const zdt = zman.getSofZmanShmaGRA(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T09:11:37.337-06:00[America/Denver]'); }); test('getSofZmanShmaMGA', () => { const zman = makeZmanimCalendar(); const zdt = zman.getSofZmanShmaMGA(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T08:35:37.337-06:00[America/Denver]'); }); test('getCandleLighting', () => { const zman = makeZmanimCalendar(); const zdt = zman.getCandleLighting(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T20:07:01.588-06:00[America/Denver]'); }); test('getSofZmanTfilaGRA', () => { const zman = makeZmanimCalendar(); const zdt = zman.getSofZmanTfilaGRA(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T10:27:19.616-06:00[America/Denver]'); }); test('getSofZmanTfilaMGA', () => { const zman = makeZmanimCalendar(); const zdt = zman.getSofZmanTfilaMGA(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T10:03:19.616-06:00[America/Denver]'); }); test('getMinchaGedola', () => { const zman = makeZmanimCalendar(); const zdt = zman.getMinchaGedola(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T13:36:35.313-06:00[America/Denver]'); }); test('getSamuchLeMinchaKetana', () => { const zman = makeZmanimCalendar(); - const zdt = zman.getSamuchLeMinchaKetana(zman.getElevationAdjustedSunrise(), zman.getElevationAdjustedSunset()); + const zdt = zman.getSamuchLeMinchaKetana(zman.getSunrise(), zman.getSunset()); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T16:45:51.011-06:00[America/Denver]'); }); test('getMinchaKetana', () => { const zman = makeZmanimCalendar(); const zdt = zman.getMinchaKetana(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T17:23:42.15-06:00[America/Denver]'); }); test('getPlagHamincha', () => { const zman = makeZmanimCalendar(); const zdt = zman.getPlagHamincha(); + assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2020-06-05T18:58:19.999-06:00[America/Denver]'); }); @@ -135,8 +146,8 @@ test('isAssurBemlacha', () => { test('getShaahZmanisBasedZman', () => { const zman = makeZmanimCalendar(); - const sunrise = zman.getElevationAdjustedSunrise(); - const sunset = zman.getElevationAdjustedSunset(); + const sunrise = zman.getSunrise(); + const sunset = zman.getSunset(); const sofZmanShma = zman.getShaahZmanisBasedZman(sunrise, sunset, 3); assert.strictEqual(sofZmanShma!.toString(), '2020-06-05T09:11:37.337-06:00[America/Denver]'); }); @@ -151,7 +162,7 @@ test('getHalfDayBasedZman', () => { const zman = makeZmanimCalendar(); zman.setUseAstronomicalChatzosForOtherZmanim(true); const chatzos = zman.getChatzos(); - const sunset = zman.getElevationAdjustedSunset(); + const sunset = zman.getSunset(); const minchaGedola = zman.getHalfDayBasedZman(chatzos, sunset, 0.5); assert.strictEqual(minchaGedola!.toString(), '2020-06-05T13:36:22.566-06:00[America/Denver]'); }); @@ -159,7 +170,7 @@ test('getHalfDayBasedZman', () => { test('getHalfDayBasedShaahZmanis', () => { const zman = makeZmanimCalendar(); const chatzos = zman.getChatzos(); - const sunset = zman.getElevationAdjustedSunset(); + const sunset = zman.getSunset(); const shaahZmanis = zman.getHalfDayBasedShaahZmanis(chatzos, sunset); assert.closeTo(shaahZmanis, 4544596.66, 0.01); }); From 92eeffae309b5c3b6d7d30ea63d35b3587cb84d4 Mon Sep 17 00:00:00 2001 From: "Michael J. Radwin" Date: Mon, 30 Mar 2026 08:03:19 -0700 Subject: [PATCH 10/11] Add unit test to confirm that Molad and KiddushLevana match original Java implementation --- tests/MoladKiddushLevana.test.ts | 116 +++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 tests/MoladKiddushLevana.test.ts diff --git a/tests/MoladKiddushLevana.test.ts b/tests/MoladKiddushLevana.test.ts new file mode 100644 index 0000000..80c4689 --- /dev/null +++ b/tests/MoladKiddushLevana.test.ts @@ -0,0 +1,116 @@ +/* eslint-disable max-len */ +/** + * Validates molad and Kiddush Levana calculations for Hebrew years 5786 and 5787 + * against expected values generated by the original Java KosherJava library. + */ +import { test } from 'mocha'; +import { assert } from 'chai'; +import { JewishCalendar } from '../src/hebrewcalendar/JewishCalendar'; +import { JewishDate } from '../src/hebrewcalendar/JewishDate'; +import { Calendar } from '../src/polyfills/Utils'; + +const MONTH_NAMES: string[] = [ + '', 'Nissan', 'Iyar', 'Sivan', 'Tammuz', 'Av', 'Elul', + 'Tishrei', 'Cheshvan', 'Kislev', 'Teves', 'Shevat', 'Adar', 'Adar II', +]; + +interface ExpectedRecord { + year: number; + month: number; + monthName: string; + isLeapYear: boolean; + moladYear: number; + moladMonth: number; + moladDay: number; + moladHours: number; + moladMinutes: number; + moladChalakim: number; + moladGregorianYear: number; + moladGregorianMonth: number; // 1-based (Java's getGregorianMonth()+1) + moladGregorianDay: number; + moladAsDate: string; + tchilasZmanKidushLevana3Days: string; + tchilasZmanKidushLevana7Days: string; + sofZmanKidushLevanaBetweenMoldos: string; + sofZmanKidushLevana15Days: string; +} + +const EXPECTED: ExpectedRecord[] = [ + // Year 5786 (not a leap year), 12 months starting from Tishrei + { year: 5786, month: 7, monthName: 'Tishrei', isLeapYear: false, moladYear: 5785, moladMonth: 6, moladDay: 29, moladHours: 12, moladMinutes: 10, moladChalakim: 7, moladGregorianYear: 2025, moladGregorianMonth: 9, moladGregorianDay: 22, moladAsDate: '2025-09-22T09:49:26.837Z', tchilasZmanKidushLevana3Days: '2025-09-25T09:49:26.837Z', tchilasZmanKidushLevana7Days: '2025-09-29T09:49:26.837Z', sofZmanKidushLevanaBetweenMoldos: '2025-10-07T04:11:28.503Z', sofZmanKidushLevana15Days: '2025-10-07T09:49:26.837Z' }, + { year: 5786, month: 8, monthName: 'Cheshvan', isLeapYear: false, moladYear: 5786, moladMonth: 7, moladDay: 30, moladHours: 0, moladMinutes: 54, moladChalakim: 8, moladGregorianYear: 2025, moladGregorianMonth: 10, moladGregorianDay: 22, moladAsDate: '2025-10-21T22:33:30.170Z', tchilasZmanKidushLevana3Days: '2025-10-24T22:33:30.170Z', tchilasZmanKidushLevana7Days: '2025-10-28T22:33:30.170Z', sofZmanKidushLevanaBetweenMoldos: '2025-11-05T16:55:31.836Z', sofZmanKidushLevana15Days: '2025-11-05T22:33:30.170Z' }, + { year: 5786, month: 9, monthName: 'Kislev', isLeapYear: false, moladYear: 5786, moladMonth: 8, moladDay: 29, moladHours: 13, moladMinutes: 38, moladChalakim: 9, moladGregorianYear: 2025, moladGregorianMonth: 11, moladGregorianDay: 20, moladAsDate: '2025-11-20T11:17:33.504Z', tchilasZmanKidushLevana3Days: '2025-11-23T11:17:33.504Z', tchilasZmanKidushLevana7Days: '2025-11-27T11:17:33.504Z', sofZmanKidushLevanaBetweenMoldos: '2025-12-05T05:39:35.170Z', sofZmanKidushLevana15Days: '2025-12-05T11:17:33.504Z' }, + { year: 5786, month: 10, monthName: 'Teves', isLeapYear: false, moladYear: 5786, moladMonth: 9, moladDay: 30, moladHours: 2, moladMinutes: 22, moladChalakim: 10, moladGregorianYear: 2025, moladGregorianMonth: 12, moladGregorianDay: 20, moladAsDate: '2025-12-20T00:01:36.837Z', tchilasZmanKidushLevana3Days: '2025-12-23T00:01:36.837Z', tchilasZmanKidushLevana7Days: '2025-12-27T00:01:36.837Z', sofZmanKidushLevanaBetweenMoldos: '2026-01-03T18:23:38.503Z', sofZmanKidushLevana15Days: '2026-01-04T00:01:36.837Z' }, + { year: 5786, month: 11, monthName: 'Shevat', isLeapYear: false, moladYear: 5786, moladMonth: 10, moladDay: 29, moladHours: 15, moladMinutes: 6, moladChalakim: 11, moladGregorianYear: 2026, moladGregorianMonth: 1, moladGregorianDay: 18, moladAsDate: '2026-01-18T12:45:40.170Z', tchilasZmanKidushLevana3Days: '2026-01-21T12:45:40.170Z', tchilasZmanKidushLevana7Days: '2026-01-25T12:45:40.170Z', sofZmanKidushLevanaBetweenMoldos: '2026-02-02T07:07:41.836Z', sofZmanKidushLevana15Days: '2026-02-02T12:45:40.170Z' }, + { year: 5786, month: 12, monthName: 'Adar', isLeapYear: false, moladYear: 5786, moladMonth: 11, moladDay: 30, moladHours: 3, moladMinutes: 50, moladChalakim: 12, moladGregorianYear: 2026, moladGregorianMonth: 2, moladGregorianDay: 17, moladAsDate: '2026-02-17T01:29:43.504Z', tchilasZmanKidushLevana3Days: '2026-02-20T01:29:43.504Z', tchilasZmanKidushLevana7Days: '2026-02-24T01:29:43.504Z', sofZmanKidushLevanaBetweenMoldos: '2026-03-03T19:51:45.170Z', sofZmanKidushLevana15Days: '2026-03-04T01:29:43.504Z' }, + { year: 5786, month: 1, monthName: 'Nissan', isLeapYear: false, moladYear: 5786, moladMonth: 12, moladDay: 29, moladHours: 16, moladMinutes: 34, moladChalakim: 13, moladGregorianYear: 2026, moladGregorianMonth: 3, moladGregorianDay: 18, moladAsDate: '2026-03-18T14:13:46.837Z', tchilasZmanKidushLevana3Days: '2026-03-21T14:13:46.837Z', tchilasZmanKidushLevana7Days: '2026-03-25T14:13:46.837Z', sofZmanKidushLevanaBetweenMoldos: '2026-04-02T08:35:48.503Z', sofZmanKidushLevana15Days: '2026-04-02T14:13:46.837Z' }, + { year: 5786, month: 2, monthName: 'Iyar', isLeapYear: false, moladYear: 5786, moladMonth: 1, moladDay: 30, moladHours: 5, moladMinutes: 18, moladChalakim: 14, moladGregorianYear: 2026, moladGregorianMonth: 4, moladGregorianDay: 17, moladAsDate: '2026-04-17T02:57:50.170Z', tchilasZmanKidushLevana3Days: '2026-04-20T02:57:50.170Z', tchilasZmanKidushLevana7Days: '2026-04-24T02:57:50.170Z', sofZmanKidushLevanaBetweenMoldos: '2026-05-01T21:19:51.836Z', sofZmanKidushLevana15Days: '2026-05-02T02:57:50.170Z' }, + { year: 5786, month: 3, monthName: 'Sivan', isLeapYear: false, moladYear: 5786, moladMonth: 2, moladDay: 29, moladHours: 18, moladMinutes: 2, moladChalakim: 15, moladGregorianYear: 2026, moladGregorianMonth: 5, moladGregorianDay: 16, moladAsDate: '2026-05-16T15:41:53.504Z', tchilasZmanKidushLevana3Days: '2026-05-19T15:41:53.504Z', tchilasZmanKidushLevana7Days: '2026-05-23T15:41:53.504Z', sofZmanKidushLevanaBetweenMoldos: '2026-05-31T10:03:55.170Z', sofZmanKidushLevana15Days: '2026-05-31T15:41:53.504Z' }, + { year: 5786, month: 4, monthName: 'Tammuz', isLeapYear: false, moladYear: 5786, moladMonth: 3, moladDay: 30, moladHours: 6, moladMinutes: 46, moladChalakim: 16, moladGregorianYear: 2026, moladGregorianMonth: 6, moladGregorianDay: 15, moladAsDate: '2026-06-15T04:25:56.837Z', tchilasZmanKidushLevana3Days: '2026-06-18T04:25:56.837Z', tchilasZmanKidushLevana7Days: '2026-06-22T04:25:56.837Z', sofZmanKidushLevanaBetweenMoldos: '2026-06-29T22:47:58.503Z', sofZmanKidushLevana15Days: '2026-06-30T04:25:56.837Z' }, + { year: 5786, month: 5, monthName: 'Av', isLeapYear: false, moladYear: 5786, moladMonth: 4, moladDay: 29, moladHours: 19, moladMinutes: 30, moladChalakim: 17, moladGregorianYear: 2026, moladGregorianMonth: 7, moladGregorianDay: 14, moladAsDate: '2026-07-14T17:10:00.170Z', tchilasZmanKidushLevana3Days: '2026-07-17T17:10:00.170Z', tchilasZmanKidushLevana7Days: '2026-07-21T17:10:00.170Z', sofZmanKidushLevanaBetweenMoldos: '2026-07-29T11:32:01.836Z', sofZmanKidushLevana15Days: '2026-07-29T17:10:00.170Z' }, + { year: 5786, month: 6, monthName: 'Elul', isLeapYear: false, moladYear: 5786, moladMonth: 5, moladDay: 30, moladHours: 8, moladMinutes: 15, moladChalakim: 0, moladGregorianYear: 2026, moladGregorianMonth: 8, moladGregorianDay: 13, moladAsDate: '2026-08-13T05:54:03.504Z', tchilasZmanKidushLevana3Days: '2026-08-16T05:54:03.504Z', tchilasZmanKidushLevana7Days: '2026-08-20T05:54:03.504Z', sofZmanKidushLevanaBetweenMoldos: '2026-08-28T00:16:05.170Z', sofZmanKidushLevana15Days: '2026-08-28T05:54:03.504Z' }, + // Year 5787 (leap year), 13 months starting from Tishrei + { year: 5787, month: 7, monthName: 'Tishrei', isLeapYear: true, moladYear: 5786, moladMonth: 6, moladDay: 29, moladHours: 20, moladMinutes: 59, moladChalakim: 1, moladGregorianYear: 2026, moladGregorianMonth: 9, moladGregorianDay: 11, moladAsDate: '2026-09-11T18:38:06.837Z', tchilasZmanKidushLevana3Days: '2026-09-14T18:38:06.837Z', tchilasZmanKidushLevana7Days: '2026-09-18T18:38:06.837Z', sofZmanKidushLevanaBetweenMoldos: '2026-09-26T13:00:08.503Z', sofZmanKidushLevana15Days: '2026-09-26T18:38:06.837Z' }, + { year: 5787, month: 8, monthName: 'Cheshvan', isLeapYear: true, moladYear: 5787, moladMonth: 7, moladDay: 30, moladHours: 9, moladMinutes: 43, moladChalakim: 2, moladGregorianYear: 2026, moladGregorianMonth: 10, moladGregorianDay: 11, moladAsDate: '2026-10-11T07:22:10.170Z', tchilasZmanKidushLevana3Days: '2026-10-14T07:22:10.170Z', tchilasZmanKidushLevana7Days: '2026-10-18T07:22:10.170Z', sofZmanKidushLevanaBetweenMoldos: '2026-10-26T01:44:11.836Z', sofZmanKidushLevana15Days: '2026-10-26T07:22:10.170Z' }, + { year: 5787, month: 9, monthName: 'Kislev', isLeapYear: true, moladYear: 5787, moladMonth: 8, moladDay: 29, moladHours: 22, moladMinutes: 27, moladChalakim: 3, moladGregorianYear: 2026, moladGregorianMonth: 11, moladGregorianDay: 9, moladAsDate: '2026-11-09T20:06:13.504Z', tchilasZmanKidushLevana3Days: '2026-11-12T20:06:13.504Z', tchilasZmanKidushLevana7Days: '2026-11-16T20:06:13.504Z', sofZmanKidushLevanaBetweenMoldos: '2026-11-24T14:28:15.170Z', sofZmanKidushLevana15Days: '2026-11-24T20:06:13.504Z' }, + { year: 5787, month: 10, monthName: 'Teves', isLeapYear: true, moladYear: 5787, moladMonth: 9, moladDay: 29, moladHours: 11, moladMinutes: 11, moladChalakim: 4, moladGregorianYear: 2026, moladGregorianMonth: 12, moladGregorianDay: 9, moladAsDate: '2026-12-09T08:50:16.837Z', tchilasZmanKidushLevana3Days: '2026-12-12T08:50:16.837Z', tchilasZmanKidushLevana7Days: '2026-12-16T08:50:16.837Z', sofZmanKidushLevanaBetweenMoldos: '2026-12-24T03:12:18.503Z', sofZmanKidushLevana15Days: '2026-12-24T08:50:16.837Z' }, + { year: 5787, month: 11, monthName: 'Shevat', isLeapYear: true, moladYear: 5787, moladMonth: 10, moladDay: 28, moladHours: 23, moladMinutes: 55, moladChalakim: 5, moladGregorianYear: 2027, moladGregorianMonth: 1, moladGregorianDay: 7, moladAsDate: '2027-01-07T21:34:20.170Z', tchilasZmanKidushLevana3Days: '2027-01-10T21:34:20.170Z', tchilasZmanKidushLevana7Days: '2027-01-14T21:34:20.170Z', sofZmanKidushLevanaBetweenMoldos: '2027-01-22T15:56:21.836Z', sofZmanKidushLevana15Days: '2027-01-22T21:34:20.170Z' }, + { year: 5787, month: 12, monthName: 'Adar', isLeapYear: true, moladYear: 5787, moladMonth: 11, moladDay: 29, moladHours: 12, moladMinutes: 39, moladChalakim: 6, moladGregorianYear: 2027, moladGregorianMonth: 2, moladGregorianDay: 6, moladAsDate: '2027-02-06T10:18:23.504Z', tchilasZmanKidushLevana3Days: '2027-02-09T10:18:23.504Z', tchilasZmanKidushLevana7Days: '2027-02-13T10:18:23.504Z', sofZmanKidushLevanaBetweenMoldos: '2027-02-21T04:40:25.170Z', sofZmanKidushLevana15Days: '2027-02-21T10:18:23.504Z' }, + { year: 5787, month: 13, monthName: 'Adar II', isLeapYear: true, moladYear: 5787, moladMonth: 12, moladDay: 29, moladHours: 1, moladMinutes: 23, moladChalakim: 7, moladGregorianYear: 2027, moladGregorianMonth: 3, moladGregorianDay: 8, moladAsDate: '2027-03-07T23:02:26.837Z', tchilasZmanKidushLevana3Days: '2027-03-10T23:02:26.837Z', tchilasZmanKidushLevana7Days: '2027-03-14T23:02:26.837Z', sofZmanKidushLevanaBetweenMoldos: '2027-03-22T17:24:28.503Z', sofZmanKidushLevana15Days: '2027-03-22T23:02:26.837Z' }, + { year: 5787, month: 1, monthName: 'Nissan', isLeapYear: true, moladYear: 5787, moladMonth: 13, moladDay: 28, moladHours: 14, moladMinutes: 7, moladChalakim: 8, moladGregorianYear: 2027, moladGregorianMonth: 4, moladGregorianDay: 6, moladAsDate: '2027-04-06T11:46:30.170Z', tchilasZmanKidushLevana3Days: '2027-04-09T11:46:30.170Z', tchilasZmanKidushLevana7Days: '2027-04-13T11:46:30.170Z', sofZmanKidushLevanaBetweenMoldos: '2027-04-21T06:08:31.836Z', sofZmanKidushLevana15Days: '2027-04-21T11:46:30.170Z' }, + { year: 5787, month: 2, monthName: 'Iyar', isLeapYear: true, moladYear: 5787, moladMonth: 1, moladDay: 29, moladHours: 2, moladMinutes: 51, moladChalakim: 9, moladGregorianYear: 2027, moladGregorianMonth: 5, moladGregorianDay: 6, moladAsDate: '2027-05-06T00:30:33.504Z', tchilasZmanKidushLevana3Days: '2027-05-09T00:30:33.504Z', tchilasZmanKidushLevana7Days: '2027-05-13T00:30:33.504Z', sofZmanKidushLevanaBetweenMoldos: '2027-05-20T18:52:35.170Z', sofZmanKidushLevana15Days: '2027-05-21T00:30:33.504Z' }, + { year: 5787, month: 3, monthName: 'Sivan', isLeapYear: true, moladYear: 5787, moladMonth: 2, moladDay: 28, moladHours: 15, moladMinutes: 35, moladChalakim: 10, moladGregorianYear: 2027, moladGregorianMonth: 6, moladGregorianDay: 4, moladAsDate: '2027-06-04T13:14:36.837Z', tchilasZmanKidushLevana3Days: '2027-06-07T13:14:36.837Z', tchilasZmanKidushLevana7Days: '2027-06-11T13:14:36.837Z', sofZmanKidushLevanaBetweenMoldos: '2027-06-19T07:36:38.503Z', sofZmanKidushLevana15Days: '2027-06-19T13:14:36.837Z' }, + { year: 5787, month: 4, monthName: 'Tammuz', isLeapYear: true, moladYear: 5787, moladMonth: 3, moladDay: 29, moladHours: 4, moladMinutes: 19, moladChalakim: 11, moladGregorianYear: 2027, moladGregorianMonth: 7, moladGregorianDay: 4, moladAsDate: '2027-07-04T01:58:40.170Z', tchilasZmanKidushLevana3Days: '2027-07-07T01:58:40.170Z', tchilasZmanKidushLevana7Days: '2027-07-11T01:58:40.170Z', sofZmanKidushLevanaBetweenMoldos: '2027-07-18T20:20:41.836Z', sofZmanKidushLevana15Days: '2027-07-19T01:58:40.170Z' }, + { year: 5787, month: 5, monthName: 'Av', isLeapYear: true, moladYear: 5787, moladMonth: 4, moladDay: 28, moladHours: 17, moladMinutes: 3, moladChalakim: 12, moladGregorianYear: 2027, moladGregorianMonth: 8, moladGregorianDay: 2, moladAsDate: '2027-08-02T14:42:43.504Z', tchilasZmanKidushLevana3Days: '2027-08-05T14:42:43.504Z', tchilasZmanKidushLevana7Days: '2027-08-09T14:42:43.504Z', sofZmanKidushLevanaBetweenMoldos: '2027-08-17T09:04:45.170Z', sofZmanKidushLevana15Days: '2027-08-17T14:42:43.504Z' }, + { year: 5787, month: 6, monthName: 'Elul', isLeapYear: true, moladYear: 5787, moladMonth: 5, moladDay: 29, moladHours: 5, moladMinutes: 47, moladChalakim: 13, moladGregorianYear: 2027, moladGregorianMonth: 9, moladGregorianDay: 1, moladAsDate: '2027-09-01T03:26:46.837Z', tchilasZmanKidushLevana3Days: '2027-09-04T03:26:46.837Z', tchilasZmanKidushLevana7Days: '2027-09-08T03:26:46.837Z', sofZmanKidushLevanaBetweenMoldos: '2027-09-15T21:48:48.503Z', sofZmanKidushLevana15Days: '2027-09-16T03:26:46.837Z' }, +]; + +function toUtcString(zdt: ReturnType): string { + // Temporal.Instant.toString() drops trailing zeros in milliseconds (e.g. 170 → "17"), + // so we pad the fractional-seconds part back to 3 digits to match Java's output format. + return zdt.toInstant().toString().replace(/\.(\d{1,3})Z$/, (_, ms) => `.${ms.padEnd(3, '0')}Z`); +} + +test('molad and Kiddush Levana for years 5786 and 5787 match Java reference output', () => { + const startYears = [5786, 5787]; + + let expectedIndex = 0; + + for (const year of startYears) { + const cal = new JewishCalendar(year, JewishDate.TISHREI, 1); + const isLeapYear = cal.isJewishLeapYear(); + const numMonths = isLeapYear ? 13 : 12; + + for (let m = 0; m < numMonths; m++) { + const exp = EXPECTED[expectedIndex++]; + const label = `year=${year} month=${cal.getJewishMonth()} (${MONTH_NAMES[cal.getJewishMonth()]})`; + + assert.strictEqual(cal.getJewishYear(), exp.year, `${label}: year`); + assert.strictEqual(cal.getJewishMonth(), exp.month, `${label}: month`); + assert.strictEqual(MONTH_NAMES[cal.getJewishMonth()], exp.monthName, `${label}: monthName`); + assert.strictEqual(isLeapYear, exp.isLeapYear, `${label}: isLeapYear`); + + const molad: JewishDate = cal.getMolad(); + + assert.strictEqual(molad.getJewishYear(), exp.moladYear, `${label}: moladYear`); + assert.strictEqual(molad.getJewishMonth(), exp.moladMonth, `${label}: moladMonth`); + assert.strictEqual(molad.getJewishDayOfMonth(), exp.moladDay, `${label}: moladDay`); + assert.strictEqual(molad.getMoladHours(), exp.moladHours, `${label}: moladHours`); + assert.strictEqual(molad.getMoladMinutes(), exp.moladMinutes, `${label}: moladMinutes`); + assert.strictEqual(molad.getMoladChalakim(), exp.moladChalakim, `${label}: moladChalakim`); + + assert.strictEqual(molad.getGregorianYear(), exp.moladGregorianYear, `${label}: moladGregorianYear`); + // Java's getGregorianMonth() is 0-based; expected data is already +1 (1-based) + assert.strictEqual(molad.getGregorianMonth() + 1, exp.moladGregorianMonth, `${label}: moladGregorianMonth`); + assert.strictEqual(molad.getGregorianDayOfMonth(), exp.moladGregorianDay, `${label}: moladGregorianDay`); + + assert.strictEqual(toUtcString(cal.getMoladAsDate()), exp.moladAsDate, `${label}: moladAsDate`); + assert.strictEqual(toUtcString(cal.getTchilasZmanKidushLevana3Days()), exp.tchilasZmanKidushLevana3Days, `${label}: tchilasZmanKidushLevana3Days`); + assert.strictEqual(toUtcString(cal.getTchilasZmanKidushLevana7Days()), exp.tchilasZmanKidushLevana7Days, `${label}: tchilasZmanKidushLevana7Days`); + assert.strictEqual(toUtcString(cal.getSofZmanKidushLevanaBetweenMoldos()), exp.sofZmanKidushLevanaBetweenMoldos, `${label}: sofZmanKidushLevanaBetweenMoldos`); + assert.strictEqual(toUtcString(cal.getSofZmanKidushLevana15Days()), exp.sofZmanKidushLevana15Days, `${label}: sofZmanKidushLevana15Days`); + + cal.forward(Calendar.MONTH, 1); + } + } +}); From f55b21f8137f1f15200e77a70cc6538519666dee Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 5 Apr 2026 18:47:23 +0000 Subject: [PATCH 11/11] Add comprehensive Kiddush Levana tests for ComplexZmanimCalendar Test all five Kiddush Levana methods (getZmanMolad, getTchilasZmanKidushLevana3Days, getTchilasZmanKidushLevana7Days, getSofZmanKidushLevanaBetweenMoldos, getSofZmanKidushLevana15Days) with edge cases for Hebrew month days 28, 29, 30, and 1. Verifies null return for day 10 and other out-of-range days, tests forward-to-next-month logic for getZmanMolad and 3days on day 30, and covers alos/tzais daytime adjustment path through getMoladBasedTime. https://claude.ai/code/session_01TFJ6vGqedtk2GC9kvRkAUp --- tests/complex.test.ts | 356 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 356 insertions(+) diff --git a/tests/complex.test.ts b/tests/complex.test.ts index 77555a8..110294f 100644 --- a/tests/complex.test.ts +++ b/tests/complex.test.ts @@ -146,3 +146,359 @@ test.skip('getTchilasZmanKidushLevana7Days-2', () => { assert.isNotNull(zdt); assert.strictEqual(zdt!.toString(), '2025-03-09T18:09:02.216+02:00[Asia/Jerusalem]'); }); + +// ============================================================================= +// Kiddush Levana tests for ComplexZmanimCalendar +// Uses Shevat 5786 (starts Jan 19, 2026) and surrounding months in Jerusalem. +// +// Key date mappings (Gregorian → Hebrew): +// Jan 17 → 28 Teves Jan 18 → 29 Teves Jan 19 → 1 Shevat +// Jan 21 → 3 Shevat Jan 25 → 7 Shevat Jan 28 → 10 Shevat +// Feb 2 → 15 Shevat Feb 15 → 28 Shevat Feb 16 → 29 Shevat +// Feb 17 → 30 Shevat Dec 19 → 29 Kislev Dec 20 → 30 Kislev +// +// Shevat 5786 molad: Jan 18, 2026 12:45:40.170 UTC (14:45:40 Jerusalem) +// ============================================================================= + +// eslint-disable-next-line require-jsdoc +function makeCalendar(year: number, month: number, day: number): ComplexZmanimCalendar { + const gloc = new GeoLocation(null, 32.08088, 34.78057, 0, 'Asia/Jerusalem'); + const czc = new ComplexZmanimCalendar(gloc); + czc.setUseElevation(false); + czc.setDate(new Temporal.PlainDate(year, month, day)); + return czc; +} + +// --------------------------------------------------------------------------- +// Day 10 of Hebrew month — all Kiddush Levana methods must return null +// --------------------------------------------------------------------------- +test('KiddushLevana: all methods return null on 10th of Hebrew month', () => { + // Jan 28, 2026 = 10 Shevat 5786 + const czc = makeCalendar(2026, 1, 28); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 10); + + assert.isNull(czc.getZmanMolad()); + assert.isNull(czc.getTchilasZmanKidushLevana3Days()); + assert.isNull(czc.getTchilasZmanKidushLevana7Days()); + assert.isNull(czc.getSofZmanKidushLevanaBetweenMoldos()); + assert.isNull(czc.getSofZmanKidushLevana15Days()); +}); + +// --------------------------------------------------------------------------- +// getZmanMolad +// --------------------------------------------------------------------------- +test('KiddushLevana: getZmanMolad returns molad on the day it occurs', () => { + // Jan 18, 2026 = 29 Teves (Shevat molad falls on this Gregorian day) + const czc = makeCalendar(2026, 1, 18); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 29); + + const zdt = czc.getZmanMolad(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2026-01-18T10:45:40.17-02:00[Etc/GMT+2]'); +}); + +test('KiddushLevana: getZmanMolad returns null on day 28 when molad is next day', () => { + // Jan 17, 2026 = 28 Teves; molad is Jan 18 so doesn't fall on this day + const czc = makeCalendar(2026, 1, 17); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 28); + + assert.isNull(czc.getZmanMolad()); +}); + +test('KiddushLevana: getZmanMolad returns null on day 1 when molad was previous day', () => { + // Jan 19, 2026 = 1 Shevat; molad was Jan 18 + const czc = makeCalendar(2026, 1, 19); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 1); + + assert.isNull(czc.getZmanMolad()); +}); + +test('KiddushLevana: getZmanMolad forwards to next month on day 30', () => { + // Dec 20, 2025 = 30 Kislev; current month molad is early Nov, but Teves molad falls on this day + const czc = makeCalendar(2025, 12, 20); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 30); + + const zdt = czc.getZmanMolad(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2025-12-19T22:01:36.837-02:00[Etc/GMT+2]'); +}); + +test('KiddushLevana: getZmanMolad returns null on day 29 when next molad is day after', () => { + // Dec 19, 2025 = 29 Kislev; Teves molad falls on Dec 20 + const czc = makeCalendar(2025, 12, 19); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 29); + + assert.isNull(czc.getZmanMolad()); +}); + +test('KiddushLevana: getZmanMolad forwards to next month on day 30 of Shevat', () => { + // Feb 17, 2026 = 30 Shevat; Adar molad falls on this day + const czc = makeCalendar(2026, 2, 17); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 30); + + const zdt = czc.getZmanMolad(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2026-02-16T23:29:43.504-02:00[Etc/GMT+2]'); +}); + +// --------------------------------------------------------------------------- +// getTchilasZmanKidushLevana3Days +// --------------------------------------------------------------------------- +test('KiddushLevana: 3days returns value on day 3 of month', () => { + // Jan 21, 2026 = 3 Shevat; 3 days after Shevat molad falls on this day + const czc = makeCalendar(2026, 1, 21); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 3); + + const zdt = czc.getTchilasZmanKidushLevana3Days(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2026-01-21T10:45:40.17-02:00[Etc/GMT+2]'); +}); + +test('KiddushLevana: 3days returns null for day 6 through 29', () => { + // Jan 24, 2026 = 6 Shevat (day > 5 && day < 30 → null) + const czc = makeCalendar(2026, 1, 24); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 6); + + assert.isNull(czc.getTchilasZmanKidushLevana3Days()); +}); + +test('KiddushLevana: 3days returns null on day 1 when zman is on a different day', () => { + // Jan 19, 2026 = 1 Shevat; 3 days after molad is Jan 21 + const czc = makeCalendar(2026, 1, 19); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 1); + + assert.isNull(czc.getTchilasZmanKidushLevana3Days()); +}); + +test('KiddushLevana: 3days with alos/tzais returns alos when zman is during the day', () => { + // Jan 21, 2026 = 3 Shevat; 3 days after molad is ~14:45 Jerusalem (daytime) + const czc = makeCalendar(2026, 1, 21); + const alos = czc.getAlos72(); + const tzais = czc.getTzais72(); + + const zdt = czc.getTchilasZmanKidushLevana3Days(alos, tzais); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), alos!.toString()); +}); + +test('KiddushLevana: 3days exercises day-30 forward logic', () => { + // Feb 17, 2026 = 30 Shevat; hits the day === 30 forward path + // 3 days after Adar molad (Feb 20) is not on Feb 17, so returns null + const czc = makeCalendar(2026, 2, 17); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 30); + + assert.isNull(czc.getTchilasZmanKidushLevana3Days()); +}); + +// --------------------------------------------------------------------------- +// getTchilasZmanKidushLevana7Days +// --------------------------------------------------------------------------- +test('KiddushLevana: 7days returns value on day 7 of month', () => { + // Jan 25, 2026 = 7 Shevat; 7 days after Shevat molad falls on this day + const czc = makeCalendar(2026, 1, 25); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 7); + + const zdt = czc.getTchilasZmanKidushLevana7Days(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2026-01-25T10:45:40.17-02:00[Etc/GMT+2]'); +}); + +test('KiddushLevana: 7days returns null for day < 4', () => { + // Jan 21, 2026 = 3 Shevat + const czc = makeCalendar(2026, 1, 21); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 3); + + assert.isNull(czc.getTchilasZmanKidushLevana7Days()); +}); + +test('KiddushLevana: 7days returns null for day > 9', () => { + // Jan 29, 2026 = 11 Shevat + const czc = makeCalendar(2026, 1, 29); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 11); + + assert.isNull(czc.getTchilasZmanKidushLevana7Days()); +}); + +test('KiddushLevana: 7days returns null on day 4 when zman is on a different day', () => { + // Jan 22, 2026 = 4 Shevat; in range but 7 days after molad is Jan 25 + const czc = makeCalendar(2026, 1, 22); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 4); + + assert.isNull(czc.getTchilasZmanKidushLevana7Days()); +}); + +test('KiddushLevana: 7days with alos/tzais returns alos when zman is during the day', () => { + // Jan 25, 2026 = 7 Shevat; 7 days after molad is ~14:45 Jerusalem (daytime) + const czc = makeCalendar(2026, 1, 25); + const alos = czc.getAlos72(); + const tzais = czc.getTzais72(); + + const zdt = czc.getTchilasZmanKidushLevana7Days(alos, tzais); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), alos!.toString()); +}); + +// --------------------------------------------------------------------------- +// getSofZmanKidushLevanaBetweenMoldos +// --------------------------------------------------------------------------- +test('KiddushLevana: betweenMoldos returns value on day 15 of month', () => { + // Feb 2, 2026 = 15 Shevat; halfway between Shevat and Adar moldos falls on this day + const czc = makeCalendar(2026, 2, 2); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 15); + + const zdt = czc.getSofZmanKidushLevanaBetweenMoldos(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2026-02-02T05:07:41.836-02:00[Etc/GMT+2]'); +}); + +test('KiddushLevana: betweenMoldos returns null for day < 11', () => { + // Jan 28, 2026 = 10 Shevat + const czc = makeCalendar(2026, 1, 28); + assert.isNull(czc.getSofZmanKidushLevanaBetweenMoldos()); +}); + +test('KiddushLevana: betweenMoldos returns null for day > 16', () => { + // Feb 4, 2026 = 17 Shevat + const czc = makeCalendar(2026, 2, 4); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 17); + + assert.isNull(czc.getSofZmanKidushLevanaBetweenMoldos()); +}); + +test('KiddushLevana: betweenMoldos with alos/tzais returns alos when zman is during the day', () => { + // Feb 2, 2026 = 15 Shevat; between-moldos time is ~09:07 Jerusalem (daytime) + const czc = makeCalendar(2026, 2, 2); + const alos = czc.getAlos72(); + const tzais = czc.getTzais72(); + + const zdt = czc.getSofZmanKidushLevanaBetweenMoldos(alos, tzais); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), alos!.toString()); +}); + +// --------------------------------------------------------------------------- +// getSofZmanKidushLevana15Days +// --------------------------------------------------------------------------- +test('KiddushLevana: 15days returns value on day 15 of month', () => { + // Feb 2, 2026 = 15 Shevat; 15 days after Shevat molad falls on this day + const czc = makeCalendar(2026, 2, 2); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 15); + + const zdt = czc.getSofZmanKidushLevana15Days(); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), '2026-02-02T10:45:40.17-02:00[Etc/GMT+2]'); +}); + +test('KiddushLevana: 15days returns null for day < 11', () => { + // Jan 28, 2026 = 10 Shevat + const czc = makeCalendar(2026, 1, 28); + assert.isNull(czc.getSofZmanKidushLevana15Days()); +}); + +test('KiddushLevana: 15days returns null for day > 17', () => { + // Feb 5, 2026 = 18 Shevat + const czc = makeCalendar(2026, 2, 5); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 18); + + assert.isNull(czc.getSofZmanKidushLevana15Days()); +}); + +test('KiddushLevana: 15days with alos/tzais returns alos when zman is during the day', () => { + // Feb 2, 2026 = 15 Shevat; 15-day time is ~14:45 Jerusalem (daytime) + const czc = makeCalendar(2026, 2, 2); + const alos = czc.getAlos72(); + const tzais = czc.getTzais72(); + + const zdt = czc.getSofZmanKidushLevana15Days(alos, tzais); + assert.isNotNull(zdt); + assert.strictEqual(zdt!.toString(), alos!.toString()); +}); + +// --------------------------------------------------------------------------- +// Edge cases: days 28, 29, 30, 1 of Hebrew month +// --------------------------------------------------------------------------- +test('KiddushLevana: day 28 returns null for non-molad methods', () => { + // Feb 15, 2026 = 28 Shevat + const czc = makeCalendar(2026, 2, 15); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 28); + + // 3days: day 28 > 5 && < 30 → null + assert.isNull(czc.getTchilasZmanKidushLevana3Days()); + // 7days: day 28 > 9 → null + assert.isNull(czc.getTchilasZmanKidushLevana7Days()); + // betweenMoldos: day 28 > 16 → null + assert.isNull(czc.getSofZmanKidushLevanaBetweenMoldos()); + // 15days: day 28 > 17 → null + assert.isNull(czc.getSofZmanKidushLevana15Days()); + // getZmanMolad: day 28 passes filter, attempts molad lookup, returns null (Adar molad is Feb 17) + assert.isNull(czc.getZmanMolad()); +}); + +test('KiddushLevana: day 29 returns null for non-molad methods', () => { + // Feb 16, 2026 = 29 Shevat + const czc = makeCalendar(2026, 2, 16); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 29); + + assert.isNull(czc.getTchilasZmanKidushLevana3Days()); + assert.isNull(czc.getTchilasZmanKidushLevana7Days()); + assert.isNull(czc.getSofZmanKidushLevanaBetweenMoldos()); + assert.isNull(czc.getSofZmanKidushLevana15Days()); + assert.isNull(czc.getZmanMolad()); +}); + +test('KiddushLevana: day 30 exercises forward logic for molad and 3days', () => { + // Feb 17, 2026 = 30 Shevat + const czc = makeCalendar(2026, 2, 17); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 30); + + // getZmanMolad: forwards to Adar molad, which falls on this day + const molad = czc.getZmanMolad(); + assert.isNotNull(molad); + assert.strictEqual(molad!.toString(), '2026-02-16T23:29:43.504-02:00[Etc/GMT+2]'); + + // 3days: day 30 passes filter, first attempt null, forwards to next month (3 days after Adar molad = Feb 20), not today → null + assert.isNull(czc.getTchilasZmanKidushLevana3Days()); + + // Other methods: day 30 is outside their valid range → null + assert.isNull(czc.getTchilasZmanKidushLevana7Days()); + assert.isNull(czc.getSofZmanKidushLevanaBetweenMoldos()); + assert.isNull(czc.getSofZmanKidushLevana15Days()); +}); + +test('KiddushLevana: day 1 returns null when zman times fall on other days', () => { + // Jan 19, 2026 = 1 Shevat + const czc = makeCalendar(2026, 1, 19); + const jc = new JewishCalendar(czc.getDate()); + assert.equal(jc.getJewishDayOfMonth(), 1); + + // 3 days after molad is Jan 21, not Jan 19 + assert.isNull(czc.getTchilasZmanKidushLevana3Days()); + // Molad was Jan 18, not Jan 19 + assert.isNull(czc.getZmanMolad()); + // Other methods: day 1 is outside range for 7days (< 4), betweenMoldos (< 11), 15days (< 11) + assert.isNull(czc.getTchilasZmanKidushLevana7Days()); + assert.isNull(czc.getSofZmanKidushLevanaBetweenMoldos()); + assert.isNull(czc.getSofZmanKidushLevana15Days()); +});