storm-replay
Version:
NodeJS wrapper for StormLib (https://github.com/ladislav-zezula/StormLib)
75 lines (55 loc) • 2.08 kB
Markdown
storm-replay
============
NodeJS wrapper for StormLib (https://github.com/ladislav-zezula/StormLib) for
parsing Heroes of the Storm replay files (`.StormReplay`).
This is a backend library designed for speedy extraction of files. In tests
against the javascript library, extraction times improved nearly 60%.
# API
## .getHeader(Archive)
Retrieve the MPQ Header information for the `Archive`. This header includes
the all important build information for parsing.
The object returned contains the full header as `.header.data` and the parsed
header as `.content.data`. You will most likely want `.content.data`. The
other data provided, `.err` and `.content.size`, is there for validation.
```javascript
return {
err: (Header.length === undefined),
header: {
data: Header,
size: Header.length
},
content: {
data: Header.slice(16, 16 + Header.readUInt32LE(12)),
size: Header.readUInt32LE(12)
}
};
```
## .extractFile(Archive, File)
Extract `File` from `Archive` as a buffer.
The object returned has the data you want as `.content.data`. The other data
provided, `.err` and `.content.size`, is there for validation.
```javascript
return {
err: (File.length === undefined),
content: {
data: File,
size: File.length
}
};
```
## .removeMessages(Archive)
Remove `replay.message.events` from the archive.
Chat messages may be toxic, offensive, taken out of context or otherwise not
fit for human consumption. This sanitation method provides some protection
to ensure a player's actions speak louder than his or her words.
Returns `true` if there are no messages in the file, `false` if there was an
issue.
```javascript
return bool;
```
# TODO
* Currently, the build is only working on OSX and Linux.
# References
* http://www.zezula.net/en/mpq/stormlib.html
* http://sagivo.com/post/130207525903/nodejs-addons
* http://www.benfarrell.com/2013/01/03/c-and-node-js-an-unholy-combination-but-oh-so-right/