Remove some more unused code and dependencies

This commit is contained in:
Vincent 2024-03-20 10:28:48 +01:00 коммит произвёл Vincent
Родитель 5abd1da7c6
Коммит 5be11538ca
13 изменённых файлов: 24 добавлений и 671 удалений

358
package-lock.json сгенерированный
Просмотреть файл

@ -29,7 +29,6 @@
"@types/react": "^18.2.61",
"@types/react-dom": "^18.2.19",
"canvas-confetti": "^1.9.1",
"client-oauth2": "^4.3.3",
"dotenv": "^16.4.5",
"eslint-config-next": "^14.1.3",
"jsdom": "^24.0.0",
@ -39,7 +38,6 @@
"next": "^14.1.3",
"next-auth": "^4.24.6",
"nodemailer": "^6.9.10",
"patch-package": "^8.0.0",
"pg": "^8.11.3",
"react": "^18.2.0",
"react-aria": "^3.32.1",
@ -6593,11 +6591,6 @@
"node": ">= 8"
}
},
"node_modules/@servie/events": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@servie/events/-/events-1.0.0.tgz",
"integrity": "sha512-sBSO19KzdrJCM3gdx6eIxV8M9Gxfgg6iDQmH5TIAGaUu+X9VDdsINXJOnoiZ1Kx3TrHdH4bt5UVglkjsEGBcvw=="
},
"node_modules/@sinclair/typebox": {
"version": "0.27.8",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
@ -10176,11 +10169,6 @@
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
},
"node_modules/@yarnpkg/lockfile": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
},
"node_modules/abab": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@ -10711,14 +10699,6 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/at-least-node": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/available-typed-arrays": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@ -11507,11 +11487,6 @@
"node": ">=10.16.0"
}
},
"node_modules/byte-length": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz",
"integrity": "sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q=="
},
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@ -11715,6 +11690,7 @@
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
"integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
"dev": true,
"funding": [
{
"type": "github",
@ -11888,18 +11864,6 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/client-oauth2": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/client-oauth2/-/client-oauth2-4.3.3.tgz",
"integrity": "sha512-k8AvUYJon0vv75ufoVo4nALYb/qwFFicO3I0+39C6xEdflqVtr+f9cy+0ZxAduoVSTfhP5DX2tY2XICAd5hy6Q==",
"dependencies": {
"popsicle": "^12.0.5",
"safe-buffer": "^5.2.0"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
@ -15185,14 +15149,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/find-yarn-workspace-root": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
"integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
"dependencies": {
"micromatch": "^4.0.2"
}
},
"node_modules/flat-cache": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
@ -16833,6 +16789,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true,
"bin": {
"is-docker": "cli.js"
},
@ -17169,6 +17126,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"dev": true,
"dependencies": {
"is-docker": "^2.0.0"
},
@ -19106,23 +19064,6 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/json-stable-stringify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz",
"integrity": "sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==",
"dependencies": {
"call-bind": "^1.0.5",
"isarray": "^2.0.5",
"jsonify": "^0.0.1",
"object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"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",
@ -19144,6 +19085,7 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": {
"universalify": "^2.0.0"
},
@ -19151,14 +19093,6 @@
"graceful-fs": "^4.1.6"
}
},
"node_modules/jsonify": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
"integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/jsonwebtoken": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
@ -19289,14 +19223,6 @@
"node": ">=0.10.0"
}
},
"node_modules/klaw-sync": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
"integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
"dependencies": {
"graceful-fs": "^4.1.11"
}
},
"node_modules/kleur": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
@ -20171,15 +20097,8 @@
"node_modules/make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
},
"node_modules/make-error-cause": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-2.3.0.tgz",
"integrity": "sha512-etgt+n4LlOkGSJbBTV9VROHA5R7ekIPS4vfh+bCAoJgRrJWdqJCBbpS3osRJ/HrT7R68MzMiY3L3sDJ/Fd8aBg==",
"dependencies": {
"make-error": "^1.3.5"
}
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
},
"node_modules/makeerror": {
"version": "1.0.12",
@ -21257,21 +21176,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/open": {
"version": "7.4.2",
"resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
"integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
"dependencies": {
"is-docker": "^2.0.0",
"is-wsl": "^2.1.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/openid-client": {
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.1.tgz",
@ -21396,14 +21300,6 @@
"integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
"dev": true
},
"node_modules/os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/p-defer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz",
@ -21557,140 +21453,6 @@
"tslib": "^2.0.3"
}
},
"node_modules/patch-package": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz",
"integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==",
"dependencies": {
"@yarnpkg/lockfile": "^1.1.0",
"chalk": "^4.1.2",
"ci-info": "^3.7.0",
"cross-spawn": "^7.0.3",
"find-yarn-workspace-root": "^2.0.0",
"fs-extra": "^9.0.0",
"json-stable-stringify": "^1.0.2",
"klaw-sync": "^6.0.0",
"minimist": "^1.2.6",
"open": "^7.4.2",
"rimraf": "^2.6.3",
"semver": "^7.5.3",
"slash": "^2.0.0",
"tmp": "^0.0.33",
"yaml": "^2.2.2"
},
"bin": {
"patch-package": "index.js"
},
"engines": {
"node": ">=14",
"npm": ">5"
}
},
"node_modules/patch-package/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/patch-package/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/patch-package/node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/patch-package/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/patch-package/node_modules/rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dependencies": {
"glob": "^7.1.3"
},
"bin": {
"rimraf": "bin.js"
}
},
"node_modules/patch-package/node_modules/semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/patch-package/node_modules/slash": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
"integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
"engines": {
"node": ">=6"
}
},
"node_modules/patch-package/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/patch-package/node_modules/yaml": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
"integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
"engines": {
"node": ">= 14"
}
},
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
@ -22048,82 +21810,6 @@
"node": ">=10"
}
},
"node_modules/popsicle": {
"version": "12.1.2",
"resolved": "https://registry.npmjs.org/popsicle/-/popsicle-12.1.2.tgz",
"integrity": "sha512-xE2vEUa15TiHvFhGmKTtdKk9aSLL5CHX8Vw5kHfVM3R0YHiaTon6Ybsamw0XYqMR+Ng2RijX88iYUKPBMpLBww==",
"dependencies": {
"popsicle-content-encoding": "^1.0.0",
"popsicle-cookie-jar": "^1.0.1",
"popsicle-redirects": "^1.1.0",
"popsicle-transport-http": "^1.1.0",
"popsicle-transport-xhr": "^2.0.0",
"popsicle-user-agent": "^1.0.0",
"servie": "^4.3.3",
"throwback": "^4.1.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/popsicle-content-encoding": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/popsicle-content-encoding/-/popsicle-content-encoding-1.0.0.tgz",
"integrity": "sha512-4Df+vTfM8wCCJVTzPujiI6eOl3SiWQkcZg0AMrOkD1enMXsF3glIkFUZGvour1Sj7jOWCsNSEhBxpbbhclHhzw==",
"peerDependencies": {
"servie": "^4.0.0"
}
},
"node_modules/popsicle-cookie-jar": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/popsicle-cookie-jar/-/popsicle-cookie-jar-1.0.1.tgz",
"integrity": "sha512-QVIZhADP8nDbXIQW6wq8GU9IOSE8INUACO/9KD9TFKQ7qq8r/y3qUDz59xIi6p6TH19lCJJyBAPSXP1liIoySw==",
"dependencies": {
"@types/tough-cookie": "^4.0.2",
"tough-cookie": "^4.1.3"
},
"engines": {
"node": ">=8"
},
"peerDependencies": {
"servie": "^4.0.0"
}
},
"node_modules/popsicle-redirects": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/popsicle-redirects/-/popsicle-redirects-1.1.1.tgz",
"integrity": "sha512-mC2HrKjdTAWDalOjGxlXw9j6Qxrz/Yd2ui6bPxpi2IQDYWpF4gUAMxbA8EpSWJhLi0PuWKDwTHHPrUPGutAoIA==",
"peerDependencies": {
"servie": "^4.1.0"
}
},
"node_modules/popsicle-transport-http": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/popsicle-transport-http/-/popsicle-transport-http-1.2.1.tgz",
"integrity": "sha512-i5r3IGHkGiBDm1oPFvOfEeSGWR0lQJcsdTqwvvDjXqcTHYJJi4iSi3ecXIttDiTBoBtRAFAE9nF91fspQr63FQ==",
"dependencies": {
"make-error-cause": "^2.2.0"
},
"peerDependencies": {
"servie": "^4.2.0"
}
},
"node_modules/popsicle-transport-xhr": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/popsicle-transport-xhr/-/popsicle-transport-xhr-2.0.0.tgz",
"integrity": "sha512-5Sbud4Widngf1dodJE5cjEYXkzEUIl8CzyYRYR57t6vpy9a9KPGQX6KBKdPjmBZlR5A06pOBXuJnVr23l27rtA==",
"peerDependencies": {
"servie": "^4.2.0"
}
},
"node_modules/popsicle-user-agent": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/popsicle-user-agent/-/popsicle-user-agent-1.0.0.tgz",
"integrity": "sha512-epKaq3TTfTzXcxBxjpoKYMcTTcAX8Rykus6QZu77XNhJuRHSRxMd+JJrbX/3PFI0opFGSN0BabbAYCbGxbu0mA==",
"peerDependencies": {
"servie": "^4.0.0"
}
},
"node_modules/postcss": {
"version": "8.4.31",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
@ -23930,16 +23616,6 @@
"resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz",
"integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA=="
},
"node_modules/servie": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/servie/-/servie-4.3.3.tgz",
"integrity": "sha512-b0IrY3b1gVMsWvJppCf19g1p3JSnS0hQi6xu4Hi40CIhf0Lx8pQHcvBL+xunShpmOiQzg1NOia812NAWdSaShw==",
"dependencies": {
"@servie/events": "^1.0.0",
"byte-length": "^1.0.2",
"ts-expect": "^1.1.0"
}
},
"node_modules/set-function-length": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
@ -25596,11 +25272,6 @@
"safe-buffer": "~5.1.0"
}
},
"node_modules/throwback": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/throwback/-/throwback-4.1.0.tgz",
"integrity": "sha512-dLFe8bU8SeH0xeqeKL7BNo8XoPC/o91nz9/ooeplZPiso+DZukhoyZcSz9TFnUNScm+cA9qjU1m1853M6sPOng=="
},
"node_modules/tildify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
@ -25636,17 +25307,6 @@
"node": ">=14.0.0"
}
},
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dependencies": {
"os-tmpdir": "~1.0.2"
},
"engines": {
"node": ">=0.6.0"
}
},
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@ -25749,11 +25409,6 @@
"node": ">=6.10"
}
},
"node_modules/ts-expect": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/ts-expect/-/ts-expect-1.3.0.tgz",
"integrity": "sha512-e4g0EJtAjk64xgnFPD6kTBUtpnMVzDrMb12N1YZV0VvSlhnVT3SGxiYTLdGy8Q5cYHOIC/FAHmZ10eGrAguicQ=="
},
"node_modules/ts-jest": {
"version": "29.1.2",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz",
@ -26212,6 +25867,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"engines": {
"node": ">= 10.0.0"
}

Просмотреть файл

@ -59,7 +59,6 @@
"@types/react": "^18.2.61",
"@types/react-dom": "^18.2.19",
"canvas-confetti": "^1.9.1",
"client-oauth2": "^4.3.3",
"dotenv": "^16.4.5",
"eslint-config-next": "^14.1.3",
"jsdom": "^24.0.0",
@ -69,7 +68,6 @@
"next": "^14.1.3",
"next-auth": "^4.24.6",
"nodemailer": "^6.9.10",
"patch-package": "^8.0.0",
"pg": "^8.11.3",
"react": "^18.2.0",
"react-aria": "^3.32.1",

Просмотреть файл

@ -1,28 +0,0 @@
diff --git a/node_modules/intel/lib/handlers/index.js b/node_modules/intel/lib/handlers/index.js
index 0ee3caa..2471a4c 100644
--- a/node_modules/intel/lib/handlers/index.js
+++ b/node_modules/intel/lib/handlers/index.js
@@ -2,19 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-const fs = require('fs');
-
-fs.readdirSync(__dirname).forEach(function(file) {
- if (file === 'index.js' || file === 'handler.js') {
- return;
- }
-
- var handler = file.replace('.js', '');
- var capital = handler[0].toUpperCase() + handler.substring(1);
-
- Object.defineProperty(exports, capital, {
- get: function() {
- return require('./' + handler);
- }
- });
-});
+exports.Console = require('./console');
+exports.File = require('./file');
+exports.Null = require('./null');
+exports.Stream = require('./stream');

Просмотреть файл

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg>

До

Ширина:  |  Высота:  |  Размер: 629 B

Просмотреть файл

@ -1,21 +0,0 @@
'use strict'
/*
Check if coveralls configuration is available.
Exit 0 if configured to run coveralls
Exit 1 if coveralls will fail
For required environment variables, see:
https://github.com/nickmerwin/node-coveralls
*/
const { existsSync } = require('node:fs')
if (process.env.COVERALLS_REPO_TOKEN) {
console.log('coveralls configured with environment variable COVERALLS_REPO_TOKEN.')
} else if (existsSync('.coveralls.yml')) {
console.log('coveralls configured with configuration file ".coveralls.yml".')
} else {
console.log('coveralls is not configured.')
process.exit(1)
}

Просмотреть файл

@ -1,85 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import { NextResponse } from "next/server";
import { validateEmailAddress } from "../../../../utils/emailAddress";
import { getBreaches } from "../../../functions/server/getBreaches";
import { getBreachesForEmail } from "../../../../utils/hibp";
import { getSha1 } from "../../../../utils/fxa";
import { getL10n } from "../../../functions/server/l10n";
import { getBreachLogo } from "../../../../utils/breachLogo";
import { Breach } from "../../../functions/universal/breach";
export interface RequestBreachScanErrorResponse {
success: false;
}
export interface RequestBreachScanSuccessResponse {
success: true;
breaches: Array<unknown>;
heading: string;
logos: string[];
dataClassStrings: string[][];
total: number;
}
export type RequestBreachScanResponse =
| RequestBreachScanErrorResponse
| RequestBreachScanSuccessResponse;
export async function POST(request: Request) {
const body = await request.json();
const validatedEmail = validateEmailAddress(body.email);
if (validatedEmail === null) {
return NextResponse.json({ success: false }, { status: 400 });
}
const l10n = getL10n();
try {
const allBreaches = await getBreaches();
const breaches = (await getBreachesForEmail(
getSha1(validatedEmail.email),
allBreaches,
false,
)) as Breach[];
const successResponse: RequestBreachScanSuccessResponse = {
success: true,
breaches: breaches.slice(0, 6),
total: breaches.length,
heading:
// This is sent in the API response so we can replace the variables in
// the Fluent string (because Fluent might change the strings depending
// on the variables, specifically the count, and we don't run Fluent on
// the client side):
l10n
.getString("exposure-landing-result-hero-heading", {
// Will be injected client-side, since this is derived from user
// input and thus needs to be sanitized by the browser:
email: "",
count: breaches.length,
})
.replace("<email>", '<span class="breach-result-email">')
.replace("</email>", "</span>")
.replace("<count>", '<span class="breach-result-count">')
.replace("</count>", "</span>"),
// This is sent in the API response because we don't have Fluent on the
// client side, and thus can't dynamically localise breached data classes:
dataClassStrings: breaches.map((breach) =>
breach.DataClasses.map((dataClass: string) =>
l10n.getString(dataClass),
),
),
// This is sent in the API response because we can't call `getBreachLogo`
// client side, where it would expose AppConstants:
logos: breaches.map((breach) => getBreachLogo(breach)),
};
return NextResponse.json(successResponse);
} catch (e) {
return NextResponse.json({ success: false }, { status: 500 });
}
}

Просмотреть файл

@ -28,3 +28,20 @@ export async function changeSubscription(
currentFxAProfile.subscriptions = subscriptions;
await updateFxAProfileData(subscriber, JSON.stringify(currentFxAProfile));
}
/**
* See https://github.com/mozilla/fxa/blob/564949dfc69f0f675ebb4e5f267282c2546a5767/packages/fxa-profile-server/lib/routes/profile.js#L63-L77
*/
type FxaProfile = {
email?: string;
uid?: string;
avatar?: string;
avatarDefault?: boolean;
displayName?: string;
locale?: string;
amrValues?: string[];
twoFactorAuthentication?: boolean;
subscriptions?: string[];
metricsEnabled?: boolean;
sub?: string;
};

24
src/customTypes.d.ts поставляемый
Просмотреть файл

@ -1,24 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* See https://github.com/mozilla/fxa/blob/564949dfc69f0f675ebb4e5f267282c2546a5767/packages/fxa-profile-server/lib/routes/profile.js#L63-L77
*/
type FxaProfile = {
email?: string;
uid?: string;
avatar?: string;
avatarDefault?: boolean;
displayName?: string;
locale?: string;
amrValues?: string[];
twoFactorAuthentication?: boolean;
subscriptions?: string[];
metricsEnabled?: boolean;
sub?: string;
};
interface Window {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
gtag: any;
}

Просмотреть файл

@ -1,5 +0,0 @@
#!/bin/bash
#convert all png files in client/images/ to webp, then delete the png source.
#requires cwebp encoder: https://developers.google.com/speed/webp/docs/cwebp
for file in client/images/*.png ; do cwebp -q 70 -short "$file" -o "${file%.png}.webp"; rm -f "$file"; done

Просмотреть файл

@ -2,33 +2,12 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import ClientOAuth2 from 'client-oauth2'
import crypto from 'crypto'
import { URL } from 'url'
import { InternalServerError } from '../utils/error.js'
import AppConstants from '../appConstants.js'
// This object exists instead of inlining the env vars to make it easy
// to abstract fetching API endpoints from the OAuth server (instead
// of specifying them in the environment) in the future.
const FxAOAuthUtils = {
get authorizationUri() { return AppConstants.OAUTH_AUTHORIZATION_URI },
get tokenUri() { return AppConstants.OAUTH_TOKEN_URI },
// TODO: Add unit test when changing this code:
/* c8 ignore next */
get profileUri() { return AppConstants.OAUTH_PROFILE_URI }
}
const FxAOAuthClient = new ClientOAuth2({
clientId: AppConstants.OAUTH_CLIENT_ID,
clientSecret: AppConstants.OAUTH_CLIENT_SECRET,
accessTokenUri: FxAOAuthUtils.tokenUri,
authorizationUri: FxAOAuthUtils.authorizationUri,
redirectUri: AppConstants.SERVER_URL + '/oauth/confirmed',
scopes: ['profile']
})
/**
* @param {string} path
* @param {any} token
@ -60,23 +39,6 @@ async function postTokenRequest(path, token) {
}
/* c8 ignore stop */
/**
* @param {string} token
*/
// TODO: Add unit test when changing this code:
/* c8 ignore start */
async function verifyOAuthToken(token) {
try {
const response = await postTokenRequest('/v1/verify', token)
return response
} catch (e) {
if (e instanceof Error) {
console.error('verifyOAuthToken', { stack: e.stack })
}
}
}
/* c8 ignore stop */
/**
* fxa doc: https://mozilla.github.io/ecosystem-platform/api#tag/Oauth/operation/postOauthDestroy
*
@ -111,50 +73,6 @@ async function revokeOAuthTokens(subscriber) {
await destroyOAuthToken({ token: subscriber.fxa_refresh_token, token_type_hint: "refresh_token" })
}
/**
* @param {any} accessToken
*/
// TODO: Add unit test when changing this code:
/* c8 ignore start */
async function getProfileData(accessToken) {
try {
const response = await fetch(FxAOAuthUtils.profileUri, {
headers: { Authorization: `Bearer ${accessToken}` }
})
if (!response.ok) throw new InternalServerError(`bad response: ${response.status}`)
return await response.text()
} catch (e) {
if (e instanceof Error) {
console.warn('getProfileData', { stack: e.stack })
}
return e
}
}
/* c8 ignore stop */
/**
* @param {string} path
*/
// Not covered by tests; mostly side-effects. See test-coverage.md#mock-heavy
/* c8 ignore start */
async function sendMetricsFlowPing(path) {
const fxaMetricsFlowUrl = new URL(path, AppConstants.NEXT_PUBLIC_FXA_SETTINGS_URL)
try {
const response = await fetch(fxaMetricsFlowUrl, {
headers: { Origin: AppConstants.SERVER_URL }
})
if (!response.ok) throw new InternalServerError(`bad response: ${response.status}`)
console.info('pinged FXA metrics flow.')
return response
} catch (e) {
if (e instanceof Error) {
console.error('sendMetricsFlowPing', { stack: e.stack })
}
return false
}
}
/* c8 ignore stop */
/**
* @param {string} bearerToken
* @returns {Promise<Array<any> | null>}
@ -236,12 +154,8 @@ function getSha1(email) {
}
export {
FxAOAuthClient,
verifyOAuthToken,
destroyOAuthToken,
revokeOAuthTokens,
getProfileData,
sendMetricsFlowPing,
getSha1,
getSubscriptions,
deleteSubscription

Просмотреть файл

@ -1,31 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// redis-mock is not compatible with redis@4.
// The breaking changes apparently involve promise compatibility.
// Below is a hacky work-around to keep redisMock alive.
// See also https://github.com/yeahoffline/redis-mock/issues/195
import redisMock from 'redis-mock'
import { promisify } from 'node:util'
const legacyMockClient = redisMock.createClient()
const patchedMockClient = {
connect: () => undefined,
get: promisify(legacyMockClient.get).bind(legacyMockClient),
set: promisify(legacyMockClient.set).bind(legacyMockClient),
del: promisify(legacyMockClient.del).bind(legacyMockClient),
hSet: promisify(legacyMockClient.hset).bind(legacyMockClient),
hGet: promisify(legacyMockClient.hget).bind(legacyMockClient),
hDel: promisify(legacyMockClient.hdel).bind(legacyMockClient),
flushAll: promisify(legacyMockClient.flushall).bind(legacyMockClient),
setEx: promisify(legacyMockClient.setex).bind(legacyMockClient),
expire: promisify(legacyMockClient.expire).bind(legacyMockClient),
mGet: promisify(legacyMockClient.mget).bind(legacyMockClient),
on: () => undefined
}
console.warn('Using a mock version of Redis. To use an actual Redis server, update the Redis URL in your environment variables.')
export { patchedMockClient as redisMockClient }

Просмотреть файл

@ -1,34 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* Convert kebab-case to camelCase
*
* @param {string} str - a kebab-case string
* @example
* camelize ('two-hump-camel')
* // returns 'twoHumpCamel'
*/
function camelize (str) {
return str.replace(/-./g, substr => substr[1].toUpperCase())
}
/**
* Capitalize the first letter of a string, taking into account localization
*
* @param {string} str
* @example
* capitalFirstLetter ('carte di credito')
* // returns 'Carte di credito'
* @example
* capitalFirstLetter ('账户余额')
* // returns '账户余额'
*/
function capitalFirstLetter (str) {
return str[0].toLocaleUpperCase() + str.slice(1)
}
export { camelize, capitalFirstLetter }

Просмотреть файл

@ -96,8 +96,5 @@
"exclude": [
"node_modules/",
"sentry.*.config.ts",
// TODO NEXT.JS MIGRATION: Remove old Express files:
"src/controllers/**/*.js",
"src/views/**/*.js"
]
}