mirror of
https://github.com/ReVanced/revanced-bots.git
synced 2026-01-25 12:11:03 +00:00
feat(packages): add shared package
This commit is contained in:
30
packages/shared/src/utils/guard.ts
Executable file
30
packages/shared/src/utils/guard.ts
Executable file
@@ -0,0 +1,30 @@
|
||||
import { Packet } from '../schemas/Packet.js'
|
||||
import { ClientOperation, Operation, ServerOperation } from '../constants/Operation.js'
|
||||
|
||||
/**
|
||||
* Checks whether a packet is trying to do the given operation
|
||||
* @param op Operation code to check
|
||||
* @param packet A packet
|
||||
* @returns Whether this packet is trying to do the operation given
|
||||
*/
|
||||
export function packetMatchesOperation<TOp extends Operation>(op: TOp, packet: Packet): packet is Packet<TOp> {
|
||||
return packet.op === op
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether this packet is a client packet **(this does NOT validate the data)**
|
||||
* @param packet A packet
|
||||
* @returns Whether this packet is a client packet
|
||||
*/
|
||||
export function isClientPacket(packet: Packet): packet is Packet<ClientOperation> {
|
||||
return packet.op in ClientOperation
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether this packet is a server packet **(this does NOT validate the data)**
|
||||
* @param packet A packet
|
||||
* @returns Whether this packet is a server packet
|
||||
*/
|
||||
export function isServerPacket(packet: Packet): packet is Packet<ServerOperation> {
|
||||
return packet.op in ServerOperation
|
||||
}
|
||||
3
packages/shared/src/utils/index.ts
Executable file
3
packages/shared/src/utils/index.ts
Executable file
@@ -0,0 +1,3 @@
|
||||
export * from './guard.js'
|
||||
export * from './serialization.js'
|
||||
export * from './string.js'
|
||||
23
packages/shared/src/utils/serialization.ts
Executable file
23
packages/shared/src/utils/serialization.ts
Executable file
@@ -0,0 +1,23 @@
|
||||
import * as BSON from 'bson'
|
||||
import { Packet, PacketSchema } from '../schemas/index.js'
|
||||
import { Operation } from '../constants/index.js'
|
||||
import { parse } from 'valibot'
|
||||
|
||||
/**
|
||||
* Compresses a packet into a buffer
|
||||
* @param packet The packet to compress
|
||||
* @returns A buffer of the compressed packet
|
||||
*/
|
||||
export function serializePacket<TOp extends Operation>(packet: Packet<TOp>) {
|
||||
return BSON.serialize(packet)
|
||||
}
|
||||
|
||||
/**
|
||||
* Decompresses a buffer into a packet
|
||||
* @param buffer The buffer to decompress
|
||||
* @returns A packet
|
||||
*/
|
||||
export function deserializePacket(buffer: Buffer) {
|
||||
const data = BSON.deserialize(buffer)
|
||||
return parse(PacketSchema, data) as Packet
|
||||
}
|
||||
3
packages/shared/src/utils/string.ts
Executable file
3
packages/shared/src/utils/string.ts
Executable file
@@ -0,0 +1,3 @@
|
||||
export function uncapitalize<T extends string>(str: T): Uncapitalize<T> {
|
||||
return str.charAt(0).toLowerCase() + str.slice(1) as Uncapitalize<T>
|
||||
}
|
||||
Reference in New Issue
Block a user