From 8dab4d57faf0ba7b4f1663474cae2e4fbeb84a2a Mon Sep 17 00:00:00 2001 From: Moon Man Date: Sun, 28 Jan 2024 07:48:59 -0500 Subject: [PATCH] many fixes --- dist/bert.js | 28 ++++++++++++++-------------- package.json | 2 +- src/bert.ts | 31 ++++++++++++++++--------------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/dist/bert.js b/dist/bert.js index 85bcc7e..1e4eb22 100644 --- a/dist/bert.js +++ b/dist/bert.js @@ -108,7 +108,7 @@ export class Bert { buffer[0] = Types.STRING; buffer.writeUInt16BE(obj.length, 1); const len = buffer.write(obj, 3); - return Buffer.from(buffer, 3 + len); + return Buffer.from(buffer, 0, 3 + len); } }; encode_boolean = (obj, buffer) => { @@ -129,13 +129,13 @@ export class Bert { if (isInteger && obj >= 0 && obj < 256) { buffer[0] = Types.SMALL_INTEGER; buffer.writeUInt8(obj, 1); - return Buffer.from(buffer, 2); + return Buffer.from(buffer, 0, 2); } // 4 byte int... if (isInteger && obj >= -134217728 && obj <= 134217727) { buffer[0] = Types.INTEGER; buffer.writeInt32BE(obj, 1); - return Buffer.from(buffer, 5); + return Buffer.from(buffer, 0, 5); } // Bignum... const numBuffer = Buffer.alloc(buffer.length); @@ -156,20 +156,20 @@ export class Bert { buffer[0] = Types.SMALL_BIG; buffer.writeUInt8(offset - 1, 1); numBuffer.copy(buffer, 2, 0, offset); - return Buffer.from(buffer, 2 + offset); + return Buffer.from(buffer, 0, 2 + offset); } else { buffer[0] = Types.LARGE_BIG; buffer.writeUInt32BE(offset - 1, 1); numBuffer.copy(buffer, 5, 0, offset); - return Buffer.from(buffer, 5 + offset); + return Buffer.from(buffer, 0, 5 + offset); } }; encode_float = (obj, buffer) => { // float... buffer[0] = Types.NEW_FLOAT; buffer.writeDoubleBE(obj, 1); - return Buffer.from(buffer, 9); + return Buffer.from(buffer, 0, 9); }; encode_object = (obj, buffer) => { // Check if it's an atom, binary, or tuple... @@ -196,13 +196,13 @@ export class Bert { buffer[0] = Types.ATOM; buffer.writeUInt16BE(obj.value.length, 1); const len = buffer.write(obj.value, 3); - return Buffer.from(buffer, 3 + len); + return Buffer.from(buffer, 0, 3 + len); }; encode_binary = (obj, buffer) => { buffer[0] = Types.BINARY; buffer.writeUInt32BE(obj.length, 1); obj.copy(buffer, 5); - return Buffer.from(buffer, 5 + obj.length); + return Buffer.from(buffer, 0, 5 + obj.length); }; encode_undefined = (_obj, buffer) => { return this.#encode(null, buffer); @@ -211,12 +211,12 @@ export class Bert { if (obj.length < 256) { buffer[0] = Types.SMALL_TUPLE; buffer.writeUInt8(obj.length, 1); - buffer = Buffer.from(buffer, 2); + buffer = Buffer.from(buffer, 0, 2); } else { buffer[0] = Types.LARGE_TUPLE; buffer.writeUInt32BE(obj.length, 1); - buffer = buffer.slice(5); + buffer = Buffer.from(buffer, 0, 5); } for (let i = 0; i < obj.length; ++i) { buffer = this.#encode(obj[i], buffer); @@ -226,22 +226,22 @@ export class Bert { encode_array = (obj, buffer) => { if (obj.length === 0) { buffer[0] = Types.NIL; - return Buffer.from(buffer, 1); + return Buffer.from(buffer, 0, 1); } buffer[0] = Types.LIST; buffer.writeUInt32BE(obj.length, 1); - buffer = Buffer.from(buffer, 5); + buffer = Buffer.from(buffer, 0, 5); for (let i = 0; i < obj.length; ++i) { buffer = this.#encode(obj[i], buffer); } buffer[0] = Types.NIL; - return Buffer.from(buffer, 1); + return Buffer.from(buffer, 0, 1); }; encode_map = (obj, buffer) => { const keys = Object.keys(obj); buffer[0] = Types.MAP; buffer.writeUInt32BE(keys.length, 1); - buffer = Buffer.from(buffer, 5); + buffer = Buffer.from(buffer, 0, 5); for (let i = 0; i < keys.length; ++i) { const key = this.mapKeyAsAtom ? this.toAtom(keys[i]) : keys[i]; buffer = this.#encode(key, buffer); diff --git a/package.json b/package.json index fc726b5..164201d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "noderl", - "version": "1.0.0", + "version": "0.0.1", "type": "module", "description": "Erlang-node.js bridge", "main": "./dist/main.js", diff --git a/src/bert.ts b/src/bert.ts index 5714e47..d6dcfab 100644 --- a/src/bert.ts +++ b/src/bert.ts @@ -124,11 +124,12 @@ export class Bert { encode_string = (obj: string, buffer: Buffer) => { if (this.convention === Lang.ELIXIR) { return this.encode_binary(Buffer.from(obj), buffer); - } else { + } + else { buffer[0] = Types.STRING; buffer.writeUInt16BE(obj.length, 1); const len = buffer.write(obj, 3); - return Buffer.from(buffer, 3 + len); + return Buffer.from(buffer, 0, 3 + len); } }; @@ -152,14 +153,14 @@ export class Bert { if (isInteger && obj >= 0 && obj < 256) { buffer[0] = Types.SMALL_INTEGER; buffer.writeUInt8(obj, 1); - return Buffer.from(buffer, 2); + return Buffer.from(buffer, 0, 2); } // 4 byte int... if (isInteger && obj >= -134217728 && obj <= 134217727) { buffer[0] = Types.INTEGER; buffer.writeInt32BE(obj, 1); - return Buffer.from(buffer, 5); + return Buffer.from(buffer, 0, 5); } // Bignum... @@ -182,12 +183,12 @@ export class Bert { buffer[0] = Types.SMALL_BIG; buffer.writeUInt8(offset - 1, 1); numBuffer.copy(buffer, 2, 0, offset); - return Buffer.from(buffer, 2 + offset); + return Buffer.from(buffer, 0, 2 + offset); } else { buffer[0] = Types.LARGE_BIG; buffer.writeUInt32BE(offset - 1, 1); numBuffer.copy(buffer, 5, 0, offset); - return Buffer.from(buffer, 5 + offset); + return Buffer.from(buffer, 0, 5 + offset); } }; @@ -195,7 +196,7 @@ export class Bert { // float... buffer[0] = Types.NEW_FLOAT; buffer.writeDoubleBE(obj, 1); - return Buffer.from(buffer, 9); + return Buffer.from(buffer, 0, 9); }; encode_object = (obj: any, buffer: Buffer) => { @@ -226,14 +227,14 @@ export class Bert { buffer[0] = Types.ATOM; buffer.writeUInt16BE(obj.value.length, 1); const len = buffer.write(obj.value, 3); - return Buffer.from(buffer, 3 + len); + return Buffer.from(buffer, 0, 3 + len); }; encode_binary = (obj: Buffer, buffer: Buffer) => { buffer[0] = Types.BINARY; buffer.writeUInt32BE(obj.length, 1); obj.copy(buffer, 5); - return Buffer.from(buffer, 5 + obj.length); + return Buffer.from(buffer, 0, 5 + obj.length); }; encode_undefined = (_obj: Buffer, buffer: Buffer) => { @@ -244,11 +245,11 @@ export class Bert { if (obj.length < 256) { buffer[0] = Types.SMALL_TUPLE; buffer.writeUInt8(obj.length, 1); - buffer = Buffer.from(buffer, 2); + buffer = Buffer.from(buffer, 0, 2); } else { buffer[0] = Types.LARGE_TUPLE; buffer.writeUInt32BE(obj.length, 1); - buffer = buffer.slice(5); + buffer = Buffer.from(buffer, 0, 5); } for (let i = 0; i < obj.length; ++i) { @@ -261,25 +262,25 @@ export class Bert { encode_array = (obj: any[], buffer: Buffer) => { if (obj.length === 0) { buffer[0] = Types.NIL; - return Buffer.from(buffer, 1); + return Buffer.from(buffer, 0, 1); } buffer[0] = Types.LIST; buffer.writeUInt32BE(obj.length, 1); - buffer = Buffer.from(buffer, 5); + buffer = Buffer.from(buffer, 0, 5); for (let i = 0; i < obj.length; ++i) { buffer = this.#encode(obj[i], buffer); } buffer[0] = Types.NIL; - return Buffer.from(buffer, 1); + return Buffer.from(buffer, 0, 1); }; encode_map = (obj: Record, buffer: Buffer) => { const keys = Object.keys(obj); buffer[0] = Types.MAP; buffer.writeUInt32BE(keys.length, 1); - buffer = Buffer.from(buffer, 5); + buffer = Buffer.from(buffer, 0, 5); for (let i = 0; i < keys.length; ++i) { const key = this.mapKeyAsAtom ? this.toAtom(keys[i]) : keys[i];