From c2de70dcc5960597b1c85e0a57bcf0d5d887790c Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Tue, 29 Nov 2022 07:25:47 +0000 Subject: [PATCH 01/20] Created rodux store and added flare actions and reducer --- package-lock.json | 1920 ++++++++++++++--- package.json | 2 + src/index.ts | 10 + .../user-interface/console/console-actions.ts | 21 + .../user-interface/console/console-reducer.ts | 43 + src/lib/user-interface/store.ts | 4 + src/lib/utils/rodux-utils.ts | 17 + 7 files changed, 1734 insertions(+), 283 deletions(-) create mode 100644 src/lib/user-interface/console/console-actions.ts create mode 100644 src/lib/user-interface/console/console-reducer.ts create mode 100644 src/lib/user-interface/store.ts create mode 100644 src/lib/utils/rodux-utils.ts diff --git a/package-lock.json b/package-lock.json index 38b9912..1e5aee0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,14 @@ "name": "@rbxts/tina", "version": "1.0.0", "license": "ISC", + "dependencies": { + "@eslint/github-action": "^0.1.0", + "@rbxts/roact": "^1.4.4-ts.0", + "@rbxts/rodux": "^3.0.0-ts.3", + "roblox-ts": "^2.0.4" + }, "devDependencies": { "@rbxts/compiler-types": "^2.0.4-types.0", - "@rbxts/testez": "^0.4.2-ts.0", "@rbxts/types": "^1.0.642", "@typescript-eslint/eslint-plugin": "^5.40.0", "@typescript-eslint/parser": "^5.40.0", @@ -22,11 +27,49 @@ "typescript": "^4.8.4" } }, + "node_modules/@actions/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", + "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", + "dependencies": { + "@actions/http-client": "^2.0.1", + "uuid": "^8.3.2" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/github": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-1.1.0.tgz", + "integrity": "sha512-cHf6PyoNMdei13jEdGPhKprIMFmjVVW/dnM5/9QmQDJ1ZTaGVyezUSCUIC/ySNLRvDUpeFwPYMdThSEJldSbUw==", + "dependencies": { + "@octokit/graphql": "^2.0.1", + "@octokit/rest": "^16.15.0" + } + }, + "node_modules/@actions/http-client": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", + "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", + "dependencies": { + "tunnel": "^0.0.6" + } + }, + "node_modules/@actions/io": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz", + "integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw==" + }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -45,11 +88,75 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/github-action": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/github-action/-/github-action-0.1.0.tgz", + "integrity": "sha512-tOVCmYKb3BTSBrKkWEraw4o08CB9Th8V8zN9NHKQk/oklWK/hg6snStyTAfV1AseH2KBcqHTAP/14r8mKwSaUQ==", + "deprecated": "Use actions/setup-node in a GitHub Action workflow instead", + "dependencies": { + "@actions/core": "^1.1.1", + "@actions/exec": "^1.0.1", + "@actions/github": "^1.1.0", + "eslint-config-eslint": "^5.0.1", + "eslint-plugin-node": "^10.0.0" + }, + "bin": { + "github-action": "src/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@eslint/github-action/node_modules/eslint-plugin-node": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", + "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", + "dependencies": { + "eslint-plugin-es": "^2.0.0", + "eslint-utils": "^1.4.2", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/@eslint/github-action/node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@eslint/github-action/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/github-action/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.7", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -63,7 +170,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, "engines": { "node": ">=12.22" }, @@ -75,14 +181,12 @@ "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==", - "dev": true + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -95,7 +199,6 @@ "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, "engines": { "node": ">= 8" } @@ -104,7 +207,6 @@ "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, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -113,17 +215,322 @@ "node": ">= 8" } }, + "node_modules/@octokit-next/request": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@octokit-next/request/-/request-2.3.0.tgz", + "integrity": "sha512-E31o7r8OI8ebJMUj+0emm7f9KZx2FRJ2ZHWeW1Pt3F8gG2HYZOztwB6IQvnpVAyIGSIEAOcC21AOeWKcz61lVQ==", + "dependencies": { + "@octokit-next/types": "2.3.0", + "is-plain-object": "^5.0.0", + "type-fest": "^3.0.0", + "universal-user-agent": "^7.0.1" + } + }, + "node_modules/@octokit-next/request/node_modules/type-fest": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.3.0.tgz", + "integrity": "sha512-gezeeOIZyQLGW5uuCeEnXF1aXmtt2afKspXz3YqoOcZ3l/YMJq1pujvgT+cz/Nw1O/7q/kSav5fihJHsC/AOUg==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@octokit-next/types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@octokit-next/types/-/types-2.3.0.tgz", + "integrity": "sha512-YFKJPiFk3doWX4x9pxqOr3BkWA8Fgs0xyOj1PVKh0IZs7X2iM7cBpZK40WEclSunUjzQ8Bb55qO0MIZwvO3kdA==" + }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", + "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", + "peer": true, + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/auth-token": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", + "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", + "peer": true, + "dependencies": { + "@octokit/types": "^8.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/endpoint": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", + "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "peer": true, + "dependencies": { + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/graphql": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", + "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "peer": true, + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", + "peer": true + }, + "node_modules/@octokit/core/node_modules/@octokit/request": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", + "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "peer": true, + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/request-error": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", + "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "peer": true, + "dependencies": { + "@octokit/types": "^8.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", + "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", + "peer": true, + "dependencies": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "node_modules/@octokit/core/node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "peer": true + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, + "node_modules/@octokit/graphql": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-2.3.0.tgz", + "integrity": "sha512-QbqI9XWcDNfnAq8WI5BzYbOT8Z6vRGxCxoePcajW7U7GIWpFaZKG9S0j5C2JSl9bX/lJlEBKkB3gnDn2ud+zrg==", + "dependencies": { + "@octokit-next/request": "2.3.0", + "@octokit-next/types": "2.3.0", + "universal-user-agent": "^7.0.1" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "dependencies": { + "@octokit/types": "^2.0.1" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "dependencies": { + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "dependencies": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/@octokit/request/node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request/node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, + "node_modules/@octokit/rest": { + "version": "16.43.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", + "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", + "dependencies": { + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + } + }, + "node_modules/@octokit/rest/node_modules/universal-user-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", + "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "dependencies": { + "os-name": "^3.1.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/@rbxts/compiler-types": { "version": "2.0.4-types.0", "resolved": "https://registry.npmjs.org/@rbxts/compiler-types/-/compiler-types-2.0.4-types.0.tgz", "integrity": "sha512-kRdXA7RzIUnLrQhjvVLQ//9Nwfndlui43Frqg3k8xrPVz+QJNIqzwx6LHLSwq4c1OBZpYcGgUWIQJkuKxwlskA==", "dev": true }, - "node_modules/@rbxts/testez": { - "version": "0.4.2-ts.0", - "resolved": "https://registry.npmjs.org/@rbxts/testez/-/testez-0.4.2-ts.0.tgz", - "integrity": "sha512-8Q+OG9ddTD2P3aARCuRKpPqUBvuifgSnHvQMZ6jBMqUzxhIysnb0l4c3vnnaQnvdyZ1OW9tKxcdEHMGTb67uOw==", - "dev": true + "node_modules/@rbxts/roact": { + "version": "1.4.4-ts.0", + "resolved": "https://registry.npmjs.org/@rbxts/roact/-/roact-1.4.4-ts.0.tgz", + "integrity": "sha512-gn9mBoGG/Clzgv2kyOvLNVd9dh5t6z+jukC3ITv2HnfPqvf/sMbz/VMaBoiB7t5umuiIe0LjW0ctZrkrS+uTOA==" + }, + "node_modules/@rbxts/rodux": { + "version": "3.0.0-ts.3", + "resolved": "https://registry.npmjs.org/@rbxts/rodux/-/rodux-3.0.0-ts.3.tgz", + "integrity": "sha512-LrLowiF1YL5U+lQheCNMo8sbrSEoZAIlVFOGB7Edjein5TtZAeNgyJrhY5yFH5gAfJQzFRnZWVOxWFaMlD0GRg==" }, "node_modules/@rbxts/types": { "version": "1.0.647", @@ -174,8 +581,7 @@ "node_modules/@types/node": { "version": "16.18.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz", - "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==", - "dev": true + "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==" }, "node_modules/@types/semver": { "version": "7.3.13", @@ -393,7 +799,6 @@ "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -405,7 +810,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -414,7 +818,6 @@ "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", @@ -463,8 +866,7 @@ "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 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-union": { "version": "2.1.0", @@ -475,11 +877,20 @@ "node": ">=8" } }, + "node_modules/atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -493,7 +904,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -510,11 +920,15 @@ "node": ">=8" } }, + "node_modules/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -523,7 +937,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -604,14 +1017,12 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "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==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -625,7 +1036,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -641,8 +1051,12 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -660,7 +1074,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "dependencies": { "esutils": "^2.0.2" }, @@ -673,6 +1086,14 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/end-of-stream": { + "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==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -685,7 +1106,6 @@ "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" }, @@ -697,7 +1117,6 @@ "version": "8.27.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", - "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.11.6", @@ -749,6 +1168,40 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-eslint": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-eslint/-/eslint-config-eslint-5.0.1.tgz", + "integrity": "sha512-6TK0/1I/HdlTEU5albfPYs2oXVeYxHFBjIfFc/bNHQ7N+mnLlKmEJVDntSI5/kYoJCEzl1DGd23GIVA5qSkweg==", + "dependencies": { + "js-yaml": "^3.5.1" + }, + "engines": { + "node": ">=0.10" + }, + "peerDependencies": { + "eslint-plugin-node": "^6.0.1" + } + }, + "node_modules/eslint-config-eslint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/eslint-config-eslint/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==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/eslint-config-prettier": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", @@ -761,6 +1214,73 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-plugin-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", + "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "dependencies": { + "eslint-utils": "^1.4.2", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-es/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-node": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", + "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", + "peer": true, + "dependencies": { + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "^5.4.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": ">=3.1.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "peer": true + }, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/eslint-plugin-prettier": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", @@ -813,7 +1333,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -831,7 +1350,6 @@ "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" } @@ -840,7 +1358,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -849,7 +1366,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -862,7 +1378,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -871,7 +1386,6 @@ "version": "9.4.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", @@ -884,11 +1398,22 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -900,7 +1425,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -909,7 +1433,6 @@ "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, "dependencies": { "estraverse": "^5.2.0" }, @@ -921,7 +1444,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -939,15 +1461,92 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } }, - "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==" + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/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==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "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==" }, "node_modules/fast-diff": { "version": "1.2.0", @@ -986,20 +1585,17 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -1008,7 +1604,6 @@ "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, "dependencies": { "flat-cache": "^3.0.4" }, @@ -1031,7 +1626,6 @@ "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" @@ -1047,7 +1641,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -1059,8 +1652,7 @@ "node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/fs-extra": { "version": "10.1.0", @@ -1078,8 +1670,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -1107,11 +1698,21 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1131,7 +1732,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -1143,7 +1743,6 @@ "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -1182,8 +1781,7 @@ "node_modules/grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" }, "node_modules/has": { "version": "1.0.3", @@ -1200,7 +1798,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -1209,7 +1806,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, "engines": { "node": ">= 4" } @@ -1218,7 +1814,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1234,7 +1829,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -1243,7 +1837,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1252,8 +1845,7 @@ "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 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -1316,28 +1908,40 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/js-sdsl": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -1348,14 +1952,12 @@ "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 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "node_modules/jsonfile": { "version": "6.1.0", @@ -1380,7 +1982,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -1393,7 +1994,6 @@ "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" }, @@ -1404,11 +2004,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, "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 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, "node_modules/lookpath": { "version": "1.2.2", @@ -1433,6 +2047,17 @@ "node": ">=10" } }, + "node_modules/macos-release": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", + "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -1459,7 +2084,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1470,14 +2094,12 @@ "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/natural-compare-lite": { "version": "1.4.0", @@ -1485,6 +2107,30 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1493,11 +2139,34 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -1506,7 +2175,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -1519,11 +2187,30 @@ "node": ">= 0.8.0" } }, + "node_modules/os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dependencies": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, "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" }, @@ -1538,7 +2225,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -1553,7 +2239,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -1565,7 +2250,6 @@ "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" } @@ -1574,7 +2258,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1583,7 +2266,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -1617,7 +2299,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -1669,6 +2350,15 @@ "node": ">=6" } }, + "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==", + "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", @@ -1681,7 +2371,6 @@ "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", @@ -1712,7 +2401,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, "engines": { "node": ">=8" }, @@ -1756,7 +2444,6 @@ "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, "engines": { "node": ">=4" } @@ -1765,7 +2452,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -1775,7 +2461,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -1843,7 +2528,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -1881,7 +2565,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -1893,11 +2576,15 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -1912,6 +2599,11 @@ "node": ">=8" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -1936,11 +2628,18 @@ "node": ">=8" } }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -1952,7 +2651,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -1974,8 +2672,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -1988,6 +2685,11 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -2009,11 +2711,18 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, "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, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -2025,7 +2734,6 @@ "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" }, @@ -2046,6 +2754,11 @@ "node": ">=4.2.0" } }, + "node_modules/universal-user-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.1.tgz", + "integrity": "sha512-Cqf/QMcPzYwrVyNH/QvAiwMPQWFHiSFhfNH2jCAF/XcMoVvDbzfF7Uw1Gwx2/CHqEwouYp5AmN7xhxAtRidbaQ==" + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -2062,11 +2775,32 @@ "punycode": "^2.1.0" } }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2077,11 +2811,24 @@ "node": ">= 8" } }, + "node_modules/windows-release": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", + "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", + "dependencies": { + "execa": "^1.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "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==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2105,8 +2852,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/y18n": { "version": "5.0.8", @@ -2151,7 +2897,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -2161,11 +2906,49 @@ } }, "dependencies": { + "@actions/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", + "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", + "requires": { + "@actions/http-client": "^2.0.1", + "uuid": "^8.3.2" + } + }, + "@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "requires": { + "@actions/io": "^1.0.1" + } + }, + "@actions/github": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-1.1.0.tgz", + "integrity": "sha512-cHf6PyoNMdei13jEdGPhKprIMFmjVVW/dnM5/9QmQDJ1ZTaGVyezUSCUIC/ySNLRvDUpeFwPYMdThSEJldSbUw==", + "requires": { + "@octokit/graphql": "^2.0.1", + "@octokit/rest": "^16.15.0" + } + }, + "@actions/http-client": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", + "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", + "requires": { + "tunnel": "^0.0.6" + } + }, + "@actions/io": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz", + "integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw==" + }, "@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2178,11 +2961,55 @@ "strip-json-comments": "^3.1.1" } }, + "@eslint/github-action": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/github-action/-/github-action-0.1.0.tgz", + "integrity": "sha512-tOVCmYKb3BTSBrKkWEraw4o08CB9Th8V8zN9NHKQk/oklWK/hg6snStyTAfV1AseH2KBcqHTAP/14r8mKwSaUQ==", + "requires": { + "@actions/core": "^1.1.1", + "@actions/exec": "^1.0.1", + "@actions/github": "^1.1.0", + "eslint-config-eslint": "^5.0.1", + "eslint-plugin-node": "^10.0.0" + }, + "dependencies": { + "eslint-plugin-node": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", + "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", + "requires": { + "eslint-plugin-es": "^2.0.0", + "eslint-utils": "^1.4.2", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "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==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, "@humanwhocodes/config-array": { "version": "0.11.7", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -2192,39 +3019,325 @@ "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, + "@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==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@octokit-next/request": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@octokit-next/request/-/request-2.3.0.tgz", + "integrity": "sha512-E31o7r8OI8ebJMUj+0emm7f9KZx2FRJ2ZHWeW1Pt3F8gG2HYZOztwB6IQvnpVAyIGSIEAOcC21AOeWKcz61lVQ==", + "requires": { + "@octokit-next/types": "2.3.0", + "is-plain-object": "^5.0.0", + "type-fest": "^3.0.0", + "universal-user-agent": "^7.0.1" + }, + "dependencies": { + "type-fest": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.3.0.tgz", + "integrity": "sha512-gezeeOIZyQLGW5uuCeEnXF1aXmtt2afKspXz3YqoOcZ3l/YMJq1pujvgT+cz/Nw1O/7q/kSav5fihJHsC/AOUg==" + } + } + }, + "@octokit-next/types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@octokit-next/types/-/types-2.3.0.tgz", + "integrity": "sha512-YFKJPiFk3doWX4x9pxqOr3BkWA8Fgs0xyOj1PVKh0IZs7X2iM7cBpZK40WEclSunUjzQ8Bb55qO0MIZwvO3kdA==" + }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", + "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", + "peer": true, + "requires": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/auth-token": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", + "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", + "peer": true, + "requires": { + "@octokit/types": "^8.0.0" + } + }, + "@octokit/endpoint": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", + "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "peer": true, + "requires": { + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", + "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "peer": true, + "requires": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^8.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", + "peer": true + }, + "@octokit/request": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", + "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "peer": true, + "requires": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^8.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", + "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "peer": true, + "requires": { + "@octokit/types": "^8.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", + "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", + "peer": true, + "requires": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "peer": true + } + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + } + } + }, + "@octokit/graphql": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-2.3.0.tgz", + "integrity": "sha512-QbqI9XWcDNfnAq8WI5BzYbOT8Z6vRGxCxoePcajW7U7GIWpFaZKG9S0j5C2JSl9bX/lJlEBKkB3gnDn2ud+zrg==", + "requires": { + "@octokit-next/request": "2.3.0", + "@octokit-next/types": "2.3.0", + "universal-user-agent": "^7.0.1" + } + }, + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "requires": { + "@octokit/types": "^2.0.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "requires": { + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + } + } }, - "@humanwhocodes/object-schema": { + "@octokit/request-error": { "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==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "requires": { + "@types/node": ">= 8" + } + } } }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "@octokit/rest": { + "version": "16.43.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", + "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", + "requires": { + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + }, + "dependencies": { + "universal-user-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", + "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "requires": { + "os-name": "^3.1.0" + } + } + } }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@octokit/openapi-types": "^12.11.0" } }, "@rbxts/compiler-types": { @@ -2233,11 +3346,15 @@ "integrity": "sha512-kRdXA7RzIUnLrQhjvVLQ//9Nwfndlui43Frqg3k8xrPVz+QJNIqzwx6LHLSwq4c1OBZpYcGgUWIQJkuKxwlskA==", "dev": true }, - "@rbxts/testez": { - "version": "0.4.2-ts.0", - "resolved": "https://registry.npmjs.org/@rbxts/testez/-/testez-0.4.2-ts.0.tgz", - "integrity": "sha512-8Q+OG9ddTD2P3aARCuRKpPqUBvuifgSnHvQMZ6jBMqUzxhIysnb0l4c3vnnaQnvdyZ1OW9tKxcdEHMGTb67uOw==", - "dev": true + "@rbxts/roact": { + "version": "1.4.4-ts.0", + "resolved": "https://registry.npmjs.org/@rbxts/roact/-/roact-1.4.4-ts.0.tgz", + "integrity": "sha512-gn9mBoGG/Clzgv2kyOvLNVd9dh5t6z+jukC3ITv2HnfPqvf/sMbz/VMaBoiB7t5umuiIe0LjW0ctZrkrS+uTOA==" + }, + "@rbxts/rodux": { + "version": "3.0.0-ts.3", + "resolved": "https://registry.npmjs.org/@rbxts/rodux/-/rodux-3.0.0-ts.3.tgz", + "integrity": "sha512-LrLowiF1YL5U+lQheCNMo8sbrSEoZAIlVFOGB7Edjein5TtZAeNgyJrhY5yFH5gAfJQzFRnZWVOxWFaMlD0GRg==" }, "@rbxts/types": { "version": "1.0.647", @@ -2286,8 +3403,7 @@ "@types/node": { "version": "16.18.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz", - "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==", - "dev": true + "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==" }, "@types/semver": { "version": "7.3.13", @@ -2405,21 +3521,18 @@ "acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "requires": {} }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2452,8 +3565,7 @@ "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 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "array-union": { "version": "2.1.0", @@ -2461,11 +3573,20 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==" + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "binary-extensions": { "version": "2.2.0", @@ -2476,7 +3597,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2490,17 +3610,20 @@ "fill-range": "^7.0.1" } }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2557,14 +3680,12 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2575,7 +3696,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -2583,8 +3703,12 @@ "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "dir-glob": { "version": "3.0.1", @@ -2599,7 +3723,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "requires": { "esutils": "^2.0.2" } @@ -2609,6 +3732,14 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "end-of-stream": { + "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==", + "requires": { + "once": "^1.4.0" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2617,14 +3748,12 @@ "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 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { "version": "8.27.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", - "dev": true, "requires": { "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.11.6", @@ -2671,7 +3800,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -2680,8 +3808,34 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "eslint-config-eslint": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-eslint/-/eslint-config-eslint-5.0.1.tgz", + "integrity": "sha512-6TK0/1I/HdlTEU5albfPYs2oXVeYxHFBjIfFc/bNHQ7N+mnLlKmEJVDntSI5/kYoJCEzl1DGd23GIVA5qSkweg==", + "requires": { + "js-yaml": "^3.5.1" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "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==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } } } }, @@ -2692,6 +3846,56 @@ "dev": true, "requires": {} }, + "eslint-plugin-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", + "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "requires": { + "eslint-utils": "^1.4.2", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "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==" + } + } + }, + "eslint-plugin-node": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", + "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", + "peer": true, + "requires": { + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "^5.4.1" + }, + "dependencies": { + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "peer": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true + } + } + }, "eslint-plugin-prettier": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", @@ -2726,7 +3930,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, "requires": { "eslint-visitor-keys": "^2.0.0" }, @@ -2734,33 +3937,34 @@ "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 + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" } } }, "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" }, "espree": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, "requires": { "estraverse": "^5.1.0" }, @@ -2768,8 +3972,7 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, @@ -2777,7 +3980,6 @@ "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, "requires": { "estraverse": "^5.2.0" }, @@ -2785,8 +3987,7 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, @@ -2799,8 +4000,66 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "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==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } }, "fast-deep-equal": { "version": "3.1.3", @@ -2840,20 +4099,17 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -2862,7 +4118,6 @@ "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, "requires": { "flat-cache": "^3.0.4" } @@ -2879,7 +4134,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -2889,7 +4143,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -2898,8 +4151,7 @@ "flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "fs-extra": { "version": "10.1.0", @@ -2914,8 +4166,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -2933,11 +4184,18 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2951,7 +4209,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "requires": { "is-glob": "^4.0.3" } @@ -2960,7 +4217,6 @@ "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -2987,8 +4243,7 @@ "grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" }, "has": { "version": "1.0.3", @@ -3001,20 +4256,17 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3023,14 +4275,12 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -3039,8 +4289,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "is-binary-path": { "version": "2.1.0", @@ -3084,26 +4333,32 @@ "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "js-sdsl": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "requires": { "argparse": "^2.0.1" } @@ -3111,14 +4366,12 @@ "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 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "jsonfile": { "version": "6.1.0", @@ -3138,7 +4391,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -3148,16 +4400,29 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "requires": { "p-locate": "^5.0.0" } }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, "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 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, "lookpath": { "version": "1.2.2", @@ -3173,6 +4438,11 @@ "yallist": "^4.0.0" } }, + "macos-release": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", + "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==" + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3193,7 +4463,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3201,14 +4470,12 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "natural-compare-lite": { "version": "1.4.0", @@ -3216,16 +4483,48 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "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==" + } + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -3234,7 +4533,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -3244,11 +4542,24 @@ "word-wrap": "^1.2.3" } }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "requires": { "yocto-queue": "^0.1.0" } @@ -3257,7 +4568,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "requires": { "p-limit": "^3.0.2" } @@ -3266,7 +4576,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" } @@ -3274,20 +4583,17 @@ "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 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", @@ -3308,8 +4614,7 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "prettier": { "version": "2.7.1", @@ -3342,6 +4647,15 @@ } } }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -3350,8 +4664,7 @@ "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 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "readdirp": { "version": "3.6.0", @@ -3364,8 +4677,7 @@ "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" }, "require-directory": { "version": "2.1.1", @@ -3390,20 +4702,17 @@ "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 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -3453,7 +4762,6 @@ "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, "requires": { "queue-microtask": "^1.2.2" } @@ -3471,7 +4779,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -3479,8 +4786,12 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "sisteransi": { "version": "1.0.5", @@ -3493,6 +4804,11 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -3511,17 +4827,20 @@ "ansi-regex": "^5.0.1" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -3534,8 +4853,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "to-regex-range": { "version": "5.0.1", @@ -3545,6 +4863,11 @@ "is-number": "^7.0.0" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -3560,11 +4883,15 @@ "tslib": "^1.8.1" } }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, "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, "requires": { "prelude-ls": "^1.2.1" } @@ -3572,8 +4899,7 @@ "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 + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" }, "typescript": { "version": "4.8.4", @@ -3581,6 +4907,11 @@ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true }, + "universal-user-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.1.tgz", + "integrity": "sha512-Cqf/QMcPzYwrVyNH/QvAiwMPQWFHiSFhfNH2jCAF/XcMoVvDbzfF7Uw1Gwx2/CHqEwouYp5AmN7xhxAtRidbaQ==" + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -3594,20 +4925,45 @@ "punycode": "^2.1.0" } }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } }, + "windows-release": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", + "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", + "requires": { + "execa": "^1.0.0" + } + }, "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==", - "dev": true + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "wrap-ansi": { "version": "7.0.0", @@ -3622,8 +4978,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "y18n": { "version": "5.0.8", @@ -3658,8 +5013,7 @@ "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index 1e33db0..131ead4 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,8 @@ }, "dependencies": { "@eslint/github-action": "^0.1.0", + "@rbxts/roact": "^1.4.4-ts.0", + "@rbxts/rodux": "^3.0.0-ts.3", "roblox-ts": "^2.0.4" } } diff --git a/src/index.ts b/src/index.ts index 7b11adb..35d3e7e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,8 @@ import TinaGame from "./lib/core/game"; import logger from "./lib/logger"; import { Process } from "./lib/process/process"; import Scheduler from "./lib/process/scheduler"; +import { ConsoleActionName } from "./lib/user-interface/console/console-actions"; +import { ClientStore } from "./lib/user-interface/store"; export enum Protocol { /** Create/Load Online User Data */ @@ -71,6 +73,14 @@ namespace Tina { return new Process(name, Scheduler); } + export function flare(eventName: string) { + ClientStore.dispatch({ type: ConsoleActionName.AddFlare, eventName }); + } + + export function oops(eventName: string) { + ClientStore.dispatch({ type: ConsoleActionName.FireFlare, eventName }); + } + /** * `Tina.Mirror` defines any built-in classes that can be replaced. * diff --git a/src/lib/user-interface/console/console-actions.ts b/src/lib/user-interface/console/console-actions.ts new file mode 100644 index 0000000..a3f4d78 --- /dev/null +++ b/src/lib/user-interface/console/console-actions.ts @@ -0,0 +1,21 @@ +import { Action } from "@rbxts/rodux"; + +export enum ConsoleActionName { + SetConsoleVisible = "SetConsoleVisible", + AddFlare = "AddFlare", + FireFlare = "FireFlare", +} + +export interface ActionSetConsoleVisible extends Action { + visible: boolean; +} + +export interface ActionAddFlare extends Action { + eventName: string; +} + +export interface ActionFireFlare extends Action { + eventName: string; +} + +export type ConsoleActions = ActionSetConsoleVisible | ActionAddFlare | ActionFireFlare; diff --git a/src/lib/user-interface/console/console-reducer.ts b/src/lib/user-interface/console/console-reducer.ts new file mode 100644 index 0000000..785ae5f --- /dev/null +++ b/src/lib/user-interface/console/console-reducer.ts @@ -0,0 +1,43 @@ +import { createReducer } from "@rbxts/rodux"; +import { updateAtIndex } from "../../utils/rodux-utils"; +import { ConsoleActions } from "./console-actions"; + +export interface ConsoleReducer { + visible: boolean; + flares: Array<{ eventName: string; amount: number }>; +} + +const initialState: ConsoleReducer = { + visible: false, + flares: [], +}; + +export const consoleReducer = createReducer(initialState, { + SetConsoleVisible: (state, action) => ({ ...state, visible: action.visible }), + + AddFlare: (state, action) => { + const { eventName } = action; + const { flares } = state; + + // Check for duplicate flares + const flareExists = flares.find((f) => f.eventName === eventName); + if (flareExists !== undefined) return state; + + // Create new flare and add to state + return { + ...state, + flares: [...flares, { eventName, amount: 0 }], + }; + }, + + FireFlare: (state, action) => { + // Get the index of the flare + const flareIndex = state.flares.findIndex((f) => f.eventName === action.eventName); + + // Increment the amount of times the flare has been called + return { + ...state, + flares: updateAtIndex(state.flares, flareIndex, (flare) => ({ ...flare, amount: flare.amount + 1 })), + }; + }, +}); diff --git a/src/lib/user-interface/store.ts b/src/lib/user-interface/store.ts new file mode 100644 index 0000000..1bd355f --- /dev/null +++ b/src/lib/user-interface/store.ts @@ -0,0 +1,4 @@ +import { Store } from "@rbxts/rodux"; +import { consoleReducer } from "./console/console-reducer"; + +export const ClientStore = new Store(consoleReducer); diff --git a/src/lib/utils/rodux-utils.ts b/src/lib/utils/rodux-utils.ts new file mode 100644 index 0000000..5974155 --- /dev/null +++ b/src/lib/utils/rodux-utils.ts @@ -0,0 +1,17 @@ +/** + * Helper function to immutably update an array at the given index. + * If the value at the given index does not exist, the original array will be returned. + * @param array The array to update + * @param index The index to update + * @param updater The updater function + * @returns The updated array + */ +export function updateAtIndex(array: Array, index: number, updater: (value: T) => T): Array { + // No value to update + if (array[index] === undefined) return array; + + // Copy array and update value + const copy = table.clone(array); + copy[index] = updater(copy[index]); + return copy; +} From 65a4343f9823f04194b027f0e231eb9aedc236f9 Mon Sep 17 00:00:00 2001 From: christopher-buss Date: Fri, 2 Dec 2022 00:56:43 +0000 Subject: [PATCH 02/20] chore: update eslintrc --- .eslintrc | 77 ++++++++++++++++++++++++++++++++++++++++++----- .prettierrc | 9 ++++-- package-lock.json | 59 ++++++++++++++++++++++++++++++++++++ package.json | 2 ++ 4 files changed, 137 insertions(+), 10 deletions(-) diff --git a/.eslintrc b/.eslintrc index 72c4618..8764e15 100644 --- a/.eslintrc +++ b/.eslintrc @@ -13,18 +13,81 @@ ], "plugins": [ "@typescript-eslint", + "@typescript-eslint/eslint-plugin", + "prettier", "roblox-ts", - "prettier" + "simple-import-sort", + "no-autofix" ], "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", - "plugin:roblox-ts/recommended", - "plugin:prettier/recommended" + "plugin:prettier/recommended", + "plugin:roblox-ts/recommended" ], "rules": { - "prettier/prettier": ["warn", { "endOfLine": "auto" }], - "roblox-ts/lua-truthiness": "off", - "roblox-ts/no-array-pairs": "off" + "prettier/prettier": [ + "warn", + { + "endOfLine": "auto" + } + ], + "@typescript-eslint/array-type": [ + "warn", + { + "default": "generic", + "readonly": "generic" + } + ], + "@typescript-eslint/no-floating-promises": [ + "error", + { + "ignoreVoid": true + } + ], + "@typescript-eslint/no-unused-vars": "warn", + "@typescript-eslint/explicit-function-return-type": "warn", + "@typescript-eslint/interface-name-prefix": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-unused-expressions": "warn", + "@typescript-eslint/explicit-member-accessibility": [ + "warn", + { + "overrides": { + "constructors": "no-public" + } + } + ], + "curly": [ + "warn", + "multi-line", + "consistent" + ], + "no-param-reassign": "warn", + "no-autofix/prefer-const": "warn", + "no-constant-condition": [ + "error", + { + "checkLoops": false + } + ], + "no-debugger": "off", + "no-empty": [ + "error", + { + "allowEmptyCatch": true + } + ], + "no-extra-boolean-cast": "off", + "no-undef-init": "error", + "prefer-const": "off", + "simple-import-sort/exports": "warn", + "simple-import-sort/imports": "warn" } -} \ No newline at end of file +} diff --git a/.prettierrc b/.prettierrc index 0d69450..9c32a5d 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,9 @@ { + "semi": true, + "trailingComma": "all", + "singleQuote": false, "printWidth": 120, "tabWidth": 4, - "trailingComma": "all", - "useTabs": true -} \ No newline at end of file + "useTabs": true, + "arrowParens": "avoid" +} diff --git a/package-lock.json b/package-lock.json index aa7a80a..aa9a310 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,8 +21,10 @@ "@typescript-eslint/parser": "^5.40.0", "eslint": "^8.25.0", "eslint-config-prettier": "^8.5.0", + "eslint-plugin-no-autofix": "^1.2.3", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-roblox-ts": "0.0.34", + "eslint-plugin-simple-import-sort": "^8.0.0", "prettier": "^2.7.1", "typescript": "^4.8.4" } @@ -1249,6 +1251,22 @@ "node": ">=4" } }, + "node_modules/eslint-plugin-no-autofix": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-autofix/-/eslint-plugin-no-autofix-1.2.3.tgz", + "integrity": "sha512-JFSYe82Da2A8Krh+Gfq7+3X2pchTScKgmrlMKIA4HmV6t5xGBF/kgjiFL3YTWRQXQ0NB9eOqpcxh6SuLtQUFjQ==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0", + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "eslint": ">= 5.12.1" + } + }, "node_modules/eslint-plugin-node": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", @@ -1317,6 +1335,24 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-8.0.0.tgz", + "integrity": "sha512-bXgJQ+lqhtQBCuWY/FUWdB27j4+lqcvXv5rUARkzbeWLwea+S5eBZEQrhnO+WgX3ZoJHVj0cn943iyXwByHHQw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -3872,6 +3908,16 @@ } } }, + "eslint-plugin-no-autofix": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-autofix/-/eslint-plugin-no-autofix-1.2.3.tgz", + "integrity": "sha512-JFSYe82Da2A8Krh+Gfq7+3X2pchTScKgmrlMKIA4HmV6t5xGBF/kgjiFL3YTWRQXQ0NB9eOqpcxh6SuLtQUFjQ==", + "dev": true, + "requires": { + "eslint-rule-composer": "^0.3.0", + "find-up": "^5.0.0" + } + }, "eslint-plugin-node": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", @@ -3918,6 +3964,19 @@ "typescript": "^4.4.4" } }, + "eslint-plugin-simple-import-sort": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-8.0.0.tgz", + "integrity": "sha512-bXgJQ+lqhtQBCuWY/FUWdB27j4+lqcvXv5rUARkzbeWLwea+S5eBZEQrhnO+WgX3ZoJHVj0cn943iyXwByHHQw==", + "dev": true, + "requires": {} + }, + "eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", diff --git a/package.json b/package.json index deba88b..ac96396 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,10 @@ "@typescript-eslint/parser": "^5.40.0", "eslint": "^8.25.0", "eslint-config-prettier": "^8.5.0", + "eslint-plugin-no-autofix": "^1.2.3", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-roblox-ts": "0.0.34", + "eslint-plugin-simple-import-sort": "^8.0.0", "prettier": "^2.7.1", "typescript": "^4.8.4" }, From cacc1fcc295d839d47289d1b7adcf2fb5333c311 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Wed, 7 Dec 2022 11:05:40 +0000 Subject: [PATCH 03/20] Moved package in studio to ReplicatedStorage so Roact components are accessible by client --- src/services.d.ts | 3 --- src/testBootstrap.server.ts | 2 +- studio.project.json | 6 +++--- testez-companion.toml | 2 +- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/services.d.ts b/src/services.d.ts index 8a0e462..6ee1c1d 100644 --- a/src/services.d.ts +++ b/src/services.d.ts @@ -1,7 +1,4 @@ interface ReplicatedStorage extends Instance { include: { node_modules: { "@rbxts": { testez: { src: ModuleScript } } } }; -} - -interface ServerScriptService extends Instance { Package: Folder; } diff --git a/src/testBootstrap.server.ts b/src/testBootstrap.server.ts index 0cbdc7c..77202d4 100644 --- a/src/testBootstrap.server.ts +++ b/src/testBootstrap.server.ts @@ -2,4 +2,4 @@ import type TestEZ from "@rbxts/testez"; const { TestBootstrap } = require(game.GetService("ReplicatedStorage").include.node_modules["@rbxts"].testez .src) as TestEZ; -TestBootstrap.run([game.GetService("ServerScriptService").Package]); // Run tests +TestBootstrap.run([game.GetService("ReplicatedStorage").Package]); // Run tests diff --git a/studio.project.json b/studio.project.json index 32f263d..73fbaef 100644 --- a/studio.project.json +++ b/studio.project.json @@ -15,13 +15,13 @@ "$path": "node_modules/@rbxts" } } + }, + "Package": { + "$path": "out" } }, "ServerScriptService": { "$className": "ServerScriptService", - "Package": { - "$path": "out" - }, "testBootstrap": { "$path": "out/testBootstrap.server.lua" } diff --git a/testez-companion.toml b/testez-companion.toml index ec9b156..e90ff03 100644 --- a/testez-companion.toml +++ b/testez-companion.toml @@ -1,2 +1,2 @@ # These are the locations of your .spec files (descendants are searched too) -roots = ["ServerScriptService/Package"] +roots = ["ReplicatedStorage/Package"] From e0bda0cbc0de3a47c786aa2c2f11bbd249b1b800 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Wed, 7 Dec 2022 11:35:08 +0000 Subject: [PATCH 04/20] Created a modal component which supports displaying in game and in Hoarcekat --- .../console/components/modal.tsx | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/lib/user-interface/console/components/modal.tsx diff --git a/src/lib/user-interface/console/components/modal.tsx b/src/lib/user-interface/console/components/modal.tsx new file mode 100644 index 0000000..c0252f2 --- /dev/null +++ b/src/lib/user-interface/console/components/modal.tsx @@ -0,0 +1,68 @@ +import Roact, { Children, Portal } from "@rbxts/roact"; +import { withHooks } from "@rbxts/roact-hooked"; +import { Players, RunService } from "@rbxts/services"; + +/** + * There isn't a reliable way to get Hoarcekat's preview window from a Roact component, so + * instead we will get it from the PluginGuiService since the structure is always the same (for this version). + * @returns Preview frame for Hoarcekat + */ +function findHoarcekatFrame(): Frame | undefined { + const frame = game + .FindFirstChild("PluginGuiService") + ?.FindFirstChild("Hoarcekat") + ?.FindFirstChild("Hoarcekat") + ?.FindFirstChild("Preview") + ?.FindFirstChild("Preview") + ?.FindFirstChild("Preview") as Frame; + + if (!frame) warn("Unable to find Hoarcekat preview window"); + return frame; +} + +// Store these values for later rather than evaluating with every new modal +const isGameRunning = RunService.IsRunning(); +const hoarcekatFrame = isGameRunning ? findHoarcekatFrame() : undefined; + +/** + * Modal which can be used with .story scripts. Generally a modal will be added directly to the PlayerGui, but + * since .story scripts are ran inside studio PlayerGui won't exists. Instead, we'll parent the modal directly + * to Hoarcekat's preview window, simulating a modal without running the game. + * + * This is not perfect as the AbsolutePosition of the preview window is about (154, 5) rather than (0, 0), so + * the position may be skewed when positioning components absolutely. But it's better than the component erroring. + */ +const HoarcekatModal = withHooks((props) => { + const parent = hoarcekatFrame; + if (!parent) return ; + + return ( + + + {props[Children]} + + + ); +}); + +/** + * Modal which parents itself to the PlayerGui and renders children in a separate ScreenGui + */ +const GameRunningModal = withHooks((props) => { + const playerGui = Players.LocalPlayer.FindFirstChildOfClass("PlayerGui")!; + return ( + + {props[Children]} + + ); +}); + +const Modal = withHooks((props) => { + return isGameRunning ? ( + {props[Children]} + ) : ( + {props[Children]} + ); +}); + +export default Modal; From 4adb55f854a55b0fbeb2741385addce7d29e02ee Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Wed, 7 Dec 2022 12:00:17 +0000 Subject: [PATCH 05/20] export StoreState and ClientStore type for use with rodux hooks --- src/lib/user-interface/store.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib/user-interface/store.ts b/src/lib/user-interface/store.ts index 1bd355f..f4970c3 100644 --- a/src/lib/user-interface/store.ts +++ b/src/lib/user-interface/store.ts @@ -1,4 +1,9 @@ import { Store } from "@rbxts/rodux"; -import { consoleReducer } from "./console/console-reducer"; +import { ConsoleActions } from "./console/console-actions"; +import { ConsoleReducer, consoleReducer } from "./console/console-reducer"; -export const ClientStore = new Store(consoleReducer); +export type StoreState = ConsoleReducer; +type StoreActions = ConsoleActions; + +export const ClientStore = new Store(consoleReducer); +export type ClientStore = typeof ClientStore; From 70468b08e898c080a380814cde613fcfee347fef Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Wed, 7 Dec 2022 12:00:32 +0000 Subject: [PATCH 06/20] install roact-hooked and roact-rodux hooked --- package-lock.json | 36 ++++++++++++++++++++++++++++++++++-- package.json | 2 ++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 900f1c0..354d208 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,12 +11,15 @@ "dependencies": { "@eslint/github-action": "^0.1.0", "@rbxts/roact": "^1.4.4-ts.0", + "@rbxts/roact-hooked": "^2.1.3", + "@rbxts/roact-rodux-hooked": "^1.1.3", "@rbxts/rodux": "^3.0.0-ts.3", "@rbxts/services": "^1.5.1", "roblox-ts": "^2.0.4" }, "devDependencies": { "@rbxts/compiler-types": "^2.0.4-types.0", + "@rbxts/testez": "^0.4.2-ts.0", "@rbxts/types": "^1.0.642", "@typescript-eslint/eslint-plugin": "^5.40.0", "@typescript-eslint/parser": "^5.40.0", @@ -530,11 +533,28 @@ "resolved": "https://registry.npmjs.org/@rbxts/roact/-/roact-1.4.4-ts.0.tgz", "integrity": "sha512-gn9mBoGG/Clzgv2kyOvLNVd9dh5t6z+jukC3ITv2HnfPqvf/sMbz/VMaBoiB7t5umuiIe0LjW0ctZrkrS+uTOA==" }, + "node_modules/@rbxts/roact-hooked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@rbxts/roact-hooked/-/roact-hooked-2.1.3.tgz", + "integrity": "sha512-CPwpNknhqBnDJF86ekZasRfPjpnQ/7YdlpKl7RlnGkBOaknOVjie6NvHT1slKJDkCFK5Vb3VreE3uNehAtOubQ==", + "peerDependencies": { + "@rbxts/roact": "*" + } + }, + "node_modules/@rbxts/roact-rodux-hooked": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rbxts/roact-rodux-hooked/-/roact-rodux-hooked-1.1.3.tgz", + "integrity": "sha512-Ino1CQmbkvn3WwQa74IKjfKeHm3Pr51CJNvV5KLeuzyrevKaJbjntYMu6gnALCJmmA4zsH309TOl0j69RHBA7A==", + "peerDependencies": { + "@rbxts/roact": "*", + "@rbxts/roact-hooked": "^2.0.0" + } + }, "node_modules/@rbxts/rodux": { "version": "3.0.0-ts.3", "resolved": "https://registry.npmjs.org/@rbxts/rodux/-/rodux-3.0.0-ts.3.tgz", "integrity": "sha512-LrLowiF1YL5U+lQheCNMo8sbrSEoZAIlVFOGB7Edjein5TtZAeNgyJrhY5yFH5gAfJQzFRnZWVOxWFaMlD0GRg==" - }, + }, "node_modules/@rbxts/services": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@rbxts/services/-/services-1.5.1.tgz", @@ -3399,11 +3419,23 @@ "resolved": "https://registry.npmjs.org/@rbxts/roact/-/roact-1.4.4-ts.0.tgz", "integrity": "sha512-gn9mBoGG/Clzgv2kyOvLNVd9dh5t6z+jukC3ITv2HnfPqvf/sMbz/VMaBoiB7t5umuiIe0LjW0ctZrkrS+uTOA==" }, + "@rbxts/roact-hooked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@rbxts/roact-hooked/-/roact-hooked-2.1.3.tgz", + "integrity": "sha512-CPwpNknhqBnDJF86ekZasRfPjpnQ/7YdlpKl7RlnGkBOaknOVjie6NvHT1slKJDkCFK5Vb3VreE3uNehAtOubQ==", + "requires": {} + }, + "@rbxts/roact-rodux-hooked": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rbxts/roact-rodux-hooked/-/roact-rodux-hooked-1.1.3.tgz", + "integrity": "sha512-Ino1CQmbkvn3WwQa74IKjfKeHm3Pr51CJNvV5KLeuzyrevKaJbjntYMu6gnALCJmmA4zsH309TOl0j69RHBA7A==", + "requires": {} + }, "@rbxts/rodux": { "version": "3.0.0-ts.3", "resolved": "https://registry.npmjs.org/@rbxts/rodux/-/rodux-3.0.0-ts.3.tgz", "integrity": "sha512-LrLowiF1YL5U+lQheCNMo8sbrSEoZAIlVFOGB7Edjein5TtZAeNgyJrhY5yFH5gAfJQzFRnZWVOxWFaMlD0GRg==" - }, + }, "@rbxts/services": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@rbxts/services/-/services-1.5.1.tgz", diff --git a/package.json b/package.json index 0083af6..ca497a1 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,8 @@ "dependencies": { "@eslint/github-action": "^0.1.0", "@rbxts/roact": "^1.4.4-ts.0", + "@rbxts/roact-hooked": "^2.1.3", + "@rbxts/roact-rodux-hooked": "^1.1.3", "@rbxts/rodux": "^3.0.0-ts.3", "@rbxts/services": "^1.5.1", "roblox-ts": "^2.0.4" From ec1080111ad85a99def393bee8f65bc0bf236145 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Wed, 7 Dec 2022 15:54:44 +0000 Subject: [PATCH 07/20] move rodux-utils to existing utilities folder --- src/lib/{utils => utilities}/rodux-utils.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/lib/{utils => utilities}/rodux-utils.ts (100%) diff --git a/src/lib/utils/rodux-utils.ts b/src/lib/utilities/rodux-utils.ts similarity index 100% rename from src/lib/utils/rodux-utils.ts rename to src/lib/utilities/rodux-utils.ts From ac4531afc8710d8c496b1d684997a86848d9e522 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Wed, 7 Dec 2022 15:55:05 +0000 Subject: [PATCH 08/20] move rodux-utils to existing utilities folder --- src/lib/user-interface/console/console-reducer.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/user-interface/console/console-reducer.ts b/src/lib/user-interface/console/console-reducer.ts index 785ae5f..4ca1a5e 100644 --- a/src/lib/user-interface/console/console-reducer.ts +++ b/src/lib/user-interface/console/console-reducer.ts @@ -1,5 +1,5 @@ import { createReducer } from "@rbxts/rodux"; -import { updateAtIndex } from "../../utils/rodux-utils"; +import { updateAtIndex } from "../../utilities/rodux-utils"; import { ConsoleActions } from "./console-actions"; export interface ConsoleReducer { @@ -20,7 +20,7 @@ export const consoleReducer = createReducer(init const { flares } = state; // Check for duplicate flares - const flareExists = flares.find((f) => f.eventName === eventName); + const flareExists = flares.find(f => f.eventName === eventName); if (flareExists !== undefined) return state; // Create new flare and add to state @@ -32,12 +32,12 @@ export const consoleReducer = createReducer(init FireFlare: (state, action) => { // Get the index of the flare - const flareIndex = state.flares.findIndex((f) => f.eventName === action.eventName); + const flareIndex = state.flares.findIndex(f => f.eventName === action.eventName); // Increment the amount of times the flare has been called return { ...state, - flares: updateAtIndex(state.flares, flareIndex, (flare) => ({ ...flare, amount: flare.amount + 1 })), + flares: updateAtIndex(state.flares, flareIndex, flare => ({ ...flare, amount: flare.amount + 1 })), }; }, }); From ad3013bc8a91a42648e5b9606eecedc651a13f0b Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Wed, 7 Dec 2022 16:03:03 +0000 Subject: [PATCH 09/20] Moved functions relating to making Hoarcekat congruent with playing the game --- .../console/components/modal.tsx | 32 +++++-------------- src/lib/utilities/hoarcekat.ts | 30 +++++++++++++++++ 2 files changed, 38 insertions(+), 24 deletions(-) create mode 100644 src/lib/utilities/hoarcekat.ts diff --git a/src/lib/user-interface/console/components/modal.tsx b/src/lib/user-interface/console/components/modal.tsx index c0252f2..f8c3ae3 100644 --- a/src/lib/user-interface/console/components/modal.tsx +++ b/src/lib/user-interface/console/components/modal.tsx @@ -1,28 +1,9 @@ import Roact, { Children, Portal } from "@rbxts/roact"; import { withHooks } from "@rbxts/roact-hooked"; import { Players, RunService } from "@rbxts/services"; +import { hoarcekatFrame } from "../../../utilities/hoarcekat"; -/** - * There isn't a reliable way to get Hoarcekat's preview window from a Roact component, so - * instead we will get it from the PluginGuiService since the structure is always the same (for this version). - * @returns Preview frame for Hoarcekat - */ -function findHoarcekatFrame(): Frame | undefined { - const frame = game - .FindFirstChild("PluginGuiService") - ?.FindFirstChild("Hoarcekat") - ?.FindFirstChild("Hoarcekat") - ?.FindFirstChild("Preview") - ?.FindFirstChild("Preview") - ?.FindFirstChild("Preview") as Frame; - - if (!frame) warn("Unable to find Hoarcekat preview window"); - return frame; -} - -// Store these values for later rather than evaluating with every new modal const isGameRunning = RunService.IsRunning(); -const hoarcekatFrame = isGameRunning ? findHoarcekatFrame() : undefined; /** * Modal which can be used with .story scripts. Generally a modal will be added directly to the PlayerGui, but @@ -32,9 +13,12 @@ const hoarcekatFrame = isGameRunning ? findHoarcekatFrame() : undefined; * This is not perfect as the AbsolutePosition of the preview window is about (154, 5) rather than (0, 0), so * the position may be skewed when positioning components absolutely. But it's better than the component erroring. */ -const HoarcekatModal = withHooks((props) => { +const HoarcekatModal = withHooks(props => { const parent = hoarcekatFrame; - if (!parent) return ; + if (!parent) { + warn("Unable to find Hoarcekat preview window"); + return ; + } return ( @@ -48,7 +32,7 @@ const HoarcekatModal = withHooks((props) => { /** * Modal which parents itself to the PlayerGui and renders children in a separate ScreenGui */ -const GameRunningModal = withHooks((props) => { +const GameRunningModal = withHooks(props => { const playerGui = Players.LocalPlayer.FindFirstChildOfClass("PlayerGui")!; return ( @@ -57,7 +41,7 @@ const GameRunningModal = withHooks((props) => { ); }); -const Modal = withHooks((props) => { +const Modal = withHooks(props => { return isGameRunning ? ( {props[Children]} ) : ( diff --git a/src/lib/utilities/hoarcekat.ts b/src/lib/utilities/hoarcekat.ts new file mode 100644 index 0000000..d0a414d --- /dev/null +++ b/src/lib/utilities/hoarcekat.ts @@ -0,0 +1,30 @@ +import { RunService } from "@rbxts/services"; + +/** + * There isn't a reliable way to get Hoarcekat's preview window from a Roact component, so + * instead we will get it from the PluginGuiService since the structure is always the same (for this version). + * @returns Preview frame for Hoarcekat + */ +function findHoarcekatFrame(): Frame | undefined { + return game + .FindFirstChild("PluginGuiService") + ?.FindFirstChild("Hoarcekat") + ?.FindFirstChild("Hoarcekat") + ?.FindFirstChild("Preview") + ?.FindFirstChild("Preview") + ?.FindFirstChild("Preview") as Frame; +} + +// Store these values for later rather than evaluating with every new modal +export const hoarcekatFrame = RunService.IsRunning() ? undefined : findHoarcekatFrame(); + +/** + * Gets the AbsolutePosition of a frame. If the Hoarcekat preview window has been found then the position + * will be offset such that the top left of the preview frame is at (0, 0). + * @param guiObject GuiObject + * @returns The position of the frame relative to the Hoarcekat preview frame + */ +export function getAbsolutePosition(guiObject: GuiObject): Vector2 { + const hoarcekatOffset = hoarcekatFrame ? hoarcekatFrame.AbsolutePosition : Vector2.zero; + return guiObject.AbsolutePosition.sub(hoarcekatOffset); +} From 1fb6f17f52d29e58d284aa8e2a06847c849ed973 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Thu, 8 Dec 2022 11:46:22 +0000 Subject: [PATCH 10/20] Added message parameter to FireFlare action --- src/index.ts | 4 +++- src/lib/user-interface/console/console-actions.ts | 1 + src/lib/user-interface/console/console-reducer.ts | 8 ++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 393938b..d463ea9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ import { Process } from "./lib/process/process"; import Scheduler from "./lib/process/scheduler"; import { ConsoleActionName } from "./lib/user-interface/console/console-actions"; import { ClientStore } from "./lib/user-interface/store"; +import { formatFlareTraceback } from "./lib/utilities/string-utils"; /* Networking namespace */ import Client from "./lib/net/utilities/client"; @@ -114,7 +115,8 @@ namespace Tina { } export function oops(eventName: string) { - ClientStore.dispatch({ type: ConsoleActionName.FireFlare, eventName }); + const message = formatFlareTraceback(debug.traceback(undefined, 1)); + ClientStore.dispatch({ type: ConsoleActionName.FireFlare, eventName, message }); } /** diff --git a/src/lib/user-interface/console/console-actions.ts b/src/lib/user-interface/console/console-actions.ts index a3f4d78..adf3f1c 100644 --- a/src/lib/user-interface/console/console-actions.ts +++ b/src/lib/user-interface/console/console-actions.ts @@ -16,6 +16,7 @@ export interface ActionAddFlare extends Action { export interface ActionFireFlare extends Action { eventName: string; + message: string; } export type ConsoleActions = ActionSetConsoleVisible | ActionAddFlare | ActionFireFlare; diff --git a/src/lib/user-interface/console/console-reducer.ts b/src/lib/user-interface/console/console-reducer.ts index 4ca1a5e..b965a92 100644 --- a/src/lib/user-interface/console/console-reducer.ts +++ b/src/lib/user-interface/console/console-reducer.ts @@ -4,7 +4,7 @@ import { ConsoleActions } from "./console-actions"; export interface ConsoleReducer { visible: boolean; - flares: Array<{ eventName: string; amount: number }>; + flares: Array<{ eventName: string; amount: number; message?: string }>; } const initialState: ConsoleReducer = { @@ -37,7 +37,11 @@ export const consoleReducer = createReducer(init // Increment the amount of times the flare has been called return { ...state, - flares: updateAtIndex(state.flares, flareIndex, flare => ({ ...flare, amount: flare.amount + 1 })), + flares: updateAtIndex(state.flares, flareIndex, flare => ({ + ...flare, + amount: flare.amount + 1, + message: action.message, + })), }; }, }); From 545225da85f45e2c2ae1eb2a45d7e54be536f897 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Mon, 12 Dec 2022 18:51:23 +0000 Subject: [PATCH 11/20] created common IFlare interface --- src/lib/types/common.d.ts | 1 + src/lib/user-interface/console/console-reducer.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 src/lib/types/common.d.ts diff --git a/src/lib/types/common.d.ts b/src/lib/types/common.d.ts new file mode 100644 index 0000000..b51040a --- /dev/null +++ b/src/lib/types/common.d.ts @@ -0,0 +1 @@ +export type IFlare = { eventName: string; amount: number; message?: string }; diff --git a/src/lib/user-interface/console/console-reducer.ts b/src/lib/user-interface/console/console-reducer.ts index b965a92..765a984 100644 --- a/src/lib/user-interface/console/console-reducer.ts +++ b/src/lib/user-interface/console/console-reducer.ts @@ -1,10 +1,11 @@ import { createReducer } from "@rbxts/rodux"; +import { IFlare } from "../../types/common"; import { updateAtIndex } from "../../utilities/rodux-utils"; import { ConsoleActions } from "./console-actions"; export interface ConsoleReducer { visible: boolean; - flares: Array<{ eventName: string; amount: number; message?: string }>; + flares: Array; } const initialState: ConsoleReducer = { From 946fff3a16ef96416f3bbfdd2873a82c0fe61798 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Mon, 12 Dec 2022 18:51:58 +0000 Subject: [PATCH 12/20] created common padding element --- src/lib/user-interface/common/padding.tsx | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/lib/user-interface/common/padding.tsx diff --git a/src/lib/user-interface/common/padding.tsx b/src/lib/user-interface/common/padding.tsx new file mode 100644 index 0000000..1360493 --- /dev/null +++ b/src/lib/user-interface/common/padding.tsx @@ -0,0 +1,32 @@ +import Roact from "@rbxts/roact"; + +interface Props { + All?: number; + Horizontal?: number; + Vertical?: number; + Top?: number; + Bottom?: number; + Left?: number; + Right?: number; +} + +const Padding: Roact.FunctionComponent = ({ + All = 0, + Horizontal = 0, + Vertical = 0, + Top = 0, + Bottom = 0, + Right = 0, + Left = 0, +}: Props) => { + return ( + + ); +}; + +export default Padding; From efff0a2d30ef9cbb43794130d42b479cc98ef5ff Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Mon, 12 Dec 2022 19:01:25 +0000 Subject: [PATCH 13/20] created ThemeContext for uniform text and frame styling --- src/lib/user-interface/theme/theme-config.ts | 17 +++++++++++++++++ src/lib/user-interface/theme/theme.tsx | 11 +++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/lib/user-interface/theme/theme-config.ts create mode 100644 src/lib/user-interface/theme/theme.tsx diff --git a/src/lib/user-interface/theme/theme-config.ts b/src/lib/user-interface/theme/theme-config.ts new file mode 100644 index 0000000..b1bba2b --- /dev/null +++ b/src/lib/user-interface/theme/theme-config.ts @@ -0,0 +1,17 @@ +type EnumOrString = T | T["Name"]; + +export interface Theme { + Font: EnumOrString; + FontSize: number; + PrimaryBackgroundColor3: Color3; + SecondaryBackgroundColor3: Color3; + PrimaryTextColor3: Color3; +} + +export const defaultTheme: Theme = { + Font: Enum.Font.Ubuntu, + FontSize: 14, + PrimaryBackgroundColor3: Color3.fromRGB(33, 37, 43), + SecondaryBackgroundColor3: Color3.fromRGB(24, 26, 31), + PrimaryTextColor3: Color3.fromRGB(230, 230, 230), +}; diff --git a/src/lib/user-interface/theme/theme.tsx b/src/lib/user-interface/theme/theme.tsx new file mode 100644 index 0000000..30c130e --- /dev/null +++ b/src/lib/user-interface/theme/theme.tsx @@ -0,0 +1,11 @@ +import Roact, { Children } from "@rbxts/roact"; +import { useContext } from "@rbxts/roact-hooked"; +import { defaultTheme, Theme } from "./theme-config"; + +export const ThemeContext = Roact.createContext(defaultTheme); + +export const ThemeProvider: Roact.FunctionComponent = ({ [Children]: children }) => { + return {children}; +}; + +export const useTheme = () => useContext(ThemeContext); From dfad188fc7dd90fde698617c698fe427147fe532 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Mon, 12 Dec 2022 19:23:00 +0000 Subject: [PATCH 14/20] Fix jsxFragmentFactory setting --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index c33a9d4..5936cc3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "downlevelIteration": true, "jsx": "react", "jsxFactory": "Roact.createElement", - "jsxFragmentFactory": "Roact.Fragment", + "jsxFragmentFactory": "Roact.createFragment", "module": "commonjs", "moduleResolution": "Node", "moduleDetection": "force", From fbdd178fb4798793034c906bd6c331b373c2ed98 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Tue, 13 Dec 2022 15:43:04 +0000 Subject: [PATCH 15/20] Initial Flare and Console UI --- src/lib/types/common.d.ts | 1 + .../console/components/circle.tsx | 15 +++++ .../console/components/console.tsx | 13 ++++ .../console/components/flare-bar.tsx | 46 +++++++++++++ .../console/components/flare.tsx | 64 ++++++++++++++++++ .../console/components/header.tsx | 22 +++++++ .../console/components/tooltip.tsx | 65 +++++++++++++++++++ .../user-interface/console/console.story.tsx | 45 +++++++++++++ src/lib/user-interface/theme/theme-config.ts | 4 +- src/lib/utilities/string-utils.ts | 19 ++++++ src/lib/utilities/ui.ts | 5 ++ 11 files changed, 297 insertions(+), 2 deletions(-) create mode 100644 src/lib/user-interface/console/components/circle.tsx create mode 100644 src/lib/user-interface/console/components/console.tsx create mode 100644 src/lib/user-interface/console/components/flare-bar.tsx create mode 100644 src/lib/user-interface/console/components/flare.tsx create mode 100644 src/lib/user-interface/console/components/header.tsx create mode 100644 src/lib/user-interface/console/components/tooltip.tsx create mode 100644 src/lib/user-interface/console/console.story.tsx create mode 100644 src/lib/utilities/string-utils.ts create mode 100644 src/lib/utilities/ui.ts diff --git a/src/lib/types/common.d.ts b/src/lib/types/common.d.ts index b51040a..14fdc6f 100644 --- a/src/lib/types/common.d.ts +++ b/src/lib/types/common.d.ts @@ -1 +1,2 @@ export type IFlare = { eventName: string; amount: number; message?: string }; +export type EnumOrName = T | T["Name"]; diff --git a/src/lib/user-interface/console/components/circle.tsx b/src/lib/user-interface/console/components/circle.tsx new file mode 100644 index 0000000..3c7ff72 --- /dev/null +++ b/src/lib/user-interface/console/components/circle.tsx @@ -0,0 +1,15 @@ +import Roact, { JsxInstanceProperties } from "@rbxts/roact"; +import { withHooks } from "@rbxts/roact-hooked"; + +type CircleProps = JsxInstanceProperties; + +const Circle = withHooks((props: CircleProps) => { + return ( + + + + + ); +}); + +export default Circle; diff --git a/src/lib/user-interface/console/components/console.tsx b/src/lib/user-interface/console/components/console.tsx new file mode 100644 index 0000000..51f1bcd --- /dev/null +++ b/src/lib/user-interface/console/components/console.tsx @@ -0,0 +1,13 @@ +import Roact from "@rbxts/roact"; +import { withHooks } from "@rbxts/roact-hooked"; +import Header from "./header"; + +const Console = withHooks(() => { + return ( + +
+ + ); +}); + +export default Console; diff --git a/src/lib/user-interface/console/components/flare-bar.tsx b/src/lib/user-interface/console/components/flare-bar.tsx new file mode 100644 index 0000000..794a54f --- /dev/null +++ b/src/lib/user-interface/console/components/flare-bar.tsx @@ -0,0 +1,46 @@ +import Roact, { JsxInstanceProperties } from "@rbxts/roact"; +import { useCallback, useState, withHooks } from "@rbxts/roact-hooked"; +import { useSelector } from "@rbxts/roact-rodux-hooked"; +import { IFlare } from "../../../types/common"; +import Padding from "../../common/padding"; +import { StoreState } from "../../store"; +import Flare from "./flare"; + +type FlareBarProps = Partial, "Position" | "AnchorPoint" | "Size">>; + +export const FlareBar = withHooks((props: FlareBarProps) => { + const { Size = new UDim2(1, 0, 0, 36) } = props; + const flares = useSelector((state: StoreState) => state.flares); + const [selected, setSelected] = useState(); + + const handleClick = useCallback((flare: IFlare) => { + setSelected(selected => { + if (!flare.amount) return; + return flare === selected ? undefined : flare; + }); + }, []); + + return ( + + + + {flares.map((flare, i) => ( + + ))} + + ); +}); diff --git a/src/lib/user-interface/console/components/flare.tsx b/src/lib/user-interface/console/components/flare.tsx new file mode 100644 index 0000000..9b3218c --- /dev/null +++ b/src/lib/user-interface/console/components/flare.tsx @@ -0,0 +1,64 @@ +import Roact, { Element } from "@rbxts/roact"; +import { useRef, withHooksPure } from "@rbxts/roact-hooked"; +import { TextService } from "@rbxts/services"; +import { IFlare } from "../../../types/common"; +import { getAbsolutePosition } from "../../../utilities/hoarcekat"; +import Padding from "../../common/padding"; +import { useTheme } from "../../theme/theme"; +import Circle from "./circle"; +import Tooltip from "./tooltip"; + +interface Props { + Info: IFlare; + Selected: boolean; + OnClick: (flare: IFlare) => void; +} + +const Flare = withHooksPure(({ Info, Selected, OnClick }: Props) => { + const { eventName, amount, message } = Info; + const theme = useTheme(); + const buttonRef = useRef(); + + const text = `${eventName} ${amount}x`; + const textSize = TextService.GetTextSize(text, theme.FontSize, theme.Font, new Vector2(math.huge, math.huge)); + const circleColour = amount > 0 ? Color3.fromRGB(255, 18, 18) : Color3.fromRGB(18, 18, 255); + + let tooltip: Element | undefined = undefined; + if (Selected) { + const button = buttonRef.getValue()!; + const { X: positionX, Y: positionY } = getAbsolutePosition(button); + const { Y: sizeY } = button.AbsoluteSize; + const tooltipPosition = UDim2.fromOffset(positionX - 3, positionY + sizeY + 8); + tooltip = ; + } + + return ( + OnClick(Info), + }} + > + + + + + + + {tooltip} + + ); +}); + +export default Flare; diff --git a/src/lib/user-interface/console/components/header.tsx b/src/lib/user-interface/console/components/header.tsx new file mode 100644 index 0000000..f548cd9 --- /dev/null +++ b/src/lib/user-interface/console/components/header.tsx @@ -0,0 +1,22 @@ +import Roact from "@rbxts/roact"; +import { withHooksPure } from "@rbxts/roact-hooked"; +import { useTheme } from "../../theme/theme"; +import { FlareBar } from "./flare-bar"; + +interface Props {} + +const Header = withHooksPure((props: Props) => { + const theme = useTheme(); + + return ( + + + + ); +}); + +export default Header; diff --git a/src/lib/user-interface/console/components/tooltip.tsx b/src/lib/user-interface/console/components/tooltip.tsx new file mode 100644 index 0000000..1e49549 --- /dev/null +++ b/src/lib/user-interface/console/components/tooltip.tsx @@ -0,0 +1,65 @@ +import Roact from "@rbxts/roact"; +import { useBinding, useEffect, useRef, withHooks } from "@rbxts/roact-hooked"; +import { UDim2ToAbsolute } from "../../../utilities/ui"; +import Padding from "../../common/padding"; +import { useTheme } from "../../theme/theme"; +import Modal from "./modal"; + +interface TooltipProps { + Message?: string; + Position?: UDim2; +} + +const Tooltip = withHooks(({ Message, Position = new UDim2() }: TooltipProps) => { + const theme = useTheme(); + const labelRef = useRef(); + const [labelPosition, setLabelPosition] = useBinding(Position); + + // Reposition the tooltip within the bounds of the Modal (screen) + useEffect(() => { + const label = labelRef.getValue()!; + const parent = label.Parent as GuiBase2d; + + const constrainToWindow = () => { + const maxSize = parent.AbsoluteSize; + const size = label.AbsoluteSize; + const targetPosition = UDim2ToAbsolute(Position, maxSize); + + const constrainX = () => { + const max = maxSize.X; + const min = 0; + return math.clamp(targetPosition.X, min, math.max(max - size.X, min)); + }; + + setLabelPosition(UDim2.fromOffset(constrainX(), targetPosition.Y)); + }; + + const connection = parent.GetPropertyChangedSignal("AbsoluteSize").Connect(constrainToWindow); + constrainToWindow(); + + return () => { + connection.Disconnect(); + }; + }, []); + + return ( + + + + + + ); +}); + +export default Tooltip; diff --git a/src/lib/user-interface/console/console.story.tsx b/src/lib/user-interface/console/console.story.tsx new file mode 100644 index 0000000..e8c0448 --- /dev/null +++ b/src/lib/user-interface/console/console.story.tsx @@ -0,0 +1,45 @@ +import Roact, { Children } from "@rbxts/roact"; +import { StoreProvider } from "@rbxts/roact-rodux-hooked"; +import Tina from "../../.."; +import { ClientStore } from "../store"; +import { ThemeProvider } from "../theme/theme"; +import Console from "./components/console"; + +const Wrapper: Roact.FunctionComponent = ({ [Children]: children }) => { + return ( + + {children} + + ); +}; + +export = (parent: GuiBase2d) => { + const handle = Roact.mount( + + {/* Pretty picture so I can see how transparent the console is */} + + + , + parent, + ); + + // Create flares + Tina.flare("Hello World"); + Tina.flare("Death"); + Tina.flare("Respawn"); + Tina.flare("Eggs and Rice"); + Tina.flare("Remote"); + Tina.flare("Stanky Leg"); + Tina.flare("Lots and lots"); + Tina.flare("Onlytwentycharacters"); + + // Fire some flares + Tina.oops("Hello World"); + Tina.oops("Hello World"); + Tina.oops("Death"); + Tina.oops("Remote"); + + return () => { + Roact.unmount(handle); + }; +}; diff --git a/src/lib/user-interface/theme/theme-config.ts b/src/lib/user-interface/theme/theme-config.ts index b1bba2b..d0a129d 100644 --- a/src/lib/user-interface/theme/theme-config.ts +++ b/src/lib/user-interface/theme/theme-config.ts @@ -1,7 +1,7 @@ -type EnumOrString = T | T["Name"]; +import { EnumOrName } from "../../types/common"; export interface Theme { - Font: EnumOrString; + Font: EnumOrName; FontSize: number; PrimaryBackgroundColor3: Color3; SecondaryBackgroundColor3: Color3; diff --git a/src/lib/utilities/string-utils.ts b/src/lib/utilities/string-utils.ts new file mode 100644 index 0000000..f12d938 --- /dev/null +++ b/src/lib/utilities/string-utils.ts @@ -0,0 +1,19 @@ +export function removeTrailingNewLine(str: string) { + if (str.sub(-1, -1) === "\n") { + str = str.sub(0, -2); + } + return str; +} + +/** + * Formats a traceback string to be displayed by a Flare tooltip + * @param str The traceback + * @returns Formatted string + */ +export function formatFlareTraceback(str: string) { + str = str.gsub("^.*function oops\n", "")[0]; // Remove Tina.oops from the traceback + str = str.gsub('%[string "', "[")[0]; // Remove 'string "' from the beginning of the file name + str = str.gsub('"%]', "]")[0]; // Remove the " at the end of the file name + str = removeTrailingNewLine(str); + return str; +} diff --git a/src/lib/utilities/ui.ts b/src/lib/utilities/ui.ts new file mode 100644 index 0000000..2b54e20 --- /dev/null +++ b/src/lib/utilities/ui.ts @@ -0,0 +1,5 @@ +export function UDim2ToAbsolute(udim2: UDim2, size: Vector2): Vector2 { + const x = udim2.X.Scale * size.X + udim2.X.Offset; + const y = udim2.Y.Scale * size.X + udim2.Y.Offset; + return new Vector2(x, y); +} From 54ece0c858fbaa75a8f4bbfbd82f9274538b9dd5 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Thu, 15 Dec 2022 00:07:45 +0000 Subject: [PATCH 16/20] override no-unused-vars due to issue in .tsx files with Roact import --- .eslintrc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index 8764e15..d473897 100644 --- a/.eslintrc +++ b/.eslintrc @@ -89,5 +89,13 @@ "prefer-const": "off", "simple-import-sort/exports": "warn", "simple-import-sort/imports": "warn" - } + }, + "overrides": [ + { + "files": ["*.tsx"], + "rules": { + "@typescript-eslint/no-unused-vars": "off" + } + } + ] } From bd2ab89966ba3ffb5e56d8231b74a3ca6f8e26cb Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Thu, 15 Dec 2022 00:08:06 +0000 Subject: [PATCH 17/20] disable explicit-function-return-types for expressions --- .eslintrc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index d473897..b2a1041 100644 --- a/.eslintrc +++ b/.eslintrc @@ -46,7 +46,11 @@ } ], "@typescript-eslint/no-unused-vars": "warn", - "@typescript-eslint/explicit-function-return-type": "warn", + "@typescript-eslint/explicit-function-return-type": [ + "warn", { + "allowExpressions": true + } + ], "@typescript-eslint/interface-name-prefix": "off", "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-empty-interface": "off", From b83b0749143376aefe1839178c2ba972c81ccc55 Mon Sep 17 00:00:00 2001 From: Adam Drake Date: Thu, 15 Dec 2022 00:09:17 +0000 Subject: [PATCH 18/20] fix eslint warnings --- src/index.ts | 24 ++++++++----------- .../console/components/console.tsx | 1 + .../console/components/flare-bar.tsx | 3 ++- .../console/components/flare.tsx | 3 ++- .../console/components/header.tsx | 5 ++-- .../console/components/modal.tsx | 1 + .../console/components/tooltip.tsx | 5 ++-- .../user-interface/console/console-reducer.ts | 1 + .../user-interface/console/console.story.tsx | 1 + src/lib/user-interface/store.ts | 1 + src/lib/user-interface/theme/theme.tsx | 3 ++- src/lib/utilities/string-utils.ts | 16 ++++++------- 12 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/index.ts b/src/index.ts index d463ea9..2c73e5a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,23 +1,19 @@ +import { RunService } from "@rbxts/services"; + import TinaCore from "./lib/core"; import TinaGame from "./lib/core/game"; - import logger from "./lib/logger"; - -import { Process } from "./lib/process/process"; -import Scheduler from "./lib/process/scheduler"; -import { ConsoleActionName } from "./lib/user-interface/console/console-actions"; -import { ClientStore } from "./lib/user-interface/store"; -import { formatFlareTraceback } from "./lib/utilities/string-utils"; - /* Networking namespace */ import Client from "./lib/net/utilities/client"; -import Server from "./lib/net/utilities/server"; - import Identifiers from "./lib/net/utilities/identifiers"; - +import Server from "./lib/net/utilities/server"; +import { Process } from "./lib/process/process"; +import Scheduler from "./lib/process/scheduler"; /* User abstraction class */ import { User } from "./lib/user/user"; -import { RunService } from "@rbxts/services"; +import { ConsoleActionName } from "./lib/user-interface/console/console-actions"; +import { ClientStore } from "./lib/user-interface/store"; +import { formatFlareTraceback } from "./lib/utilities/string-utils"; export enum Protocol { /** Create/Load Online User Data */ @@ -110,11 +106,11 @@ namespace Tina { return new Process(name, Scheduler); } - export function flare(eventName: string) { + export function flare(eventName: string): void { ClientStore.dispatch({ type: ConsoleActionName.AddFlare, eventName }); } - export function oops(eventName: string) { + export function oops(eventName: string): void { const message = formatFlareTraceback(debug.traceback(undefined, 1)); ClientStore.dispatch({ type: ConsoleActionName.FireFlare, eventName, message }); } diff --git a/src/lib/user-interface/console/components/console.tsx b/src/lib/user-interface/console/components/console.tsx index 51f1bcd..f76582d 100644 --- a/src/lib/user-interface/console/components/console.tsx +++ b/src/lib/user-interface/console/components/console.tsx @@ -1,5 +1,6 @@ import Roact from "@rbxts/roact"; import { withHooks } from "@rbxts/roact-hooked"; + import Header from "./header"; const Console = withHooks(() => { diff --git a/src/lib/user-interface/console/components/flare-bar.tsx b/src/lib/user-interface/console/components/flare-bar.tsx index 794a54f..b508d45 100644 --- a/src/lib/user-interface/console/components/flare-bar.tsx +++ b/src/lib/user-interface/console/components/flare-bar.tsx @@ -1,6 +1,7 @@ import Roact, { JsxInstanceProperties } from "@rbxts/roact"; import { useCallback, useState, withHooks } from "@rbxts/roact-hooked"; import { useSelector } from "@rbxts/roact-rodux-hooked"; + import { IFlare } from "../../../types/common"; import Padding from "../../common/padding"; import { StoreState } from "../../store"; @@ -15,7 +16,7 @@ export const FlareBar = withHooks((props: FlareBarProps) => { const handleClick = useCallback((flare: IFlare) => { setSelected(selected => { - if (!flare.amount) return; + if (flare.amount === 0) return; return flare === selected ? undefined : flare; }); }, []); diff --git a/src/lib/user-interface/console/components/flare.tsx b/src/lib/user-interface/console/components/flare.tsx index 9b3218c..8dfa15b 100644 --- a/src/lib/user-interface/console/components/flare.tsx +++ b/src/lib/user-interface/console/components/flare.tsx @@ -1,6 +1,7 @@ import Roact, { Element } from "@rbxts/roact"; import { useRef, withHooksPure } from "@rbxts/roact-hooked"; import { TextService } from "@rbxts/services"; + import { IFlare } from "../../../types/common"; import { getAbsolutePosition } from "../../../utilities/hoarcekat"; import Padding from "../../common/padding"; @@ -23,7 +24,7 @@ const Flare = withHooksPure(({ Info, Selected, OnClick }: Props) => { const textSize = TextService.GetTextSize(text, theme.FontSize, theme.Font, new Vector2(math.huge, math.huge)); const circleColour = amount > 0 ? Color3.fromRGB(255, 18, 18) : Color3.fromRGB(18, 18, 255); - let tooltip: Element | undefined = undefined; + let tooltip: Element | undefined; if (Selected) { const button = buttonRef.getValue()!; const { X: positionX, Y: positionY } = getAbsolutePosition(button); diff --git a/src/lib/user-interface/console/components/header.tsx b/src/lib/user-interface/console/components/header.tsx index f548cd9..cda1948 100644 --- a/src/lib/user-interface/console/components/header.tsx +++ b/src/lib/user-interface/console/components/header.tsx @@ -1,11 +1,10 @@ import Roact from "@rbxts/roact"; import { withHooksPure } from "@rbxts/roact-hooked"; + import { useTheme } from "../../theme/theme"; import { FlareBar } from "./flare-bar"; -interface Props {} - -const Header = withHooksPure((props: Props) => { +const Header = withHooksPure(() => { const theme = useTheme(); return ( diff --git a/src/lib/user-interface/console/components/modal.tsx b/src/lib/user-interface/console/components/modal.tsx index f8c3ae3..23c47be 100644 --- a/src/lib/user-interface/console/components/modal.tsx +++ b/src/lib/user-interface/console/components/modal.tsx @@ -1,6 +1,7 @@ import Roact, { Children, Portal } from "@rbxts/roact"; import { withHooks } from "@rbxts/roact-hooked"; import { Players, RunService } from "@rbxts/services"; + import { hoarcekatFrame } from "../../../utilities/hoarcekat"; const isGameRunning = RunService.IsRunning(); diff --git a/src/lib/user-interface/console/components/tooltip.tsx b/src/lib/user-interface/console/components/tooltip.tsx index 1e49549..8ad154a 100644 --- a/src/lib/user-interface/console/components/tooltip.tsx +++ b/src/lib/user-interface/console/components/tooltip.tsx @@ -1,5 +1,6 @@ import Roact from "@rbxts/roact"; import { useBinding, useEffect, useRef, withHooks } from "@rbxts/roact-hooked"; + import { UDim2ToAbsolute } from "../../../utilities/ui"; import Padding from "../../common/padding"; import { useTheme } from "../../theme/theme"; @@ -20,12 +21,12 @@ const Tooltip = withHooks(({ Message, Position = new UDim2() }: TooltipProps) => const label = labelRef.getValue()!; const parent = label.Parent as GuiBase2d; - const constrainToWindow = () => { + const constrainToWindow = (): void => { const maxSize = parent.AbsoluteSize; const size = label.AbsoluteSize; const targetPosition = UDim2ToAbsolute(Position, maxSize); - const constrainX = () => { + const constrainX = (): number => { const max = maxSize.X; const min = 0; return math.clamp(targetPosition.X, min, math.max(max - size.X, min)); diff --git a/src/lib/user-interface/console/console-reducer.ts b/src/lib/user-interface/console/console-reducer.ts index 765a984..95eb650 100644 --- a/src/lib/user-interface/console/console-reducer.ts +++ b/src/lib/user-interface/console/console-reducer.ts @@ -1,4 +1,5 @@ import { createReducer } from "@rbxts/rodux"; + import { IFlare } from "../../types/common"; import { updateAtIndex } from "../../utilities/rodux-utils"; import { ConsoleActions } from "./console-actions"; diff --git a/src/lib/user-interface/console/console.story.tsx b/src/lib/user-interface/console/console.story.tsx index e8c0448..74f81b9 100644 --- a/src/lib/user-interface/console/console.story.tsx +++ b/src/lib/user-interface/console/console.story.tsx @@ -1,5 +1,6 @@ import Roact, { Children } from "@rbxts/roact"; import { StoreProvider } from "@rbxts/roact-rodux-hooked"; + import Tina from "../../.."; import { ClientStore } from "../store"; import { ThemeProvider } from "../theme/theme"; diff --git a/src/lib/user-interface/store.ts b/src/lib/user-interface/store.ts index f4970c3..1140cec 100644 --- a/src/lib/user-interface/store.ts +++ b/src/lib/user-interface/store.ts @@ -1,4 +1,5 @@ import { Store } from "@rbxts/rodux"; + import { ConsoleActions } from "./console/console-actions"; import { ConsoleReducer, consoleReducer } from "./console/console-reducer"; diff --git a/src/lib/user-interface/theme/theme.tsx b/src/lib/user-interface/theme/theme.tsx index 30c130e..900a1e9 100644 --- a/src/lib/user-interface/theme/theme.tsx +++ b/src/lib/user-interface/theme/theme.tsx @@ -1,5 +1,6 @@ import Roact, { Children } from "@rbxts/roact"; import { useContext } from "@rbxts/roact-hooked"; + import { defaultTheme, Theme } from "./theme-config"; export const ThemeContext = Roact.createContext(defaultTheme); @@ -8,4 +9,4 @@ export const ThemeProvider: Roact.FunctionComponent = ({ [Children]: children }) return {children}; }; -export const useTheme = () => useContext(ThemeContext); +export const useTheme = (): Theme => useContext(ThemeContext); diff --git a/src/lib/utilities/string-utils.ts b/src/lib/utilities/string-utils.ts index f12d938..6f52c72 100644 --- a/src/lib/utilities/string-utils.ts +++ b/src/lib/utilities/string-utils.ts @@ -1,6 +1,6 @@ -export function removeTrailingNewLine(str: string) { +export function removeTrailingNewLine(str: string): string { if (str.sub(-1, -1) === "\n") { - str = str.sub(0, -2); + return str.sub(0, -2); } return str; } @@ -10,10 +10,10 @@ export function removeTrailingNewLine(str: string) { * @param str The traceback * @returns Formatted string */ -export function formatFlareTraceback(str: string) { - str = str.gsub("^.*function oops\n", "")[0]; // Remove Tina.oops from the traceback - str = str.gsub('%[string "', "[")[0]; // Remove 'string "' from the beginning of the file name - str = str.gsub('"%]', "]")[0]; // Remove the " at the end of the file name - str = removeTrailingNewLine(str); - return str; +export function formatFlareTraceback(str: string): string { + let output = str.gsub("^.*function oops\n", "")[0]; // Remove Tina.oops from the traceback + output = str.gsub('%[string "', "[")[0]; // Remove 'string "' from the beginning of the file name + output = str.gsub('"%]', "]")[0]; // Remove the " at the end of the file name + output = removeTrailingNewLine(str); + return output; } From c222b60bc15249aec69f1f3bfcabb0b756a74dc1 Mon Sep 17 00:00:00 2001 From: RigidOfficial Date: Tue, 14 Feb 2023 17:29:18 +0400 Subject: [PATCH 19/20] merge --- package.json | 2 +- src/lib/ui/console/console.story.tsx | 13 ++++++++++++ .../console/components/modal.tsx | 6 +++++- .../console/components/tooltip.tsx | 7 ++++--- src/lib/utilities/hoarcekat.ts | 2 +- studio.project.json | 20 ++++++++++--------- 6 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 src/lib/ui/console/console.story.tsx diff --git a/package.json b/package.json index 384d57e..1c37a1d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@rbxts/tina", + "name": "tina", "version": "1.0.0", "description": "", "main": "out/init.lua", diff --git a/src/lib/ui/console/console.story.tsx b/src/lib/ui/console/console.story.tsx new file mode 100644 index 0000000..6421520 --- /dev/null +++ b/src/lib/ui/console/console.story.tsx @@ -0,0 +1,13 @@ +import Roact from "@rbxts/roact"; + +export = function (parent: Instance) { + const UI = ( + + ); + + const MountedUI = Roact.mount(UI, parent); + + return function () { + Roact.unmount(MountedUI); + }; +}; diff --git a/src/lib/user-interface/console/components/modal.tsx b/src/lib/user-interface/console/components/modal.tsx index 23c47be..c0647cc 100644 --- a/src/lib/user-interface/console/components/modal.tsx +++ b/src/lib/user-interface/console/components/modal.tsx @@ -1,3 +1,5 @@ +/// + import Roact, { Children, Portal } from "@rbxts/roact"; import { withHooks } from "@rbxts/roact-hooked"; import { Players, RunService } from "@rbxts/services"; @@ -21,13 +23,15 @@ const HoarcekatModal = withHooks(props => { return ; } - return ( + const made = ( {props[Children]} ); + + return made; }); /** diff --git a/src/lib/user-interface/console/components/tooltip.tsx b/src/lib/user-interface/console/components/tooltip.tsx index 8ad154a..4e9d550 100644 --- a/src/lib/user-interface/console/components/tooltip.tsx +++ b/src/lib/user-interface/console/components/tooltip.tsx @@ -1,5 +1,5 @@ -import Roact from "@rbxts/roact"; -import { useBinding, useEffect, useRef, withHooks } from "@rbxts/roact-hooked"; +import Roact, { createRef } from "@rbxts/roact"; +import { useBinding, useEffect, withHooks } from "@rbxts/roact-hooked"; import { UDim2ToAbsolute } from "../../../utilities/ui"; import Padding from "../../common/padding"; @@ -13,12 +13,13 @@ interface TooltipProps { const Tooltip = withHooks(({ Message, Position = new UDim2() }: TooltipProps) => { const theme = useTheme(); - const labelRef = useRef(); + const labelRef = createRef(); const [labelPosition, setLabelPosition] = useBinding(Position); // Reposition the tooltip within the bounds of the Modal (screen) useEffect(() => { const label = labelRef.getValue()!; + if (!label) return; const parent = label.Parent as GuiBase2d; const constrainToWindow = (): void => { diff --git a/src/lib/utilities/hoarcekat.ts b/src/lib/utilities/hoarcekat.ts index d0a414d..a7ca294 100644 --- a/src/lib/utilities/hoarcekat.ts +++ b/src/lib/utilities/hoarcekat.ts @@ -9,7 +9,7 @@ function findHoarcekatFrame(): Frame | undefined { return game .FindFirstChild("PluginGuiService") ?.FindFirstChild("Hoarcekat") - ?.FindFirstChild("Hoarcekat") + ?.FindFirstChild("App") ?.FindFirstChild("Preview") ?.FindFirstChild("Preview") ?.FindFirstChild("Preview") as Frame; diff --git a/studio.project.json b/studio.project.json index 73fbaef..5e70f7a 100644 --- a/studio.project.json +++ b/studio.project.json @@ -7,17 +7,19 @@ "tree": { "$className": "DataModel", "ReplicatedStorage": { - "include": { - "$path": "include", - "node_modules": { - "$className": "Folder", - "@rbxts": { - "$path": "node_modules/@rbxts" + "Package": { + "$path": "out", + "rbxts_include": { + "$path": "include", + + "node_modules": { + "$className": "Folder", + + "@rbxts": { + "$path": "node_modules/@rbxts" + } } } - }, - "Package": { - "$path": "out" } }, "ServerScriptService": { From fd3dc5f70fea0af9bcc0bfc36226b89cd8ee5527 Mon Sep 17 00:00:00 2001 From: RigidOfficial Date: Wed, 15 Feb 2023 14:04:17 +0400 Subject: [PATCH 20/20] console stuff --- package-lock.json | 288 ++++++++++++++++++++++++++- package.json | 3 +- src/lib/ui/console/console.story.tsx | 5 +- 3 files changed, 288 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 354d208..c7bc8fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "@rbxts/tina", + "name": "tina", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "@rbxts/tina", + "name": "tina", "version": "1.0.0", "license": "ISC", "dependencies": { @@ -14,6 +14,7 @@ "@rbxts/roact-hooked": "^2.1.3", "@rbxts/roact-rodux-hooked": "^1.1.3", "@rbxts/rodux": "^3.0.0-ts.3", + "@rbxts/rowind-mini": "^1.0.0", "@rbxts/services": "^1.5.1", "roblox-ts": "^2.0.4" }, @@ -528,6 +529,39 @@ "integrity": "sha512-kRdXA7RzIUnLrQhjvVLQ//9Nwfndlui43Frqg3k8xrPVz+QJNIqzwx6LHLSwq4c1OBZpYcGgUWIQJkuKxwlskA==", "dev": true }, + "node_modules/@rbxts/flipper": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rbxts/flipper/-/flipper-2.0.1.tgz", + "integrity": "sha512-kxb5AZizP05XSmo3waS/QkcfNMD5b6HX4gGwyHOyBow260R5MIT4L/ZUPLvleXXyb9b67X4NVmHoac1tPXOLNA==" + }, + "node_modules/@rbxts/log": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@rbxts/log/-/log-0.6.3.tgz", + "integrity": "sha512-YZpDvjL7yif9aYuNAkuM9vnegcwQmOwX0CfvGfWvrzCpmARY4Ey2pTMhoEgxKo36HcdPPi3aLxmcuvn0NHrPPg==", + "dependencies": { + "@rbxts/message-templates": "^0.3.1" + } + }, + "node_modules/@rbxts/maid": { + "version": "1.0.0-ts.1", + "resolved": "https://registry.npmjs.org/@rbxts/maid/-/maid-1.0.0-ts.1.tgz", + "integrity": "sha512-nm4eucrDE5NnpkHJaaZvMwFJjk9YLAXrLYyA/MWXHI8vr7jeGHmex1N2b90ewa9KqeH+RiWlkXmj2xBALonC4Q==" + }, + "node_modules/@rbxts/message-templates": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@rbxts/message-templates/-/message-templates-0.3.2.tgz", + "integrity": "sha512-79onYskH3pgrBT73Zs+biQ31vAVvupKQaxGNWGjyGsxwNhO2YaN/qkut0bvOshaGa+ZzqAXApRVrN8ifIMPiMQ==" + }, + "node_modules/@rbxts/net": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@rbxts/net/-/net-3.0.3.tgz", + "integrity": "sha512-sceVEOU+XcFZm7STWTUWzk9IZmdTC7WljSzzJAdMxbbCOxa0f39cfk29RwadI6UxTYb39qLPY36sDEPNWZ1pMw==" + }, + "node_modules/@rbxts/object-utils": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@rbxts/object-utils/-/object-utils-1.0.4.tgz", + "integrity": "sha512-dLLhf022ipV+9i910sOE7kl9losKHoon0WgeerHqVMQA5EYsLUsVT2AxhJuhk8MiDn5oJ2GiFofE/LadY9TpJQ==" + }, "node_modules/@rbxts/roact": { "version": "1.4.4-ts.0", "resolved": "https://registry.npmjs.org/@rbxts/roact/-/roact-1.4.4-ts.0.tgz", @@ -541,6 +575,11 @@ "@rbxts/roact": "*" } }, + "node_modules/@rbxts/roact-hooks": { + "version": "0.3.0-ts.2", + "resolved": "https://registry.npmjs.org/@rbxts/roact-hooks/-/roact-hooks-0.3.0-ts.2.tgz", + "integrity": "sha512-k8rbqVAp9ZCIJ5EG/dY/UoQsN66o8s/Yc8GvDRqXkacGbf8u0In0ktyatXE3QZUljFf5IUyiBZuaSbbqGdnDfg==" + }, "node_modules/@rbxts/roact-rodux-hooked": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@rbxts/roact-rodux-hooked/-/roact-rodux-hooked-1.1.3.tgz", @@ -555,11 +594,54 @@ "resolved": "https://registry.npmjs.org/@rbxts/rodux/-/rodux-3.0.0-ts.3.tgz", "integrity": "sha512-LrLowiF1YL5U+lQheCNMo8sbrSEoZAIlVFOGB7Edjein5TtZAeNgyJrhY5yFH5gAfJQzFRnZWVOxWFaMlD0GRg==" }, + "node_modules/@rbxts/rowind-mini": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rbxts/rowind-mini/-/rowind-mini-1.0.0.tgz", + "integrity": "sha512-VhuQVlWtQdd84dIraN/Kgssi5fDb0D6jhFSRIgq5urhcKe2oRUrFcq4YzqZWQjBQZSXR35InsmNbPOsWX07J2A==", + "dependencies": { + "@rbxts/log": "^0.6.3", + "@rbxts/object-utils": "^1.0.4", + "@rbxts/roact": "^1.4.4-ts.0", + "@rbxts/services": "^1.5.1", + "@rbxts/zircon": "^1.0.9" + } + }, + "node_modules/@rbxts/rust-classes": { + "version": "0.11.0-beta.1", + "resolved": "https://registry.npmjs.org/@rbxts/rust-classes/-/rust-classes-0.11.0-beta.1.tgz", + "integrity": "sha512-lZiXBIohK3fg3ImqQ0P+lRNp9EKeSXK4kA3yVf5Tc5bwQVyS6/O5XvlUeh4s7wRYcure+fd8s0qISQ7DP5Gw0Q==" + }, "node_modules/@rbxts/services": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@rbxts/services/-/services-1.5.1.tgz", "integrity": "sha512-SRtfIjga0K4YYSXRpK+eH3kcTq7ZXo9OHOt0jszaOOoEOIJloMGlyuRPqesPHyhveh2AMXAZr3TYbRMSD+u+kQ==" }, + "node_modules/@rbxts/signal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rbxts/signal/-/signal-1.1.1.tgz", + "integrity": "sha512-WX+ONE+ld4pG9PvRkR8OgDld9NpaV1RfXyUIw+Q2oXP/5rehkYzvt20NWtrLAP3NhMc5inYInLd+hnufey6nFw==" + }, + "node_modules/@rbxts/snapdragon": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@rbxts/snapdragon/-/snapdragon-2.0.0-beta.1.tgz", + "integrity": "sha512-cN2Qgg2Z+Tj5FZGXLFOrBz/QYq92du1al/vnLGtv7WDOb4SmhfQ8tNVCC4Jh/OBdmZuRYp/t07QSjKgYmolnlA==" + }, + "node_modules/@rbxts/string-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rbxts/string-utils/-/string-utils-1.0.3.tgz", + "integrity": "sha512-nsZsPdGsrsBdwLg7qQ5RGHoVhfvK+U3GvZ/6S+7KufqaFrbHWk2lufESob/C3xYf5sAeXgTJKWUnDJknYBGTIQ==" + }, + "node_modules/@rbxts/t": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@rbxts/t/-/t-1.3.5.tgz", + "integrity": "sha512-Z1Lt7DhxQ/FwNgGhKSibHqT5FxgR+QwOF/v9DZN8bP8mJbqtlXwjd8gunL06DKO5xPMWlpbs9fMIgpMI4cl7zQ==", + "dependencies": { + "@rbxts/types": "^1.0.317" + }, + "peerDependencies": { + "@rbxts/types": "^1.0.232" + } + }, "node_modules/@rbxts/testez": { "version": "0.4.2-ts.0", "resolved": "https://registry.npmjs.org/@rbxts/testez/-/testez-0.4.2-ts.0.tgz", @@ -569,8 +651,66 @@ "node_modules/@rbxts/types": { "version": "1.0.647", "resolved": "https://registry.npmjs.org/@rbxts/types/-/types-1.0.647.tgz", - "integrity": "sha512-PCBQNTc/k7vjAFgJB7Z3ixFSAxbTQrb6Klc8mWElPlcO9UxQ7Juxjdv0StYEqZ0dzqktaBSdTQJLtCXoqYVNPg==", - "dev": true + "integrity": "sha512-PCBQNTc/k7vjAFgJB7Z3ixFSAxbTQrb6Klc8mWElPlcO9UxQ7Juxjdv0StYEqZ0dzqktaBSdTQJLtCXoqYVNPg==" + }, + "node_modules/@rbxts/zircon": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@rbxts/zircon/-/zircon-1.0.9.tgz", + "integrity": "sha512-+1Ls5UmKRzD/9/Ms3EmTetHKoMg4gv8GfqWSfETmxheppKAB0CQ/hlwjge3eIXCVfhMURcHZbQtS2n3GzE9TuQ==", + "dependencies": { + "@rbxts/flipper": "^2.0.1", + "@rbxts/log": "0.5.0-beta.1", + "@rbxts/maid": "^1.0.0-ts.1", + "@rbxts/message-templates": "^0.3.2", + "@rbxts/net": "^3.0.0-alpha.0", + "@rbxts/roact": ">=1.4.0-ts >= 1.4.1-ts >= 1.4.2-ts", + "@rbxts/roact-hooks": "=0.3.0-ts.2", + "@rbxts/roact-rodux": "=0.2.2-ts.5", + "@rbxts/rodux": "=3.0.0-ts.3", + "@rbxts/rust-classes": "=0.11.0-beta.1", + "@rbxts/services": "^1.2.0", + "@rbxts/signal": "^1.0.3", + "@rbxts/snapdragon": "2.0.0-beta.1", + "@rbxts/string-utils": "^1.0.3", + "@rbxts/t": "^1.3.5", + "@rbxts/zirconium": "^1.1.0" + } + }, + "node_modules/@rbxts/zircon/node_modules/@rbxts/log": { + "version": "0.5.0-beta.1", + "resolved": "https://registry.npmjs.org/@rbxts/log/-/log-0.5.0-beta.1.tgz", + "integrity": "sha512-MUVwRNTWU6bWMgehihaeTHF58s93AEHt1X+s8jF8+MdZc4hefZ6rT4b5OmskEoWw2r8niVKBCqjPXOGmnDj8xA==", + "dependencies": { + "@rbxts/message-templates": "^0.3.1" + } + }, + "node_modules/@rbxts/zircon/node_modules/@rbxts/roact": { + "version": "1.4.2-ts.3", + "resolved": "https://registry.npmjs.org/@rbxts/roact/-/roact-1.4.2-ts.3.tgz", + "integrity": "sha512-ViS9Tu0gzRdAnOc64CplMKKOG/ISdS7AwgOd+4ld+O3f4N0fPOuxY/sIZ/67fMxH9Isu1r4A6wyg5F5YkK2csA==" + }, + "node_modules/@rbxts/zircon/node_modules/@rbxts/roact-rodux": { + "version": "0.2.2-ts.5", + "resolved": "https://registry.npmjs.org/@rbxts/roact-rodux/-/roact-rodux-0.2.2-ts.5.tgz", + "integrity": "sha512-WzWpKuZLeUEKJG7dR8Zog1MKQlvz6zA2/GhF0N0wkzvZll2CU8CfhKFRHkMwkLjBLSe69sKDveYo+hBjN3Zl+Q==", + "peerDependencies": { + "@rbxts/roact": "1.4.0-ts.0", + "@rbxts/rodux": "3.0.0-ts.3", + "@rbxts/types": "^1.0.503" + } + }, + "node_modules/@rbxts/zirconium": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rbxts/zirconium/-/zirconium-1.1.0.tgz", + "integrity": "sha512-Yvs4H1JaQyUogrmp5mbKnkyhUsOxquyEXKPq9E3bovo17sQbgcsfmO9sfXvan3H5OObVziPjuoX3/nrmUML/Ww==", + "dependencies": { + "@rbxts/rust-classes": "^0.10.0" + } + }, + "node_modules/@rbxts/zirconium/node_modules/@rbxts/rust-classes": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@rbxts/rust-classes/-/rust-classes-0.10.0.tgz", + "integrity": "sha512-U2YhOLG9dDwVOmMTgjzGcoM2yk0mcJ/Y6Fmu6RUVM2y9XHGly6bWsjK7o3uaI4CDMfYZNKF2MkELIBeyFyEJ2Q==" }, "node_modules/@roblox-ts/luau-ast": { "version": "1.0.3", @@ -3414,6 +3554,39 @@ "integrity": "sha512-kRdXA7RzIUnLrQhjvVLQ//9Nwfndlui43Frqg3k8xrPVz+QJNIqzwx6LHLSwq4c1OBZpYcGgUWIQJkuKxwlskA==", "dev": true }, + "@rbxts/flipper": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rbxts/flipper/-/flipper-2.0.1.tgz", + "integrity": "sha512-kxb5AZizP05XSmo3waS/QkcfNMD5b6HX4gGwyHOyBow260R5MIT4L/ZUPLvleXXyb9b67X4NVmHoac1tPXOLNA==" + }, + "@rbxts/log": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@rbxts/log/-/log-0.6.3.tgz", + "integrity": "sha512-YZpDvjL7yif9aYuNAkuM9vnegcwQmOwX0CfvGfWvrzCpmARY4Ey2pTMhoEgxKo36HcdPPi3aLxmcuvn0NHrPPg==", + "requires": { + "@rbxts/message-templates": "^0.3.1" + } + }, + "@rbxts/maid": { + "version": "1.0.0-ts.1", + "resolved": "https://registry.npmjs.org/@rbxts/maid/-/maid-1.0.0-ts.1.tgz", + "integrity": "sha512-nm4eucrDE5NnpkHJaaZvMwFJjk9YLAXrLYyA/MWXHI8vr7jeGHmex1N2b90ewa9KqeH+RiWlkXmj2xBALonC4Q==" + }, + "@rbxts/message-templates": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@rbxts/message-templates/-/message-templates-0.3.2.tgz", + "integrity": "sha512-79onYskH3pgrBT73Zs+biQ31vAVvupKQaxGNWGjyGsxwNhO2YaN/qkut0bvOshaGa+ZzqAXApRVrN8ifIMPiMQ==" + }, + "@rbxts/net": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@rbxts/net/-/net-3.0.3.tgz", + "integrity": "sha512-sceVEOU+XcFZm7STWTUWzk9IZmdTC7WljSzzJAdMxbbCOxa0f39cfk29RwadI6UxTYb39qLPY36sDEPNWZ1pMw==" + }, + "@rbxts/object-utils": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@rbxts/object-utils/-/object-utils-1.0.4.tgz", + "integrity": "sha512-dLLhf022ipV+9i910sOE7kl9losKHoon0WgeerHqVMQA5EYsLUsVT2AxhJuhk8MiDn5oJ2GiFofE/LadY9TpJQ==" + }, "@rbxts/roact": { "version": "1.4.4-ts.0", "resolved": "https://registry.npmjs.org/@rbxts/roact/-/roact-1.4.4-ts.0.tgz", @@ -3425,6 +3598,11 @@ "integrity": "sha512-CPwpNknhqBnDJF86ekZasRfPjpnQ/7YdlpKl7RlnGkBOaknOVjie6NvHT1slKJDkCFK5Vb3VreE3uNehAtOubQ==", "requires": {} }, + "@rbxts/roact-hooks": { + "version": "0.3.0-ts.2", + "resolved": "https://registry.npmjs.org/@rbxts/roact-hooks/-/roact-hooks-0.3.0-ts.2.tgz", + "integrity": "sha512-k8rbqVAp9ZCIJ5EG/dY/UoQsN66o8s/Yc8GvDRqXkacGbf8u0In0ktyatXE3QZUljFf5IUyiBZuaSbbqGdnDfg==" + }, "@rbxts/roact-rodux-hooked": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@rbxts/roact-rodux-hooked/-/roact-rodux-hooked-1.1.3.tgz", @@ -3436,11 +3614,51 @@ "resolved": "https://registry.npmjs.org/@rbxts/rodux/-/rodux-3.0.0-ts.3.tgz", "integrity": "sha512-LrLowiF1YL5U+lQheCNMo8sbrSEoZAIlVFOGB7Edjein5TtZAeNgyJrhY5yFH5gAfJQzFRnZWVOxWFaMlD0GRg==" }, + "@rbxts/rowind-mini": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rbxts/rowind-mini/-/rowind-mini-1.0.0.tgz", + "integrity": "sha512-VhuQVlWtQdd84dIraN/Kgssi5fDb0D6jhFSRIgq5urhcKe2oRUrFcq4YzqZWQjBQZSXR35InsmNbPOsWX07J2A==", + "requires": { + "@rbxts/log": "^0.6.3", + "@rbxts/object-utils": "^1.0.4", + "@rbxts/roact": "^1.4.4-ts.0", + "@rbxts/services": "^1.5.1", + "@rbxts/zircon": "^1.0.9" + } + }, + "@rbxts/rust-classes": { + "version": "0.11.0-beta.1", + "resolved": "https://registry.npmjs.org/@rbxts/rust-classes/-/rust-classes-0.11.0-beta.1.tgz", + "integrity": "sha512-lZiXBIohK3fg3ImqQ0P+lRNp9EKeSXK4kA3yVf5Tc5bwQVyS6/O5XvlUeh4s7wRYcure+fd8s0qISQ7DP5Gw0Q==" + }, "@rbxts/services": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@rbxts/services/-/services-1.5.1.tgz", "integrity": "sha512-SRtfIjga0K4YYSXRpK+eH3kcTq7ZXo9OHOt0jszaOOoEOIJloMGlyuRPqesPHyhveh2AMXAZr3TYbRMSD+u+kQ==" }, + "@rbxts/signal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rbxts/signal/-/signal-1.1.1.tgz", + "integrity": "sha512-WX+ONE+ld4pG9PvRkR8OgDld9NpaV1RfXyUIw+Q2oXP/5rehkYzvt20NWtrLAP3NhMc5inYInLd+hnufey6nFw==" + }, + "@rbxts/snapdragon": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@rbxts/snapdragon/-/snapdragon-2.0.0-beta.1.tgz", + "integrity": "sha512-cN2Qgg2Z+Tj5FZGXLFOrBz/QYq92du1al/vnLGtv7WDOb4SmhfQ8tNVCC4Jh/OBdmZuRYp/t07QSjKgYmolnlA==" + }, + "@rbxts/string-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rbxts/string-utils/-/string-utils-1.0.3.tgz", + "integrity": "sha512-nsZsPdGsrsBdwLg7qQ5RGHoVhfvK+U3GvZ/6S+7KufqaFrbHWk2lufESob/C3xYf5sAeXgTJKWUnDJknYBGTIQ==" + }, + "@rbxts/t": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@rbxts/t/-/t-1.3.5.tgz", + "integrity": "sha512-Z1Lt7DhxQ/FwNgGhKSibHqT5FxgR+QwOF/v9DZN8bP8mJbqtlXwjd8gunL06DKO5xPMWlpbs9fMIgpMI4cl7zQ==", + "requires": { + "@rbxts/types": "^1.0.317" + } + }, "@rbxts/testez": { "version": "0.4.2-ts.0", "resolved": "https://registry.npmjs.org/@rbxts/testez/-/testez-0.4.2-ts.0.tgz", @@ -3450,8 +3668,66 @@ "@rbxts/types": { "version": "1.0.647", "resolved": "https://registry.npmjs.org/@rbxts/types/-/types-1.0.647.tgz", - "integrity": "sha512-PCBQNTc/k7vjAFgJB7Z3ixFSAxbTQrb6Klc8mWElPlcO9UxQ7Juxjdv0StYEqZ0dzqktaBSdTQJLtCXoqYVNPg==", - "dev": true + "integrity": "sha512-PCBQNTc/k7vjAFgJB7Z3ixFSAxbTQrb6Klc8mWElPlcO9UxQ7Juxjdv0StYEqZ0dzqktaBSdTQJLtCXoqYVNPg==" + }, + "@rbxts/zircon": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@rbxts/zircon/-/zircon-1.0.9.tgz", + "integrity": "sha512-+1Ls5UmKRzD/9/Ms3EmTetHKoMg4gv8GfqWSfETmxheppKAB0CQ/hlwjge3eIXCVfhMURcHZbQtS2n3GzE9TuQ==", + "requires": { + "@rbxts/flipper": "^2.0.1", + "@rbxts/log": "0.5.0-beta.1", + "@rbxts/maid": "^1.0.0-ts.1", + "@rbxts/message-templates": "^0.3.2", + "@rbxts/net": "^3.0.0-alpha.0", + "@rbxts/roact": ">=1.4.0-ts >= 1.4.1-ts >= 1.4.2-ts", + "@rbxts/roact-hooks": "=0.3.0-ts.2", + "@rbxts/roact-rodux": "=0.2.2-ts.5", + "@rbxts/rodux": "=3.0.0-ts.3", + "@rbxts/rust-classes": "=0.11.0-beta.1", + "@rbxts/services": "^1.2.0", + "@rbxts/signal": "^1.0.3", + "@rbxts/snapdragon": "2.0.0-beta.1", + "@rbxts/string-utils": "^1.0.3", + "@rbxts/t": "^1.3.5", + "@rbxts/zirconium": "^1.1.0" + }, + "dependencies": { + "@rbxts/log": { + "version": "0.5.0-beta.1", + "resolved": "https://registry.npmjs.org/@rbxts/log/-/log-0.5.0-beta.1.tgz", + "integrity": "sha512-MUVwRNTWU6bWMgehihaeTHF58s93AEHt1X+s8jF8+MdZc4hefZ6rT4b5OmskEoWw2r8niVKBCqjPXOGmnDj8xA==", + "requires": { + "@rbxts/message-templates": "^0.3.1" + } + }, + "@rbxts/roact": { + "version": "1.4.2-ts.3", + "resolved": "https://registry.npmjs.org/@rbxts/roact/-/roact-1.4.2-ts.3.tgz", + "integrity": "sha512-ViS9Tu0gzRdAnOc64CplMKKOG/ISdS7AwgOd+4ld+O3f4N0fPOuxY/sIZ/67fMxH9Isu1r4A6wyg5F5YkK2csA==" + }, + "@rbxts/roact-rodux": { + "version": "0.2.2-ts.5", + "resolved": "https://registry.npmjs.org/@rbxts/roact-rodux/-/roact-rodux-0.2.2-ts.5.tgz", + "integrity": "sha512-WzWpKuZLeUEKJG7dR8Zog1MKQlvz6zA2/GhF0N0wkzvZll2CU8CfhKFRHkMwkLjBLSe69sKDveYo+hBjN3Zl+Q==", + "requires": {} + } + } + }, + "@rbxts/zirconium": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rbxts/zirconium/-/zirconium-1.1.0.tgz", + "integrity": "sha512-Yvs4H1JaQyUogrmp5mbKnkyhUsOxquyEXKPq9E3bovo17sQbgcsfmO9sfXvan3H5OObVziPjuoX3/nrmUML/Ww==", + "requires": { + "@rbxts/rust-classes": "^0.10.0" + }, + "dependencies": { + "@rbxts/rust-classes": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@rbxts/rust-classes/-/rust-classes-0.10.0.tgz", + "integrity": "sha512-U2YhOLG9dDwVOmMTgjzGcoM2yk0mcJ/Y6Fmu6RUVM2y9XHGly6bWsjK7o3uaI4CDMfYZNKF2MkELIBeyFyEJ2Q==" + } + } }, "@roblox-ts/luau-ast": { "version": "1.0.3", diff --git a/package.json b/package.json index 1c37a1d..88cb5a7 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,8 @@ "@rbxts/roact-hooked": "^2.1.3", "@rbxts/roact-rodux-hooked": "^1.1.3", "@rbxts/rodux": "^3.0.0-ts.3", + "@rbxts/rowind-mini": "^1.0.0", "@rbxts/services": "^1.5.1", "roblox-ts": "^2.0.4" } -} \ No newline at end of file +} diff --git a/src/lib/ui/console/console.story.tsx b/src/lib/ui/console/console.story.tsx index 6421520..8f815fe 100644 --- a/src/lib/ui/console/console.story.tsx +++ b/src/lib/ui/console/console.story.tsx @@ -1,8 +1,11 @@ import Roact from "@rbxts/roact"; +import { Div } from "@rbxts/rowind-mini"; export = function (parent: Instance) { const UI = ( - +
+
+
); const MountedUI = Roact.mount(UI, parent);