Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sebyx07/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.
https://github.com/sebyx07/stormlib-node
world-of-warcraft
Last synced: 2 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/sebyx07/stormlib-node
- Owner: sebyx07
- Created: 2024-09-23T18:08:08.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-09-23T20:42:24.000Z (4 months ago)
- Last Synced: 2024-09-25T07:44:01.025Z (4 months ago)
- Topics: world-of-warcraft
- Language: JavaScript
- Homepage:
- Size: 276 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# StormLib-Node ๐ช๏ธ
StormLib-Node is a Node.js package that provides bindings for the [StormLib C++ library](https://github.com/ladislav-zezula/StormLib), 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](#-installation)
- [Usage](#-usage)
- [API](#-api)
- [Development](#-development)
- [Testing](#-testing)
- [Contributing](#-contributing)
- [License](#-license)## ๐ Installation
```bash
npm install stormlib-node-bindings
```## ๐ ๏ธ Usage
Here's a basic example of how to use StormLib-Node:
```javascript
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 archive
- `options`:
- `create`: Boolean, set to `true` to create a new archive
- `flags`: Optional flags for creating/opening the archive
- `maxFileCount`: Maximum number of files (only used when creating a new archive)#### Methods
- `addFile(localFilename, archivedName, flags = 0)`: Add a file to the archive
- `extractFile(archivedName, localFilename)`: Extract a file from the archive
- `listFiles()`: List all files in the archive
- `close()`: Close the archive## ๐งช Development
To set up the project for development:
1. Clone the repository:
```
git clone https://github.com/sebyx07/stormlib-node.git
cd stormlib-node
```2. Install dependencies:
```
npm install
```3. Compile StormLib:
```
npm run compile
```4. 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.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request## ๐ License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgements
- [StormLib](https://github.com/ladislav-zezula/StormLib) by Ladislav Zezula
- All contributors who have helped with code, bug reports, and suggestions