0.3.1 • Published 12 months ago
@firelands/stormlib-ts v0.3.1
🔥 Firelands core Stormlib implementation
This 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 @firelands/stormlib-ts➿ Usage
Here's a basic example of how to use stormlib-ts:
import { StormLib } from '@firelands/stormlib-ts';
// Create a new MPQ archive
const storm = new StormLib('new_archive.mpq', { create: true });
// Add a file to the archive
storm.addFile('local_file.txt', 'archived_file.txt');
// Extract a file from the archive
storm.extractFile('archived_file.txt', 'extracted_file.txt');
// List files in the archive
const files = storm.listFiles();
console.log('Files in the archive:', files);
// Don't forget to close the archive when you're done
storm.close();🧰 API
StormLib class
Constructor: new StormLib(filename, options)
filename: Path to the MPQ archiveoptions:create: Boolean, set totrueto 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): 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/FirelandsProject/Stormlib-ts.git cd Stormlib-tsInstall dependencies:
pnpm i
🧮 Testing
To run the tests:
npm testThe 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 feat/my-feature) - Commit your changes (
git commit -m 'feat: some changes in the feature') - Push to the branch (
git push origin feat/my-feature) - Open a Pull Request
📜 License
This project is licensed under the AGPL-3.0-only License. See the LICENSE file for details.
🙏 Acknowledgements
- StormLib by Ladislav Zezula
- All contributors who have helped with code, bug reports, and suggestions