···
1
1
+
# dependencies (bun install)
2
2
+
node_modules
3
3
+
4
4
+
# output
5
5
+
out
6
6
+
dist
7
7
+
*.tgz
8
8
+
9
9
+
# code coverage
10
10
+
coverage
11
11
+
*.lcov
12
12
+
13
13
+
# logs
14
14
+
logs
15
15
+
_.log
16
16
+
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
17
17
+
18
18
+
# dotenv environment variable files
19
19
+
.env
20
20
+
.env.development.local
21
21
+
.env.test.local
22
22
+
.env.production.local
23
23
+
.env.local
24
24
+
25
25
+
# caches
26
26
+
.eslintcache
27
27
+
.cache
28
28
+
*.tsbuildinfo
29
29
+
30
30
+
# IntelliJ based IDEs
31
31
+
.idea
32
32
+
33
33
+
# Finder (MacOS) folder config
34
34
+
.DS_Store
···
1
1
+
# broken
2
2
+
3
3
+
To install dependencies:
4
4
+
5
5
+
```bash
6
6
+
bun install
7
7
+
```
8
8
+
9
9
+
To run:
10
10
+
11
11
+
```bash
12
12
+
bun run index.ts
13
13
+
```
14
14
+
15
15
+
This project was created using `bun init` in bun v1.2.5. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
···
1
1
+
{
2
2
+
"lockfileVersion": 1,
3
3
+
"workspaces": {
4
4
+
"": {
5
5
+
"name": "broken",
6
6
+
"dependencies": {
7
7
+
"discord.js": "^14.18.0",
8
8
+
"status-sharding": "^1.8.12",
9
9
+
},
10
10
+
"devDependencies": {
11
11
+
"@types/bun": "latest",
12
12
+
"@types/node": "^22.13.10",
13
13
+
},
14
14
+
"peerDependencies": {
15
15
+
"typescript": "^5",
16
16
+
},
17
17
+
},
18
18
+
},
19
19
+
"packages": {
20
20
+
"@discordjs/builders": ["@discordjs/builders@1.10.1", "", { "dependencies": { "@discordjs/formatters": "^0.6.0", "@discordjs/util": "^1.1.1", "@sapphire/shapeshift": "^4.0.0", "discord-api-types": "^0.37.119", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.4", "tslib": "^2.6.3" } }, "sha512-OWo1fY4ztL1/M/DUyRPShB4d/EzVfuUvPTRRHRIt/YxBrUYSz0a+JicD5F5zHFoNs2oTuWavxCOVFV1UljHTng=="],
21
21
+
22
22
+
"@discordjs/collection": ["@discordjs/collection@1.5.3", "", {}, "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ=="],
23
23
+
24
24
+
"@discordjs/formatters": ["@discordjs/formatters@0.6.0", "", { "dependencies": { "discord-api-types": "^0.37.114" } }, "sha512-YIruKw4UILt/ivO4uISmrGq2GdMY6EkoTtD0oS0GvkJFRZbTSdPhzYiUILbJ/QslsvC9H9nTgGgnarnIl4jMfw=="],
25
25
+
26
26
+
"@discordjs/rest": ["@discordjs/rest@2.4.3", "", { "dependencies": { "@discordjs/collection": "^2.1.1", "@discordjs/util": "^1.1.1", "@sapphire/async-queue": "^1.5.3", "@sapphire/snowflake": "^3.5.3", "@vladfrangu/async_event_emitter": "^2.4.6", "discord-api-types": "^0.37.119", "magic-bytes.js": "^1.10.0", "tslib": "^2.6.3", "undici": "6.21.1" } }, "sha512-+SO4RKvWsM+y8uFHgYQrcTl/3+cY02uQOH7/7bKbVZsTfrfpoE62o5p+mmV+s7FVhTX82/kQUGGbu4YlV60RtA=="],
27
27
+
28
28
+
"@discordjs/util": ["@discordjs/util@1.1.1", "", {}, "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g=="],
29
29
+
30
30
+
"@discordjs/ws": ["@discordjs/ws@1.2.1", "", { "dependencies": { "@discordjs/collection": "^2.1.0", "@discordjs/rest": "^2.4.3", "@discordjs/util": "^1.1.0", "@sapphire/async-queue": "^1.5.2", "@types/ws": "^8.5.10", "@vladfrangu/async_event_emitter": "^2.2.4", "discord-api-types": "^0.37.119", "tslib": "^2.6.2", "ws": "^8.17.0" } }, "sha512-PBvenhZG56a6tMWF/f4P6f4GxZKJTBG95n7aiGSPTnodmz4N5g60t79rSIAq7ywMbv8A4jFtexMruH+oe51aQQ=="],
31
31
+
32
32
+
"@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw=="],
33
33
+
34
34
+
"@msgpackr-extract/msgpackr-extract-darwin-x64": ["@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw=="],
35
35
+
36
36
+
"@msgpackr-extract/msgpackr-extract-linux-arm": ["@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3", "", { "os": "linux", "cpu": "arm" }, "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw=="],
37
37
+
38
38
+
"@msgpackr-extract/msgpackr-extract-linux-arm64": ["@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg=="],
39
39
+
40
40
+
"@msgpackr-extract/msgpackr-extract-linux-x64": ["@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3", "", { "os": "linux", "cpu": "x64" }, "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg=="],
41
41
+
42
42
+
"@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ=="],
43
43
+
44
44
+
"@sapphire/async-queue": ["@sapphire/async-queue@1.5.5", "", {}, "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg=="],
45
45
+
46
46
+
"@sapphire/shapeshift": ["@sapphire/shapeshift@4.0.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "lodash": "^4.17.21" } }, "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg=="],
47
47
+
48
48
+
"@sapphire/snowflake": ["@sapphire/snowflake@3.5.3", "", {}, "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ=="],
49
49
+
50
50
+
"@types/bun": ["@types/bun@1.2.5", "", { "dependencies": { "bun-types": "1.2.5" } }, "sha512-w2OZTzrZTVtbnJew1pdFmgV99H0/L+Pvw+z1P67HaR18MHOzYnTYOi6qzErhK8HyT+DB782ADVPPE92Xu2/Opg=="],
51
51
+
52
52
+
"@types/node": ["@types/node@22.13.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw=="],
53
53
+
54
54
+
"@types/ws": ["@types/ws@8.5.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw=="],
55
55
+
56
56
+
"@vladfrangu/async_event_emitter": ["@vladfrangu/async_event_emitter@2.4.6", "", {}, "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA=="],
57
57
+
58
58
+
"bun-types": ["bun-types@1.2.5", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-3oO6LVGGRRKI4kHINx5PIdIgnLRb7l/SprhzqXapmoYkFl5m4j6EvALvbDVuuBFaamB46Ap6HCUxIXNLCGy+tg=="],
59
59
+
60
60
+
"detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="],
61
61
+
62
62
+
"discord-api-types": ["discord-api-types@0.37.119", "", {}, "sha512-WasbGFXEB+VQWXlo6IpW3oUv73Yuau1Ig4AZF/m13tXcTKnMpc/mHjpztIlz4+BM9FG9BHQkEXiPto3bKduQUg=="],
63
63
+
64
64
+
"discord.js": ["discord.js@14.18.0", "", { "dependencies": { "@discordjs/builders": "^1.10.1", "@discordjs/collection": "1.5.3", "@discordjs/formatters": "^0.6.0", "@discordjs/rest": "^2.4.3", "@discordjs/util": "^1.1.1", "@discordjs/ws": "^1.2.1", "@sapphire/snowflake": "3.5.3", "discord-api-types": "^0.37.119", "fast-deep-equal": "3.1.3", "lodash.snakecase": "4.1.1", "tslib": "^2.6.3", "undici": "6.21.1" } }, "sha512-SvU5kVUvwunQhN2/+0t55QW/1EHfB1lp0TtLZUSXVHDmyHTrdOj5LRKdR0zLcybaA15F+NtdWuWmGOX9lE+CAw=="],
65
65
+
66
66
+
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
67
67
+
68
68
+
"fast-zlib": ["fast-zlib@2.0.1", "", {}, "sha512-DCoYgNagM2Bt1VIpXpdGnRx4LzqJeYG0oh6Nf/7cWo6elTXkFGMw9CrRCYYUIapYNrozYMoyDRflx9mgT3Awyw=="],
69
69
+
70
70
+
"lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="],
71
71
+
72
72
+
"lodash.snakecase": ["lodash.snakecase@4.1.1", "", {}, "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw=="],
73
73
+
74
74
+
"magic-bytes.js": ["magic-bytes.js@1.10.0", "", {}, "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ=="],
75
75
+
76
76
+
"msgpackr": ["msgpackr@1.11.2", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.2" } }, "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g=="],
77
77
+
78
78
+
"msgpackr-extract": ["msgpackr-extract@3.0.3", "", { "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, "optionalDependencies": { "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" }, "bin": { "download-msgpackr-prebuilds": "bin/download-prebuilds.js" } }, "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA=="],
79
79
+
80
80
+
"net-ipc": ["net-ipc@2.2.0", "", { "dependencies": { "@types/node": "^20.11.5" }, "optionalDependencies": { "fast-zlib": "^2.0.1", "msgpackr": "^1.10.1" } }, "sha512-50B9REw43HZ34A0ZrZ2Sdk0yfo+/AicRaWSXsswpczpjLz5WOYAVo7BM/+J95QOY4n/j1wMsQIY2UWMJh8ijFg=="],
81
81
+
82
82
+
"node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.2.2", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-optional": "optional.js", "node-gyp-build-optional-packages-test": "build-test.js" } }, "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw=="],
83
83
+
84
84
+
"status-sharding": ["status-sharding@1.8.12", "", { "dependencies": { "net-ipc": "^2.2.0" } }, "sha512-BAFwK0Hz4WUk0Y+0epFJZL9ShMgWMD3KYMUZxSRGIU8vDDyZXm6osxOx7bjSykHWcDYA+qbx+R7osm4eoYwrLA=="],
85
85
+
86
86
+
"ts-mixer": ["ts-mixer@6.0.4", "", {}, "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA=="],
87
87
+
88
88
+
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
89
89
+
90
90
+
"typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="],
91
91
+
92
92
+
"undici": ["undici@6.21.1", "", {}, "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ=="],
93
93
+
94
94
+
"undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
95
95
+
96
96
+
"ws": ["ws@8.18.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w=="],
97
97
+
98
98
+
"@discordjs/rest/@discordjs/collection": ["@discordjs/collection@2.1.1", "", {}, "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="],
99
99
+
100
100
+
"@discordjs/ws/@discordjs/collection": ["@discordjs/collection@2.1.1", "", {}, "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="],
101
101
+
102
102
+
"net-ipc/@types/node": ["@types/node@20.17.24", "", { "dependencies": { "undici-types": "~6.19.2" } }, "sha512-d7fGCyB96w9BnWQrOsJtpyiSaBcAYYr75bnK6ZRjDbql2cGLj/3GsL5OYmLPNq76l7Gf2q4Rv9J2o6h5CrD9sA=="],
103
103
+
104
104
+
"net-ipc/@types/node/undici-types": ["undici-types@6.19.8", "", {}, "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="],
105
105
+
}
106
106
+
}
···
1
1
+
{
2
2
+
"name": "broken",
3
3
+
"type": "commonjs",
4
4
+
"private": true,
5
5
+
"scripts": {
6
6
+
"start": "bun --bun run ./src/parent.ts"
7
7
+
},
8
8
+
"devDependencies": {
9
9
+
"@types/bun": "latest",
10
10
+
"@types/node": "^22.13.10"
11
11
+
},
12
12
+
"peerDependencies": {
13
13
+
"typescript": "^5"
14
14
+
},
15
15
+
"dependencies": {
16
16
+
"discord.js": "^14.18.0",
17
17
+
"status-sharding": "^1.8.12"
18
18
+
}
19
19
+
}
···
1
1
+
import { Events, GatewayIntentBits } from "discord.js";
2
2
+
import { ShardingClient } from "status-sharding";
3
3
+
4
4
+
const FAKE_GUILD_ID = "1";
5
5
+
6
6
+
const client = new ShardingClient({
7
7
+
intents: [GatewayIntentBits.Guilds],
8
8
+
presence: {
9
9
+
status: "invisible"
10
10
+
}
11
11
+
});
12
12
+
13
13
+
process.on("uncaughtException", console.log);
14
14
+
process.on("unhandledRejection", console.log);
15
15
+
16
16
+
function evalOnFakeGuild() {
17
17
+
return client.cluster.evalOnGuild(
18
18
+
FAKE_GUILD_ID,
19
19
+
(_c, { }, g) => {
20
20
+
if (!g) return;
21
21
+
return "hello";
22
22
+
}
23
23
+
)
24
24
+
}
25
25
+
26
26
+
client.on(Events.ClientReady, () => {
27
27
+
console.log(client.user!.username);
28
28
+
29
29
+
setTimeout(() => (
30
30
+
evalOnFakeGuild()
31
31
+
), 1_000);
32
32
+
33
33
+
setTimeout(() => (
34
34
+
evalOnFakeGuild()
35
35
+
), 2_000);
36
36
+
37
37
+
setTimeout(() => (
38
38
+
evalOnFakeGuild()
39
39
+
), 5_000);
40
40
+
});
41
41
+
42
42
+
void client.login(process.env.TOKEN);
···
1
1
+
import { join } from "path";
2
2
+
import { ClusterManager } from "status-sharding";
3
3
+
4
4
+
console.log(`Using ${"bun" in process.versions ? "bun" : "node"}`);
5
5
+
console.log("If this demo works properly (aka it breaks) - you WILL have to terminate all processes with a task manager");
6
6
+
7
7
+
const manager = new ClusterManager(join(__dirname, "child.ts"), {
8
8
+
mode: "process",
9
9
+
token: process.env.TOKEN
10
10
+
});
11
11
+
12
12
+
void manager.spawn();
···
1
1
+
{
2
2
+
"compilerOptions": {
3
3
+
"esModuleInterop": true,
4
4
+
"skipLibCheck": true,
5
5
+
"target": "es2023",
6
6
+
"allowJs": true,
7
7
+
"resolveJsonModule": true,
8
8
+
"moduleDetection": "force",
9
9
+
"isolatedModules": true,
10
10
+
11
11
+
"strict": true,
12
12
+
"noImplicitAny": false,
13
13
+
"noImplicitOverride": true,
14
14
+
15
15
+
"module": "CommonJS",
16
16
+
"outDir": "dist",
17
17
+
"sourceMap": true,
18
18
+
19
19
+
"lib": ["es2023"],
20
20
+
21
21
+
"baseUrl": ".",
22
22
+
"paths": {
23
23
+
"~/*": ["src/*"]
24
24
+
}
25
25
+
},
26
26
+
"include": [
27
27
+
"src/**/*"
28
28
+
],
29
29
+
"exclude": [
30
30
+
"node_modules"
31
31
+
]
32
32
+
}