Show More
Commit Description:
force log out when password change
Commit Description:
force log out when password change
References:
File last commit:
Show/Diff file:
Action:
node_modules/restructure/src/EncodeStream.coffee
| 101 lines
| 2.4 KiB
| text/coffeescript
| CoffeeScriptLexer
|
r789 | stream = require 'stream' | |||
DecodeStream = require './DecodeStream' | ||||
try iconv = require 'iconv-lite' | ||||
class EncodeStream extends stream.Readable | ||||
constructor: (bufferSize = 65536) -> | ||||
super | ||||
@buffer = new Buffer(bufferSize) | ||||
@bufferOffset = 0 | ||||
@pos = 0 | ||||
for key of Buffer.prototype when key.slice(0, 5) is 'write' | ||||
do (key) => | ||||
bytes = +DecodeStream.TYPES[key.replace(/write|[BL]E/g, '')] | ||||
EncodeStream::[key] = (value) -> | ||||
@ensure bytes | ||||
@buffer[key](value, @bufferOffset) | ||||
@bufferOffset += bytes | ||||
@pos += bytes | ||||
_read: -> | ||||
# do nothing, required by node | ||||
ensure: (bytes) -> | ||||
if @bufferOffset + bytes > @buffer.length | ||||
@flush() | ||||
flush: -> | ||||
if @bufferOffset > 0 | ||||
@push new Buffer @buffer.slice(0, @bufferOffset) | ||||
@bufferOffset = 0 | ||||
writeBuffer: (buffer) -> | ||||
@flush() | ||||
@push buffer | ||||
@pos += buffer.length | ||||
writeString: (string, encoding = 'ascii') -> | ||||
switch encoding | ||||
when 'utf16le', 'ucs2', 'utf8', 'ascii' | ||||
@writeBuffer new Buffer(string, encoding) | ||||
when 'utf16be' | ||||
buf = new Buffer(string, 'utf16le') | ||||
# swap the bytes | ||||
for i in [0...buf.length - 1] by 2 | ||||
byte = buf[i] | ||||
buf[i] = buf[i + 1] | ||||
buf[i + 1] = byte | ||||
@writeBuffer buf | ||||
else | ||||
if iconv | ||||
@writeBuffer iconv.encode(string, encoding) | ||||
else | ||||
throw new Error 'Install iconv-lite to enable additional string encodings.' | ||||
writeUInt24BE: (val) -> | ||||
@ensure 3 | ||||
@buffer[@bufferOffset++] = val >>> 16 & 0xff | ||||
@buffer[@bufferOffset++] = val >>> 8 & 0xff | ||||
@buffer[@bufferOffset++] = val & 0xff | ||||
@pos += 3 | ||||
writeUInt24LE: (val) -> | ||||
@ensure 3 | ||||
@buffer[@bufferOffset++] = val & 0xff | ||||
@buffer[@bufferOffset++] = val >>> 8 & 0xff | ||||
@buffer[@bufferOffset++] = val >>> 16 & 0xff | ||||
@pos += 3 | ||||
writeInt24BE: (val) -> | ||||
if val >= 0 | ||||
@writeUInt24BE val | ||||
else | ||||
@writeUInt24BE val + 0xffffff + 1 | ||||
writeInt24LE: (val) -> | ||||
if val >= 0 | ||||
@writeUInt24LE val | ||||
else | ||||
@writeUInt24LE val + 0xffffff + 1 | ||||
fill: (val, length) -> | ||||
if length < @buffer.length | ||||
@ensure length | ||||
@buffer.fill(val, @bufferOffset, @bufferOffset + length) | ||||
@bufferOffset += length | ||||
@pos += length | ||||
else | ||||
buf = new Buffer(length) | ||||
buf.fill(val) | ||||
@writeBuffer buf | ||||
end: -> | ||||
@flush() | ||||
@push null | ||||
module.exports = EncodeStream | ||||