diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 8ad20d2..b996e13 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -18,11 +18,11 @@ jobs: id-token: write steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: ref: ${{ inputs.version }} - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: "24.x" registry-url: "https://registry.npmjs.org" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 48d3e96..3cbdff9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: npm_tag: ${{ steps.create_tag.outputs.NPM_TAG }} steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - name: Create tag and define NPM environment id: create_tag diff --git a/package.json b/package.json index 03eaadf..23fcb09 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "@stelliajs/framework", - "version": "1.8.0", + "version": "1.9.0", "type": "module", "description": "A framework for simplifying the creation of discord bots", "author": "Tweenty_", "license": "ISC", - "packageManager": "pnpm@11.8.0", + "packageManager": "pnpm@11.15.0", "engines": { "node": ">=24.0.0" }, @@ -36,24 +36,24 @@ "format": "prettier --write ./src/**/*.ts" }, "peerDependencies": { - "discord.js": "^14.26.4", - "i18next": "26.3.1" + "discord.js": "^14.27.0", + "i18next": "26.3.6" }, "dependencies": { "log-symbols": "^7.0.1" }, "devDependencies": { "@eslint/js": "^10.0.1", - "discord.js": "^14.26.4", - "eslint": "^10.5.0", + "discord.js": "^14.27.0", + "eslint": "^10.7.0", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-typescript": "^4.4.5", - "eslint-plugin-import-x": "^4.16.2", - "globals": "^17.6.0", + "eslint-plugin-import-x": "^4.17.1", + "globals": "^17.7.0", "jiti": "^2.7.0", - "prettier": "^3.8.4", - "tsdown": "^0.22.3", - "typescript": "^6.0.3", - "typescript-eslint": "^8.61.1" + "prettier": "^3.9.6", + "tsdown": "^0.22.13", + "typescript": "^7.0.2", + "typescript-eslint": "^8.65.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8df2eff..ad60f27 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,72 +9,51 @@ importers: .: dependencies: i18next: - specifier: 26.3.1 - version: 26.3.1(typescript@6.0.3) + specifier: 26.3.6 + version: 26.3.6(typescript@7.0.2) log-symbols: specifier: ^7.0.1 version: 7.0.1 devDependencies: '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) + version: 10.0.1(eslint@10.7.0(jiti@2.7.0)) discord.js: - specifier: ^14.26.4 - version: 14.26.4 + specifier: ^14.27.0 + version: 14.27.0 eslint: - specifier: ^10.5.0 - version: 10.5.0(jiti@2.7.0) + specifier: ^10.7.0 + version: 10.7.0(jiti@2.7.0) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.7.0(jiti@2.7.0)) eslint-import-resolver-typescript: specifier: ^4.4.5 - version: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0)) + version: 4.4.5(eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2))(eslint@10.7.0(jiti@2.7.0)))(eslint@10.7.0(jiti@2.7.0)) eslint-plugin-import-x: - specifier: ^4.16.2 - version: 4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)) + specifier: ^4.17.1 + version: 4.17.1(@typescript-eslint/utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2))(eslint@10.7.0(jiti@2.7.0)) globals: - specifier: ^17.6.0 - version: 17.6.0 + specifier: ^17.7.0 + version: 17.7.0 jiti: specifier: ^2.7.0 version: 2.7.0 prettier: - specifier: ^3.8.4 - version: 3.8.4 + specifier: ^3.9.6 + version: 3.9.6 tsdown: - specifier: ^0.22.3 - version: 0.22.3(typescript@6.0.3) + specifier: ^0.22.13 + version: 0.22.13(typescript@7.0.2) typescript: - specifier: ^6.0.3 - version: 6.0.3 + specifier: ^7.0.2 + version: 7.0.2 typescript-eslint: - specifier: ^8.61.1 - version: 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.65.0 + version: 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) packages: - '@babel/generator@8.0.0': - resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-string-parser@8.0.0': - resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-validator-identifier@8.0.2': - resolution: {integrity: sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/parser@8.0.0': - resolution: {integrity: sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==} - engines: {node: ^22.18.0 || >=24.11.0} - hasBin: true - - '@babel/types@8.0.0': - resolution: {integrity: sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==} - engines: {node: ^22.18.0 || >=24.11.0} - '@discordjs/builders@1.14.1': resolution: {integrity: sha512-gSKkhXLqs96TCzk66VZuHHl8z2bQMJFGwrXC0f33ngK+FLNau4hU1PYny3DNJfNdSH+gVMzE85/d5FQ2BpcNwQ==} engines: {node: '>=16.11.0'} @@ -91,8 +70,8 @@ packages: resolution: {integrity: sha512-y4UPwWhH6vChKRkGdMB4odasUbHOUwy7KL+OVwF86PvT6QVOwElx+TiI1/6kcmcEe+g5YRXJFiXSXUdabqZOvQ==} engines: {node: '>=16.11.0'} - '@discordjs/rest@2.6.1': - resolution: {integrity: sha512-wwQdgjeaoYFiaG+atbqx6aJDpqW7JHAo0HrQkBTbYzM3/PJ3GweQIpgElNcGZ26DCUOXMyawYd0YF7vtr+fZXg==} + '@discordjs/rest@2.6.3': + resolution: {integrity: sha512-wvOylxNYJkwKjctS/Mn5GP1w9r3/rzyH+ThD1JlAca6zEdlHs8QWBBUQJpU5Q+W6DoIj/Ljh1IPlZs7hTU+UAg==} engines: {node: '>=18'} '@discordjs/util@1.2.0': @@ -106,14 +85,14 @@ packages: '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/core@1.11.1': - resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - '@emnapi/runtime@1.11.1': - resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -121,9 +100,9 @@ packages: '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint-community/eslint-utils@4.10.0': + resolution: {integrity: sha512-rd6n9Sefya1R1Vd594TRwzeHq2VnmICbvh3jebyt1Hs/6OoCSYNVpjGRRsKSTwAq3SKl09w0AfRCU57hoDLmxg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -180,125 +159,109 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@napi-rs/wasm-runtime@1.1.5': - resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@oxc-project/types@0.137.0': - resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} - - '@package-json/types@0.0.12': - resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} + '@oxc-project/types@0.140.0': + resolution: {integrity: sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==} '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@rolldown/binding-android-arm64@1.1.2': - resolution: {integrity: sha512-2cZ+7xRS+DBcuJBJKnfzsbleumJhBqSlJVpuzHC0nTqfd3QQ7Vx2/x5YR/D7cBamKSeWplwo82Fn9lqYUDEMfA==} + '@rolldown/binding-android-arm64@1.2.0': + resolution: {integrity: sha512-9yB1l95IrJuNGDFdOYe79vdApdz6WWBCObE+rQ2LUliYUlcyFwSYIb2xb5/Ifw7dAtMy2ZqNyd8QTSOc7duAKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.2': - resolution: {integrity: sha512-RkPMJnygxsgOYdkfqgpwY0/Fzm8d0VQe6HGU2/B00Xa9eqdLbrII+DOKAodbJAn3ZL1AJxGHkZRPYazgGY6Ljw==} + '@rolldown/binding-darwin-arm64@1.2.0': + resolution: {integrity: sha512-pexNaW9ACLUOaBITOpU6qVu4VrsOFIjTv6bzgu0YUATo4eUJx0V605PxwZfndpPOn0ilqGqvGQ0M8UW0IE24jg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.2': - resolution: {integrity: sha512-Uiczh6vFhwyfd7WNe7Q7mCA4KxAiLdz7jPE/WGizfRpIieoyFuNVMmM8HqZ9HwudTkY6/AeMQwlNJ9NJijguWw==} + '@rolldown/binding-darwin-x64@1.2.0': + resolution: {integrity: sha512-NqKYaq0355ZmNMG4QGpxtEDxsc7tGDhjhCm4PpE0cwnBW+5Il95LJyq414niEiaKLVjnVHBEjSo1wngKxJNiFw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.2': - resolution: {integrity: sha512-+TpdtTRgHiJFjCVFbw311SuLk3KfytPOQQn+VlAEv+gBxYPtL7E6JS9e/tk+8CwxhIZvemJKo4rTKgfWNsKkkA==} + '@rolldown/binding-freebsd-x64@1.2.0': + resolution: {integrity: sha512-3vPoHzh6eBTz9IbB0/qZdSr0Qeks2echn+I4cHu2joV74VriPDdldswksEDzrl1mBB+oPRi+67+3Ib59paxIPQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.2': - resolution: {integrity: sha512-4lv1/tkmi7ueIVHnyreaOeUpiZP26BH9rRy6hoYfR9310A2B9nUEVRDvBx69vx64Nr3eTPPRkyciqJJs+j9Jmw==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.0': + resolution: {integrity: sha512-E6NNefZ1bUVmKJq2tJkf45J4Zyczj7qm9rUT7NY+Xo2474Y13qWAwc2tvBt0BAVbmtXR1llkxXg0Ou1jbDf2SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.2': - resolution: {integrity: sha512-gBSUVO0eaWgw1JMjK3gB8BMlX2Mk148s2lTiVT3e9vjVxbl7UDfMWWY8CfIaaqiXuM9fVTMxIpUz6CAo/B6Vlw==} + '@rolldown/binding-linux-arm64-gnu@1.2.0': + resolution: {integrity: sha512-D+TgkdgM1vu+7/Fpf8+v0ARW+RXEP9Ccazgm8zQ4JFFd9Q7SrYQ2TakU5S5ihazQDgpKyAgZDOcIFsvoHmTZ8w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.1.2': - resolution: {integrity: sha512-LjQP/iZLBu8o8PjIfk4x3At0/mT6h282pvz8Z5LAyhGbu/kDezyO7ea62rF5uoqmgnIYqbN/MqJ3Si3Aymi7xQ==} + '@rolldown/binding-linux-arm64-musl@1.2.0': + resolution: {integrity: sha512-wUqdwJBbAv0APN87GecstdMUtLjjNTs0hBALpxETD73mccFxdmt/XeizXDtN5RAlBwNKmI+Tg+blect2G+8IeQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.1.2': - resolution: {integrity: sha512-X/7bVLWelEsbyWDUSXt7zVsTniLLPIY2n1rH58qr78l9i7MNbbxBWD8gI2vRfBWf4NUXJCUuQnfZDsp32LqsfQ==} + '@rolldown/binding-linux-ppc64-gnu@1.2.0': + resolution: {integrity: sha512-9DtF35qR9/NrfhM4oxLplCzVVjE+KKm8Pjemi0i/sdhAWkUasjmSo8WTTubNJClhSHCfyk2yeyoXDQEDPtDAAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.2': - resolution: {integrity: sha512-gb6dYKW/1KDorGXyy48glEBJs/sxVSC5pcVrox/pFGV4mvwSFeg2sK5L2tRkVsVlh7kueqOgg4GEcuipJcGuKg==} + '@rolldown/binding-linux-s390x-gnu@1.2.0': + resolution: {integrity: sha512-RzuHrBh8X8Hntd2N4VR02QGEciq/9JhcZoTpR/Cee6otRrlILGCf3cg2ygHuih+ZebUnWmMrDX6ITI85btO6rQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.2': - resolution: {integrity: sha512-JY4w85pU3iAiJVMh5nuk4/Mh9GjMsupe8MrIN53rwxAZW64GKrWeJBuN6SxQg9QTU5uB1cxyhDzW8jqRn1EABw==} + '@rolldown/binding-linux-x64-gnu@1.2.0': + resolution: {integrity: sha512-MK7L0018jjh1jR3mh21G2j1zAVcpscJBlPo2z19pRjv2XOYGRhaV4LyiD8HO6nCDdZln9IFgCMIV5yt4E3klGQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.1.2': - resolution: {integrity: sha512-xvpA7o5KCYLB0Rwscmuylb1/zHHSUx4g4xilm4prC5jP76pEUlzBmMbgpbh7bVDbId4NcfT96gN5i6mE6UDaiw==} + '@rolldown/binding-linux-x64-musl@1.2.0': + resolution: {integrity: sha512-gyrxLQ9NfGb/9LoVnC4kb9miUghw1mghnkfYvNHSnVIXriabnfgGPUP4RLcJm87q3KgYz4FYUG8IDiWUT+CpSw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.1.2': - resolution: {integrity: sha512-p/ts6KBLjuk49Bp21XH77poQGt02iNz7ChgHep7tudPOaLinR/De/RHdxF8w8Yj4r/bF/bqXwH6PZrB2sA+Nvw==} + '@rolldown/binding-openharmony-arm64@1.2.0': + resolution: {integrity: sha512-/6VFMQGRmrhP77KXDC+StIxGzcNp5JOIyYtw0CQ8gPlzhpiIRucYfoM5FaFamHd5BJYIdH86yfP46l1p3WdrFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.2': - resolution: {integrity: sha512-VMu/wmrZ9hJzYlRhbw7jK5PODlugyKZ5mOdX78+lS8OvuFkWNQdz1pFLrI2p3P0pjXOmUZ7B48o5VnMH9QOGtg==} + '@rolldown/binding-wasm32-wasi@1.2.0': + resolution: {integrity: sha512-rwdbUL465kisF24WEJLvP3JrEG6E5GRuIHt5wpMwHGERtHe4Wm2CIvtf5gTBgr2tGOHKh5NdKEAFS2VkOPE91g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.1.2': - resolution: {integrity: sha512-xtUJqs8qEkuSviS0n1tsohaPuz3a1SPhZywOji4Oo+sgrJs8daEDMZ0QtqL0OS7dx8PoVpg2J/ZZycPY5I2+Zg==} + '@rolldown/binding-win32-arm64-msvc@1.2.0': + resolution: {integrity: sha512-+5suHwRiKGmhwyUaNT8a5QbrBvLFh2DbO910TEmGRH1aSxwrCezodvGQnulv4uiWEIv1Kq4ypRsJ5+O+ry1DiA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.2': - resolution: {integrity: sha512-85YiLQqjUKgSO/Zjnf9e0XIn5Ymrh1fLDWBeAkZqpuBR/3R8TpfoHXuyblqyQrftSSgWO9qpcHN8mkyKsLraoA==} + '@rolldown/binding-win32-x64-msvc@1.2.0': + resolution: {integrity: sha512-WfFv6/qGufotqBSBzBYwgpCkJBk8Nj7697LL9vTz/XWc67e0r3oewu8iMRwQj3AUL45GVD7wVsPjCsAAtW66Wg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -314,16 +277,12 @@ packages: resolution: {integrity: sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==} engines: {node: '>=v16'} - '@sapphire/snowflake@3.5.3': - resolution: {integrity: sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==} - engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - '@sapphire/snowflake@3.5.5': resolution: {integrity: sha512-xzvBr1Q1c4lCe7i6sRnrofxeO1QTP/LKQ6A6qy0iB4x5yfiSfARMEQEghojzTNALDTcv8En04qYNIco9/K9eZQ==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - '@tybys/wasm-util@0.10.2': - resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -331,77 +290,194 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - '@types/jsesc@2.5.1': - resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@26.0.0': - resolution: {integrity: sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==} + '@types/node@26.1.1': + resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==} '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.61.1': - resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==} + '@typescript-eslint/eslint-plugin@8.65.0': + resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.61.1 + '@typescript-eslint/parser': ^8.65.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.61.1': - resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==} + '@typescript-eslint/parser@8.65.0': + resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.61.1': - resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==} + '@typescript-eslint/project-service@8.65.0': + resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.61.1': - resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==} + '@typescript-eslint/scope-manager@8.65.0': + resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.61.1': - resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==} + '@typescript-eslint/tsconfig-utils@8.65.0': + resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.61.1': - resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==} + '@typescript-eslint/type-utils@8.65.0': + resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.61.1': - resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==} + '@typescript-eslint/types@8.65.0': + resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.61.1': - resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==} + '@typescript-eslint/typescript-estree@8.65.0': + resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.61.1': - resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==} + '@typescript-eslint/utils@8.65.0': + resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.61.1': - resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==} + '@typescript-eslint/visitor-keys@8.65.0': + resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + '@unrs/resolver-binding-android-arm-eabi@1.12.2': resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} cpu: [arm] @@ -526,6 +602,131 @@ packages: resolution: {integrity: sha512-Xfe6rpCTxSxfbswi/W/Pz7zp1WWSNn4A0eW4mLkQUewCrXXtMj31lCg+iQyTkh/CkusZSq9eDflu7tjEDXUY6g==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + '@yuku-codegen/binding-darwin-arm64@0.7.3': + resolution: {integrity: sha512-hbssEr7iLNCWWdUbEt8cuOjUQ9loI+U/BVmdhNQ4CV1wAFGvWDO3niK9JD2WwTC9iib7E498qgZ3L/xJnoSb3A==} + cpu: [arm64] + os: [darwin] + + '@yuku-codegen/binding-darwin-x64@0.7.3': + resolution: {integrity: sha512-WqwST3vVcNBTd1zaT1vP6pU8NkjJlLWN37Kqomc2c6TG9eky6sbAfHIhZEjSSyqFrMqsAt3mIu0jQZAODi401g==} + cpu: [x64] + os: [darwin] + + '@yuku-codegen/binding-freebsd-x64@0.7.3': + resolution: {integrity: sha512-mCci4UPkZXYflXuHnPGl5sDsotBPLaBryFylDwZcqposktmumoOBIKp2gpzEmxQL/XlGdVWksmpYw9IRY43FNQ==} + cpu: [x64] + os: [freebsd] + + '@yuku-codegen/binding-linux-arm-gnu@0.7.3': + resolution: {integrity: sha512-F1QIaRH5SeahrYjZVrVvIb5nHCZQMF7+YWAy6yTJh0Y2r2wLgqOQuhbOWcoKk+AyBiTOO2nAsFHNpVqRq2GjGw==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-arm-musl@0.7.3': + resolution: {integrity: sha512-JvkWNmN8MFbboX/5grRsAldGaB8ArRFgAaUYfQoohsqcuJZee8SLtc6itvwuntPbN9MGStn4GzdWk2lmSURqbA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-linux-arm64-gnu@0.7.3': + resolution: {integrity: sha512-DUnMTE/HCA7j1BAipWclGZCYfLZ/4SV5lldmV2kDmVMIywcw4PhtQ4Rfd/tO1K82JkjhQ+4a8XApcOIksOacnQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-arm64-musl@0.7.3': + resolution: {integrity: sha512-pNnXMnm9dlqd3V8C7nHaXgZnMLwP/CyM8B4mSAnkqVlhj2t3b8CMjesEV85SCbFlagzJk8FapfSghfxcXKuBow==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-linux-x64-gnu@0.7.3': + resolution: {integrity: sha512-o5GRppYvYvPl4UJbgRSZpXXDh6rOWQzX0yLB+tDzv31T7mOuLitU6zgQZxzw5rwhPJDffCt/AVKMbtizEo+UtA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-x64-musl@0.7.3': + resolution: {integrity: sha512-GdiyLD1bM3lhTUeGkA9ZZLjqU+xt5uVihgPm0e6TdBjCi6DMZORWe02oDlRbn9OZaV7AZosngXAq2jLk3TrBEw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-win32-arm64@0.7.3': + resolution: {integrity: sha512-uQrxQDBQFIAUgHJIxcB/FAAUk0Wkyj3xGpHrp/C258nXnCTAH0KDaqyK5RN/TCkVYrpH+uCl+rGnwDLSGnPBkQ==} + cpu: [arm64] + os: [win32] + + '@yuku-codegen/binding-win32-x64@0.7.3': + resolution: {integrity: sha512-UoF7tqMnVMUmIXPgDjFLhRezea6HaypwLDWNenCFxfJCzQNEa41lcHpxq1AN2Xl6GLzIDfAb+lQDi/O+zPCfyg==} + cpu: [x64] + os: [win32] + + '@yuku-parser/binding-darwin-arm64@0.7.3': + resolution: {integrity: sha512-JcFQSNEnjtyHQRjXO0G5rQt5xHq5MR+9nHqh+wt5MP30XIiccUYlcMIa3s7CBmj8E8WPGZC08k7LNGrA1OISTA==} + cpu: [arm64] + os: [darwin] + + '@yuku-parser/binding-darwin-x64@0.7.3': + resolution: {integrity: sha512-U0kNeI3VygP/+8sTOLTeLTjUyTYZfl9Wuq6xVKWPXHb2K7oI0sm8JXJ5xlhAbkUDQRi0N6yK5TKxS0sQT5M6UQ==} + cpu: [x64] + os: [darwin] + + '@yuku-parser/binding-freebsd-x64@0.7.3': + resolution: {integrity: sha512-Xc08FQTvxovy6pX+Co9fgv3N1H0OpLpph/ClbwnJkcdphY3kzN2GgIfir35kpPp8mOzlQgtAVQdeDyAYyjwx4w==} + cpu: [x64] + os: [freebsd] + + '@yuku-parser/binding-linux-arm-gnu@0.7.3': + resolution: {integrity: sha512-6bHeDiUd+0bmoJJ5wZVG+PcJkXQUdjy/AzHsOVcOSUtHtRTX2H3Z5RIHyPAh5OveLtT4RHyqaO3fEQGnHGX5/Q==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-arm-musl@0.7.3': + resolution: {integrity: sha512-trGERNLJGvXkkyvdWBKspTOBATd4lcmpPFPcy5HI5kC3rC3ZMHQDJ356OMSVUsR2NQnl++F0ZTZQucao9hrbeQ==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-linux-arm64-gnu@0.7.3': + resolution: {integrity: sha512-p1ELmzhqAX7SFUvH/tR5zSb8NsWZQ8ulw7PqatfXNmJMy34bkivtL0z2jPpVoMJXf5o2+TwBN29Z31CLL0wvkA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-arm64-musl@0.7.3': + resolution: {integrity: sha512-dZ79SrJ002ZXfBDmpQ47SF+06Q5bGOjFeoSK8xO97ter/bjLBgxSO4d7i9hhf+uj4xkrTPc/OFNVaeBAF3L4dA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-linux-x64-gnu@0.7.3': + resolution: {integrity: sha512-LjT64hVGWWbOmOYS+Fd8qScgyRxgUbudhFJbw8aeUVnhiNR1np36KnE0VFWrJeu7rTdNxuzVyV5o9JLqhBDTVQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-x64-musl@0.7.3': + resolution: {integrity: sha512-5Nw3v5BqYbOi0ZdV+SImgVYa0KDBVAY/ZNPilTsJJU4phqa2cqEW4+aMgyieE/4bqpojt/B931kM+7pipazP9g==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-win32-arm64@0.7.3': + resolution: {integrity: sha512-lFYXgHiq8tJKa6/e1/q8Su+IJVV4/CjoXbIJ7/GdPXPp9Hx0gh/8HqmGSsrwlY2w8/ohBcar9wxjm1rQ8D16bg==} + cpu: [arm64] + os: [win32] + + '@yuku-parser/binding-win32-x64@0.7.3': + resolution: {integrity: sha512-wy/fs4OrHBhKW8LDyZJRMyMQ3QOfbSQDp0WtMbtzWCVui/vTQEUJMGnwvRCppjchS/qIQfbWzIw/HSjogJqZFA==} + cpu: [x64] + os: [win32] + + '@yuku-toolchain/types@0.7.3': + resolution: {integrity: sha512-ezarjq3dcl8Nx3iJ9VeAc7vhzvHyRoSvr7bLX76T+ljRq73IbZ11X2RFCblfK6YxW2DsjkzU6MPnr3JWDYqYYQ==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -543,19 +744,12 @@ packages: resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} engines: {node: '>=14'} - ast-kit@3.0.0: - resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} - engines: {node: ^22.18.0 || >=24.11.0} - balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - birpc@4.0.0: - resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} - - brace-expansion@5.0.6: - resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + brace-expansion@5.0.7: + resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} engines: {node: 18 || 20 || >=22} cac@7.0.0: @@ -585,11 +779,11 @@ packages: defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} - discord-api-types@0.38.49: - resolution: {integrity: sha512-XnqcWmnFZFAE8ZM8SHAw9DIV8D3Or00rMQ8iQLotrEA2PmXhl+ykaf6L6q4l474hrSUH1JaYcv+iOMRWp2p6Tg==} + discord-api-types@0.38.50: + resolution: {integrity: sha512-J2n/bpIETX3DQ6AJ7/0xbsTLmYiJQtO/LKcXKC1YDbB56OUwtDbdXOFE8Q4g8jVGHBR2VAy1+D4ngaIgkMNV9w==} - discord.js@14.26.4: - resolution: {integrity: sha512-4oBp8tc6Kf8IDBwAHhbsMaAqx1b5fob9SNasZT7V6yyyUydoO5i5fGuX7TmvRtR+q/WgKRnRViRoAWnG7fNyvA==} + discord.js@14.27.0: + resolution: {integrity: sha512-qHbFlFG2N7y3LjPySYsL6A1+BnX6bkTVgo842EX0CqVPk/KTMwZkojPHEXKsQUpWZNyz5BISNHK1cPpQw0+m4A==} engines: {node: '>=18'} dts-resolver@3.0.0: @@ -637,8 +831,8 @@ packages: eslint-plugin-import-x: optional: true - eslint-plugin-import-x@4.16.2: - resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} + eslint-plugin-import-x@4.17.1: + resolution: {integrity: sha512-4cdstYkKCyjumM2Q9NSI03K8D2a9F4Ssz33K2lv2hQa4KmR9jPLwk3uWGtNvclfqBrPGfGuMBwsGMbe6dMRbfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/utils': ^8.56.0 @@ -654,16 +848,12 @@ packages: resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@5.0.1: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.5.0: - resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==} + eslint@10.7.0: + resolution: {integrity: sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -688,9 +878,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -739,17 +926,17 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - globals@17.6.0: - resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + globals@17.7.0: + resolution: {integrity: sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==} engines: {node: '>=18'} hookable@6.1.1: resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} - i18next@26.3.1: - resolution: {integrity: sha512-txQqd5EULsqEh9OJqRH15aCaOuy/nLJyhw5EHCSKLKJE1aBbb3Zve2+uQIxgWhPm1QqUQoWyQBm2kfmmIrzkcQ==} + i18next@26.3.6: + resolution: {integrity: sha512-Bu5Z2nAXgfVyM8xvW3jk9EKRIuX37PudsrBViThNFx7CR7aaYTpP01cxNB/E4c4UUzTDiAZRstEhsRfPOL/8xA==} peerDependencies: - typescript: ^5 || ^6 + typescript: ^5 || ^6 || ^7 peerDependenciesMeta: typescript: optional: true @@ -758,8 +945,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} engines: {node: '>= 4'} import-without-cache@0.4.0: @@ -792,11 +979,6 @@ packages: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -845,8 +1027,8 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - obug@2.1.3: - resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} optionator@0.9.4: @@ -869,19 +1051,16 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.8.4: - resolution: {integrity: sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==} + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} engines: {node: '>=14'} hasBin: true @@ -895,27 +1074,27 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - rolldown-plugin-dts@0.26.0: - resolution: {integrity: sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==} + rolldown-plugin-dts@0.27.13: + resolution: {integrity: sha512-DeVZJbbB0ajp5q6vABqC8ZCJzxftlxbiV60Bk96GFdQaysGVpgTTVjQu0lUt4Lb+aRCtejfOixtQKDRol7IuVQ==} engines: {node: ^22.18.0 || >=24.11.0} peerDependencies: - '@ts-macro/tsc': ^0.3.6 - '@typescript/native-preview': '>=7.0.0-dev.20260325.1' + '@typescript/native-preview': '*' + '@volar/typescript': ~2.4.0 rolldown: ^1.0.0 - typescript: ^5.0.0 || ^6.0.0 + typescript: ^5.0.0 || ^6.0.0 || ~7.0.0 vue-tsc: ~3.2.0 || ~3.3.0 peerDependenciesMeta: - '@ts-macro/tsc': - optional: true '@typescript/native-preview': optional: true + '@volar/typescript': + optional: true typescript: optional: true vue-tsc: optional: true - rolldown@1.1.2: - resolution: {integrity: sha512-x0CrQQqCXWGeI8dTvFfN/Dnv3yMKT9hv5jFjlOreKAx9wqLq9wz7VvLLHyaAXC90/CpggTu9SisSbsJJTPSjNQ==} + rolldown@1.2.0: + resolution: {integrity: sha512-u7tgm5l4Yw1iTqUL4EcYOAt7fFvCgQMLeidrnD4GALlC6aOznCjezYajgxeyKw27u0Q5N7fwgCzjVyPIWzwuBA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -957,18 +1136,18 @@ packages: ts-mixer@6.0.4: resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} - tsdown@0.22.3: - resolution: {integrity: sha512-louqbfA8Qf//B9jTTL0FPtXTNpjCWv1VPkbcmQMph2pTpzs+LnB1tbe4tDDRVpo2BjF5SgUXaTZe45SxB8pWHg==} + tsdown@0.22.13: + resolution: {integrity: sha512-XaYFhtiKRUvTpXv/YAehsHdbEb3LN/iMlzjSINbjlaATtXN2zVPKox2STKhcyFPlh++8Zg7suNN27E679IfAUA==} engines: {node: ^22.18.0 || >=24.11.0} hasBin: true peerDependencies: '@arethetypeswrong/core': ^0.18.1 - '@tsdown/css': 0.22.3 - '@tsdown/exe': 0.22.3 + '@tsdown/css': 0.22.13 + '@tsdown/exe': 0.22.13 '@vitejs/devtools': '*' publint: ^0.3.8 tsx: '*' - typescript: ^5.0.0 || ^6.0.0 + typescript: ^5.0.0 || ^6.0.0 || ^7.0.0 unplugin-unused: ^0.5.0 unrun: '*' peerDependenciesMeta: @@ -998,16 +1177,16 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.61.1: - resolution: {integrity: sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==} + typescript-eslint@8.65.0: + resolution: {integrity: sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - typescript@6.0.3: - resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} - engines: {node: '>=14.17'} + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} hasBin: true unconfig-core@7.5.0: @@ -1016,8 +1195,8 @@ packages: undici-types@8.3.0: resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - undici@6.24.1: - resolution: {integrity: sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==} + undici@6.27.0: + resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} engines: {node: '>=18.17'} unrs-resolver@1.12.2: @@ -1026,6 +1205,10 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + verkit@0.1.2: + resolution: {integrity: sha512-WqkT8n3hqizuCu71W3bUzf5fjBmkbXcudsehe/NbxA8PgqoKnSOY5K0Ba2ckg1qaRaSpSz7as/n9K1R9JXjQKg==} + engines: {node: '>=18.12.0'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1035,8 +1218,8 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - ws@8.21.0: - resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} + ws@8.21.1: + resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -1055,36 +1238,23 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} -snapshots: + yuku-ast@0.7.3: + resolution: {integrity: sha512-occyAXtcU4hcl5UPEclWwLqz4J1ZAV8Us4LllmTqAe1YjL5aMbh3GCpzHt6O0sOF+dwBI3BZAcFQqbyX1RiaWg==} - '@babel/generator@8.0.0': - dependencies: - '@babel/parser': 8.0.0 - '@babel/types': 8.0.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@types/jsesc': 2.5.1 - jsesc: 3.1.0 + yuku-codegen@0.7.3: + resolution: {integrity: sha512-hhyJW0TIEwm4kex8XVCS4CZIXHS/3TWWNUum+95Ji5/4W+iaLfUnvwSxJwyNfTzS8cxmd1np+EZ4b8ObLguKEA==} - '@babel/helper-string-parser@8.0.0': {} + yuku-parser@0.7.3: + resolution: {integrity: sha512-5kZ7HR+W+OsNpVtZ9LHruQsgmcoJl4TETrffPq2GbliThsFiy+zHzbMLmSxQJrokzyJqfJ/TPfFkdUDOodJCgA==} - '@babel/helper-validator-identifier@8.0.2': {} - - '@babel/parser@8.0.0': - dependencies: - '@babel/types': 8.0.0 - - '@babel/types@8.0.0': - dependencies: - '@babel/helper-string-parser': 8.0.0 - '@babel/helper-validator-identifier': 8.0.2 +snapshots: '@discordjs/builders@1.14.1': dependencies: '@discordjs/formatters': 0.6.2 '@discordjs/util': 1.2.0 '@sapphire/shapeshift': 4.0.0 - discord-api-types: 0.38.49 + discord-api-types: 0.38.50 fast-deep-equal: 3.1.3 ts-mixer: 6.0.4 tslib: 2.8.1 @@ -1095,35 +1265,35 @@ snapshots: '@discordjs/formatters@0.6.2': dependencies: - discord-api-types: 0.38.49 + discord-api-types: 0.38.50 - '@discordjs/rest@2.6.1': + '@discordjs/rest@2.6.3': dependencies: '@discordjs/collection': 2.1.1 '@discordjs/util': 1.2.0 '@sapphire/async-queue': 1.5.5 '@sapphire/snowflake': 3.5.5 '@vladfrangu/async_event_emitter': 2.4.7 - discord-api-types: 0.38.49 + discord-api-types: 0.38.50 magic-bytes.js: 1.13.0 tslib: 2.8.1 - undici: 6.24.1 + undici: 6.27.0 '@discordjs/util@1.2.0': dependencies: - discord-api-types: 0.38.49 + discord-api-types: 0.38.50 '@discordjs/ws@1.2.3': dependencies: '@discordjs/collection': 2.1.1 - '@discordjs/rest': 2.6.1 + '@discordjs/rest': 2.6.3 '@discordjs/util': 1.2.0 '@sapphire/async-queue': 1.5.5 '@types/ws': 8.18.1 '@vladfrangu/async_event_emitter': 2.4.7 - discord-api-types: 0.38.49 + discord-api-types: 0.38.50 tslib: 2.8.1 - ws: 8.21.0 + ws: 8.21.1 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -1134,7 +1304,7 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/core@1.11.1': + '@emnapi/core@1.11.2': dependencies: '@emnapi/wasi-threads': 1.2.2 tslib: 2.8.1 @@ -1145,7 +1315,7 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.11.1': + '@emnapi/runtime@1.11.2': dependencies: tslib: 2.8.1 optional: true @@ -1160,10 +1330,10 @@ snapshots: tslib: 2.8.1 optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(jiti@2.7.0))': + '@eslint-community/eslint-utils@4.10.0(eslint@10.7.0(jiti@2.7.0))': dependencies: - eslint: 10.5.0(jiti@2.7.0) - eslint-visitor-keys: 3.4.3 + eslint: 10.7.0(jiti@2.7.0) + eslint-visitor-keys: 5.0.1 '@eslint-community/regexpp@4.12.2': {} @@ -1183,9 +1353,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.5.0(jiti@2.7.0))': + '@eslint/js@10.0.1(eslint@10.7.0(jiti@2.7.0))': optionalDependencies: - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.7.0(jiti@2.7.0) '@eslint/object-schema@3.0.5': {} @@ -1210,89 +1380,73 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.2 + '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@tybys/wasm-util': 0.10.2 + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 optional: true - '@oxc-project/types@0.137.0': {} - - '@package-json/types@0.0.12': {} + '@oxc-project/types@0.140.0': {} '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 - '@rolldown/binding-android-arm64@1.1.2': + '@rolldown/binding-android-arm64@1.2.0': optional: true - '@rolldown/binding-darwin-arm64@1.1.2': + '@rolldown/binding-darwin-arm64@1.2.0': optional: true - '@rolldown/binding-darwin-x64@1.1.2': + '@rolldown/binding-darwin-x64@1.2.0': optional: true - '@rolldown/binding-freebsd-x64@1.1.2': + '@rolldown/binding-freebsd-x64@1.2.0': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.2': + '@rolldown/binding-linux-arm-gnueabihf@1.2.0': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.2': + '@rolldown/binding-linux-arm64-gnu@1.2.0': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.2': + '@rolldown/binding-linux-arm64-musl@1.2.0': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.2': + '@rolldown/binding-linux-ppc64-gnu@1.2.0': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.2': + '@rolldown/binding-linux-s390x-gnu@1.2.0': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.2': + '@rolldown/binding-linux-x64-gnu@1.2.0': optional: true - '@rolldown/binding-linux-x64-musl@1.1.2': + '@rolldown/binding-linux-x64-musl@1.2.0': optional: true - '@rolldown/binding-openharmony-arm64@1.1.2': + '@rolldown/binding-openharmony-arm64@1.2.0': optional: true - '@rolldown/binding-wasm32-wasi@1.1.2': + '@rolldown/binding-wasm32-wasi@1.2.0': dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.2': + '@rolldown/binding-win32-arm64-msvc@1.2.0': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.2': + '@rolldown/binding-win32-x64-msvc@1.2.0': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -1304,11 +1458,9 @@ snapshots: fast-deep-equal: 3.1.3 lodash: 4.18.1 - '@sapphire/snowflake@3.5.3': {} - '@sapphire/snowflake@3.5.5': {} - '@tybys/wasm-util@0.10.2': + '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 optional: true @@ -1317,109 +1469,167 @@ snapshots: '@types/estree@1.0.9': {} - '@types/jsesc@2.5.1': {} - '@types/json-schema@7.0.15': {} - '@types/node@26.0.0': + '@types/node@26.1.1': dependencies: undici-types: 8.3.0 '@types/ws@8.18.1': dependencies: - '@types/node': 26.0.0 + '@types/node': 26.1.1 - '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2))(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/type-utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.61.1 - eslint: 10.5.0(jiti@2.7.0) - ignore: 7.0.5 + '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/type-utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) + '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) + '@typescript-eslint/visitor-keys': 8.65.0 + eslint: 10.7.0(jiti@2.7.0) + ignore: 7.0.6 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + ts-api-utils: 2.5.0(typescript@7.0.2) + typescript: 7.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2)': dependencies: - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.61.1 + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@7.0.2) + '@typescript-eslint/visitor-keys': 8.65.0 debug: 4.4.3 - eslint: 10.5.0(jiti@2.7.0) - typescript: 6.0.3 + eslint: 10.7.0(jiti@2.7.0) + typescript: 7.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.61.1(typescript@6.0.3)': + '@typescript-eslint/project-service@8.65.0(typescript@7.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) - '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@7.0.2) + '@typescript-eslint/types': 8.65.0 debug: 4.4.3 - typescript: 6.0.3 + typescript: 7.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.61.1': + '@typescript-eslint/scope-manager@8.65.0': dependencies: - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/visitor-keys': 8.61.1 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 - '@typescript-eslint/tsconfig-utils@8.61.1(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.65.0(typescript@7.0.2)': dependencies: - typescript: 6.0.3 + typescript: 7.0.2 - '@typescript-eslint/type-utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2)': dependencies: - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@7.0.2) + '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) debug: 4.4.3 - eslint: 10.5.0(jiti@2.7.0) - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + eslint: 10.7.0(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@7.0.2) + typescript: 7.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.61.1': {} + '@typescript-eslint/types@8.65.0': {} - '@typescript-eslint/typescript-estree@8.61.1(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.65.0(typescript@7.0.2)': dependencies: - '@typescript-eslint/project-service': 8.61.1(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/visitor-keys': 8.61.1 + '@typescript-eslint/project-service': 8.65.0(typescript@7.0.2) + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@7.0.2) + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 debug: 4.4.3 minimatch: 10.2.5 semver: 7.8.5 tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 + ts-api-utils: 2.5.0(typescript@7.0.2) + typescript: 7.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) - eslint: 10.5.0(jiti@2.7.0) - typescript: 6.0.3 + '@eslint-community/eslint-utils': 4.10.0(eslint@10.7.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@7.0.2) + eslint: 10.7.0(jiti@2.7.0) + typescript: 7.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.61.1': + '@typescript-eslint/visitor-keys@8.65.0': dependencies: - '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/types': 8.65.0 eslint-visitor-keys: 5.0.1 + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm@7.0.2': + optional: true + + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true + '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true @@ -1478,7 +1688,7 @@ snapshots: dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': @@ -1492,6 +1702,74 @@ snapshots: '@vladfrangu/async_event_emitter@2.4.7': {} + '@yuku-codegen/binding-darwin-arm64@0.7.3': + optional: true + + '@yuku-codegen/binding-darwin-x64@0.7.3': + optional: true + + '@yuku-codegen/binding-freebsd-x64@0.7.3': + optional: true + + '@yuku-codegen/binding-linux-arm-gnu@0.7.3': + optional: true + + '@yuku-codegen/binding-linux-arm-musl@0.7.3': + optional: true + + '@yuku-codegen/binding-linux-arm64-gnu@0.7.3': + optional: true + + '@yuku-codegen/binding-linux-arm64-musl@0.7.3': + optional: true + + '@yuku-codegen/binding-linux-x64-gnu@0.7.3': + optional: true + + '@yuku-codegen/binding-linux-x64-musl@0.7.3': + optional: true + + '@yuku-codegen/binding-win32-arm64@0.7.3': + optional: true + + '@yuku-codegen/binding-win32-x64@0.7.3': + optional: true + + '@yuku-parser/binding-darwin-arm64@0.7.3': + optional: true + + '@yuku-parser/binding-darwin-x64@0.7.3': + optional: true + + '@yuku-parser/binding-freebsd-x64@0.7.3': + optional: true + + '@yuku-parser/binding-linux-arm-gnu@0.7.3': + optional: true + + '@yuku-parser/binding-linux-arm-musl@0.7.3': + optional: true + + '@yuku-parser/binding-linux-arm64-gnu@0.7.3': + optional: true + + '@yuku-parser/binding-linux-arm64-musl@0.7.3': + optional: true + + '@yuku-parser/binding-linux-x64-gnu@0.7.3': + optional: true + + '@yuku-parser/binding-linux-x64-musl@0.7.3': + optional: true + + '@yuku-parser/binding-win32-arm64@0.7.3': + optional: true + + '@yuku-parser/binding-win32-x64@0.7.3': + optional: true + + '@yuku-toolchain/types@0.7.3': {} + acorn-jsx@5.3.2(acorn@8.17.0): dependencies: acorn: 8.17.0 @@ -1507,17 +1785,9 @@ snapshots: ansis@4.3.1: {} - ast-kit@3.0.0: - dependencies: - '@babel/parser': 8.0.0 - estree-walker: 3.0.3 - pathe: 2.0.3 - balanced-match@4.0.4: {} - birpc@4.0.0: {} - - brace-expansion@5.0.6: + brace-expansion@5.0.7: dependencies: balanced-match: 4.0.4 @@ -1539,23 +1809,23 @@ snapshots: defu@6.1.7: {} - discord-api-types@0.38.49: {} + discord-api-types@0.38.50: {} - discord.js@14.26.4: + discord.js@14.27.0: dependencies: '@discordjs/builders': 1.14.1 '@discordjs/collection': 1.5.3 '@discordjs/formatters': 0.6.2 - '@discordjs/rest': 2.6.1 + '@discordjs/rest': 2.6.3 '@discordjs/util': 1.2.0 '@discordjs/ws': 1.2.3 - '@sapphire/snowflake': 3.5.3 - discord-api-types: 0.38.49 + '@sapphire/snowflake': 3.5.5 + discord-api-types: 0.38.50 fast-deep-equal: 3.1.3 lodash.snakecase: 4.1.1 magic-bytes.js: 1.13.0 tslib: 2.8.1 - undici: 6.24.1 + undici: 6.27.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -1566,9 +1836,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)): + eslint-config-prettier@10.1.8(eslint@10.7.0(jiti@2.7.0)): dependencies: - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.7.0(jiti@2.7.0) eslint-import-context@0.1.9(unrs-resolver@1.12.2): dependencies: @@ -1577,10 +1847,10 @@ snapshots: optionalDependencies: unrs-resolver: 1.12.2 - eslint-import-resolver-typescript@4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)))(eslint@10.5.0(jiti@2.7.0)): + eslint-import-resolver-typescript@4.4.5(eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2))(eslint@10.7.0(jiti@2.7.0)))(eslint@10.7.0(jiti@2.7.0)): dependencies: debug: 4.4.3 - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.7.0(jiti@2.7.0) eslint-import-context: 0.1.9(unrs-resolver@1.12.2) get-tsconfig: 4.14.0 is-bun-module: 2.0.0 @@ -1588,17 +1858,16 @@ snapshots: tinyglobby: 0.2.17 unrs-resolver: 1.12.2 optionalDependencies: - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)) + eslint-plugin-import-x: 4.17.1(@typescript-eslint/utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2))(eslint@10.7.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)): + eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2))(eslint@10.7.0(jiti@2.7.0)): dependencies: - '@package-json/types': 0.0.12 - '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/types': 8.65.0 comment-parser: 1.4.7 debug: 4.4.3 - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.7.0(jiti@2.7.0) eslint-import-context: 0.1.9(unrs-resolver@1.12.2) is-glob: 4.0.3 minimatch: 10.2.5 @@ -1606,7 +1875,7 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.12.2 optionalDependencies: - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) transitivePeerDependencies: - supports-color @@ -1617,13 +1886,11 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@5.0.1: {} - eslint@10.5.0(jiti@2.7.0): + eslint@10.7.0(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.10.0(eslint@10.7.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 '@eslint/config-helpers': 0.6.0 @@ -1674,10 +1941,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.9 - esutils@2.0.3: {} fast-deep-equal@3.1.3: {} @@ -1686,9 +1949,9 @@ snapshots: fast-levenshtein@2.0.6: {} - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.5): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.5 file-entry-cache@8.0.0: dependencies: @@ -1718,17 +1981,17 @@ snapshots: dependencies: is-glob: 4.0.3 - globals@17.6.0: {} + globals@17.7.0: {} hookable@6.1.1: {} - i18next@26.3.1(typescript@6.0.3): + i18next@26.3.6(typescript@7.0.2): optionalDependencies: - typescript: 6.0.3 + typescript: 7.0.2 ignore@5.3.2: {} - ignore@7.0.5: {} + ignore@7.0.6: {} import-without-cache@0.4.0: {} @@ -1750,8 +2013,6 @@ snapshots: jiti@2.7.0: {} - jsesc@3.1.0: {} - json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} @@ -1784,7 +2045,7 @@ snapshots: minimatch@10.2.5: dependencies: - brace-expansion: 5.0.6 + brace-expansion: 5.0.7 ms@2.1.3: {} @@ -1792,7 +2053,7 @@ snapshots: natural-compare@1.4.0: {} - obug@2.1.3: {} + obug@2.1.4: {} optionator@0.9.4: dependencies: @@ -1815,13 +2076,11 @@ snapshots: path-key@3.1.1: {} - pathe@2.0.3: {} - - picomatch@4.0.4: {} + picomatch@4.0.5: {} prelude-ls@1.2.1: {} - prettier@3.8.4: {} + prettier@3.9.6: {} punycode@2.3.1: {} @@ -1829,42 +2088,40 @@ snapshots: resolve-pkg-maps@1.0.0: {} - rolldown-plugin-dts@0.26.0(rolldown@1.1.2)(typescript@6.0.3): + rolldown-plugin-dts@0.27.13(rolldown@1.2.0)(typescript@7.0.2): dependencies: - '@babel/generator': 8.0.0 - '@babel/helper-validator-identifier': 8.0.2 - '@babel/parser': 8.0.0 - ast-kit: 3.0.0 - birpc: 4.0.0 dts-resolver: 3.0.0 get-tsconfig: 5.0.0-beta.5 - obug: 2.1.3 - rolldown: 1.1.2 + obug: 2.1.4 + rolldown: 1.2.0 + yuku-ast: 0.7.3 + yuku-codegen: 0.7.3 + yuku-parser: 0.7.3 optionalDependencies: - typescript: 6.0.3 + typescript: 7.0.2 transitivePeerDependencies: - oxc-resolver - rolldown@1.1.2: + rolldown@1.2.0: dependencies: - '@oxc-project/types': 0.137.0 + '@oxc-project/types': 0.140.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.2 - '@rolldown/binding-darwin-arm64': 1.1.2 - '@rolldown/binding-darwin-x64': 1.1.2 - '@rolldown/binding-freebsd-x64': 1.1.2 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.2 - '@rolldown/binding-linux-arm64-gnu': 1.1.2 - '@rolldown/binding-linux-arm64-musl': 1.1.2 - '@rolldown/binding-linux-ppc64-gnu': 1.1.2 - '@rolldown/binding-linux-s390x-gnu': 1.1.2 - '@rolldown/binding-linux-x64-gnu': 1.1.2 - '@rolldown/binding-linux-x64-musl': 1.1.2 - '@rolldown/binding-openharmony-arm64': 1.1.2 - '@rolldown/binding-wasm32-wasi': 1.1.2 - '@rolldown/binding-win32-arm64-msvc': 1.1.2 - '@rolldown/binding-win32-x64-msvc': 1.1.2 + '@rolldown/binding-android-arm64': 1.2.0 + '@rolldown/binding-darwin-arm64': 1.2.0 + '@rolldown/binding-darwin-x64': 1.2.0 + '@rolldown/binding-freebsd-x64': 1.2.0 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.0 + '@rolldown/binding-linux-arm64-gnu': 1.2.0 + '@rolldown/binding-linux-arm64-musl': 1.2.0 + '@rolldown/binding-linux-ppc64-gnu': 1.2.0 + '@rolldown/binding-linux-s390x-gnu': 1.2.0 + '@rolldown/binding-linux-x64-gnu': 1.2.0 + '@rolldown/binding-linux-x64-musl': 1.2.0 + '@rolldown/binding-openharmony-arm64': 1.2.0 + '@rolldown/binding-wasm32-wasi': 1.2.0 + '@rolldown/binding-win32-arm64-msvc': 1.2.0 + '@rolldown/binding-win32-x64-msvc': 1.2.0 semver@7.8.5: {} @@ -1880,18 +2137,18 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 tree-kill@1.2.2: {} - ts-api-utils@2.5.0(typescript@6.0.3): + ts-api-utils@2.5.0(typescript@7.0.2): dependencies: - typescript: 6.0.3 + typescript: 7.0.2 ts-mixer@6.0.4: {} - tsdown@0.22.3(typescript@6.0.3): + tsdown@0.22.13(typescript@7.0.2): dependencies: ansis: 4.3.1 cac: 7.0.0 @@ -1899,20 +2156,20 @@ snapshots: empathic: 2.0.1 hookable: 6.1.1 import-without-cache: 0.4.0 - obug: 2.1.3 - picomatch: 4.0.4 - rolldown: 1.1.2 - rolldown-plugin-dts: 0.26.0(rolldown@1.1.2)(typescript@6.0.3) - semver: 7.8.5 + obug: 2.1.4 + picomatch: 4.0.5 + rolldown: 1.2.0 + rolldown-plugin-dts: 0.27.13(rolldown@1.2.0)(typescript@7.0.2) tinyexec: 1.2.4 tinyglobby: 0.2.17 tree-kill: 1.2.2 unconfig-core: 7.5.0 + verkit: 0.1.2 optionalDependencies: - typescript: 6.0.3 + typescript: 7.0.2 transitivePeerDependencies: - - '@ts-macro/tsc' - '@typescript/native-preview' + - '@volar/typescript' - oxc-resolver - vue-tsc @@ -1922,18 +2179,39 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3): + typescript-eslint@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.5.0(jiti@2.7.0) - typescript: 6.0.3 + '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2))(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) + '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) + '@typescript-eslint/typescript-estree': 8.65.0(typescript@7.0.2) + '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0))(typescript@7.0.2) + eslint: 10.7.0(jiti@2.7.0) + typescript: 7.0.2 transitivePeerDependencies: - supports-color - typescript@6.0.3: {} + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 unconfig-core@7.5.0: dependencies: @@ -1942,7 +2220,7 @@ snapshots: undici-types@8.3.0: {} - undici@6.24.1: {} + undici@6.27.0: {} unrs-resolver@1.12.2: dependencies: @@ -1975,14 +2253,53 @@ snapshots: dependencies: punycode: 2.3.1 + verkit@0.1.2: {} + which@2.0.2: dependencies: isexe: 2.0.0 word-wrap@1.2.5: {} - ws@8.21.0: {} + ws@8.21.1: {} yocto-queue@0.1.0: {} yoctocolors@2.1.2: {} + + yuku-ast@0.7.3: + dependencies: + '@yuku-toolchain/types': 0.7.3 + + yuku-codegen@0.7.3: + dependencies: + '@yuku-toolchain/types': 0.7.3 + optionalDependencies: + '@yuku-codegen/binding-darwin-arm64': 0.7.3 + '@yuku-codegen/binding-darwin-x64': 0.7.3 + '@yuku-codegen/binding-freebsd-x64': 0.7.3 + '@yuku-codegen/binding-linux-arm-gnu': 0.7.3 + '@yuku-codegen/binding-linux-arm-musl': 0.7.3 + '@yuku-codegen/binding-linux-arm64-gnu': 0.7.3 + '@yuku-codegen/binding-linux-arm64-musl': 0.7.3 + '@yuku-codegen/binding-linux-x64-gnu': 0.7.3 + '@yuku-codegen/binding-linux-x64-musl': 0.7.3 + '@yuku-codegen/binding-win32-arm64': 0.7.3 + '@yuku-codegen/binding-win32-x64': 0.7.3 + + yuku-parser@0.7.3: + dependencies: + '@yuku-toolchain/types': 0.7.3 + yuku-ast: 0.7.3 + optionalDependencies: + '@yuku-parser/binding-darwin-arm64': 0.7.3 + '@yuku-parser/binding-darwin-x64': 0.7.3 + '@yuku-parser/binding-freebsd-x64': 0.7.3 + '@yuku-parser/binding-linux-arm-gnu': 0.7.3 + '@yuku-parser/binding-linux-arm-musl': 0.7.3 + '@yuku-parser/binding-linux-arm64-gnu': 0.7.3 + '@yuku-parser/binding-linux-arm64-musl': 0.7.3 + '@yuku-parser/binding-linux-x64-gnu': 0.7.3 + '@yuku-parser/binding-linux-x64-musl': 0.7.3 + '@yuku-parser/binding-win32-arm64': 0.7.3 + '@yuku-parser/binding-win32-x64': 0.7.3 diff --git a/src/client/StelliaClient.ts b/src/client/StelliaClient.ts index 22c582d..38c7610 100644 --- a/src/client/StelliaClient.ts +++ b/src/client/StelliaClient.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import path from "node:path"; import { pathToFileURL } from "node:url"; -import { Client, type ClientOptions, type Interaction } from "discord.js"; +import { type ApplicationEmoji, Client, type ClientOptions, type Interaction } from "discord.js"; import { StelliaUtils } from "@client/index.js"; import { AutoCompleteManager, @@ -15,6 +15,7 @@ import { } from "@managers/index.js"; import { type ClientEnvironment, + type CustomEmojis, type GuildConfiguration, type GuildsConfiguration, type Manager, @@ -22,10 +23,17 @@ import { } from "@typescript/index.js"; import { logger } from "@utils/index.js"; -export class StelliaClient extends Client { +export class StelliaClient< + Ready extends boolean = boolean, + EmojiEnum extends Record = Record, + TConfig extends GuildConfiguration = GuildConfiguration, + TGuildsConfig extends GuildsConfiguration = GuildsConfiguration +> extends Client { private utils: StelliaUtils; public readonly managers: Managers = {}; public readonly environment?: ClientEnvironment; + public customEmojis: CustomEmojis = {} as CustomEmojis; + public readonly emojiEnum?: EmojiEnum; private constructor(clientOptions: ClientOptions, stelliaOptions?: StelliaOptions) { super(clientOptions); @@ -34,6 +42,10 @@ export class StelliaClient extends Client { logger.errorWithInformation("Unhandled promise rejection", error); }); @@ -43,8 +55,15 @@ export class StelliaClient extends Client { - const client = new StelliaClient(clientOptions, stelliaOptions); + public static async create< + EmojiEnum extends Record = Record, + TConfig extends GuildConfiguration = GuildConfiguration, + TGuildsConfig extends GuildsConfiguration = GuildsConfiguration + >( + clientOptions: ClientOptions, + stelliaOptions?: StelliaOptions + ): Promise> { + const client = new StelliaClient(clientOptions, stelliaOptions); await client.initializeAsyncFields(stelliaOptions); return client; @@ -68,7 +87,15 @@ export class StelliaClient extends Client(): Promise => { + public initializeCustomEmojis = async (): Promise => { + await this.utils.initializeCustomEmojis(); + }; + + public getCustomEmoji = (emojiName: keyof EmojiEnum): ApplicationEmoji | undefined => { + return this.utils.getCustomEmoji(String(emojiName)); + }; + + public getGuildsConfiguration = async (): Promise => { const chosenEnvironment = process.argv.find((arg) => arg.startsWith("--config"))?.split("=")[1]; if (!chosenEnvironment) { throw new Error("Environment not provided"); @@ -100,8 +127,8 @@ export class StelliaClient extends Client(guildId: string): CustomGuildConfiguration | null => { - return this.utils.getGuildConfiguration(guildId); + public getGuildConfiguration = (guildId: string): TConfig | null => { + return this.utils.getGuildConfiguration(guildId) as TConfig | null; }; public handleInteraction = async (interaction: Interaction<"cached">): Promise => { @@ -157,7 +184,7 @@ export class StelliaClient extends Client = Record> { managers?: { autoCompletes?: ManagerOptions; buttons?: ManagerOptions; @@ -168,4 +195,5 @@ interface StelliaOptions { modals?: ManagerOptions; }; environment?: ClientEnvironment; -} + emojis?: EmojiEnum; +} \ No newline at end of file diff --git a/src/client/StelliaUtils.ts b/src/client/StelliaUtils.ts index 79a7600..9c42920 100644 --- a/src/client/StelliaUtils.ts +++ b/src/client/StelliaUtils.ts @@ -1,6 +1,7 @@ import { type AnySelectMenuInteraction, ApplicationCommandType, + type ApplicationEmoji, type AutocompleteInteraction, type ButtonInteraction, type ChatInputCommandInteraction, @@ -30,10 +31,16 @@ import { type SelectMenuStructureWithGuildConfiguration, type SelectMenuStructureWithoutGuildConfiguration } from "@structures/index.js"; -import { type GuildConfiguration, type GuildsConfiguration, InteractionType, type StelliaLocale } from "@typescript/index.js"; +import { + type CustomEmojis, + type GuildConfiguration, + type GuildsConfiguration, + InteractionType, + type StelliaLocale +} from "@typescript/index.js"; import { logger } from "@utils/index.js"; -export class StelliaUtils { +export class StelliaUtils = Record> { public readonly client: StelliaClient; private readonly interactionHandlers: Map) => Promise>; private guildsConfiguration: GuildsConfiguration; @@ -75,6 +82,44 @@ export class StelliaUtils { } }; + public initializeCustomEmojis = async (): Promise => { + const emojiEnum = this.client.emojiEnum; + if (!emojiEnum) { + return; + } + + if (!this.client.application) { + logger.warn("Application not available, cannot resolve custom emojis"); + return; + } + + try { + const applicationEmojis = await this.client.application.emojis.fetch(); + const customEmojis = {} as CustomEmojis; + const typedEmojiEnum = emojiEnum as Record; + + for (const key of Object.keys(emojiEnum) as (keyof EmojiEnum)[]) { + const emojiName = typedEmojiEnum[key]; + const emoji = applicationEmojis.find((appEmoji) => appEmoji.name === emojiName); + if (!emoji) { + logger.warn(`Custom emoji "${emojiName}" not found on this application`); + continue; + } + + customEmojis[emojiName] = emoji; + } + + this.client.customEmojis = customEmojis; + logger.success("Custom emojis resolved successfully"); + } catch (error: unknown) { + logger.errorWithInformation("Error while resolving custom emojis", error); + } + }; + + public getCustomEmoji = (emojiName: string): ApplicationEmoji | undefined => { + return this.client.customEmojis[emojiName]; + }; + public getGuildConfiguration = (guildId: string): CustomGuildConfiguration | null => { if (!this.client.environment?.areGuildsConfigurationEnabled || !this.guildsConfiguration) { return null; diff --git a/src/managers/AutoCompleteManager.ts b/src/managers/AutoCompleteManager.ts index 065cf93..ecb10f0 100644 --- a/src/managers/AutoCompleteManager.ts +++ b/src/managers/AutoCompleteManager.ts @@ -1,48 +1,16 @@ -import { Collection } from "discord.js"; import { type StelliaClient } from "@client/index.js"; -import { BaseManager } from "@managers/index.js"; +import { SimpleManager } from "@managers/index.js"; import { type AutoCompleteStructure } from "@structures/index.js"; -import { type InteractionCustomId, type StructureCustomId } from "@typescript/index.js"; -import { logger, requiredFiles } from "@utils/index.js"; - -export class AutoCompleteManager extends BaseManager { - private autoCompletes: Collection = new Collection(); +export class AutoCompleteManager extends SimpleManager { private constructor(client: StelliaClient, directoryPath: string) { - super(client, directoryPath); + super(client, directoryPath, "auto completes"); } - public static async create(client: StelliaClient, directory: string): Promise { - const manager = new AutoCompleteManager(client, directory); + public static async create(client: StelliaClient, directoryPath: string): Promise { + const manager = new AutoCompleteManager(client, directoryPath); await manager.loadData(); return manager; } - - public async loadData(): Promise { - this.autoCompletes = await requiredFiles(this.directoryPath); - this.setManagerLoaded(); - - logger.info(`Loaded ${this.autoCompletes.size} auto completes`); - } - - public getByCustomId(id: InteractionCustomId): AutoCompleteStructure | null { - return this.autoCompletes.get(id) ?? null; - } - - public getByRegex(id: InteractionCustomId): AutoCompleteStructure | null { - let autoComplete: AutoCompleteStructure | null = null; - for (const [customId, action] of this.autoCompletes.entries()) { - if (customId instanceof RegExp && customId.test(id)) { - autoComplete = action; - break; - } - } - - return autoComplete; - } - - public getAll(): Collection { - return this.autoCompletes; - } } diff --git a/src/managers/ButtonManager.ts b/src/managers/ButtonManager.ts index 36ef766..a4641ac 100644 --- a/src/managers/ButtonManager.ts +++ b/src/managers/ButtonManager.ts @@ -1,48 +1,16 @@ -import { Collection } from "discord.js"; import { type StelliaClient } from "@client/index.js"; -import { BaseManager } from "@managers/index.js"; +import { SimpleManager } from "@managers/index.js"; import { type ButtonStructure } from "@structures/index.js"; -import { type InteractionCustomId, type StructureCustomId } from "@typescript/index.js"; -import { logger, requiredFiles } from "@utils/index.js"; - -export class ButtonManager extends BaseManager { - public buttons: Collection = new Collection(); +export class ButtonManager extends SimpleManager { private constructor(client: StelliaClient, directoryPath: string) { - super(client, directoryPath); + super(client, directoryPath, "buttons"); } - public static async create(client: StelliaClient, directory: string): Promise { - const manager = new ButtonManager(client, directory); + public static async create(client: StelliaClient, directoryPath: string): Promise { + const manager = new ButtonManager(client, directoryPath); await manager.loadData(); return manager; } - - public async loadData(): Promise { - this.buttons = await requiredFiles(this.directoryPath); - this.setManagerLoaded(); - - logger.info(`Loaded ${this.buttons.size} buttons`); - } - - public getByCustomId(id: InteractionCustomId): ButtonStructure | null { - return this.buttons.get(id) ?? null; - } - - public getByRegex(id: InteractionCustomId): ButtonStructure | null { - let button: ButtonStructure | null = null; - for (const [customId, action] of this.buttons.entries()) { - if (customId instanceof RegExp && customId.test(id)) { - button = action; - break; - } - } - - return button; - } - - public getAll(): Collection { - return this.buttons; - } } diff --git a/src/managers/CommandManager.ts b/src/managers/CommandManager.ts index 19dff24..bcc0be0 100644 --- a/src/managers/CommandManager.ts +++ b/src/managers/CommandManager.ts @@ -1,48 +1,16 @@ -import { Collection } from "discord.js"; import { type StelliaClient } from "@client/index.js"; -import { BaseManager } from "@managers/index.js"; +import { SimpleManager } from "@managers/index.js"; import { type CommandStructure } from "@structures/index.js"; -import { type InteractionCustomId, type StructureCustomId } from "@typescript/index.js"; -import { logger, requiredFiles } from "@utils/index.js"; - -export class CommandManager extends BaseManager { - private commands: Collection = new Collection(); +export class CommandManager extends SimpleManager { private constructor(client: StelliaClient, directoryPath: string) { - super(client, directoryPath); + super(client, directoryPath, "commands"); } - public static async create(client: StelliaClient, directory: string): Promise { - const manager = new CommandManager(client, directory); + public static async create(client: StelliaClient, directoryPath: string): Promise { + const manager = new CommandManager(client, directoryPath); await manager.loadData(); return manager; } - - public async loadData(): Promise { - this.commands = await requiredFiles(this.directoryPath); - this.setManagerLoaded(); - - logger.info(`Loaded ${this.commands.size} commands`); - } - - public getByCustomId(id: InteractionCustomId): CommandStructure | null { - return this.commands.get(id) ?? null; - } - - public getByRegex(id: InteractionCustomId): CommandStructure | null { - let command: CommandStructure | null = null; - for (const [customId, action] of this.commands.entries()) { - if (customId instanceof RegExp && customId.test(id)) { - command = action; - break; - } - } - - return command; - } - - public getAll(): Collection { - return this.commands; - } } diff --git a/src/managers/ContextMenuManager.ts b/src/managers/ContextMenuManager.ts index a7a80fe..16d3961 100644 --- a/src/managers/ContextMenuManager.ts +++ b/src/managers/ContextMenuManager.ts @@ -1,48 +1,16 @@ -import { Collection } from "discord.js"; import { type StelliaClient } from "@client/index.js"; -import { BaseManager } from "@managers/index.js"; +import { SimpleManager } from "@managers/index.js"; import { type ContextMenuStructure } from "@structures/index.js"; -import { type InteractionCustomId, type StructureCustomId } from "@typescript/index.js"; -import { logger, requiredFiles } from "@utils/index.js"; - -export class ContextMenuManager extends BaseManager { - private contextMenus: Collection = new Collection(); +export class ContextMenuManager extends SimpleManager { private constructor(client: StelliaClient, directoryPath: string) { - super(client, directoryPath); + super(client, directoryPath, "context menus"); } - public static async create(client: StelliaClient, directory: string): Promise { - const manager = new ContextMenuManager(client, directory); + public static async create(client: StelliaClient, directoryPath: string): Promise { + const manager = new ContextMenuManager(client, directoryPath); await manager.loadData(); return manager; } - - public async loadData(): Promise { - this.contextMenus = await requiredFiles(this.directoryPath); - this.setManagerLoaded(); - - logger.info(`Loaded ${this.contextMenus.size} context menus`); - } - - public getByCustomId(id: InteractionCustomId): ContextMenuStructure | null { - return this.contextMenus.get(id) ?? null; - } - - public getByRegex(id: InteractionCustomId): ContextMenuStructure | null { - let contextMenu: ContextMenuStructure | null = null; - for (const [customId, action] of this.contextMenus.entries()) { - if (customId instanceof RegExp && customId.test(id)) { - contextMenu = action; - break; - } - } - - return contextMenu; - } - - public getAll(): Collection { - return this.contextMenus; - } } diff --git a/src/managers/EventManager.ts b/src/managers/EventManager.ts index 2b9778f..570123d 100644 --- a/src/managers/EventManager.ts +++ b/src/managers/EventManager.ts @@ -1,14 +1,6 @@ -import { Collection } from "discord.js"; +import { type Awaitable, Collection } from "discord.js"; import { type StelliaClient } from "@client/index.js"; import { BaseManager } from "@managers/index.js"; -import { - type ClientEventsArgs, - type EventStructure, - type EventStructureWithAllGuildsConfiguration, - type EventStructureWithConfiguration, - type EventStructureWithGuildConfiguration, - type EventStructureWithoutGuildConfiguration -} from "@structures/index.js"; import { type GuildConfigurationType, type GuildsConfiguration, @@ -16,6 +8,9 @@ import { type StructureCustomId } from "@typescript/index.js"; import { logger, requiredFiles } from "@utils/index.js"; +import { type EventStructure, type EventStructureWithGuildConfiguration } from "structures/index.js"; + +type UnsafeEventExecute = (client: StelliaClient, ...args: unknown[]) => Awaitable; export class EventManager extends BaseManager { private events: Collection = new Collection(); @@ -70,7 +65,7 @@ export class EventManager extends BaseManager { private async loadEventWithGuildConfiguration(eventStructure: EventStructure) { const { name, once } = eventStructure.data; - const event = eventStructure as EventStructureWithGuildConfiguration; + const event = eventStructure as EventStructureWithGuildConfiguration; if (once) { this.client.once(name, (...args) => this.eventHandler(event, ...args)); @@ -79,52 +74,74 @@ export class EventManager extends BaseManager { } } - private readonly eventHandler = (event: EventStructureWithConfiguration, ...args: ClientEventsArgs) => { - const mainArgument = args[0]; - const guildConfiguration = this.getGuildConfiguration(mainArgument); - if (guildConfiguration) { - const eventStructure = event as EventStructureWithGuildConfiguration; - return eventStructure.execute(this.client, guildConfiguration, ...args); - } + private readonly eventHandler = async (event: EventStructureWithGuildConfiguration, ...args: unknown[]): Promise => { + try { + const execute = event.execute as UnsafeEventExecute; + const mainArgument = args[0]; + const guildConfiguration = this.getGuildConfiguration(mainArgument); - const eventStructure = event as EventStructureWithAllGuildsConfiguration; - return eventStructure.execute(this.client, this.guildsConfiguration, ...args); + if (guildConfiguration) { + await execute(this.client, guildConfiguration, ...args); + return; + } + + await execute(this.client, this.guildsConfiguration, ...args); + } catch (error: unknown) { + logger.errorWithInformation(`Error while executing event "${String(event.data.name)}"`, error); + } }; private async loadEventWithoutGuildConfiguration(eventStructure: EventStructure): Promise { const { name, once } = eventStructure.data; - const event = eventStructure as EventStructureWithoutGuildConfiguration; + const execute = eventStructure.execute as UnsafeEventExecute; + + const handler = async (...args: unknown[]): Promise => { + try { + await execute(this.client, ...args); + } catch (error: unknown) { + logger.errorWithInformation(`Error while executing event "${String(name)}"`, error); + } + }; if (once) { - this.client.once(name, (...args) => event.execute(this.client, ...args)); + this.client.once(name, handler); } else { - this.client.on(name, (...args) => event.execute(this.client, ...args)); + this.client.on(name, handler); } } - private getGuildConfiguration(mainArgument: ClientEventsArgs[0]): GuildConfigurationType | undefined { - if (mainArgument && typeof mainArgument === "object") { - if ("guildId" in mainArgument && mainArgument.guildId) { - return this.client.getGuildConfiguration(mainArgument.guildId); - } - if ("guild" in mainArgument && mainArgument.guild) { - return this.client.getGuildConfiguration(mainArgument.guild.id); - } - if ( - "message" in mainArgument && - mainArgument.message && - typeof mainArgument.message === "object" && - "guild" in mainArgument.message && - mainArgument.message.guild && - "id" in mainArgument.message.guild - ) { - return this.client.getGuildConfiguration(mainArgument.message.guild.id); + private getGuildConfiguration(mainArgument: unknown): GuildConfigurationType | undefined { + const guildId = this.extractGuildId(mainArgument); + return guildId ? this.client.getGuildConfiguration(guildId) : undefined; + } + + private extractGuildId(mainArgument: unknown): string | undefined { + if (!mainArgument || typeof mainArgument !== "object") { + return undefined; + } + + if ("guildId" in mainArgument && typeof mainArgument.guildId === "string") { + return mainArgument.guildId; + } + + if ("guild" in mainArgument && this.isObjectWithStringId(mainArgument.guild)) { + return mainArgument.guild.id; + } + + if ("message" in mainArgument && typeof mainArgument.message === "object" && mainArgument.message !== null) { + const message = mainArgument.message as Record; + if ("guild" in message && this.isObjectWithStringId(message.guild)) { + return message.guild.id; } } return undefined; } + private isObjectWithStringId(value: unknown): value is { id: string } { + return typeof value === "object" && value !== null && "id" in value && typeof (value as Record).id === "string"; + } + private async initializeGuildsConfiguration(): Promise { if (this.client.environment?.areGuildsConfigurationEnabled) { try { diff --git a/src/managers/ModalManager.ts b/src/managers/ModalManager.ts index c4008cc..d560ddf 100644 --- a/src/managers/ModalManager.ts +++ b/src/managers/ModalManager.ts @@ -1,48 +1,16 @@ -import { Collection } from "discord.js"; import { type StelliaClient } from "@client/index.js"; -import { BaseManager } from "@managers/index.js"; +import { SimpleManager } from "@managers/index.js"; import { type ModalStructure } from "@structures/index.js"; -import { type InteractionCustomId, type StructureCustomId } from "@typescript/index.js"; -import { logger, requiredFiles } from "@utils/index.js"; - -export class ModalManager extends BaseManager { - private modals: Collection = new Collection(); +export class ModalManager extends SimpleManager { private constructor(client: StelliaClient, directoryPath: string) { - super(client, directoryPath); + super(client, directoryPath, "modals"); } - public static async create(client: StelliaClient, directory: string): Promise { - const manager = new ModalManager(client, directory); + public static async create(client: StelliaClient, directoryPath: string): Promise { + const manager = new ModalManager(client, directoryPath); await manager.loadData(); return manager; } - - public async loadData(): Promise { - this.modals = await requiredFiles(this.directoryPath); - this.setManagerLoaded(); - - logger.info(`Loaded ${this.modals.size} modals`); - } - - public getByCustomId(id: InteractionCustomId): ModalStructure | null { - return this.modals.get(id) ?? null; - } - - public getByRegex(id: InteractionCustomId): ModalStructure | null { - let modal: ModalStructure | null = null; - for (const [customId, action] of this.modals.entries()) { - if (customId instanceof RegExp && customId.test(id)) { - modal = action; - break; - } - } - - return modal; - } - - public getAll(): Collection { - return this.modals; - } } diff --git a/src/managers/SelectMenuManager.ts b/src/managers/SelectMenuManager.ts index efc7a75..ad9e22b 100644 --- a/src/managers/SelectMenuManager.ts +++ b/src/managers/SelectMenuManager.ts @@ -1,48 +1,16 @@ -import { Collection } from "discord.js"; import { type StelliaClient } from "@client/index.js"; -import { BaseManager } from "@managers/index.js"; +import { SimpleManager } from "@managers/index.js"; import { type SelectMenuStructure } from "@structures/index.js"; -import { type InteractionCustomId, type StructureCustomId } from "@typescript/index.js"; -import { logger, requiredFiles } from "@utils/index.js"; - -export class SelectMenuManager extends BaseManager { - private selectMenus: Collection = new Collection(); +export class SelectMenuManager extends SimpleManager { private constructor(client: StelliaClient, directoryPath: string) { - super(client, directoryPath); + super(client, directoryPath, "select menus"); } - public static async create(client: StelliaClient, directory: string): Promise { - const manager = new SelectMenuManager(client, directory); + public static async create(client: StelliaClient, directoryPath: string): Promise { + const manager = new SelectMenuManager(client, directoryPath); await manager.loadData(); return manager; } - - public async loadData(): Promise { - this.selectMenus = await requiredFiles(this.directoryPath); - this.setManagerLoaded(); - - logger.info(`Loaded ${this.selectMenus.size} select menus`); - } - - public getByCustomId(id: InteractionCustomId): SelectMenuStructure | null { - return this.selectMenus.get(id) ?? null; - } - - public getByRegex(id: InteractionCustomId): SelectMenuStructure | null { - let selectMenu: SelectMenuStructure | null = null; - for (const [customId, action] of this.selectMenus.entries()) { - if (customId instanceof RegExp && customId.test(id)) { - selectMenu = action; - break; - } - } - - return selectMenu; - } - - public getAll(): Collection { - return this.selectMenus; - } } diff --git a/src/managers/SimpleManager.ts b/src/managers/SimpleManager.ts new file mode 100644 index 0000000..942e4d1 --- /dev/null +++ b/src/managers/SimpleManager.ts @@ -0,0 +1,39 @@ +import { Collection } from "discord.js"; +import { type StelliaClient } from "@client/index.js"; +import { BaseManager } from "@managers/index.js"; +import { type AnyInteractionStructure } from "@structures/index.js"; +import { type InteractionCustomId, type StructureCustomId } from "@typescript/index.js"; +import { logger, requiredFiles } from "@utils/index.js"; + +export abstract class SimpleManager extends BaseManager { + protected items: Collection = new Collection(); + + protected constructor(client: StelliaClient, directoryPath: string, private readonly label: string) { + super(client, directoryPath); + } + + public async loadData(): Promise { + this.items = await requiredFiles(this.directoryPath); + this.setManagerLoaded(); + + logger.info(`Loaded ${this.items.size} ${this.label}`); + } + + public getByCustomId(id: InteractionCustomId): TStructure | null { + return this.items.get(id) ?? null; + } + + public getByRegex(id: InteractionCustomId): TStructure | null { + for (const [customId, structure] of this.items.entries()) { + if (customId instanceof RegExp && customId.test(id)) { + return structure; + } + } + + return null; + } + + public getAll(): Collection { + return this.items; + } +} diff --git a/src/managers/index.ts b/src/managers/index.ts index d339c11..7931cf8 100644 --- a/src/managers/index.ts +++ b/src/managers/index.ts @@ -1,4 +1,5 @@ export * from "@managers/BaseManager.js"; +export * from "@managers/SimpleManager.js"; export * from "@managers/AutoCompleteManager.js"; export * from "@managers/ButtonManager.js"; export * from "@managers/CommandManager.js"; diff --git a/src/structures/Event.ts b/src/structures/Event.ts index 460a816..dfa14fc 100644 --- a/src/structures/Event.ts +++ b/src/structures/Event.ts @@ -2,27 +2,47 @@ import { type Awaitable, type ClientEvents } from "discord.js"; import { type StelliaClient } from "@client/index.js"; import { type GuildConfigurationType, type GuildsConfiguration } from "@typescript/index.js"; -export interface EventStructureWithGuildConfiguration extends EventInteractionStructure { - execute(client: StelliaClient, guildConfiguration: GuildConfigurationType, ...args: ClientEventsArgs): Awaitable; +export type EventKeys = keyof ClientEvents; + +export type EventExecute = (client: StelliaClient, ...args: [...ExtraArgs, ...ClientEvents[K]]) => Awaitable; + +export interface EventDataStructure { + name: K; + once?: boolean; } -export interface EventStructureWithAllGuildsConfiguration extends EventInteractionStructure { - execute(client: StelliaClient, guildsConfiguration: GuildsConfiguration, ...args: ClientEventsArgs): Awaitable; + +export interface EventStructureWithoutGuildConfiguration { + data: EventDataStructure; + execute: EventExecute; } -export interface EventStructureWithoutGuildConfiguration extends EventInteractionStructure { - execute(client: StelliaClient, ...args: ClientEventsArgs): Awaitable; + +export interface EventStructureWithGuildConfiguration { + data: EventDataStructure; + execute: EventExecute; +} + +export interface EventStructureWithAllGuildsConfiguration { + data: EventDataStructure; + execute: EventExecute; } -export type EventStructureWithConfiguration = EventStructureWithGuildConfiguration | EventStructureWithAllGuildsConfiguration; -export type EventStructure = - | EventStructureWithGuildConfiguration - | EventStructureWithAllGuildsConfiguration - | EventStructureWithoutGuildConfiguration; -interface EventInteractionStructure { - data: EventDataStructure; +export function defineEvent(event: EventStructureWithoutGuildConfiguration) { + return event; } -interface EventDataStructure { - name: EventKeys; - once: boolean; + +export function createGuildEventFactory() { + return function (event: EventStructureWithGuildConfiguration) { + return event; + }; } -export type ClientEventsArgs = ClientEvents[keyof ClientEvents]; -export type EventKeys = keyof ClientEvents; + +export function createAllGuildsEventFactory() { + return function (event: EventStructureWithAllGuildsConfiguration) { + return event; + }; +} + +export type EventStructure = + | EventStructureWithGuildConfiguration + | EventStructureWithAllGuildsConfiguration + | EventStructureWithoutGuildConfiguration; \ No newline at end of file diff --git a/src/structures/Interaction.ts b/src/structures/Interaction.ts index d0fcf80..c635c59 100644 --- a/src/structures/Interaction.ts +++ b/src/structures/Interaction.ts @@ -12,8 +12,8 @@ import { type UserContextMenuCommandInteraction } from "discord.js"; import { type StelliaClient } from "@client/index.js"; -import { type EventStructure } from "@structures/index.js"; import { type GuildConfigurationType, type StelliaLocale } from "@typescript/index.js"; +import { type EventStructure } from "structures/Event.js"; export interface AutoCompleteStructureWithGuildConfiguration extends Omit { data: Omit; diff --git a/src/typescript/types.ts b/src/typescript/types.ts index 7772649..253e170 100644 --- a/src/typescript/types.ts +++ b/src/typescript/types.ts @@ -1,4 +1,4 @@ -import { type Snowflake } from "discord.js"; +import { type ApplicationEmoji, type Snowflake } from "discord.js"; import { type AutoCompleteManager, type ButtonManager, @@ -67,3 +67,7 @@ export interface GuildConfiguration { guild: BaseGuildConfiguration; } export type GuildConfigurationType = GuildConfiguration | null; + +export type CustomEmojis> = { + [Key in keyof EmojiEnum]: ApplicationEmoji; +}; \ No newline at end of file diff --git a/src/utils/ComponentUtils.ts b/src/utils/ComponentUtils.ts index 21e7084..e716d22 100644 --- a/src/utils/ComponentUtils.ts +++ b/src/utils/ComponentUtils.ts @@ -1,17 +1,17 @@ import { type APIContainerComponent, type APIEmbed, embedLength, TextDisplayComponent } from "discord.js"; export namespace ComponentUtils { - export const getEmbedContentLength = (embed: APIEmbed) => { + export const getEmbedContentLength = (embed: APIEmbed): number => { return embedLength(embed); }; - export const getContainerContentLength = (container: APIContainerComponent) => { - return container.components.map((component) => { - if (component instanceof TextDisplayComponent) { - return component.content.length; - } + export const getContainerContentLength = (container: APIContainerComponent): number => { + return container.components.reduce((total, component) => { + if (component instanceof TextDisplayComponent) { + return total + component.content.length; + } - return 0; - }).reduce((a, b) => a + b); + return total; + }, 0); }; -} \ No newline at end of file +} diff --git a/src/utils/translation.ts b/src/utils/translation.ts index 4dda657..08ca52a 100644 --- a/src/utils/translation.ts +++ b/src/utils/translation.ts @@ -1,7 +1,7 @@ import { type i18n } from "i18next"; import { type StelliaLocale } from "@typescript/index.js"; -type TranslateArgs = Record; +export type TranslateArgs = Record; let _instance: i18n;