unreal.js
Version:
A pak reader for games like VALORANT & Fortnite written in Node.JS
167 lines (166 loc) • 5 kB
TypeScript
/// <reference types="node" />
/// <reference types="ref-napi" />
import { FileProvider } from "../../fileprovider/FileProvider";
import { FNameEntry } from "../objects/uobject/FName";
import { IJson, Package, ResolvedObject } from "./Package";
import { FPackageFileSummary } from "../objects/uobject/PackageFileSummary";
import { FObjectExport, FObjectImport, FPackageIndex } from "../objects/uobject/ObjectResource";
import { UObject } from "./exports/UObject";
import { Locres } from "../locres/Locres";
import { FAssetArchiveWriter } from "./writer/FAssetArchiveWriter";
import { WritableStreamBuffer } from "stream-buffers";
import { Lazy } from "../../util/Lazy";
import { VersionContainer } from "../versions/VersionContainer";
/**
* UE4 Pak Package
* @extends {Package}
*/
export declare class PakPackage extends Package {
/**
* Pak magic
* @type {number}
* @protected
*/
protected packageMagic: number;
/**
* UASSET data
* @type {Buffer}
* @public
*/
uasset: Buffer;
/**
* UEXP data
* @type {?Buffer}
* @public
*/
uexp?: Buffer;
/**
* UBULK data
* @type {?Buffer}
* @public
*/
ubulk?: Buffer;
/**
* Name of package file
* @type {string}
* @public
*/
fileName: string;
/**
* File provider
* @type {?FileProvider}
* @public
*/
provider?: FileProvider;
/**
* Information about package
* @type {FPackageFileSummary}
* @public
*/
info: FPackageFileSummary;
/**
* Name map
* @type {Array<FNameEntry>}
* @public
*/
nameMap: FNameEntry[];
/**
* Import map
* @type {Array<FObjectImport>}
* @public
*/
importMap: FObjectImport[];
/**
* Export map
* @type {Array<FObjectExport>}
* @public
*/
exportMap: FObjectExport[];
/**
* Stores lazy exports
* @type {Array<Lazy<UObject>>}
* @public
*/
get exportsLazy(): Lazy<UObject>[];
/**
* Creates an instance
* @param {Buffer} uasset Uasset data
* @param {?Buffer} uexp Uexp data
* @param {?Buffer} ubulk Ubulk data
* @param {string} name Name of package file
* @param {?FileProvider} provider File provider
* @param {?VersionContainer} versions Game that is used
* @constructor
* @public
*/
constructor(uasset: Buffer, uexp: Buffer, ubulk: Buffer, name: string, provider?: FileProvider, versions?: VersionContainer);
/**
* Finds an object by index
* @param {?FPackageIndex} index Index to find
* @returns {?Lazy<any>} Object or null
* @public
*/
findObject<T>(index?: FPackageIndex): Lazy<T>;
/**
* Loads an import
* @param {?FObjectImport} imp Import to load
* @returns {?UObject} Object or null
* @public
*/
loadImport(imp?: FObjectImport): UObject;
/**
* Finds an import
* @param {?FObjectImport} imp Import to load
* @returns {?Lazy<UObject>} Object or null
* @public
*/
findImport(imp?: FObjectImport): Lazy<UObject>;
/**
* Finds an object by name
* @param {string} objectName Name of object
* @param {?string} className Class name of object
* @returns {?Lazy<UObject>} Object or null
* @public
*/
findObjectByName(objectName: string, className?: string): Lazy<UObject>;
findObjectMinimal(index?: FPackageIndex): ResolvedObject | null;
resolveImport(importIndex: FPackageIndex): ResolvedObject;
/**
* Gets an import object
* @param {FPackageIndex} imp Import to find
* @returns {?FObjectImport} Import or null
* @public
*/
getImportObject(imp: FPackageIndex): FObjectImport;
/**
* Gets an export object
* @param {FPackageIndex} imp Export to find
* @returns {?FObjectExport} Export or null
* @public
*/
getExportObject(imp: FPackageIndex): FObjectExport;
/**
* Gets either export or import object
* @param {FPackageIndex} imp Index to find
* @returns {FObjectImport | FObjectExport | null} Object or null
* @public
*/
getResource(imp: FPackageIndex): FObjectImport | FObjectExport;
/**
* Turns this into json
* @param {?Locres} locres Locres to use
* @returns {Array<IJson>} Json
* @public
*/
toJson(locres?: Locres): IJson[];
/**
* Gets a package from index
* @param {FPackageIndex} imp Package to get
* @returns {?Package} Package or null
* @private
*/
private getPackage;
updateHeader(): void;
write(uassetOutputStream: WritableStreamBuffer, uexpOutputStream: WritableStreamBuffer, ubulkOutputStream?: WritableStreamBuffer): void;
writer(outputStream: WritableStreamBuffer): FAssetArchiveWriter;
}