mirror of
https://github.com/cypress-io/cypress.git
synced 2026-01-16 20:19:58 -06:00
48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
import * as socketIoParser from 'socket.io-parser'
|
|
// @ts-ignore
|
|
import * as engineParser from 'engine.io-parser'
|
|
|
|
export const encode = (data: any, namespace: string): Promise<string> => {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
const encoder = new socketIoParser.Encoder()
|
|
const socketIoEncodedData = encoder.encode({
|
|
type: socketIoParser.PacketType.EVENT,
|
|
data,
|
|
nsp: namespace,
|
|
})
|
|
|
|
engineParser.encodePayload(socketIoEncodedData.map((item) => {
|
|
return {
|
|
type: 'message',
|
|
data: item,
|
|
}
|
|
}), (encoded: any) => {
|
|
resolve(encoded)
|
|
})
|
|
} catch (err) {
|
|
reject(err)
|
|
}
|
|
})
|
|
}
|
|
|
|
export const decode = (data: any): Promise<any> => {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
const decoded = engineParser.decodePayload(data)
|
|
const decoder = new socketIoParser.Decoder()
|
|
|
|
decoder.on('decoded', (packet: any) => {
|
|
decoder.destroy()
|
|
resolve(packet.data)
|
|
})
|
|
|
|
decoded.forEach((packet: any) => {
|
|
decoder.add(packet.data)
|
|
})
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
})
|
|
}
|