unreal.js
Version:
A pak reader for games like VALORANT & Fortnite written in Node.JS
38 lines (37 loc) • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FManifestData = void 0;
const FManifestHeader_1 = require("./FManifestHeader");
const FManifestMeta_1 = require("./FManifestMeta");
const FChunkDataList_1 = require("./FChunkDataList");
const FFileManifestList_1 = require("./FFileManifestList");
const FCustomFields_1 = require("./FCustomFields");
const Compression_1 = require("../../../compression/Compression");
const FByteArchive_1 = require("../../reader/FByteArchive");
/**
* FManifestData
*/
class FManifestData {
/**
* Creates an instance using an UE4 Reader
* @param {FArchive} Ar UE4 Reader to use
* @constructor
* @public
*/
constructor(Ar) {
const startPos = Ar.pos;
this.header = new FManifestHeader_1.FManifestHeader(Ar);
let manifestRawData = Ar.read(this.header.dataSizeCompressed);
if (this.header.storedAs & 1) {
//Compressed, only compression format is ZLib
manifestRawData = Compression_1.Compression.uncompress0("Zlib", manifestRawData, this.header.dataSizeUncompressed);
}
const rawAr = new FByteArchive_1.FByteArchive(manifestRawData);
this.meta = new FManifestMeta_1.FManifestMeta(rawAr);
this.chunkDataList = new FChunkDataList_1.FChunkDataList(rawAr);
this.fileManifestList = new FFileManifestList_1.FFileManifestList(rawAr);
this.customFields = new FCustomFields_1.FCustomFields(rawAr);
Ar.pos = startPos + this.header.headerSize + this.header.dataSizeCompressed;
}
}
exports.FManifestData = FManifestData;