yukimu 1.3.0 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/package.json +49 -5
  2. package/.cache/replit/env/latest +0 -88
  3. package/.cache/replit/env/latest.json +0 -1
  4. package/.cache/replit/modules/nodejs-20.res +0 -1
  5. package/.cache/replit/modules/python-3.11.res +0 -1
  6. package/.cache/replit/modules/replit.res +0 -1
  7. package/.cache/replit/modules.stamp +0 -0
  8. package/.cache/replit/nix/dotreplitenv.json +0 -1
  9. package/.cache/replit/toolchain.json +0 -1
  10. package/.local/state/workflow-logs/7zVU0iVo-fBL1ccMCmELy/configure_your_app.packager.installForAll.0 +0 -9
  11. package/.local/state/workflow-logs/7zVU0iVo-fBL1ccMCmELy/configure_your_app.shell.exec.1 +0 -1
  12. package/.local/state/workflow-logs/KRgHXizaECjWI5nWtS7Dj/configure_your_app.packager.installForAll.0 +0 -1
  13. package/.local/state/workflow-logs/KRgHXizaECjWI5nWtS7Dj/configure_your_app.shell.exec.1 +0 -1
  14. package/.local/state/workflow-logs/U0AinJQVHonnwGjj0RXLn/configure_your_app.packager.installForAll.0 +0 -2
  15. package/.local/state/workflow-logs/jVavLOnv1MqxUvxhMmqER/configure_your_app.packager.installForAll.0 +0 -1
  16. package/.local/state/workflow-logs/jVavLOnv1MqxUvxhMmqER/configure_your_app.shell.exec.1 +0 -1
  17. package/.replit +0 -7
  18. package/.upm/store.json +0 -1
  19. package/dist/ConnectionPool.d.ts +0 -35
  20. package/dist/ConnectionPool.d.ts.map +0 -1
  21. package/dist/ConnectionPool.js +0 -111
  22. package/dist/ConnectionPool.js.map +0 -1
  23. package/dist/Constants.d.ts +0 -20
  24. package/dist/Constants.d.ts.map +0 -1
  25. package/dist/Constants.js +0 -46
  26. package/dist/Constants.js.map +0 -1
  27. package/dist/Node.d.ts +0 -48
  28. package/dist/Node.d.ts.map +0 -1
  29. package/dist/Node.js +0 -308
  30. package/dist/Node.js.map +0 -1
  31. package/dist/Player.d.ts +0 -68
  32. package/dist/Player.d.ts.map +0 -1
  33. package/dist/Player.js +0 -305
  34. package/dist/Player.js.map +0 -1
  35. package/dist/Plugin.d.ts +0 -7
  36. package/dist/Plugin.d.ts.map +0 -1
  37. package/dist/Plugin.js +0 -7
  38. package/dist/Plugin.js.map +0 -1
  39. package/dist/Queue.d.ts +0 -22
  40. package/dist/Queue.d.ts.map +0 -1
  41. package/dist/Queue.js +0 -67
  42. package/dist/Queue.js.map +0 -1
  43. package/dist/Resolver.d.ts +0 -13
  44. package/dist/Resolver.d.ts.map +0 -1
  45. package/dist/Resolver.js +0 -97
  46. package/dist/Resolver.js.map +0 -1
  47. package/dist/Rest.d.ts +0 -23
  48. package/dist/Rest.d.ts.map +0 -1
  49. package/dist/Rest.js +0 -114
  50. package/dist/Rest.js.map +0 -1
  51. package/dist/TrackCache.d.ts +0 -16
  52. package/dist/TrackCache.d.ts.map +0 -1
  53. package/dist/TrackCache.js +0 -40
  54. package/dist/TrackCache.js.map +0 -1
  55. package/dist/WsQueue.d.ts +0 -11
  56. package/dist/WsQueue.d.ts.map +0 -1
  57. package/dist/WsQueue.js +0 -58
  58. package/dist/WsQueue.js.map +0 -1
  59. package/dist/Yukimu.d.ts +0 -51
  60. package/dist/Yukimu.d.ts.map +0 -1
  61. package/dist/Yukimu.js +0 -197
  62. package/dist/Yukimu.js.map +0 -1
  63. package/dist/connector/Connector.d.ts +0 -8
  64. package/dist/connector/Connector.d.ts.map +0 -1
  65. package/dist/connector/Connector.js +0 -11
  66. package/dist/connector/Connector.js.map +0 -1
  67. package/dist/connector/DiscordJS.d.ts +0 -8
  68. package/dist/connector/DiscordJS.d.ts.map +0 -1
  69. package/dist/connector/DiscordJS.js +0 -27
  70. package/dist/connector/DiscordJS.js.map +0 -1
  71. package/dist/connector/Eris.d.ts +0 -8
  72. package/dist/connector/Eris.d.ts.map +0 -1
  73. package/dist/connector/Eris.js +0 -28
  74. package/dist/connector/Eris.js.map +0 -1
  75. package/dist/connector/Oceanic.d.ts +0 -8
  76. package/dist/connector/Oceanic.d.ts.map +0 -1
  77. package/dist/connector/Oceanic.js +0 -25
  78. package/dist/connector/Oceanic.js.map +0 -1
  79. package/dist/errors/YukimuError.d.ts +0 -15
  80. package/dist/errors/YukimuError.d.ts.map +0 -1
  81. package/dist/errors/YukimuError.js +0 -34
  82. package/dist/errors/YukimuError.js.map +0 -1
  83. package/dist/index.d.ts +0 -20
  84. package/dist/index.d.ts.map +0 -1
  85. package/dist/index.js +0 -56
  86. package/dist/index.js.map +0 -1
  87. package/dist/plugins/AutoResume.d.ts +0 -8
  88. package/dist/plugins/AutoResume.d.ts.map +0 -1
  89. package/dist/plugins/AutoResume.js +0 -44
  90. package/dist/plugins/AutoResume.js.map +0 -1
  91. package/dist/plugins/PlayerMoved.d.ts +0 -7
  92. package/dist/plugins/PlayerMoved.d.ts.map +0 -1
  93. package/dist/plugins/PlayerMoved.js +0 -30
  94. package/dist/plugins/PlayerMoved.js.map +0 -1
  95. package/dist/types.d.ts +0 -182
  96. package/dist/types.d.ts.map +0 -1
  97. package/dist/types.js +0 -3
  98. package/dist/types.js.map +0 -1
  99. package/src/ConnectionPool.ts +0 -114
  100. package/src/Constants.ts +0 -45
  101. package/src/Node.ts +0 -302
  102. package/src/Player.ts +0 -332
  103. package/src/Plugin.ts +0 -7
  104. package/src/Queue.ts +0 -66
  105. package/src/Resolver.ts +0 -90
  106. package/src/Rest.ts +0 -127
  107. package/src/TrackCache.ts +0 -46
  108. package/src/WsQueue.ts +0 -58
  109. package/src/Yukimu.ts +0 -213
  110. package/src/connector/Connector.ts +0 -13
  111. package/src/connector/DiscordJS.ts +0 -26
  112. package/src/connector/Eris.ts +0 -24
  113. package/src/connector/Oceanic.ts +0 -22
  114. package/src/errors/YukimuError.ts +0 -31
  115. package/src/index.ts +0 -24
  116. package/src/plugins/AutoResume.ts +0 -37
  117. package/src/plugins/PlayerMoved.ts +0 -26
  118. package/src/types.ts +0 -145
  119. package/tsconfig.json +0 -22
package/package.json CHANGED
@@ -1,15 +1,54 @@
1
1
  {
2
2
  "name": "yukimu",
3
- "version": "1.3.0",
4
- "description": "A powerful Lavalink v3/v4 wrapper for Discord bots — supports YouTube, Spotify, Deezer, Apple Music, JioSaavn, Tidal, SoundCloud and more",
3
+ "version": "2.0.8",
4
+ "description": "A production-grade Lavalink v3/v4 wrapper for Discord bots — supports YouTube, Spotify, Deezer, Apple Music, SoundCloud, Tidal, Bandcamp, Twitch, Vimeo, TikTok, and 15+ more sources with adaptive bitrate, auto-reconnect, and typed events",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist/**/*.js",
16
+ "dist/**/*.d.ts",
17
+ "dist/**/*.d.ts.map",
18
+ "dist/**/*.js.map",
19
+ "README.md",
20
+ "LICENSE"
21
+ ],
7
22
  "scripts": {
8
23
  "build": "tsc",
9
- "dev": "tsc --watch"
24
+ "dev": "tsc --watch",
25
+ "clean": "rm -rf dist",
26
+ "prepublishOnly": "npm run clean && npm run build",
27
+ "typecheck": "tsc --noEmit"
10
28
  },
11
- "keywords": ["lavalink", "discord", "music", "bot", "audio", "spotify", "youtube"],
29
+ "keywords": [
30
+ "lavalink",
31
+ "discord",
32
+ "music",
33
+ "bot",
34
+ "audio",
35
+ "spotify",
36
+ "youtube",
37
+ "soundcloud",
38
+ "deezer",
39
+ "apple-music",
40
+ "tidal",
41
+ "bandcamp",
42
+ "twitch",
43
+ "vimeo",
44
+ "discord-music",
45
+ "lavalink-client",
46
+ "wavelink"
47
+ ],
12
48
  "license": "MIT",
49
+ "engines": {
50
+ "node": ">=18.0.0"
51
+ },
13
52
  "dependencies": {
14
53
  "ws": "^8.17.0"
15
54
  },
@@ -19,6 +58,11 @@
19
58
  "typescript": "^5.4.0"
20
59
  },
21
60
  "peerDependencies": {
22
- "discord.js": "^14.0.0"
61
+ "discord.js": ">=14.0.0"
62
+ },
63
+ "peerDependenciesMeta": {
64
+ "discord.js": {
65
+ "optional": true
66
+ }
23
67
  }
24
68
  }
@@ -1,88 +0,0 @@
1
- declare -gx POETRY_CACHE_DIR=/home/runner/workspace/.cache/pypoetry
2
- declare -gx NIX_LDFLAGS=''
3
- declare -gx XDG_DATA_DIRS=/nix/store/ynhhsbqi66v2pcy3r8l6g391vpasr3sy-zip-3.0/share:/nix/store/y7m7h744qpw8hidkkxnhx7wzgv59w287-replit-runtime-path/share
4
- declare -gx HOSTNAME=d71dd0c5f660
5
- declare -gx REPLIT_HELIUM_ENABLED=true
6
- declare -gx PROMPT_DIRTRIM=2
7
- declare -gx REPL_OWNER_ID=37551296
8
- declare -gx REPLIT_EXPO_DEV_DOMAIN=5880c157-f106-4406-b020-cef4a1c1600e-00-1vwlyfui4qmee.expo.sisko.replit.dev
9
- declare -gx REPLIT_CONNECTORS_HOSTNAME=connectors.replit.com
10
- declare -gx REPLIT_CLUSTER=sisko
11
- declare -gx REPLIT_RTLD_LOADER=1
12
- declare -gx PYTHONUSERBASE=/home/runner/workspace/.pythonlibs
13
- declare -gx UV_PROJECT_ENVIRONMENT=/home/runner/workspace/.pythonlibs
14
- declare -gx PKG_CONFIG_PATH=''
15
- declare -gx REPL_PUBKEYS='{"crosis-ci":"7YlpcYh82oR9NSTtSYtR5jDL4onNzCGJGq6b+9CuZII=","crosis-ci:1":"7YlpcYh82oR9NSTtSYtR5jDL4onNzCGJGq6b+9CuZII=","crosis-ci:latest":"7YlpcYh82oR9NSTtSYtR5jDL4onNzCGJGq6b+9CuZII=","prod":"tGsjlu/BJvWTgvMaX7acuUb7AO1dXOrRiuk7y083RFE=","prod:1":"tGsjlu/BJvWTgvMaX7acuUb7AO1dXOrRiuk7y083RFE=","prod:3":"9+MCOSHQSQlcodXoot8dC8NLhc862nLkx1/VMsbY2h8=","prod:4":"8uGN+vfszlnV93/HCSHlVLG0xddMlPkir1Ni4JKT4+w=","prod:5":"9+MCOSHQSQlcodXoot8dC8NLhc862nLkx1/VMsbY2h8=","prod:latest":"tGsjlu/BJvWTgvMaX7acuUb7AO1dXOrRiuk7y083RFE=","vault-goval-token":"D5jJoMx1Ml54HM92NLgXl+MzptwDqbSsfyFG6f52g9E=","vault-goval-token:1":"D5jJoMx1Ml54HM92NLgXl+MzptwDqbSsfyFG6f52g9E=","vault-goval-token:latest":"D5jJoMx1Ml54HM92NLgXl+MzptwDqbSsfyFG6f52g9E="}'
16
- declare -gx PGUSER=postgres
17
- declare -gx REPLIT_DEV_DOMAIN=5880c157-f106-4406-b020-cef4a1c1600e-00-1vwlyfui4qmee.sisko.replit.dev
18
- declare -gx GIT_EDITOR=replit-git-editor
19
- declare -gx UV_PYTHON_DOWNLOADS=never
20
- declare -gx PGPASSWORD=password
21
- declare -gx NIXPKGS_ALLOW_UNFREE=1
22
- declare -gx REPLIT_ARTIFACT_ROUTER=/nix/store/mcy1kl5dlr0l1gpv6z21bkabyylx0wjb-artifact-router-0.1.0/bin/artifact-router
23
- declare -gx NIX_PROFILES='/nix/var/nix/profiles/default /home/runner/.nix-profile'
24
- declare -gx NIX_PS1='\[\033[01;34m\]\w\[\033[00m\]\$ '
25
- declare -gx POETRY_PIP_NO_ISOLATE=1
26
- declare -gx PGHOST=helium
27
- declare -gx XDG_DATA_HOME=/home/runner/workspace/.local/share
28
- declare -gx COLORTERM=truecolor
29
- declare -gx CFLAGS=''
30
- declare -gx PYTHONPATH=/nix/store/y50fwh2sha400s38m12psfxpvk2c8w39-sitecustomize/lib/python/site-packages:/nix/store/sqs1z4grvym0nv6r3ksdc990m8sr5wgx-python3.11-pip-25.0.1/lib/python3.11/site-packages
31
- declare -gx __EGL_VENDOR_LIBRARY_FILENAMES=/nix/store/l4myp7qn0q9bqgmkqq4vnnii22ql1r68-mesa-25.0.7/share/glvnd/egl_vendor.d/50_mesa.json
32
- declare -gx REPL_HOME=/home/runner/workspace
33
- declare -gx PGDATABASE=heliumdb
34
- declare -gx REPLIT_HEIMDALL_ADDR=https://heimdall.replit.com
35
- declare -gx REPLIT_GITSAFE_EXISTING_REPLS_ENABLED=true
36
- declare -gx npm_config_prefix=/home/runner/workspace/.config/npm/node_global
37
- declare -gx POETRY_VIRTUALENVS_CREATE=0
38
- declare -gx NIX_CFLAGS_COMPILE=''
39
- declare -gx GI_TYPELIB_PATH=''
40
- read -r _new_path <<< "/nix/store/ynhhsbqi66v2pcy3r8l6g391vpasr3sy-zip-3.0/bin:/home/runner/workspace/.pythonlibs/bin:/nix/store/flbj8bq2vznkcwss7sm0ky8rd0k6kar7-python-wrapped-0.1.0/bin:/nix/store/xwg0ddq9mjf6ibwdvp93jsp0cf51z3xr-pip-wrapper/bin:/nix/store/ypy3l3k428kc1kmcw090wlbxi8vj1m8l-poetry-wrapper/bin:/nix/store/6m2322jq0rkfdnv6cm3dq8437djbfv1l-uv-0.9.5/bin:/nix/store/b1kq183rmmiv453fn6f8bfmi1drxvxba-npx/bin:/home/runner/workspace/.config/npm/node_global/bin:/home/runner/workspace/node_modules/.bin:/nix/store/1lagpgadaybvs1n2312gysg2phjk89y8-nodejs-20.20.0-wrapped/bin:/nix/store/1xk3mgscq548ypyrgm2n5kwdii92w9ql-bun-1.3.6/bin:/nix/store/61lr9izijvg30pcribjdxgjxvh3bysp4-pnpm-10.26.1/bin:/nix/store/23078nfww258q1vjxbmyak0svvxcvj4s-yarn-1.22.22/bin:/nix/store/8sa75mbvbn3kxicggyyjggmkigvzddks-prettier-3.6.2/bin:/nix/store/v4a60n406fy3b1w8c9qfkj3bzvhjb4bv-pid1/bin:/nix/store/y7m7h744qpw8hidkkxnhx7wzgv59w287-replit-runtime-path/bin:/home/runner/.nix-profile/bin:/home/runner/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
41
- #PATH=/nix/store/ynhhsbqi66v2pcy3r8l6g391vpasr3sy-zip-3.0/bin:/home/runner/workspace/.pythonlibs/bin:/nix/store/flbj8bq2vznkcwss7sm0ky8rd0k6kar7-python-wrapped-0.1.0/bin:/nix/store/xwg0ddq9mjf6ibwdvp93jsp0cf51z3xr-pip-wrapper/bin:/nix/store/ypy3l3k428kc1kmcw090wlbxi8vj1m8l-poetry-wrapper/bin:/nix/store/6m2322jq0rkfdnv6cm3dq8437djbfv1l-uv-0.9.5/bin:/nix/store/b1kq183rmmiv453fn6f8bfmi1drxvxba-npx/bin:/home/runner/workspace/.config/npm/node_global/bin:/home/runner/workspace/node_modules/.bin:/nix/store/1lagpgadaybvs1n2312gysg2phjk89y8-nodejs-20.20.0-wrapped/bin:/nix/store/1xk3mgscq548ypyrgm2n5kwdii92w9ql-bun-1.3.6/bin:/nix/store/61lr9izijvg30pcribjdxgjxvh3bysp4-pnpm-10.26.1/bin:/nix/store/23078nfww258q1vjxbmyak0svvxcvj4s-yarn-1.22.22/bin:/nix/store/8sa75mbvbn3kxicggyyjggmkigvzddks-prettier-3.6.2/bin:/nix/store/v4a60n406fy3b1w8c9qfkj3bzvhjb4bv-pid1/bin:/nix/store/y7m7h744qpw8hidkkxnhx7wzgv59w287-replit-runtime-path/bin:/home/runner/.nix-profile/bin:/home/runner/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
42
- if [ -e "/run/replit/env/last" ]; then read -r _last_path < <(\grep '^#PATH=' /run/replit/env/last | cut -f 2 -d =); fi
43
- _user_components="$(\tr : $'\n' <<< "${PATH:-}" |\grep -xv -f <(\tr : $'\n' <<< "${_last_path}") |\tr $'\n' :)"
44
- declare -gx PATH="${_user_components}${_new_path}"
45
- declare -gx XDG_CONFIG_HOME=/home/runner/workspace/.config
46
- declare -gx POETRY_INSTALLER_MODERN_INSTALLATION=1
47
- declare -gx POETRY_PIP_USE_PIP_CACHE=1
48
- declare -gx NIX_PATH=/home/runner/.nix-defexpr/channels
49
- declare -gx REPLIT_NIX_CHANNEL=legacy
50
- declare -gx REPLIT_GITSAFE_ENABLED=true
51
- declare -gx DATABASE_URL='postgresql://postgres:password@helium/heliumdb?sslmode=disable'
52
- declare -gx REPLIT_DOMAINS=5880c157-f106-4406-b020-cef4a1c1600e-00-1vwlyfui4qmee.sisko.replit.dev
53
- declare -gx PIP_CONFIG_FILE=/nix/store/z0d7kvaycmw342xmz4xwwybm6p3p0zcs-pip.conf
54
- declare -gx PKG_CONFIG_PATH_FOR_TARGET=''
55
- declare -gx LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
56
- declare -gx PGPORT=5432
57
- declare -gx LDFLAGS=''
58
- declare -gx HOME=/home/runner
59
- declare -gx REPLIT_CONTAINER=gcr.io/marine-cycle-160323/repl-base:3c526f0870c482ef04b1ca6073a0d578ba34e814
60
- declare -gx TZDIR=/etc/zoneinfo
61
- declare -gx CONNECTORS_HOSTNAME=connectors.replit.com
62
- declare -gx POETRY_USE_USER_SITE=1
63
- declare -gx REPLIT_PYTHONPATH=/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages:/nix/store/lxnbcmx15m3yascasf4c9qh7zk19pd2b-python3.11-setuptools-80.9.0/lib/python3.11/site-packages
64
- declare -gx REPL_OWNER=babyprank598
65
- declare -gx USER=runner
66
- declare -gx LANG=en_US.UTF-8
67
- declare -gx REPLIT_RIPPKGS_INDICES=/nix/store/cg6q7dm7h9jp20vwj79ahnbsd9cs6iay-rippkgs-indices
68
- declare -gx REPLIT_BASHRC=/nix/store/lsgsb0ar7rdwa09d1z2dnfjh4188pddk-replit-bashrc/bashrc
69
- declare -gx POETRY_CONFIG_DIR=/nix/store/cyg6h5fbgsfqdimyrc1gflmpx8p0hbkv-poetry-config
70
- declare -gx POETRY_PIP_FROM_PATH=1
71
- declare -gx REPLIT_SUBCLUSTER=interactive
72
- declare -gx REPLIT_GITSAFE_NEW_REPLS_ENABLED=true
73
- declare -gx REPL_ID=5880c157-f106-4406-b020-cef4a1c1600e
74
- declare -gx REPL_LANGUAGE=nix
75
- declare -gx REPLIT_ENVIRONMENT=production
76
- declare -gx REPL_SLUG=workspace
77
- declare -gx REPLIT_PYTHON_LD_LIBRARY_PATH=/nix/store/pya3p1ihjm446jpqpql93542cirqyn23-cpplibs/lib:/nix/store/c2qsgf2832zi4n29gfkqgkjpvmbmxam6-zlib-1.3.1/lib:/nix/store/f7rcazhd826xlcz43il4vafv28888cgj-glib-2.86.3/lib:/nix/store/ii3ybky5dqjikcrw7vdnh1j76ssy0ycm-libx11-1.8.12/lib:/nix/store/zshby6nalhw4mvap0rr97hv042808c2k-libxext-1.3.6/lib:/nix/store/0r6d7iw0q9wgxxj28zy87n1gjwvk0klp-libxinerama-1.1.5/lib:/nix/store/bb5xxw11ndww7iivcmdpxga9n1da24vg-libxcursor-1.2.3/lib:/nix/store/dyn0y5clf5b556yqwmj4841h43hz75p6-libxrandr-1.5.4/lib:/nix/store/x1f9a0qsj6a1y5nf178naagm2vbxnazc-libxi-1.8.2/lib:/nix/store/pv432a54y6di3n12iqix2dglkswvq1px-libxxf86vm-1.1.6/lib
78
- declare -gx REPLIT_CLI=/nix/store/pjjdi4mgzxj5r4j4w5vqiv2wli2dggi7-replit-cli-0.0.1/bin/replit
79
- declare -gx DISPLAY=:0
80
- declare -gx LIBGL_DRIVERS_PATH=/nix/store/l4myp7qn0q9bqgmkqq4vnnii22ql1r68-mesa-25.0.7/lib/dri
81
- declare -gx DOCKER_CONFIG=/home/runner/workspace/.config/docker
82
- declare -gx GIT_ASKPASS=replit-git-askpass
83
- declare -gx POETRY_DOWNLOAD_WITH_CURL=1
84
- declare -gx UV_PYTHON_PREFERENCE=only-system
85
- declare -gx POETRY_PIP_NO_PREFIX=1
86
- declare -gx REPLIT_PID1_VERSION=0.0.0-625c12a
87
- declare -gx XDG_CACHE_HOME=/home/runner/workspace/.cache
88
- declare -gx REPLIT_LD_AUDIT=/nix/store/sj11ljhx4n79h9g0167f8lg8hp7n545m-replit_rtld_loader-1/rtld_loader.so
@@ -1 +0,0 @@
1
- {"environment":{"CFLAGS":"","COLORTERM":"truecolor","CONNECTORS_HOSTNAME":"connectors.replit.com","DATABASE_URL":"postgresql://postgres:password@helium/heliumdb?sslmode=disable","DISPLAY":":0","DOCKER_CONFIG":"/home/runner/workspace/.config/docker","GIT_ASKPASS":"replit-git-askpass","GIT_EDITOR":"replit-git-editor","GI_TYPELIB_PATH":"","HOME":"/home/runner","HOSTNAME":"d71dd0c5f660","LANG":"en_US.UTF-8","LDFLAGS":"","LIBGL_DRIVERS_PATH":"/nix/store/l4myp7qn0q9bqgmkqq4vnnii22ql1r68-mesa-25.0.7/lib/dri","LOCALE_ARCHIVE":"/usr/lib/locale/locale-archive","NIXPKGS_ALLOW_UNFREE":"1","NIX_CFLAGS_COMPILE":"","NIX_LDFLAGS":"","NIX_PATH":"/home/runner/.nix-defexpr/channels","NIX_PROFILES":"/nix/var/nix/profiles/default /home/runner/.nix-profile","NIX_PS1":"\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$ ","PATH":"/nix/store/ynhhsbqi66v2pcy3r8l6g391vpasr3sy-zip-3.0/bin:/home/runner/workspace/.pythonlibs/bin:/nix/store/flbj8bq2vznkcwss7sm0ky8rd0k6kar7-python-wrapped-0.1.0/bin:/nix/store/xwg0ddq9mjf6ibwdvp93jsp0cf51z3xr-pip-wrapper/bin:/nix/store/ypy3l3k428kc1kmcw090wlbxi8vj1m8l-poetry-wrapper/bin:/nix/store/6m2322jq0rkfdnv6cm3dq8437djbfv1l-uv-0.9.5/bin:/nix/store/b1kq183rmmiv453fn6f8bfmi1drxvxba-npx/bin:/home/runner/workspace/.config/npm/node_global/bin:/home/runner/workspace/node_modules/.bin:/nix/store/1lagpgadaybvs1n2312gysg2phjk89y8-nodejs-20.20.0-wrapped/bin:/nix/store/1xk3mgscq548ypyrgm2n5kwdii92w9ql-bun-1.3.6/bin:/nix/store/61lr9izijvg30pcribjdxgjxvh3bysp4-pnpm-10.26.1/bin:/nix/store/23078nfww258q1vjxbmyak0svvxcvj4s-yarn-1.22.22/bin:/nix/store/8sa75mbvbn3kxicggyyjggmkigvzddks-prettier-3.6.2/bin:/nix/store/v4a60n406fy3b1w8c9qfkj3bzvhjb4bv-pid1/bin:/nix/store/y7m7h744qpw8hidkkxnhx7wzgv59w287-replit-runtime-path/bin:/home/runner/.nix-profile/bin:/home/runner/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","PGDATABASE":"heliumdb","PGHOST":"helium","PGPASSWORD":"password","PGPORT":"5432","PGUSER":"postgres","PIP_CONFIG_FILE":"/nix/store/z0d7kvaycmw342xmz4xwwybm6p3p0zcs-pip.conf","PKG_CONFIG_PATH":"","PKG_CONFIG_PATH_FOR_TARGET":"","POETRY_CACHE_DIR":"/home/runner/workspace/.cache/pypoetry","POETRY_CONFIG_DIR":"/nix/store/cyg6h5fbgsfqdimyrc1gflmpx8p0hbkv-poetry-config","POETRY_DOWNLOAD_WITH_CURL":"1","POETRY_INSTALLER_MODERN_INSTALLATION":"1","POETRY_PIP_FROM_PATH":"1","POETRY_PIP_NO_ISOLATE":"1","POETRY_PIP_NO_PREFIX":"1","POETRY_PIP_USE_PIP_CACHE":"1","POETRY_USE_USER_SITE":"1","POETRY_VIRTUALENVS_CREATE":"0","PROMPT_DIRTRIM":"2","PYTHONPATH":"/nix/store/y50fwh2sha400s38m12psfxpvk2c8w39-sitecustomize/lib/python/site-packages:/nix/store/sqs1z4grvym0nv6r3ksdc990m8sr5wgx-python3.11-pip-25.0.1/lib/python3.11/site-packages","PYTHONUSERBASE":"/home/runner/workspace/.pythonlibs","REPLIT_ARTIFACT_ROUTER":"/nix/store/mcy1kl5dlr0l1gpv6z21bkabyylx0wjb-artifact-router-0.1.0/bin/artifact-router","REPLIT_BASHRC":"/nix/store/lsgsb0ar7rdwa09d1z2dnfjh4188pddk-replit-bashrc/bashrc","REPLIT_CLI":"/nix/store/pjjdi4mgzxj5r4j4w5vqiv2wli2dggi7-replit-cli-0.0.1/bin/replit","REPLIT_CLUSTER":"sisko","REPLIT_CONNECTORS_HOSTNAME":"connectors.replit.com","REPLIT_CONTAINER":"gcr.io/marine-cycle-160323/repl-base:3c526f0870c482ef04b1ca6073a0d578ba34e814","REPLIT_DEV_DOMAIN":"5880c157-f106-4406-b020-cef4a1c1600e-00-1vwlyfui4qmee.sisko.replit.dev","REPLIT_DOMAINS":"5880c157-f106-4406-b020-cef4a1c1600e-00-1vwlyfui4qmee.sisko.replit.dev","REPLIT_ENVIRONMENT":"production","REPLIT_EXPO_DEV_DOMAIN":"5880c157-f106-4406-b020-cef4a1c1600e-00-1vwlyfui4qmee.expo.sisko.replit.dev","REPLIT_GITSAFE_ENABLED":"true","REPLIT_GITSAFE_EXISTING_REPLS_ENABLED":"true","REPLIT_GITSAFE_NEW_REPLS_ENABLED":"true","REPLIT_HEIMDALL_ADDR":"https://heimdall.replit.com","REPLIT_HELIUM_ENABLED":"true","REPLIT_LD_AUDIT":"/nix/store/sj11ljhx4n79h9g0167f8lg8hp7n545m-replit_rtld_loader-1/rtld_loader.so","REPLIT_NIX_CHANNEL":"legacy","REPLIT_PID1_VERSION":"0.0.0-625c12a","REPLIT_PYTHONPATH":"/home/runner/workspace/.pythonlibs/lib/python3.11/site-packages:/nix/store/lxnbcmx15m3yascasf4c9qh7zk19pd2b-python3.11-setuptools-80.9.0/lib/python3.11/site-packages","REPLIT_PYTHON_LD_LIBRARY_PATH":"/nix/store/pya3p1ihjm446jpqpql93542cirqyn23-cpplibs/lib:/nix/store/c2qsgf2832zi4n29gfkqgkjpvmbmxam6-zlib-1.3.1/lib:/nix/store/f7rcazhd826xlcz43il4vafv28888cgj-glib-2.86.3/lib:/nix/store/ii3ybky5dqjikcrw7vdnh1j76ssy0ycm-libx11-1.8.12/lib:/nix/store/zshby6nalhw4mvap0rr97hv042808c2k-libxext-1.3.6/lib:/nix/store/0r6d7iw0q9wgxxj28zy87n1gjwvk0klp-libxinerama-1.1.5/lib:/nix/store/bb5xxw11ndww7iivcmdpxga9n1da24vg-libxcursor-1.2.3/lib:/nix/store/dyn0y5clf5b556yqwmj4841h43hz75p6-libxrandr-1.5.4/lib:/nix/store/x1f9a0qsj6a1y5nf178naagm2vbxnazc-libxi-1.8.2/lib:/nix/store/pv432a54y6di3n12iqix2dglkswvq1px-libxxf86vm-1.1.6/lib","REPLIT_RIPPKGS_INDICES":"/nix/store/cg6q7dm7h9jp20vwj79ahnbsd9cs6iay-rippkgs-indices","REPLIT_RTLD_LOADER":"1","REPLIT_SUBCLUSTER":"interactive","REPL_HOME":"/home/runner/workspace","REPL_ID":"5880c157-f106-4406-b020-cef4a1c1600e","REPL_LANGUAGE":"nix","REPL_OWNER":"babyprank598","REPL_OWNER_ID":"37551296","REPL_PUBKEYS":"{\"crosis-ci\":\"7YlpcYh82oR9NSTtSYtR5jDL4onNzCGJGq6b+9CuZII=\",\"crosis-ci:1\":\"7YlpcYh82oR9NSTtSYtR5jDL4onNzCGJGq6b+9CuZII=\",\"crosis-ci:latest\":\"7YlpcYh82oR9NSTtSYtR5jDL4onNzCGJGq6b+9CuZII=\",\"prod\":\"tGsjlu/BJvWTgvMaX7acuUb7AO1dXOrRiuk7y083RFE=\",\"prod:1\":\"tGsjlu/BJvWTgvMaX7acuUb7AO1dXOrRiuk7y083RFE=\",\"prod:3\":\"9+MCOSHQSQlcodXoot8dC8NLhc862nLkx1/VMsbY2h8=\",\"prod:4\":\"8uGN+vfszlnV93/HCSHlVLG0xddMlPkir1Ni4JKT4+w=\",\"prod:5\":\"9+MCOSHQSQlcodXoot8dC8NLhc862nLkx1/VMsbY2h8=\",\"prod:latest\":\"tGsjlu/BJvWTgvMaX7acuUb7AO1dXOrRiuk7y083RFE=\",\"vault-goval-token\":\"D5jJoMx1Ml54HM92NLgXl+MzptwDqbSsfyFG6f52g9E=\",\"vault-goval-token:1\":\"D5jJoMx1Ml54HM92NLgXl+MzptwDqbSsfyFG6f52g9E=\",\"vault-goval-token:latest\":\"D5jJoMx1Ml54HM92NLgXl+MzptwDqbSsfyFG6f52g9E=\"}","REPL_SLUG":"workspace","TZDIR":"/etc/zoneinfo","USER":"runner","UV_PROJECT_ENVIRONMENT":"/home/runner/workspace/.pythonlibs","UV_PYTHON_DOWNLOADS":"never","UV_PYTHON_PREFERENCE":"only-system","XDG_CACHE_HOME":"/home/runner/workspace/.cache","XDG_CONFIG_HOME":"/home/runner/workspace/.config","XDG_DATA_DIRS":"/nix/store/ynhhsbqi66v2pcy3r8l6g391vpasr3sy-zip-3.0/share:/nix/store/y7m7h744qpw8hidkkxnhx7wzgv59w287-replit-runtime-path/share","XDG_DATA_HOME":"/home/runner/workspace/.local/share","__EGL_VENDOR_LIBRARY_FILENAMES":"/nix/store/l4myp7qn0q9bqgmkqq4vnnii22ql1r68-mesa-25.0.7/share/glvnd/egl_vendor.d/50_mesa.json","npm_config_prefix":"/home/runner/workspace/.config/npm/node_global"}}
@@ -1 +0,0 @@
1
- {"type":"resolve","resolvedModuleId":"nodejs-20","inputHash":"","resolutionPath":["nodejs-20"],"error":"","Changed":true}
@@ -1 +0,0 @@
1
- {"type":"resolve","resolvedModuleId":"python-3.11","inputHash":"","resolutionPath":["python-3.11"],"error":"","Changed":true}
@@ -1 +0,0 @@
1
- {"type":"resolve","resolvedModuleId":"replit","inputHash":"","resolutionPath":["replit"],"error":"","Changed":true}
File without changes
@@ -1 +0,0 @@
1
- {"channel":"","channel_nix_path":"/nix/store/42iv6n6l2izliq7lhy3gsaqsycj6np1h-nixpkgs/nixpkgs","env":{"CFLAGS":"","GI_TYPELIB_PATH":"","LDFLAGS":"","NIX_CFLAGS_COMPILE":"","NIX_LDFLAGS":"","PATH":"/nix/store/ynhhsbqi66v2pcy3r8l6g391vpasr3sy-zip-3.0/bin","PKG_CONFIG_PATH":"","PKG_CONFIG_PATH_FOR_TARGET":"","REPLIT_LD_LIBRARY_PATH":"","XDG_DATA_DIRS":"/nix/store/ynhhsbqi66v2pcy3r8l6g391vpasr3sy-zip-3.0/share"},"packages":["zip"]}
@@ -1 +0,0 @@
1
- {"runs":[{"id":"module:nodejs-20/runner:nodeJS", "name":"Node.js", "fileParam":true, "language":"javascript", "fileTypeAttrs":{}, "displayVersion":"20.20.0", "run":{"command":{"args":["sh", "-c", "/nix/store/1lagpgadaybvs1n2312gysg2phjk89y8-nodejs-20.20.0-wrapped/bin/node $file"]}}, "defaultEntrypoints":["index.js", "main.js"]}, {"id":"module:python-3.11/runner:python", "name":"Python 3.11", "fileParam":true, "language":"python3", "fileTypeAttrs":{}, "displayVersion":"3.11.14", "run":{"command":{"args":["sh", "-c", "/nix/store/s4ckxp77ljlikarkka88ba7qr5mlka97-python3-wrapper/bin/python3 $file"]}}, "defaultEntrypoints":["main.py", "app.py", "run.py"]}], "languageServers":[{"id":"module:python-3.11/languageServer:ty", "name":"ty", "language":"python3", "fileTypeAttrs":{}, "config":{"startCommand":{"args":["sh", "-c", "/nix/store/775cppcslcvxd4x2v8x4k78xw94zg88a-ty-0.0.21/bin/ty server"]}}, "displayVersion":"0.0.21"}, {"id":"module:replit/languageServer:dotreplit-lsp", "name":".replit LSP", "language":"dotreplit", "fileTypeAttrs":{}, "config":{"startCommand":{"args":["sh", "-c", "/nix/store/qq4mijbp008lc0r1h42jy3fhwakqz6nf-taplo-0.patched/bin/taplo lsp -c /nix/store/7nplpw32gfk08i6d1v3wmwj3b1qd0apw-taplo-config.toml stdio"]}}}, {"id":"module:nodejs-20/languageServer:typescript-language-server", "name":"TypeScript Language Server", "language":"javascript", "fileTypeAttrs":{"extensions":[".js", ".jsx", ".ts", ".tsx", ".mjs", ".mts", ".cjs", ".cts", ".es6", ".json"]}, "config":{"startCommand":{"args":["sh", "-c", "/nix/store/pkx0287w1vx971gahfkggqa59v35d4bm-typescript-language-server-5.1.3/bin/typescript-language-server --stdio"]}, "initializationOptionsJson":"{\"disableAutomaticTypingAcquisition\":true,\"maxTsServerMemory\":1536,\"tsserver\":{\"fallbackPath\":\"/nix/store/6wjhsy7rpyxbpl65grd5a8aq96b50i8a-typescript-5.9.3/lib/node_modules/typescript/lib\"}}"}, "displayVersion":"5.1.3"}], "packagers":[{"id":"module:python-3.11/packager:upmPython", "name":"Python packager", "language":"python3", "packageSearch":true, "guessImports":true}, {"id":"module:nodejs-20/packager:upmNodejs", "name":"Node.js packager (npm, yarn, pnpm, bun)", "language":"nodejs", "packageSearch":true, "guessImports":true}], "formatters":[{"id":"module:nodejs-20/formatter:prettier", "name":"Prettier", "startCommand":{"args":["/nix/store/h0yq53vj17w8bqs8bdldg2kg1llkqi7i-run-prettier/bin/run-prettier"], "lifecycle":"STDIN", "splitStderr":true}, "fileTypeAttrs":{"extensions":[".js", ".jsx", ".ts", ".tsx", ".json", ".html"]}, "displayVersion":"3.6.2", "supportsRangeFormatting":true}, {"id":"module:nodejs-20/languageServer:typescript-language-server", "name":"TypeScript Language Server", "fileTypeAttrs":{"extensions":[".js", ".jsx", ".ts", ".tsx", ".mjs", ".mts", ".cjs", ".cts", ".es6", ".json"]}, "displayVersion":"5.1.3"}, {"id":"module:python-3.11/formatter:ruff", "name":"Ruff", "startCommand":{"args":["/nix/store/mqvkfmbcri2jllqsjmqcgr353i4j6k7r-run-ruff-format/bin/run-ruff-format"], "lifecycle":"STDIN", "splitStderr":true}, "fileTypeAttrs":{"extensions":[".py"]}, "displayVersion":"0.14.11"}, {"id":"module:python-3.11/languageServer:ty", "name":"ty", "fileTypeAttrs":{}, "displayVersion":"0.0.21"}, {"id":"module:replit/languageServer:dotreplit-lsp", "name":".replit LSP", "fileTypeAttrs":{}}]}
@@ -1,9 +0,0 @@
1
- --> npm install
2
- ⠙⠹⠸⠼⠴
3
- up to date, audited 28 packages in 657ms
4
- ⠴
5
- ⠴7 packages are looking for funding
6
- ⠴ run `npm fund` for details
7
- ⠴
8
- found 0 vulnerabilities
9
- ⠴
@@ -1 +0,0 @@
1
- Please use the Workflows pane to configure your app. For more info, see: https://docs.replit.com/replit-workspace/workflows#creating-workflows
@@ -1 +0,0 @@
1
- Please use the Workflows pane to configure your app. For more info, see: https://docs.replit.com/replit-workspace/workflows#creating-workflows
@@ -1,2 +0,0 @@
1
- --> npm install
2
- ⠙⠹
@@ -1 +0,0 @@
1
- Please use the Workflows pane to configure your app. For more info, see: https://docs.replit.com/replit-workspace/workflows#creating-workflows
package/.replit DELETED
@@ -1,7 +0,0 @@
1
- modules = ["nodejs-20", "python-3.11"]
2
-
3
- [agent]
4
- expertMode = true
5
-
6
- [nix]
7
- packages = ["zip"]
package/.upm/store.json DELETED
@@ -1 +0,0 @@
1
- {"version":2,"languages":{"nodejs-npm":{},"python3-uv":{}}}
@@ -1,35 +0,0 @@
1
- import type { Yukimu } from "./Yukimu";
2
- export interface VoiceConnection {
3
- guildId: string;
4
- channelId: string;
5
- sessionId: string | null;
6
- token: string | null;
7
- endpoint: string | null;
8
- timeout: ReturnType<typeof setTimeout> | null;
9
- retryTimeout: ReturnType<typeof setTimeout> | null;
10
- connected: boolean;
11
- retries: number;
12
- }
13
- export declare class ConnectionPool {
14
- private readonly manager;
15
- private readonly connections;
16
- constructor(manager: Yukimu);
17
- add(guildId: string, channelId: string): VoiceConnection;
18
- get(guildId: string): VoiceConnection | undefined;
19
- remove(guildId: string): void;
20
- has(guildId: string): boolean;
21
- updateSession(guildId: string, sessionId: string, channelId?: string): void;
22
- updateServer(guildId: string, token: string, endpoint: string): void;
23
- markConnected(guildId: string): void;
24
- isReady(guildId: string): boolean;
25
- getVoiceState(guildId: string): {
26
- token: string;
27
- endpoint: string;
28
- sessionId: string;
29
- channelId?: string;
30
- } | null;
31
- private startTimeout;
32
- private handleConnectionFailure;
33
- get size(): number;
34
- }
35
- //# sourceMappingURL=ConnectionPool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionPool.d.ts","sourceRoot":"","sources":["../src/ConnectionPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IAC9C,YAAY,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;gBAE3D,OAAO,EAAE,MAAM;IAEpB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe;IAcxD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAEjD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ7B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAE7B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAO3E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOpE,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASpC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKjC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMxH,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,uBAAuB;IAqB/B,IAAI,IAAI,IAAI,MAAM,CAAkC;CACrD"}
@@ -1,111 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConnectionPool = void 0;
4
- const MAX_VOICE_RETRIES = 3;
5
- const VOICE_RETRY_DELAY = 5000;
6
- class ConnectionPool {
7
- constructor(manager) {
8
- this.connections = new Map();
9
- this.manager = manager;
10
- }
11
- add(guildId, channelId) {
12
- const existing = this.connections.get(guildId);
13
- if (existing) {
14
- existing.channelId = channelId;
15
- return existing;
16
- }
17
- const conn = {
18
- guildId, channelId,
19
- sessionId: null, token: null, endpoint: null,
20
- timeout: null, retryTimeout: null,
21
- connected: false, retries: 0,
22
- };
23
- this.connections.set(guildId, conn);
24
- this.startTimeout(conn);
25
- return conn;
26
- }
27
- get(guildId) { return this.connections.get(guildId); }
28
- remove(guildId) {
29
- const conn = this.connections.get(guildId);
30
- if (!conn)
31
- return;
32
- if (conn.timeout)
33
- clearTimeout(conn.timeout);
34
- if (conn.retryTimeout)
35
- clearTimeout(conn.retryTimeout);
36
- this.connections.delete(guildId);
37
- }
38
- has(guildId) { return this.connections.has(guildId); }
39
- updateSession(guildId, sessionId, channelId) {
40
- const conn = this.connections.get(guildId);
41
- if (!conn)
42
- return;
43
- conn.sessionId = sessionId;
44
- if (channelId)
45
- conn.channelId = channelId;
46
- }
47
- updateServer(guildId, token, endpoint) {
48
- const conn = this.connections.get(guildId);
49
- if (!conn)
50
- return;
51
- conn.token = token;
52
- conn.endpoint = endpoint;
53
- }
54
- markConnected(guildId) {
55
- const conn = this.connections.get(guildId);
56
- if (!conn)
57
- return;
58
- conn.connected = true;
59
- conn.retries = 0;
60
- if (conn.timeout) {
61
- clearTimeout(conn.timeout);
62
- conn.timeout = null;
63
- }
64
- if (conn.retryTimeout) {
65
- clearTimeout(conn.retryTimeout);
66
- conn.retryTimeout = null;
67
- }
68
- }
69
- isReady(guildId) {
70
- const conn = this.connections.get(guildId);
71
- return !!(conn?.sessionId && conn?.token && conn?.endpoint);
72
- }
73
- getVoiceState(guildId) {
74
- const conn = this.connections.get(guildId);
75
- if (!conn?.sessionId || !conn?.token || !conn?.endpoint)
76
- return null;
77
- return { token: conn.token, endpoint: conn.endpoint, sessionId: conn.sessionId, channelId: conn.channelId };
78
- }
79
- startTimeout(conn) {
80
- const timeoutMs = this.manager.options.voiceConnectionTimeout ?? 15000;
81
- if (conn.timeout)
82
- clearTimeout(conn.timeout);
83
- conn.timeout = setTimeout(() => {
84
- if (!conn.connected)
85
- this.handleConnectionFailure(conn);
86
- }, timeoutMs);
87
- }
88
- handleConnectionFailure(conn) {
89
- if (conn.retries >= MAX_VOICE_RETRIES) {
90
- const player = this.manager.players.get(conn.guildId);
91
- if (player) {
92
- this.manager.emit("playerError", player, new Error(`Voice connection failed after ${MAX_VOICE_RETRIES} retries`));
93
- this.manager.destroyPlayer(conn.guildId).catch(() => { });
94
- }
95
- this.remove(conn.guildId);
96
- return;
97
- }
98
- conn.retries++;
99
- console.warn(`[Yukimu] Voice retry ${conn.retries}/${MAX_VOICE_RETRIES} for guild ${conn.guildId}`);
100
- conn.retryTimeout = setTimeout(() => {
101
- this.manager.connector.sendPayload(conn.guildId, {
102
- op: 4,
103
- d: { guild_id: conn.guildId, channel_id: conn.channelId, self_deaf: true, self_mute: false },
104
- });
105
- this.startTimeout(conn);
106
- }, VOICE_RETRY_DELAY * conn.retries);
107
- }
108
- get size() { return this.connections.size; }
109
- }
110
- exports.ConnectionPool = ConnectionPool;
111
- //# sourceMappingURL=ConnectionPool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionPool.js","sourceRoot":"","sources":["../src/ConnectionPool.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- export declare const VERSION = "1.3.0";
2
- export declare const CLIENT_NAME = "Yukimu/1.3.0";
3
- export declare enum State {
4
- CONNECTING = 0,
5
- NEARLY = 1,
6
- CONNECTED = 2,
7
- DISCONNECTING = 3,
8
- DISCONNECTED = 4,
9
- RECONNECTING = 5
10
- }
11
- export declare enum PlayerState {
12
- CONNECTING = 0,
13
- CONNECTED = 1,
14
- DISCONNECTING = 2,
15
- DISCONNECTED = 3
16
- }
17
- export declare const SOURCE_PREFIXES: Record<string, string>;
18
- export declare const URL_PATTERNS: Record<string, RegExp[]>;
19
- export declare const STOPPED_REASONS: Set<string>;
20
- //# sourceMappingURL=Constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,WAAW,iBAAsB,CAAC;AAE/C,oBAAY,KAAK;IACf,UAAU,IAAI;IACd,MAAM,IAAI;IACV,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,YAAY,IAAI;IAChB,YAAY,IAAI;CACjB;AAED,oBAAY,WAAW;IACrB,UAAU,IAAI;IACd,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,YAAY,IAAI;CACjB;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUlD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CASjD,CAAC;AAEF,eAAO,MAAM,eAAe,aAE1B,CAAC"}
package/dist/Constants.js DELETED
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STOPPED_REASONS = exports.URL_PATTERNS = exports.SOURCE_PREFIXES = exports.PlayerState = exports.State = exports.CLIENT_NAME = exports.VERSION = void 0;
4
- exports.VERSION = "1.3.0";
5
- exports.CLIENT_NAME = `Yukimu/${exports.VERSION}`;
6
- var State;
7
- (function (State) {
8
- State[State["CONNECTING"] = 0] = "CONNECTING";
9
- State[State["NEARLY"] = 1] = "NEARLY";
10
- State[State["CONNECTED"] = 2] = "CONNECTED";
11
- State[State["DISCONNECTING"] = 3] = "DISCONNECTING";
12
- State[State["DISCONNECTED"] = 4] = "DISCONNECTED";
13
- State[State["RECONNECTING"] = 5] = "RECONNECTING";
14
- })(State || (exports.State = State = {}));
15
- var PlayerState;
16
- (function (PlayerState) {
17
- PlayerState[PlayerState["CONNECTING"] = 0] = "CONNECTING";
18
- PlayerState[PlayerState["CONNECTED"] = 1] = "CONNECTED";
19
- PlayerState[PlayerState["DISCONNECTING"] = 2] = "DISCONNECTING";
20
- PlayerState[PlayerState["DISCONNECTED"] = 3] = "DISCONNECTED";
21
- })(PlayerState || (exports.PlayerState = PlayerState = {}));
22
- exports.SOURCE_PREFIXES = {
23
- youtube: "ytsearch",
24
- youtubemusic: "ytmsearch",
25
- spotify: "spsearch",
26
- deezer: "dzsearch",
27
- applemusic: "amsearch",
28
- soundcloud: "scsearch",
29
- tidal: "tdsearch",
30
- jiosaavn: "jssearch",
31
- yandexmusic: "ymsearch",
32
- };
33
- exports.URL_PATTERNS = {
34
- youtube: [/^https?:\/\/(www\.)?(youtube\.com|youtu\.be)\/.+/, /^https?:\/\/music\.youtube\.com\/.+/],
35
- spotify: [/^https?:\/\/open\.spotify\.com\/(track|album|playlist|artist)\/.+/],
36
- soundcloud: [/^https?:\/\/(www\.)?soundcloud\.com\/.+/],
37
- deezer: [/^https?:\/\/(www\.)?deezer\.com\/(track|album|playlist)\/.+/],
38
- applemusic: [/^https?:\/\/music\.apple\.com\/.+/],
39
- tidal: [/^https?:\/\/(www\.)?tidal\.com\/.+/],
40
- jiosaavn: [/^https?:\/\/(www\.)?jiosaavn\.com\/.+/],
41
- yandexmusic: [/^https?:\/\/music\.yandex\.(ru|com)\/.+/],
42
- };
43
- exports.STOPPED_REASONS = new Set([
44
- "replaced", "stopped", "REPLACED", "STOPPED",
45
- ]);
46
- //# sourceMappingURL=Constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,WAAW,GAAG,UAAU,eAAO,EAAE,CAAC;AAE/C,IAAY,KAOX;AAPD,WAAY,KAAK;IACf,6CAAc,CAAA;IACd,qCAAU,CAAA;IACV,2CAAa,CAAA;IACb,mDAAiB,CAAA;IACjB,iDAAgB,CAAA;IAChB,iDAAgB,CAAA;AAClB,CAAC,EAPW,KAAK,qBAAL,KAAK,QAOhB;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,yDAAc,CAAA;IACd,uDAAa,CAAA;IACb,+DAAiB,CAAA;IACjB,6DAAgB,CAAA;AAClB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAEY,QAAA,eAAe,GAA2B;IACrD,OAAO,EAAE,UAAU;IACnB,YAAY,EAAE,WAAW;IACzB,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,UAAU;IACtB,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,UAAU;CACxB,CAAC;AAEW,QAAA,YAAY,GAA6B;IACpD,OAAO,EAAE,CAAC,kDAAkD,EAAE,qCAAqC,CAAC;IACpG,OAAO,EAAE,CAAC,mEAAmE,CAAC;IAC9E,UAAU,EAAE,CAAC,yCAAyC,CAAC;IACvD,MAAM,EAAE,CAAC,6DAA6D,CAAC;IACvE,UAAU,EAAE,CAAC,mCAAmC,CAAC;IACjD,KAAK,EAAE,CAAC,oCAAoC,CAAC;IAC7C,QAAQ,EAAE,CAAC,uCAAuC,CAAC;IACnD,WAAW,EAAE,CAAC,yCAAyC,CAAC;CACzD,CAAC;AAEW,QAAA,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS;CAC7C,CAAC,CAAC"}
package/dist/Node.d.ts DELETED
@@ -1,48 +0,0 @@
1
- import WebSocket from "ws";
2
- import { Rest } from "./Rest";
3
- import { WsQueue } from "./WsQueue";
4
- import { State } from "./Constants";
5
- import type { Yukimu } from "./Yukimu";
6
- import type { NodeOptions, NodeStats, NodeInfo, SearchResult } from "./types";
7
- export declare class Node {
8
- readonly manager: Yukimu;
9
- readonly options: NodeOptions;
10
- readonly rest: Rest;
11
- readonly wsQueue: WsQueue;
12
- readonly version: 3 | 4;
13
- ws: WebSocket | null;
14
- state: State;
15
- stats: NodeStats | null;
16
- info: NodeInfo | null;
17
- sessionId: string | null;
18
- resumed: boolean;
19
- penalties: number;
20
- ping: number;
21
- private restQueue;
22
- private reconnectAttempts;
23
- private reconnectTimeout?;
24
- private heartbeatInterval?;
25
- private lastHeartbeatAt;
26
- constructor(manager: Yukimu, options: NodeOptions);
27
- get connected(): boolean;
28
- get wsUrl(): string;
29
- get wsHeaders(): Record<string, string>;
30
- calculatePenalties(): number;
31
- connect(): void;
32
- destroy(reconnect?: boolean): void;
33
- private onOpen;
34
- private onMessage;
35
- private onClose;
36
- private onError;
37
- private startHeartbeat;
38
- private scheduleReconnect;
39
- private movePlayers;
40
- private reconnectPlayers;
41
- private handlePlayerUpdate;
42
- private handleEvent;
43
- send(data: Record<string, any>): Promise<void>;
44
- enqueueRest<T>(fn: () => Promise<T>): Promise<T>;
45
- loadTracks(identifier: string): Promise<SearchResult>;
46
- playerPath(guildId: string): string;
47
- }
48
- //# sourceMappingURL=Node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../src/Node.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAS,YAAY,EAAqB,MAAM,SAAS,CAAC;AAKxG,qBAAa,IAAI;IACf,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IAExB,EAAE,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC5B,KAAK,EAAE,KAAK,CAAsB;IAClC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,OAAO,EAAE,OAAO,CAAS;IACzB,SAAS,EAAE,MAAM,CAAK;IACtB,IAAI,EAAE,MAAM,CAAM;IAEzB,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,gBAAgB,CAAC,CAAgC;IACzD,OAAO,CAAC,iBAAiB,CAAC,CAAiC;IAC3D,OAAO,CAAC,eAAe,CAAK;gBAEhB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAQjD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,KAAK,IAAI,MAAM,CAIlB;IAED,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAStC;IAEM,kBAAkB,IAAI,MAAM;IAU5B,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,SAAS,UAAQ,GAAG,IAAI;YAYzB,MAAM;IAqBpB,OAAO,CAAC,SAAS;IAoCjB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,WAAW;IA8DZ,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAM1C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAK3C"}