You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
954 B
27 lines
954 B
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
const commons_js_1 = require("./commons.js"); |
|
const encodePacket = ({ type, data }, supportsBinary, callback) => { |
|
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) { |
|
const buffer = toBuffer(data); |
|
return callback(encodeBuffer(buffer, supportsBinary)); |
|
} |
|
// plain string |
|
return callback(commons_js_1.PACKET_TYPES[type] + (data || "")); |
|
}; |
|
const toBuffer = data => { |
|
if (Buffer.isBuffer(data)) { |
|
return data; |
|
} |
|
else if (data instanceof ArrayBuffer) { |
|
return Buffer.from(data); |
|
} |
|
else { |
|
return Buffer.from(data.buffer, data.byteOffset, data.byteLength); |
|
} |
|
}; |
|
// only 'message' packets can contain binary, so the type prefix is not needed |
|
const encodeBuffer = (data, supportsBinary) => { |
|
return supportsBinary ? data : "b" + data.toString("base64"); |
|
}; |
|
exports.default = encodePacket;
|
|
|