Package Exports
- grf-loader
- grf-loader/dist/cjs/grf-loader.js
- grf-loader/dist/umd/grf-loader.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (grf-loader) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
GRF Loader
GRF is an archive file format that support lossless data compression used on Ragnarok Online to store game assets. A GRF file may contain one or more files or directories that may have been compressed (deflate) and encrypted (variant of DES).
About
- Only supports GRF version 0x200.
- It's working both on node and browser environments
- Supports DES description.
- Avoid bloating client/server memory (by not loading the whole file into the RAM)
- Does not supports custom encryption
Installation
npm install grf-loaderBasic usage
- Load a grf file on node.js
- Load a grf from the browser
- List all files content
- Extract a file from the GRF
Load a grf file on node.js
import {GrfNode} from 'grf-loader';
import {openSync} from 'path';
const fd = openSync('path/to/data.grf', 'r');
const grf = new GrfNode(fd);
// Start parsing the grf.
await grf.load();Load a grf from the browser
import {GrfBrowser} from 'grf-loader';
const blob = document.querySelector('input[type="file"]').files[0];
const grf = new GrfBrowser(blob);
// Start parsing the grf
await grf.load();List all files content
Once the GRF is loaded, it's possible to list all files included inside it
grf.files.forEach((entry, path) => {
console.log(path);
});Extract a file from the GRF
Once the GRF is loaded, it's possible to extract all files you need
const {data, error} = await grf.getFile('data\\clientinfo.xml');
// data is a Uint8Array data, so we transform it into text
const content = String.fromCharCode.apply(null, data);
console.log(content);