Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
misterhat committed Nov 16, 2019
0 parents commit 0550796
Show file tree
Hide file tree
Showing 8 changed files with 795 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
67 changes: 67 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# rsc-archiver
compress and decompress runescape classic .jag/.mem cache files. these files
contain a proprietary header describing the size of the archive, and of
each individual entry (file). filenames are stored with a "hash" so it's
impossible to recover the originals without bruteforcing (unless they're under
~5 characters).

## install

$ npm install @2003scape/rsc-archiver

## usage
### cli
```
rsc-archiver <command>
Commands:
rsc-archiver x <archive> <file> [<out>] extract a file from an archive
[aliases: extract]
rsc-archiver a <archive> <file> [-g] add a file to an archive
[aliases: add]
rsc-archiver d <archive> <file> remove a file from an archive
[aliases: delete]
rsc-archiver l <archive> list hashes and file sizes in an
archive [aliases: list]
Options:
--help Show help [boolean]
--version Show version number [boolean]
```

### api
```javascript
const fs = require('fs');
const { JagArchive } = require('./src');

let rawJag = fs.readFileSync('./data204/sounds1.mem');
let archive = new JagArchive();
archive.readArchive(rawJag);
console.log(`cache has ${archive.entries.size} files`);
fs.writeFileSync('death.pcm', archive.getEntry('death.pcm'));

const testArchive = new JagArchive();
testArchive.putEntry('test.txt', Buffer.from('test string'));
fs.writeFileSync('./data204/test.jag', testArchive.toArchive(true));

rawJag = fs.readFileSync('./data204/test.jag');
archive = new JagArchive();
archive.readArchive(rawJag);
console.log(`cache has ${archive.entries.size} files`);
console.log(archive.getEntry('test.txt').toString());
```

## license
Copyright 2019 2003Scape Team

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your option)
any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
18 changes: 18 additions & 0 deletions example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
const fs = require('fs');
const { JagArchive } = require('./src');

let rawJag = fs.readFileSync('./data204/sounds1.mem');
let archive = new JagArchive();
archive.readArchive(rawJag);
console.log(`cache has ${archive.entries.size} files`);
fs.writeFileSync('death.pcm', archive.getEntry('death.pcm'));

const testArchive = new JagArchive();
testArchive.putEntry('test.txt', Buffer.from('test string'));
fs.writeFileSync('./data204/test.jag', testArchive.toArchive(true));

rawJag = fs.readFileSync('./data204/test.jag');
archive = new JagArchive();
archive.readArchive(rawJag);
console.log(`cache has ${archive.entries.size} files`);
console.log(archive.getEntry('test.txt').toString());
210 changes: 210 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 29 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "rsc-archiver",
"version": "1.0.0",
"description": "compress and decompress runescape classic cache archives",
"main": "index.js",
"bin": "./src/bin.js",
"repository": {
"type": "git",
"url": "git+https://github.com/2003scape/rsc-archiver.git"
},
"keywords": [
"runescape",
"rsc",
"cache",
"archive",
"bzip"
],
"author": "2003Scape Team",
"license": "AGPL-3.0+",
"bugs": {
"url": "https://github.com/2003scape/rsc-archiver/issues"
},
"homepage": "https://github.com/2003scape/rsc-archiver#readme",
"dependencies": {
"@ledgerhq/compressjs": "^1.3.2",
"pretty-bytes": "^5.3.0",
"yargs": "^14.2.0"
}
}
Loading

0 comments on commit 0550796

Please sign in to comment.