1.0.0 • Published 4 years ago

dso.js v1.0.0

Weekly downloads
4
License
ISC
Repository
github
Last release
4 years ago

dso.js

A DSO decompiler for Blockland.

Installation

npm install dso.js

Usage

For client-side, use with the buffer package.

For server-side, you can just use the native Buffer class.

Browser Example:

import { Buffer }     from 'buffer/';
import { decompiler } from 'dso.js';


// An HTML <input> element with the type "file" and an ID of "fileUpload"
document.getElementById ('fileUpload').onchange = function ( event )
{
	if ( event.target.files.length <= 0 )
	{
		return;
	}

	const file   = event.target.files[0];
	const reader = new FileReader ();

	reader.readAsArrayBuffer (file);

	reader.onload = function ( readerEvent )
	{
		const buffer = Buffer.from (readerEvent.target.result);

		let codeString;

		try
		{
			codeString = decompiler.decompileDSO (buffer);
		}
		catch ( error )
		{
			console.error ('Decompiler Error:', error);
			return;
		}

		console.log (codeString);
	};
};

Node.js Example:

const fs = require ('fs');

const { decompiler } = require ('dso.js');


fs.readFile ('./myFile.cs.dso', ( error, buffer ) =>
{
	if ( error )
	{
		console.error (error);
		return;
	}

	let codeString;

	try
	{
		codeString = decompiler.decompileDSO (buffer);
	}
	catch ( decompilerError )
	{
		console.error ('[!] Decompiler Error:', decompilerError);
		return;
	}

	fs.writeFileSync ('./myFile.cs', codeString);
});

Decompiler Options

The optional second argument of decompileDSO is an options object.

The only one at the moment is the outputArray boolean, which is false by default. When set to true, it makes decompileDSO output a nested code array instead of a string.

Enable the option like this:

decompiler.decompileDSO (buffer, { outputArray: true });