fix: use an array instead of a Set (#280)

This commit is contained in:
MARCROCK22 2024-10-17 12:10:16 -04:00 committed by GitHub
parent 56246ed5cf
commit 70b1bc1dc5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 115 additions and 117 deletions

View File

@ -24,11 +24,11 @@
"@biomejs/biome": "1.9.3", "@biomejs/biome": "1.9.3",
"@commitlint/cli": "^19.5.0", "@commitlint/cli": "^19.5.0",
"@commitlint/config-conventional": "^19.5.0", "@commitlint/config-conventional": "^19.5.0",
"@types/node": "^22.7.5", "@types/node": "^22.7.6",
"husky": "^9.1.6", "husky": "^9.1.6",
"lint-staged": "^15.2.10", "lint-staged": "^15.2.10",
"typescript": "^5.6.3", "typescript": "^5.6.3",
"vitest": "^2.1.2" "vitest": "^2.1.3"
}, },
"homepage": "https://seyfert.dev", "homepage": "https://seyfert.dev",
"repository": { "repository": {

166
pnpm-lock.yaml generated
View File

@ -13,13 +13,13 @@ importers:
version: 1.9.3 version: 1.9.3
'@commitlint/cli': '@commitlint/cli':
specifier: ^19.5.0 specifier: ^19.5.0
version: 19.5.0(@types/node@22.7.5)(typescript@5.6.3) version: 19.5.0(@types/node@22.7.6)(typescript@5.6.3)
'@commitlint/config-conventional': '@commitlint/config-conventional':
specifier: ^19.5.0 specifier: ^19.5.0
version: 19.5.0 version: 19.5.0
'@types/node': '@types/node':
specifier: ^22.7.5 specifier: ^22.7.6
version: 22.7.5 version: 22.7.6
husky: husky:
specifier: ^9.1.6 specifier: ^9.1.6
version: 9.1.6 version: 9.1.6
@ -30,8 +30,8 @@ importers:
specifier: ^5.6.3 specifier: ^5.6.3
version: 5.6.3 version: 5.6.3
vitest: vitest:
specifier: ^2.1.2 specifier: ^2.1.3
version: 2.1.2(@types/node@22.7.5) version: 2.1.3(@types/node@22.7.6)
packages: packages:
@ -396,16 +396,16 @@ packages:
'@types/estree@1.0.6': '@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
'@types/node@22.7.5': '@types/node@22.7.6':
resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} resolution: {integrity: sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==}
'@vitest/expect@2.1.2': '@vitest/expect@2.1.3':
resolution: {integrity: sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==} resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==}
'@vitest/mocker@2.1.2': '@vitest/mocker@2.1.3':
resolution: {integrity: sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==} resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==}
peerDependencies: peerDependencies:
'@vitest/spy': 2.1.2 '@vitest/spy': 2.1.3
msw: ^2.3.5 msw: ^2.3.5
vite: ^5.0.0 vite: ^5.0.0
peerDependenciesMeta: peerDependenciesMeta:
@ -414,20 +414,20 @@ packages:
vite: vite:
optional: true optional: true
'@vitest/pretty-format@2.1.2': '@vitest/pretty-format@2.1.3':
resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==} resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==}
'@vitest/runner@2.1.2': '@vitest/runner@2.1.3':
resolution: {integrity: sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==} resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==}
'@vitest/snapshot@2.1.2': '@vitest/snapshot@2.1.3':
resolution: {integrity: sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==} resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==}
'@vitest/spy@2.1.2': '@vitest/spy@2.1.3':
resolution: {integrity: sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==} resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==}
'@vitest/utils@2.1.2': '@vitest/utils@2.1.3':
resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==} resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==}
JSONStream@1.3.5: JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
@ -631,8 +631,8 @@ packages:
fast-deep-equal@3.1.3: fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
fast-uri@3.0.2: fast-uri@3.0.3:
resolution: {integrity: sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==} resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==}
fill-range@7.1.1: fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
@ -881,8 +881,8 @@ packages:
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
engines: {node: '>= 14.16'} engines: {node: '>= 14.16'}
picocolors@1.1.0: picocolors@1.1.1:
resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch@2.3.1: picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
@ -1005,8 +1005,8 @@ packages:
tinybench@2.9.0: tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
tinyexec@0.3.0: tinyexec@0.3.1:
resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
tinypool@1.0.1: tinypool@1.0.1:
resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==}
@ -1036,13 +1036,13 @@ packages:
resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
vite-node@2.1.2: vite-node@2.1.3:
resolution: {integrity: sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==} resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true hasBin: true
vite@5.4.8: vite@5.4.9:
resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -1072,15 +1072,15 @@ packages:
terser: terser:
optional: true optional: true
vitest@2.1.2: vitest@2.1.3:
resolution: {integrity: sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==} resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@edge-runtime/vm': '*' '@edge-runtime/vm': '*'
'@types/node': ^18.0.0 || >=20.0.0 '@types/node': ^18.0.0 || >=20.0.0
'@vitest/browser': 2.1.2 '@vitest/browser': 2.1.3
'@vitest/ui': 2.1.2 '@vitest/ui': 2.1.3
happy-dom: '*' happy-dom: '*'
jsdom: '*' jsdom: '*'
peerDependenciesMeta: peerDependenciesMeta:
@ -1141,7 +1141,7 @@ snapshots:
'@babel/code-frame@7.25.7': '@babel/code-frame@7.25.7':
dependencies: dependencies:
'@babel/highlight': 7.25.7 '@babel/highlight': 7.25.7
picocolors: 1.1.0 picocolors: 1.1.1
'@babel/helper-validator-identifier@7.25.7': {} '@babel/helper-validator-identifier@7.25.7': {}
@ -1150,7 +1150,7 @@ snapshots:
'@babel/helper-validator-identifier': 7.25.7 '@babel/helper-validator-identifier': 7.25.7
chalk: 2.4.2 chalk: 2.4.2
js-tokens: 4.0.0 js-tokens: 4.0.0
picocolors: 1.1.0 picocolors: 1.1.1
'@biomejs/biome@1.9.3': '@biomejs/biome@1.9.3':
optionalDependencies: optionalDependencies:
@ -1187,14 +1187,14 @@ snapshots:
'@biomejs/cli-win32-x64@1.9.3': '@biomejs/cli-win32-x64@1.9.3':
optional: true optional: true
'@commitlint/cli@19.5.0(@types/node@22.7.5)(typescript@5.6.3)': '@commitlint/cli@19.5.0(@types/node@22.7.6)(typescript@5.6.3)':
dependencies: dependencies:
'@commitlint/format': 19.5.0 '@commitlint/format': 19.5.0
'@commitlint/lint': 19.5.0 '@commitlint/lint': 19.5.0
'@commitlint/load': 19.5.0(@types/node@22.7.5)(typescript@5.6.3) '@commitlint/load': 19.5.0(@types/node@22.7.6)(typescript@5.6.3)
'@commitlint/read': 19.5.0 '@commitlint/read': 19.5.0
'@commitlint/types': 19.5.0 '@commitlint/types': 19.5.0
tinyexec: 0.3.0 tinyexec: 0.3.1
yargs: 17.7.2 yargs: 17.7.2
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
@ -1238,7 +1238,7 @@ snapshots:
'@commitlint/rules': 19.5.0 '@commitlint/rules': 19.5.0
'@commitlint/types': 19.5.0 '@commitlint/types': 19.5.0
'@commitlint/load@19.5.0(@types/node@22.7.5)(typescript@5.6.3)': '@commitlint/load@19.5.0(@types/node@22.7.6)(typescript@5.6.3)':
dependencies: dependencies:
'@commitlint/config-validator': 19.5.0 '@commitlint/config-validator': 19.5.0
'@commitlint/execute-rule': 19.5.0 '@commitlint/execute-rule': 19.5.0
@ -1246,7 +1246,7 @@ snapshots:
'@commitlint/types': 19.5.0 '@commitlint/types': 19.5.0
chalk: 5.3.0 chalk: 5.3.0
cosmiconfig: 9.0.0(typescript@5.6.3) cosmiconfig: 9.0.0(typescript@5.6.3)
cosmiconfig-typescript-loader: 5.0.0(@types/node@22.7.5)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) cosmiconfig-typescript-loader: 5.0.0(@types/node@22.7.6)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3)
lodash.isplainobject: 4.0.6 lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2 lodash.merge: 4.6.2
lodash.uniq: 4.5.0 lodash.uniq: 4.5.0
@ -1268,7 +1268,7 @@ snapshots:
'@commitlint/types': 19.5.0 '@commitlint/types': 19.5.0
git-raw-commits: 4.0.0 git-raw-commits: 4.0.0
minimist: 1.2.8 minimist: 1.2.8
tinyexec: 0.3.0 tinyexec: 0.3.1
'@commitlint/resolve-extends@19.5.0': '@commitlint/resolve-extends@19.5.0':
dependencies: dependencies:
@ -1418,51 +1418,51 @@ snapshots:
'@types/conventional-commits-parser@5.0.0': '@types/conventional-commits-parser@5.0.0':
dependencies: dependencies:
'@types/node': 22.7.5 '@types/node': 22.7.6
'@types/estree@1.0.6': {} '@types/estree@1.0.6': {}
'@types/node@22.7.5': '@types/node@22.7.6':
dependencies: dependencies:
undici-types: 6.19.8 undici-types: 6.19.8
'@vitest/expect@2.1.2': '@vitest/expect@2.1.3':
dependencies: dependencies:
'@vitest/spy': 2.1.2 '@vitest/spy': 2.1.3
'@vitest/utils': 2.1.2 '@vitest/utils': 2.1.3
chai: 5.1.1 chai: 5.1.1
tinyrainbow: 1.2.0 tinyrainbow: 1.2.0
'@vitest/mocker@2.1.2(@vitest/spy@2.1.2)(vite@5.4.8(@types/node@22.7.5))': '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(@types/node@22.7.6))':
dependencies: dependencies:
'@vitest/spy': 2.1.2 '@vitest/spy': 2.1.3
estree-walker: 3.0.3 estree-walker: 3.0.3
magic-string: 0.30.12 magic-string: 0.30.12
optionalDependencies: optionalDependencies:
vite: 5.4.8(@types/node@22.7.5) vite: 5.4.9(@types/node@22.7.6)
'@vitest/pretty-format@2.1.2': '@vitest/pretty-format@2.1.3':
dependencies: dependencies:
tinyrainbow: 1.2.0 tinyrainbow: 1.2.0
'@vitest/runner@2.1.2': '@vitest/runner@2.1.3':
dependencies: dependencies:
'@vitest/utils': 2.1.2 '@vitest/utils': 2.1.3
pathe: 1.1.2 pathe: 1.1.2
'@vitest/snapshot@2.1.2': '@vitest/snapshot@2.1.3':
dependencies: dependencies:
'@vitest/pretty-format': 2.1.2 '@vitest/pretty-format': 2.1.3
magic-string: 0.30.12 magic-string: 0.30.12
pathe: 1.1.2 pathe: 1.1.2
'@vitest/spy@2.1.2': '@vitest/spy@2.1.3':
dependencies: dependencies:
tinyspy: 3.0.2 tinyspy: 3.0.2
'@vitest/utils@2.1.2': '@vitest/utils@2.1.3':
dependencies: dependencies:
'@vitest/pretty-format': 2.1.2 '@vitest/pretty-format': 2.1.3
loupe: 3.1.2 loupe: 3.1.2
tinyrainbow: 1.2.0 tinyrainbow: 1.2.0
@ -1474,7 +1474,7 @@ snapshots:
ajv@8.17.1: ajv@8.17.1:
dependencies: dependencies:
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
fast-uri: 3.0.2 fast-uri: 3.0.3
json-schema-traverse: 1.0.0 json-schema-traverse: 1.0.0
require-from-string: 2.0.2 require-from-string: 2.0.2
@ -1579,9 +1579,9 @@ snapshots:
meow: 12.1.1 meow: 12.1.1
split2: 4.2.0 split2: 4.2.0
cosmiconfig-typescript-loader@5.0.0(@types/node@22.7.5)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): cosmiconfig-typescript-loader@5.0.0(@types/node@22.7.6)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3):
dependencies: dependencies:
'@types/node': 22.7.5 '@types/node': 22.7.6
cosmiconfig: 9.0.0(typescript@5.6.3) cosmiconfig: 9.0.0(typescript@5.6.3)
jiti: 1.21.6 jiti: 1.21.6
typescript: 5.6.3 typescript: 5.6.3
@ -1675,7 +1675,7 @@ snapshots:
fast-deep-equal@3.1.3: {} fast-deep-equal@3.1.3: {}
fast-uri@3.0.2: {} fast-uri@3.0.3: {}
fill-range@7.1.1: fill-range@7.1.1:
dependencies: dependencies:
@ -1881,7 +1881,7 @@ snapshots:
pathval@2.0.0: {} pathval@2.0.0: {}
picocolors@1.1.0: {} picocolors@1.1.1: {}
picomatch@2.3.1: {} picomatch@2.3.1: {}
@ -1890,7 +1890,7 @@ snapshots:
postcss@8.4.47: postcss@8.4.47:
dependencies: dependencies:
nanoid: 3.3.7 nanoid: 3.3.7
picocolors: 1.1.0 picocolors: 1.1.1
source-map-js: 1.2.1 source-map-js: 1.2.1
require-directory@2.1.1: {} require-directory@2.1.1: {}
@ -1994,7 +1994,7 @@ snapshots:
tinybench@2.9.0: {} tinybench@2.9.0: {}
tinyexec@0.3.0: {} tinyexec@0.3.1: {}
tinypool@1.0.1: {} tinypool@1.0.1: {}
@ -2012,12 +2012,12 @@ snapshots:
unicorn-magic@0.1.0: {} unicorn-magic@0.1.0: {}
vite-node@2.1.2(@types/node@22.7.5): vite-node@2.1.3(@types/node@22.7.6):
dependencies: dependencies:
cac: 6.7.14 cac: 6.7.14
debug: 4.3.7 debug: 4.3.7
pathe: 1.1.2 pathe: 1.1.2
vite: 5.4.8(@types/node@22.7.5) vite: 5.4.9(@types/node@22.7.6)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
- less - less
@ -2029,38 +2029,38 @@ snapshots:
- supports-color - supports-color
- terser - terser
vite@5.4.8(@types/node@22.7.5): vite@5.4.9(@types/node@22.7.6):
dependencies: dependencies:
esbuild: 0.21.5 esbuild: 0.21.5
postcss: 8.4.47 postcss: 8.4.47
rollup: 4.24.0 rollup: 4.24.0
optionalDependencies: optionalDependencies:
'@types/node': 22.7.5 '@types/node': 22.7.6
fsevents: 2.3.3 fsevents: 2.3.3
vitest@2.1.2(@types/node@22.7.5): vitest@2.1.3(@types/node@22.7.6):
dependencies: dependencies:
'@vitest/expect': 2.1.2 '@vitest/expect': 2.1.3
'@vitest/mocker': 2.1.2(@vitest/spy@2.1.2)(vite@5.4.8(@types/node@22.7.5)) '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(@types/node@22.7.6))
'@vitest/pretty-format': 2.1.2 '@vitest/pretty-format': 2.1.3
'@vitest/runner': 2.1.2 '@vitest/runner': 2.1.3
'@vitest/snapshot': 2.1.2 '@vitest/snapshot': 2.1.3
'@vitest/spy': 2.1.2 '@vitest/spy': 2.1.3
'@vitest/utils': 2.1.2 '@vitest/utils': 2.1.3
chai: 5.1.1 chai: 5.1.1
debug: 4.3.7 debug: 4.3.7
magic-string: 0.30.12 magic-string: 0.30.12
pathe: 1.1.2 pathe: 1.1.2
std-env: 3.7.0 std-env: 3.7.0
tinybench: 2.9.0 tinybench: 2.9.0
tinyexec: 0.3.0 tinyexec: 0.3.1
tinypool: 1.0.1 tinypool: 1.0.1
tinyrainbow: 1.2.0 tinyrainbow: 1.2.0
vite: 5.4.8(@types/node@22.7.5) vite: 5.4.9(@types/node@22.7.6)
vite-node: 2.1.2(@types/node@22.7.5) vite-node: 2.1.3(@types/node@22.7.6)
why-is-node-running: 2.3.0 why-is-node-running: 2.3.0
optionalDependencies: optionalDependencies:
'@types/node': 22.7.5 '@types/node': 22.7.6
transitivePeerDependencies: transitivePeerDependencies:
- less - less
- lightningcss - lightningcss

View File

@ -5,11 +5,10 @@ import {
type If, type If,
type WatcherPayload, type WatcherPayload,
type WatcherSendToShard, type WatcherSendToShard,
hasIntent,
lazyLoadPackage, lazyLoadPackage,
} from '../common'; } from '../common';
import { EventHandler } from '../events'; import { EventHandler } from '../events';
import { type GatewayDispatchPayload, GatewayIntentBits, type GatewayPresenceUpdateData } from '../types'; import type { GatewayDispatchPayload, GatewayPresenceUpdateData } from '../types';
import { ShardManager, type ShardManagerOptions, properties } from '../websocket'; import { ShardManager, type ShardManagerOptions, properties } from '../websocket';
import { MemberUpdateHandler } from '../websocket/discord/events/memberUpdate'; import { MemberUpdateHandler } from '../websocket/discord/events/memberUpdate';
import { PresenceUpdateHandler } from '../websocket/discord/events/presenceUpdate'; import { PresenceUpdateHandler } from '../websocket/discord/events/presenceUpdate';
@ -191,7 +190,7 @@ export class Client<Ready extends boolean = boolean> extends BaseClient {
this.botId = packet.d.user.id; this.botId = packet.d.user.id;
this.applicationId = packet.d.application.id; this.applicationId = packet.d.application.id;
this.me = Transformers.ClientUser(this, packet.d.user, packet.d.application) as never; this.me = Transformers.ClientUser(this, packet.d.user, packet.d.application) as never;
if (!hasIntent(this.gateway.options.intents, GatewayIntentBits.Guilds)) { if (!this.__handleGuilds.length) {
if ([...this.gateway.values()].every(shard => shard.data.session_id)) { if ([...this.gateway.values()].every(shard => shard.data.session_id)) {
await this.events?.runEvent('BOT_READY', this, this.me, -1); await this.events?.runEvent('BOT_READY', this, this.me, -1);
} }

View File

@ -1,9 +1,9 @@
import { type UUID, randomUUID } from 'node:crypto'; import { type UUID, randomUUID } from 'node:crypto';
import { ApiHandler, Logger } from '..'; import { ApiHandler, Logger } from '..';
import { WorkerAdapter } from '../cache'; import { WorkerAdapter } from '../cache';
import { type DeepPartial, LogLevels, type When, hasIntent, lazyLoadPackage } from '../common'; import { type DeepPartial, LogLevels, type When, lazyLoadPackage } from '../common';
import { EventHandler } from '../events'; import { EventHandler } from '../events';
import { type GatewayDispatchPayload, GatewayIntentBits, type GatewaySendPayload } from '../types'; import type { GatewayDispatchPayload, GatewaySendPayload } from '../types';
import { Shard, type ShardManagerOptions, type WorkerData, properties } from '../websocket'; import { Shard, type ShardManagerOptions, type WorkerData, properties } from '../websocket';
import type { import type {
WorkerDisconnectedAllShardsResharding, WorkerDisconnectedAllShardsResharding,
@ -53,8 +53,8 @@ try {
} }
export class WorkerClient<Ready extends boolean = boolean> extends BaseClient { export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
private __handleGuilds?: Set<string> = new Set(); private __handleGuilds?: string[];
private __handleGuildsResharding?: Set<string>; private __handleGuildsResharding?: string[];
memberUpdateHandler = new MemberUpdateHandler(); memberUpdateHandler = new MemberUpdateHandler();
presenceUpdateHandler = new PresenceUpdateHandler(); presenceUpdateHandler = new PresenceUpdateHandler();
@ -159,7 +159,7 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
workerId: workerData.workerId, workerId: workerData.workerId,
} satisfies WorkerStart | WorkerStartResharding); } satisfies WorkerStart | WorkerStartResharding);
if (workerData.resharding) { if (workerData.resharding) {
this.__handleGuildsResharding = new Set<string>(); this.__handleGuildsResharding = [];
} }
await super.start(options); await super.start(options);
await this.loadEvents(options.eventsDir); await this.loadEvents(options.eventsDir);
@ -253,25 +253,26 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
}, },
handlePayload(_, payload) { handlePayload(_, payload) {
if (payload.t === 'GUILD_CREATE' || payload.t === 'GUILD_DELETE') { if (payload.t === 'GUILD_CREATE' || payload.t === 'GUILD_DELETE') {
self.__handleGuildsResharding!.delete(payload.d.id); const indexOf = self.__handleGuildsResharding!.indexOf(payload.d.id);
if (!self.__handleGuildsResharding?.size && shardsConnected === workerData.shards.length) { if (indexOf !== -1) {
delete self.__handleGuildsResharding; self.__handleGuildsResharding!.splice(indexOf, 1);
self.postMessage({ if (!self.__handleGuildsResharding?.length && shardsConnected === workerData.shards.length) {
type: 'WORKER_READY_RESHARDING', delete self.__handleGuildsResharding;
workerId: workerData.workerId, self.postMessage({
} satisfies WorkerReadyResharding); type: 'WORKER_READY_RESHARDING',
workerId: workerData.workerId,
} satisfies WorkerReadyResharding);
}
} }
} }
if (payload.t !== 'READY') return; if (payload.t !== 'READY') return;
shardsConnected++; shardsConnected++;
for (const guild of payload.d.guilds) {
self.__handleGuildsResharding!.add(guild.id); const ids = payload.d.guilds.map(x => x.id);
} self.__handleGuildsResharding = self.__handleGuildsResharding?.concat(ids) ?? ids;
if (
shardsConnected === workerData.shards.length && if (shardsConnected === workerData.shards.length && !self.__handleGuildsResharding.length) {
!hasIntent(workerData.intents, GatewayIntentBits.Guilds)
) {
delete self.__handleGuildsResharding; delete self.__handleGuildsResharding;
self.postMessage({ self.postMessage({
type: 'WORKER_READY_RESHARDING', type: 'WORKER_READY_RESHARDING',
@ -399,7 +400,7 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
break; break;
case 'WORKER_ALREADY_EXISTS_RESHARDING': case 'WORKER_ALREADY_EXISTS_RESHARDING':
{ {
this.__handleGuildsResharding = new Set<string>(); this.__handleGuildsResharding = [];
this.postMessage({ this.postMessage({
type: 'WORKER_START_RESHARDING', type: 'WORKER_START_RESHARDING',
workerId: workerData.workerId, workerId: workerData.workerId,
@ -487,9 +488,9 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
break; break;
case 'GUILD_DELETE': case 'GUILD_DELETE':
case 'GUILD_CREATE': { case 'GUILD_CREATE': {
if (this.__handleGuilds?.has(packet.d.id)) { if (this.__handleGuilds?.includes(packet.d.id)) {
this.__handleGuilds?.delete(packet.d.id); this.__handleGuilds?.splice(this.__handleGuilds!.indexOf(packet.d.id), 1);
if (!this.__handleGuilds?.size && [...this.shards.values()].every(shard => shard.data.session_id)) { if (!this.__handleGuilds?.length && [...this.shards.values()].every(shard => shard.data.session_id)) {
delete this.__handleGuilds; delete this.__handleGuilds;
await this.cache.onPacket(packet); await this.cache.onPacket(packet);
this.postMessage({ this.postMessage({
@ -498,7 +499,7 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
} as WorkerReady); } as WorkerReady);
return this.events?.runEvent('WORKER_READY', this, this.me, -1); return this.events?.runEvent('WORKER_READY', this, this.me, -1);
} }
if (!this.__handleGuilds?.size) delete this.__handleGuilds; if (!this.__handleGuilds?.length) delete this.__handleGuilds;
return this.cache.onPacket(packet); return this.cache.onPacket(packet);
} }
await this.events?.execute(packet.t, packet, this, shardId); await this.events?.execute(packet.t, packet, this, shardId);
@ -520,10 +521,8 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
break; break;
case 'READY': case 'READY':
{ {
if (!this.__handleGuilds) this.__handleGuilds = new Set(); const ids = packet.d.guilds.map(x => x.id);
for (const g of packet.d.guilds) { this.__handleGuilds = this.__handleGuilds?.concat(ids) ?? ids;
this.__handleGuilds?.add(g.id);
}
this.botId = packet.d.user.id; this.botId = packet.d.user.id;
this.applicationId = packet.d.application.id; this.applicationId = packet.d.application.id;
this.me = Transformers.ClientUser(this, packet.d.user, packet.d.application) as never; this.me = Transformers.ClientUser(this, packet.d.user, packet.d.application) as never;
@ -536,7 +535,7 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
} as WorkerShardsConnected); } as WorkerShardsConnected);
await this.events?.runEvent('WORKER_SHARDS_CONNECTED', this, this.me, -1); await this.events?.runEvent('WORKER_SHARDS_CONNECTED', this, this.me, -1);
} }
if (!hasIntent(workerData.intents, GatewayIntentBits.Guilds)) { if (!this.__handleGuilds.length) {
if ([...this.shards.values()].every(shard => shard.data.session_id)) { if ([...this.shards.values()].every(shard => shard.data.session_id)) {
this.postMessage({ this.postMessage({
type: 'WORKER_READY', type: 'WORKER_READY',