diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ec5307c..ea09f6f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -22,12 +22,6 @@ jobs: - name: Install dependencies run: yarn install --immutable - - name: Install protoc - uses: arduino/setup-protoc@v1 - - - name: Generate proto files - run: yarn generate-proto - - name: Build run: yarn build diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8859956..630ed69 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,12 +34,6 @@ jobs: - name: Install dependencies run: yarn install --immutable - - name: Install protoc - uses: arduino/setup-protoc@v1 - - - name: Generate proto files - run: yarn generate-proto - - name: Run unit test run: yarn test:ci @@ -67,12 +61,6 @@ jobs: - name: Install dependencies run: yarn install --immutable - - name: Install protoc - uses: arduino/setup-protoc@v1 - - - name: Generate proto files - run: yarn generate-proto - - name: Run e2e test run: yarn test:e2e @@ -100,11 +88,5 @@ jobs: - name: Install dependencies run: yarn install --immutable - - name: Install protoc - uses: arduino/setup-protoc@v1 - - - name: Generate proto files - run: yarn generate-proto - - name: Build run: yarn build diff --git a/Mumble.proto b/Mumble.proto deleted file mode 100644 index 918f82b..0000000 --- a/Mumble.proto +++ /dev/null @@ -1,604 +0,0 @@ -// Copyright 2009-2022 The Mumble Developers. All rights reserved. -// Use of this source code is governed by a BSD-style license -// that can be found in the LICENSE file at the root of the -// Mumble source tree or at . - -syntax = "proto2"; - -package MumbleProto; - -option optimize_for = SPEED; - -message Version { - // 2-byte Major, 1-byte Minor and 1-byte Patch version number. - optional uint32 version = 1; - // Client release name. - optional string release = 2; - // Client OS name. - optional string os = 3; - // Client OS version. - optional string os_version = 4; -} - -// Not used. Not even for tunneling UDP through TCP. -message UDPTunnel { - // Not used. - required bytes packet = 1; -} - -// Used by the client to send the authentication credentials to the server. -message Authenticate { - // UTF-8 encoded username. - optional string username = 1; - // Server or user password. - optional string password = 2; - // Additional access tokens for server ACL groups. - repeated string tokens = 3; - // A list of CELT bitstream version constants supported by the client. - repeated int32 celt_versions = 4; - optional bool opus = 5 [default = false]; -} - -// Sent by the client to notify the server that the client is still alive. -// Server must reply to the packet with the same timestamp and its own -// good/late/lost/resync numbers. None of the fields is strictly required. -message Ping { - // Client timestamp. Server should not attempt to decode. - optional uint64 timestamp = 1; - // The amount of good packets received. - optional uint32 good = 2; - // The amount of late packets received. - optional uint32 late = 3; - // The amount of packets never received. - optional uint32 lost = 4; - // The amount of nonce resyncs. - optional uint32 resync = 5; - // The total amount of UDP packets received. - optional uint32 udp_packets = 6; - // The total amount of TCP packets received. - optional uint32 tcp_packets = 7; - // UDP ping average. - optional float udp_ping_avg = 8; - // UDP ping variance. - optional float udp_ping_var = 9; - // TCP ping average. - optional float tcp_ping_avg = 10; - // TCP ping variance. - optional float tcp_ping_var = 11; -} - -// Sent by the server when it rejects the user connection. -message Reject { - enum RejectType { - // The rejection reason is unknown (details should be available - // in Reject.reason). - None = 0; - // The client attempted to connect with an incompatible version. - WrongVersion = 1; - // The user name supplied by the client was invalid. - InvalidUsername = 2; - // The client attempted to authenticate as a user with a password but it - // was wrong. - WrongUserPW = 3; - // The client attempted to connect to a passworded server but the password - // was wrong. - WrongServerPW = 4; - // Supplied username is already in use. - UsernameInUse = 5; - // Server is currently full and cannot accept more users. - ServerFull = 6; - // The user did not provide a certificate but one is required. - NoCertificate = 7; - AuthenticatorFail = 8; - } - // Rejection type. - optional RejectType type = 1; - // Human readable rejection reason. - optional string reason = 2; -} - -// ServerSync message is sent by the server when it has authenticated the user -// and finished synchronizing the server state. -message ServerSync { - // The session of the current user. - optional uint32 session = 1; - // Maximum bandwidth that the user should use. - optional uint32 max_bandwidth = 2; - // Server welcome text. - optional string welcome_text = 3; - // Current user permissions in the root channel. - // Note: The permissions data type usually is uin32 (e.g. in PermissionQuery and PermissionDenied messages). Here - // it is uint64 because of an oversight in the past. Nonetheless it should never exceed the uin32 range. - // See also: https://github.com/mumble-voip/mumble/issues/5139 - optional uint64 permissions = 4; -} - -// Sent by the client when it wants a channel removed. Sent by the server when -// a channel has been removed and clients should be notified. -message ChannelRemove { - required uint32 channel_id = 1; -} - -// Used to communicate channel properties between the client and the server. -// Sent by the server during the login process or when channel properties are -// updated. Client may use this message to update said channel properties. -message ChannelState { - // Unique ID for the channel within the server. - optional uint32 channel_id = 1; - // channel_id of the parent channel. - optional uint32 parent = 2; - // UTF-8 encoded channel name. - optional string name = 3; - // A collection of channel id values of the linked channels. Absent during - // the first channel listing. - repeated uint32 links = 4; - // UTF-8 encoded channel description. Only if the description is less than - // 128 bytes - optional string description = 5; - // A collection of channel_id values that should be added to links. - repeated uint32 links_add = 6; - // A collection of channel_id values that should be removed from links. - repeated uint32 links_remove = 7; - // True if the channel is temporary. - optional bool temporary = 8 [default = false]; - // Position weight to tweak the channel position in the channel list. - optional int32 position = 9 [default = 0]; - // SHA1 hash of the description if the description is 128 bytes or more. - optional bytes description_hash = 10; - // Maximum number of users allowed in the channel. If this value is zero, - // the maximum number of users allowed in the channel is given by the - // server's "usersperchannel" setting. - optional uint32 max_users = 11; - // Whether this channel has enter restrictions (ACL denying ENTER) set - optional bool is_enter_restricted = 12; - // Whether the receiver of this msg is considered to be able to enter this channel - optional bool can_enter = 13; -} - -// Used to communicate user leaving or being kicked. May be sent by the client -// when it attempts to kick a user. Sent by the server when it informs the -// clients that a user is not present anymore. -message UserRemove { - // The user who is being kicked, identified by their session, not present - // when no one is being kicked. - required uint32 session = 1; - // The user who initiated the removal. Either the user who performs the kick - // or the user who is currently leaving. - optional uint32 actor = 2; - // Reason for the kick, stored as the ban reason if the user is banned. - optional string reason = 3; - // True if the kick should result in a ban. - optional bool ban = 4; -} - -// Sent by the server when it communicates new and changed users to client. -// First seen during login procedure. May be sent by the client when it wishes -// to alter its state. -message UserState { - // Unique user session ID of the user whose state this is, may change on - // reconnect. - optional uint32 session = 1; - // The session of the user who is updating this user. - optional uint32 actor = 2; - // User name, UTF-8 encoded. - optional string name = 3; - // Registered user ID if the user is registered. - optional uint32 user_id = 4; - // Channel on which the user is. - optional uint32 channel_id = 5; - // True if the user is muted by admin. - optional bool mute = 6; - // True if the user is deafened by admin. - optional bool deaf = 7; - // True if the user has been suppressed from talking by a reason other than - // being muted. - optional bool suppress = 8; - // True if the user has muted self. - optional bool self_mute = 9; - // True if the user has deafened self. - optional bool self_deaf = 10; - // User image if it is less than 128 bytes. - optional bytes texture = 11; - // The positional audio plugin identifier. - // Positional audio information is only sent to users who share - // identical plugin contexts. - // - // This value is not transmitted to clients. - optional bytes plugin_context = 12; - // The user's plugin-specific identity. - // This value is not transmitted to clients. - optional string plugin_identity = 13; - // User comment if it is less than 128 bytes. - optional string comment = 14; - // The hash of the user certificate. - optional string hash = 15; - // SHA1 hash of the user comment if it 128 bytes or more. - optional bytes comment_hash = 16; - // SHA1 hash of the user picture if it 128 bytes or more. - optional bytes texture_hash = 17; - // True if the user is a priority speaker. - optional bool priority_speaker = 18; - // True if the user is currently recording. - optional bool recording = 19; - // A list of temporary access tokens to be respected when processing this request. - repeated string temporary_access_tokens = 20; - // A list of channels the user wants to start listening to. - repeated uint32 listening_channel_add = 21; - // a list of channels the user does no longer want to listen to. - repeated uint32 listening_channel_remove = 22; -} - -// Relays information on the bans. The client may send the BanList message to -// either modify the list of bans or query them from the server. The server -// sends this list only after a client queries for it. -message BanList { - message BanEntry { - // Banned IP address. - required bytes address = 1; - // The length of the subnet mask for the ban. - required uint32 mask = 2; - // User name for identification purposes (does not affect the ban). - optional string name = 3; - // The certificate hash of the banned user. - optional string hash = 4; - // Reason for the ban (does not affect the ban). - optional string reason = 5; - // Ban start time. - optional string start = 6; - // Ban duration in seconds. - optional uint32 duration = 7; - } - // List of ban entries currently in place. - repeated BanEntry bans = 1; - // True if the server should return the list, false if it should replace old - // ban list with the one provided. - optional bool query = 2 [default = false]; -} - -// Used to send and broadcast text messages. -message TextMessage { - // The message sender, identified by its session. - optional uint32 actor = 1; - // Target users for the message, identified by their session. - repeated uint32 session = 2; - // The channels to which the message is sent, identified by their - // channel_ids. - repeated uint32 channel_id = 3; - // The root channels when sending message recursively to several channels, - // identified by their channel_ids. - repeated uint32 tree_id = 4; - // The UTF-8 encoded message. May be HTML if the server allows. - required string message = 5; -} - -message PermissionDenied { - enum DenyType { - // Operation denied for other reason, see reason field. - Text = 0; - // Permissions were denied. - Permission = 1; - // Cannot modify SuperUser. - SuperUser = 2; - // Invalid channel name. - ChannelName = 3; - // Text message too long. - TextTooLong = 4; - // The flux capacitor was spelled wrong. - H9K = 5; - // Operation not permitted in temporary channel. - TemporaryChannel = 6; - // Operation requires certificate. - MissingCertificate = 7; - // Invalid username. - UserName = 8; - // Channel is full. - ChannelFull = 9; - // Channels are nested too deeply. - NestingLimit = 10; - // Maximum channel count reached. - ChannelCountLimit = 11; - // Amount of listener objects for this channel has been reached - ChannelListenerLimit = 12; - // Amount of listener proxies for the user has been reached - UserListenerLimit = 13; - } - // The denied permission when type is Permission. - optional uint32 permission = 1; - // channel_id for the channel where the permission was denied when type is - // Permission. - optional uint32 channel_id = 2; - // The user who was denied permissions, identified by session. - optional uint32 session = 3; - // Textual reason for the denial. - optional string reason = 4; - // Type of the denial. - optional DenyType type = 5; - // The name that is invalid when type is UserName. - optional string name = 6; -} - -message ACL { - message ChanGroup { - // Name of the channel group, UTF-8 encoded. - required string name = 1; - // True if the group has been inherited from the parent (Read only). - optional bool inherited = 2 [default = true]; - // True if the group members are inherited. - optional bool inherit = 3 [default = true]; - // True if the group can be inherited by sub channels. - optional bool inheritable = 4 [default = true]; - // Users explicitly included in this group, identified by user_id. - repeated uint32 add = 5; - // Users explicitly removed from this group in this channel if the group - // has been inherited, identified by user_id. - repeated uint32 remove = 6; - // Users inherited, identified by user_id. - repeated uint32 inherited_members = 7; - } - message ChanACL { - // True if this ACL applies to the current channel. - optional bool apply_here = 1 [default = true]; - // True if this ACL applies to the sub channels. - optional bool apply_subs = 2 [default = true]; - // True if the ACL has been inherited from the parent. - optional bool inherited = 3 [default = true]; - // ID of the user that is affected by this ACL. - optional uint32 user_id = 4; - // ID of the group that is affected by this ACL. - optional string group = 5; - // Bit flag field of the permissions granted by this ACL. - optional uint32 grant = 6; - // Bit flag field of the permissions denied by this ACL. - optional uint32 deny = 7; - } - // Channel ID of the channel this message affects. - required uint32 channel_id = 1; - // True if the channel inherits its parent's ACLs. - optional bool inherit_acls = 2 [default = true]; - // User group specifications. - repeated ChanGroup groups = 3; - // ACL specifications. - repeated ChanACL acls = 4; - // True if the message is a query for ACLs instead of setting them. - optional bool query = 5 [default = false]; -} - -// Client may use this message to refresh its registered user information. The -// client should fill the IDs or Names of the users it wants to refresh. The -// server fills the missing parts and sends the message back. -message QueryUsers { - // user_ids. - repeated uint32 ids = 1; - // User names in the same order as ids. - repeated string names = 2; -} - -// Used to initialize and resync the UDP encryption. Either side may request a -// resync by sending the message without any values filled. The resync is -// performed by sending the message with only the client or server nonce -// filled. -message CryptSetup { - // Encryption key. - optional bytes key = 1; - // Client nonce. - optional bytes client_nonce = 2; - // Server nonce. - optional bytes server_nonce = 3; -} - -// Used to add or remove custom context menu item on client-side. -message ContextActionModify { - enum Context { - // Action is applicable to the server. - Server = 0x01; - // Action can target a Channel. - Channel = 0x02; - // Action can target a User. - User = 0x04; - } - enum Operation { - Add = 0; - Remove = 1; - } - // The action identifier. Used later to initiate an action. - required string action = 1; - // The display name of the action. - optional string text = 2; - // Context bit flags defining where the action should be displayed. - // Flags can be OR-ed to combine different types. - optional uint32 context = 3; - // Choose either to add or to remove the context action. - // Note: This field only exists after Mumble 1.2.4-beta1 release. - // The message will be recognized as Add regardless of this field - // before said release. - optional Operation operation = 4; -} - -// Sent by the client when it wants to initiate a Context action. -message ContextAction { - // The target User for the action, identified by session. - optional uint32 session = 1; - // The target Channel for the action, identified by channel_id. - optional uint32 channel_id = 2; - // The action that should be executed. - required string action = 3; -} - -// Lists the registered users. -message UserList { - message User { - // Registered user ID. - required uint32 user_id = 1; - // Registered user name. - optional string name = 2; - optional string last_seen = 3; - optional uint32 last_channel = 4; - } - // A list of registered users. - repeated User users = 1; -} - -// Sent by the client when it wants to register or clear whisper targets. -// -// Note: The first available target ID is 1 as 0 is reserved for normal -// talking. Maximum target ID is 30. -message VoiceTarget { - message Target { - // Users that are included as targets. - repeated uint32 session = 1; - // Channel that is included as a target. - optional uint32 channel_id = 2; - // ACL group that is included as a target. - optional string group = 3; - // True if the voice should follow links from the specified channel. - optional bool links = 4 [default = false]; - // True if the voice should also be sent to children of the specific - // channel. - optional bool children = 5 [default = false]; - } - // Voice target ID. - optional uint32 id = 1; - // The receivers that this voice target includes. - repeated Target targets = 2; -} - -// Sent by the client when it wants permissions for a certain channel. Sent by -// the server when it replies to the query or wants the user to resync all -// channel permissions. -message PermissionQuery { - // channel_id of the channel for which the permissions are queried. - optional uint32 channel_id = 1; - // Channel permissions. - optional uint32 permissions = 2; - // True if the client should drop its current permission information for all - // channels. - optional bool flush = 3 [default = false]; -} - -// Sent by the server to notify the users of the version of the CELT codec they -// should use. This may change during the connection when new users join. -message CodecVersion { - // The version of the CELT Alpha codec. - required int32 alpha = 1; - // The version of the CELT Beta codec. - required int32 beta = 2; - // True if the user should prefer Alpha over Beta. - required bool prefer_alpha = 3 [default = true]; - optional bool opus = 4 [default = false]; -} - -// Used to communicate user stats between the server and clients. -message UserStats { - message Stats { - // The amount of good packets received. - optional uint32 good = 1; - // The amount of late packets received. - optional uint32 late = 2; - // The amount of packets never received. - optional uint32 lost = 3; - // The amount of nonce resyncs. - optional uint32 resync = 4; - } - - // User whose stats these are. - optional uint32 session = 1; - // True if the message contains only mutable stats (packets, ping). - optional bool stats_only = 2 [default = false]; - // Full user certificate chain of the user certificate in DER format. - repeated bytes certificates = 3; - // Packet statistics for packets received from the client. - optional Stats from_client = 4; - // Packet statistics for packets sent by the server. - optional Stats from_server = 5; - - // Amount of UDP packets sent. - optional uint32 udp_packets = 6; - // Amount of TCP packets sent. - optional uint32 tcp_packets = 7; - // UDP ping average. - optional float udp_ping_avg = 8; - // UDP ping variance. - optional float udp_ping_var = 9; - // TCP ping average. - optional float tcp_ping_avg = 10; - // TCP ping variance. - optional float tcp_ping_var = 11; - - // Client version. - optional Version version = 12; - // A list of CELT bitstream version constants supported by the client of this - // user. - repeated int32 celt_versions = 13; - // Client IP address. - optional bytes address = 14; - // Bandwidth used by this client. - optional uint32 bandwidth = 15; - // Connection duration. - optional uint32 onlinesecs = 16; - // Duration since last activity. - optional uint32 idlesecs = 17; - // True if the user has a strong certificate. - optional bool strong_certificate = 18 [default = false]; - optional bool opus = 19 [default = false]; -} - -// Used by the client to request binary data from the server. By default large -// comments or textures are not sent within standard messages but instead the -// hash is. If the client does not recognize the hash it may request the -// resource when it needs it. The client does so by sending a RequestBlob -// message with the correct fields filled with the user sessions or channel_ids -// it wants to receive. The server replies to this by sending a new -// UserState/ChannelState message with the resources filled even if they would -// normally be transmitted as hashes. -message RequestBlob { - // sessions of the requested UserState textures. - repeated uint32 session_texture = 1; - // sessions of the requested UserState comments. - repeated uint32 session_comment = 2; - // channel_ids of the requested ChannelState descriptions. - repeated uint32 channel_description = 3; -} - -// Sent by the server when it informs the clients on server configuration -// details. -message ServerConfig { - // The maximum bandwidth the clients should use. - optional uint32 max_bandwidth = 1; - // Server welcome text. - optional string welcome_text = 2; - // True if the server allows HTML. - optional bool allow_html = 3; - // Maximum text message length. - optional uint32 message_length = 4; - // Maximum image message length. - optional uint32 image_message_length = 5; - // The maximum number of users allowed on the server. - optional uint32 max_users = 6; - // Whether using Mumble's recording feature is allowed on the server - optional bool recording_allowed = 7; -} - -// Sent by the server to inform the clients of suggested client configuration -// specified by the server administrator. -message SuggestConfig { - // Suggested client version. - optional uint32 version = 1; - // True if the administrator suggests positional audio to be used on this - // server. - optional bool positional = 2; - // True if the administrator suggests push to talk to be used on this server. - optional bool push_to_talk = 3; -} - -// Used to send plugin messages between clients -message PluginDataTransmission { - // The session ID of the client this message was sent from - optional uint32 senderSession = 1; - // The session IDs of the clients that should receive this message - repeated uint32 receiverSessions = 2 [packed = true]; - // The data that is sent - optional bytes data = 3; - // The ID of the sent data. This will be used by plugins to check whether they will - // process it or not - optional string dataID = 4; -} diff --git a/package.json b/package.json index e283210..ba6760b 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,6 @@ "types": "dist/src/index.d.ts", "scripts": { "lint": "eslint \"src/**/*.ts\"", - "generate-proto": "protoc --ts_out proto/ --ts_opt eslint_disable --proto_path . Mumble.proto", - "prebuild": "yarn generate-proto", "build": "tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json", "test": "jest --watch", "test:ci": "NODE_ENV=test jest --ci", @@ -34,11 +32,10 @@ "bot" ], "dependencies": { - "@protobuf-ts/runtime": "2.6.0", + "@tf2pickup-org/mumble-protocol": "0.0.4", "rxjs": "7.5.5" }, "devDependencies": { - "@protobuf-ts/plugin": "2.6.0", "@release-it/conventional-changelog": "5.0.0", "@tsconfig/node16": "1.0.2", "@types/jest": "27.5.1", diff --git a/proto/.gitkeep b/proto/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/channel-manager.ts b/src/channel-manager.ts index 5818742..600549d 100644 --- a/src/channel-manager.ts +++ b/src/channel-manager.ts @@ -1,4 +1,4 @@ -import { ChannelRemove, ChannelState, PermissionQuery } from '@proto/Mumble'; +import { ChannelRemove, ChannelState, PermissionQuery } from '@tf2pickup-org/mumble-protocol'; import { tap } from 'rxjs'; import { Channel } from './channel'; import { Client } from './client'; diff --git a/src/channel.spec.ts b/src/channel.spec.ts index 4447565..281789d 100644 --- a/src/channel.spec.ts +++ b/src/channel.spec.ts @@ -1,4 +1,4 @@ -import { ChannelState, PermissionQuery } from '@proto/Mumble'; +import { ChannelState, PermissionQuery } from '@tf2pickup-org/mumble-protocol'; import { Channel } from './channel'; import { ChannelManager } from './channel-manager'; import { Client } from './client'; diff --git a/src/channel.ts b/src/channel.ts index dce56f7..55c0886 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -1,4 +1,4 @@ -import { ChannelState, PermissionQuery } from '@proto/Mumble'; +import { ChannelState, PermissionQuery } from '@tf2pickup-org/mumble-protocol'; import { Client } from './client'; import { createChannel, diff --git a/src/client.spec.ts b/src/client.spec.ts index f4ca142..a75415e 100644 --- a/src/client.spec.ts +++ b/src/client.spec.ts @@ -4,7 +4,7 @@ import { ServerConfig, ServerSync, Version, -} from '@proto/Mumble'; +} from '@tf2pickup-org/mumble-protocol'; import { Subject } from 'rxjs'; import { Client } from './client'; import { MumbleSocket } from './mumble-socket'; diff --git a/src/client.ts b/src/client.ts index c91d03a..561b7ab 100644 --- a/src/client.ts +++ b/src/client.ts @@ -8,7 +8,7 @@ import { ServerConfig, ServerSync, Version, -} from '@proto/Mumble'; +} from '@tf2pickup-org/mumble-protocol'; import { User } from './user'; import { ChannelManager } from './channel-manager'; import { UserManager } from './user-manager'; diff --git a/src/commands/create-channel.ts b/src/commands/create-channel.ts index aa5f4c3..631c459 100644 --- a/src/commands/create-channel.ts +++ b/src/commands/create-channel.ts @@ -2,7 +2,7 @@ import { CommandTimeout } from '@/config'; import { CommandTimedOutError, PermissionDeniedError } from '@/errors'; import { MumbleSocket } from '@/mumble-socket'; import { filterPacket } from '@/rxjs-operators/filter-packet'; -import { ChannelState, PermissionDenied } from '@proto/Mumble'; +import { ChannelState, PermissionDenied } from '@tf2pickup-org/mumble-protocol'; import { filter, race, take, timer } from 'rxjs'; export const createChannel = async ( diff --git a/src/commands/fetch-channel-permissions.ts b/src/commands/fetch-channel-permissions.ts index 8363798..b869388 100644 --- a/src/commands/fetch-channel-permissions.ts +++ b/src/commands/fetch-channel-permissions.ts @@ -1,6 +1,6 @@ import { MumbleSocket } from '@/mumble-socket'; import { filterPacket } from '@/rxjs-operators/filter-packet'; -import { PermissionQuery } from '@proto/Mumble'; +import { PermissionQuery } from '@tf2pickup-org/mumble-protocol'; import { filter, take } from 'rxjs'; export const fetchChannelPermissions = async ( diff --git a/src/commands/link-channels.ts b/src/commands/link-channels.ts index 68ccd61..8f8de82 100644 --- a/src/commands/link-channels.ts +++ b/src/commands/link-channels.ts @@ -1,7 +1,7 @@ import { CommandTimeout } from '@/config'; import { MumbleSocket } from '@/mumble-socket'; import { filterPacket } from '@/rxjs-operators/filter-packet'; -import { ChannelState } from '@proto/Mumble'; +import { ChannelState } from '@tf2pickup-org/mumble-protocol'; import { filter, race, take, timer } from 'rxjs'; export const linkChannels = async ( diff --git a/src/commands/move-user-to-channel.ts b/src/commands/move-user-to-channel.ts index d1ea62e..8bf35fa 100644 --- a/src/commands/move-user-to-channel.ts +++ b/src/commands/move-user-to-channel.ts @@ -1,7 +1,7 @@ import { PermissionDeniedError } from '@/errors'; import { MumbleSocket } from '@/mumble-socket'; import { filterPacket } from '@/rxjs-operators/filter-packet'; -import { PermissionDenied, UserState } from '@proto/Mumble'; +import { PermissionDenied, UserState } from '@tf2pickup-org/mumble-protocol'; import { filter, race, take } from 'rxjs'; export const moveUserToChannel = async ( diff --git a/src/commands/remove-channel.ts b/src/commands/remove-channel.ts index 8057ed3..24ee8ce 100644 --- a/src/commands/remove-channel.ts +++ b/src/commands/remove-channel.ts @@ -1,7 +1,7 @@ import { PermissionDeniedError } from '@/errors'; import { MumbleSocket } from '@/mumble-socket'; import { filterPacket } from '@/rxjs-operators/filter-packet'; -import { ChannelRemove, PermissionDenied } from '@proto/Mumble'; +import { ChannelRemove, PermissionDenied } from '@tf2pickup-org/mumble-protocol'; import { filter, race, take } from 'rxjs'; export const removeChannel = async ( diff --git a/src/commands/unlink-channels.ts b/src/commands/unlink-channels.ts index a2468a1..1c4bf74 100644 --- a/src/commands/unlink-channels.ts +++ b/src/commands/unlink-channels.ts @@ -1,6 +1,6 @@ import { MumbleSocket } from '@/mumble-socket'; import { filterPacket } from '@/rxjs-operators/filter-packet'; -import { ChannelState } from '@proto/Mumble'; +import { ChannelState } from '@tf2pickup-org/mumble-protocol'; import { filter, take } from 'rxjs'; export const unlinkChannels = async ( diff --git a/src/errors/connection-rejected.error.ts b/src/errors/connection-rejected.error.ts index f383963..7a3c5cf 100644 --- a/src/errors/connection-rejected.error.ts +++ b/src/errors/connection-rejected.error.ts @@ -1,4 +1,4 @@ -import { Reject } from '@proto/Mumble'; +import { Reject } from '@tf2pickup-org/mumble-protocol'; export class ConnectionRejectedError extends Error { constructor(public readonly reject: Reject) { diff --git a/src/errors/permission-denied.error.ts b/src/errors/permission-denied.error.ts index fdffd48..9b7d208 100644 --- a/src/errors/permission-denied.error.ts +++ b/src/errors/permission-denied.error.ts @@ -1,4 +1,4 @@ -import { PermissionDenied, PermissionDenied_DenyType } from '@proto/Mumble'; +import { PermissionDenied, PermissionDenied_DenyType } from '@tf2pickup-org/mumble-protocol'; const toString = (permissionDenied: PermissionDenied): string => { switch (permissionDenied.type) { diff --git a/src/mumble-socket.ts b/src/mumble-socket.ts index 10b3e86..0f1bcd0 100644 --- a/src/mumble-socket.ts +++ b/src/mumble-socket.ts @@ -2,7 +2,7 @@ import { Observable, Subject } from 'rxjs'; import { TLSSocket } from 'tls'; import { packetForType, packetType } from './packet-type-registry'; import { MessageType } from '@protobuf-ts/runtime'; -import { UDPTunnel } from '@proto/Mumble'; +import { UDPTunnel } from '@tf2pickup-org/mumble-protocol'; interface MumbleSocketReader { length: number; diff --git a/src/packet-type-registry.ts b/src/packet-type-registry.ts index c68a9eb..51d3ff3 100644 --- a/src/packet-type-registry.ts +++ b/src/packet-type-registry.ts @@ -25,7 +25,7 @@ import { UserStats, Version, VoiceTarget, -} from '@proto/Mumble'; +} from '@tf2pickup-org/mumble-protocol'; import { MessageType } from '@protobuf-ts/runtime'; // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/user-manager.ts b/src/user-manager.ts index 409ebaf..9bee135 100644 --- a/src/user-manager.ts +++ b/src/user-manager.ts @@ -1,4 +1,4 @@ -import { UserRemove, UserState } from '@proto/Mumble'; +import { UserRemove, UserState } from '@tf2pickup-org/mumble-protocol'; import { tap } from 'rxjs'; import { Client } from './client'; import { filterPacket } from './rxjs-operators/filter-packet'; diff --git a/src/user.ts b/src/user.ts index 595a058..e4bb758 100644 --- a/src/user.ts +++ b/src/user.ts @@ -1,5 +1,5 @@ import { filter, takeWhile } from 'rxjs'; -import { UserState } from '@proto/Mumble'; +import { UserState } from '@tf2pickup-org/mumble-protocol'; import { Client } from './client'; import { Channel } from './channel'; import { InsufficientPermissionsError, NoSuchChannelError } from './errors'; diff --git a/tsconfig.json b/tsconfig.json index 5765e64..76e5ca3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,7 +20,6 @@ "resolveJsonModule": true, "stripInternal": true, "paths": { - "@proto/*": ["proto/*"], "@": ["src"], "@/*": ["src/*"] } diff --git a/yarn.lock b/yarn.lock index 6212f00..052ebae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -935,51 +935,7 @@ __metadata: languageName: node linkType: hard -"@protobuf-ts/plugin-framework@npm:^2.6.0": - version: 2.6.0 - resolution: "@protobuf-ts/plugin-framework@npm:2.6.0" - dependencies: - "@protobuf-ts/runtime": ^2.6.0 - typescript: ^3.9 - checksum: 06cd4179fcb00b0e39ac4846af1463b456c50615c004f1164faff5177500c0afe7134bcfe1856218816ddc9c4100dc83dba3baef13d8fc1e56448bac633602ae - languageName: node - linkType: hard - -"@protobuf-ts/plugin@npm:2.6.0": - version: 2.6.0 - resolution: "@protobuf-ts/plugin@npm:2.6.0" - dependencies: - "@protobuf-ts/plugin-framework": ^2.6.0 - "@protobuf-ts/protoc": ^2.6.0 - "@protobuf-ts/runtime": ^2.6.0 - "@protobuf-ts/runtime-rpc": ^2.6.0 - typescript: ^3.9 - bin: - protoc-gen-dump: bin/protoc-gen-dump - protoc-gen-ts: bin/protoc-gen-ts - checksum: 67e04274ce0182629c37b1a85b808cd8774dc74350647fce2848e108f8dfdedca46d2c81cdb565b2b3d62ff5856f53282e9b833c7d27f94f281dfa30ac6ab5d4 - languageName: node - linkType: hard - -"@protobuf-ts/protoc@npm:^2.6.0": - version: 2.6.0 - resolution: "@protobuf-ts/protoc@npm:2.6.0" - bin: - protoc: protoc.js - checksum: d9d876515315a568615416cb6b80ec15ad2f108004f3c31979382c61f9d78be43c686f19e75b76c8deab99a71c5608dfa91191639bf723106bc80550d81f3387 - languageName: node - linkType: hard - -"@protobuf-ts/runtime-rpc@npm:^2.6.0": - version: 2.6.0 - resolution: "@protobuf-ts/runtime-rpc@npm:2.6.0" - dependencies: - "@protobuf-ts/runtime": ^2.6.0 - checksum: f046cd40d5ea07518a83763f6383c0d4f5401e13f42ba94a9f490d0aac2f1449d5023133fe85ca8e2d09ab3d4910466d5333fa1616db59e1e46eef391c251c43 - languageName: node - linkType: hard - -"@protobuf-ts/runtime@npm:2.6.0, @protobuf-ts/runtime@npm:^2.6.0": +"@protobuf-ts/runtime@npm:2.6.0": version: 2.6.0 resolution: "@protobuf-ts/runtime@npm:2.6.0" checksum: 01e06a658554a588bf09614bc7f9805b1ac1c311de8314fe075e3eb7882c966455cdc0a3cd3e8feb5138b7b8a3d4bde0185ac6284d1bac142c7d07d20a34add4 @@ -1056,13 +1012,21 @@ __metadata: languageName: node linkType: hard +"@tf2pickup-org/mumble-protocol@npm:0.0.4": + version: 0.0.4 + resolution: "@tf2pickup-org/mumble-protocol@npm:0.0.4" + dependencies: + "@protobuf-ts/runtime": 2.6.0 + checksum: 01e5206ff9b90bec84d26fafde9889075b4d3237066438600db52d26be1a4e34a1f2afd2efb530c8a1d4844bde2599b85a0da426e420fa1f93b4404c867d5bba + languageName: node + linkType: hard + "@tf2pickup-org/simple-mumble-bot@workspace:.": version: 0.0.0-use.local resolution: "@tf2pickup-org/simple-mumble-bot@workspace:." dependencies: - "@protobuf-ts/plugin": 2.6.0 - "@protobuf-ts/runtime": 2.6.0 "@release-it/conventional-changelog": 5.0.0 + "@tf2pickup-org/mumble-protocol": 0.0.4 "@tsconfig/node16": 1.0.2 "@types/jest": 27.5.1 "@types/node": 17.0.31 @@ -7823,16 +7787,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^3.9": - version: 3.9.10 - resolution: "typescript@npm:3.9.10" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 46c842e2cd4797b88b66ef06c9c41dd21da48b95787072ccf39d5f2aa3124361bc4c966aa1c7f709fae0509614d76751455b5231b12dbb72eb97a31369e1ff92 - languageName: node - linkType: hard - "typescript@patch:typescript@4.6.4#~builtin": version: 4.6.4 resolution: "typescript@patch:typescript@npm%3A4.6.4#~builtin::version=4.6.4&hash=7ad353" @@ -7843,16 +7797,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^3.9#~builtin": - version: 3.9.10 - resolution: "typescript@patch:typescript@npm%3A3.9.10#~builtin::version=3.9.10&hash=7ad353" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: dc7141ab555b23a8650a6787f98845fc11692063d02b75ff49433091b3af2fe3d773650dea18389d7c21f47d620fb3b110ea363dab4ab039417a6ccbbaf96fc2 - languageName: node - linkType: hard - "uglify-js@npm:^3.1.4": version: 3.15.5 resolution: "uglify-js@npm:3.15.5"