stormlib-node-bindings
v1.0.1
Published
Node.js bindings for StormLib to work with MPQ archives
Downloads
17
Readme
StormLib-Node 🌪️
StormLib-Node is a Node.js package that provides bindings for the StormLib C++ library, allowing you to work with MPQ (Mo'PaQ) archives in your Node.js projects for World of Warcraft and other Blizzard games.
📋 Table of Contents
🚀 Installation
npm install stormlib-node-bindings
🛠️ Usage
Here's a basic example of how to use StormLib-Node:
import { Archive } from 'stormlib-node-bindings';
// Create a new MPQ archive
const archive = new Archive('new_archive.mpq', { create: true });
// Add a file to the archive
archive.addFile('local_file.txt', 'archived_file.txt');
// Extract a file from the archive
archive.extractFile('archived_file.txt', 'extracted_file.txt');
// List files in the archive
const files = archive.listFiles();
console.log('Files in the archive:', files);
// Don't forget to close the archive when you're done
archive.close();
📚 API
Archive
class
Constructor: new Archive(filename, options)
filename
: Path to the MPQ archiveoptions
:create
: Boolean, set totrue
to create a new archiveflags
: Optional flags for creating/opening the archivemaxFileCount
: Maximum number of files (only used when creating a new archive)
Methods
addFile(localFilename, archivedName, flags = 0)
: Add a file to the archiveextractFile(archivedName, localFilename)
: Extract a file from the archivelistFiles()
: List all files in the archiveclose()
: Close the archive
🧪 Development
To set up the project for development:
Clone the repository:
git clone https://github.com/sebyx07/stormlib-node.git cd stormlib-node
Install dependencies:
npm install
Compile StormLib:
npm run compile
Build the Node.js addon:
npm run install
🧬 Testing
To run the tests:
npm test
The tests use Mocha as the test runner and Chai for assertions.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
📜 License
This project is licensed under the MIT License. See the LICENSE file for details.
🙏 Acknowledgements
- StormLib by Ladislav Zezula
- All contributors who have helped with code, bug reports, and suggestions