From 5bf63d98bcc71dce73a86ee23859c77741a50c3d Mon Sep 17 00:00:00 2001 From: LijieZhang1998 Date: Mon, 10 Nov 2025 09:55:21 -0600 Subject: [PATCH] STREAMS-1984: Add NumberInt to global scope for JS Engine --- snippets/mongocompat/mongotypes.js | 8 +++++++- snippets/mongocompat/test.js | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/snippets/mongocompat/mongotypes.js b/snippets/mongocompat/mongotypes.js index 5903333..60350c1 100644 --- a/snippets/mongocompat/mongotypes.js +++ b/snippets/mongocompat/mongotypes.js @@ -487,10 +487,16 @@ Object.defineProperty(NumberLong.prototype, 'exactValueString', { if (!NumberInt.prototype) { NumberInt.prototype = {}; } - +NumberInt.prototype.nativeToString = NumberInt.prototype.toString; +NumberInt.prototype.toString = function() { + return `NumberInt(${this.valueOf()})`; +}; NumberInt.prototype.tojson = function() { return this.toString(); }; +NumberInt.prototype.toNumber = function() { + return this.valueOf(); +}; // NumberDecimal if (typeof NumberDecimal !== 'undefined') { diff --git a/snippets/mongocompat/test.js b/snippets/mongocompat/test.js index a66b6fb..f1fa715 100644 --- a/snippets/mongocompat/test.js +++ b/snippets/mongocompat/test.js @@ -8,6 +8,24 @@ assert.strictEqual(NumberLong(2147483647).toString(), 'NumberLong(2147483647)'); assert.strictEqual(NumberLong("2147483648").toString(), 'NumberLong("2147483648")'); assert.strictEqual(NumberLong(-2147483648).toString(), 'NumberLong(-2147483648)'); assert.strictEqual(NumberLong(-2147483649).toString(), 'NumberLong("-2147483649")'); + +const int1 = NumberInt(42); +assert.strictEqual(int1.toString(), 'NumberInt(42)'); +assert.strictEqual(int1.tojson(), 'NumberInt(42)'); +assert.strictEqual(int1.toNumber(), 42); +assert.strictEqual(int1.valueOf(), 42); +assert.strictEqual(int1.toJSON(), 42); +const int2 = NumberInt(-100); +assert.strictEqual(int2.toString(), 'NumberInt(-100)'); +assert.strictEqual(int2.tojson(), 'NumberInt(-100)'); +assert.strictEqual(int2.toNumber(), -100); +const maxInt32 = NumberInt(2147483647); +assert.strictEqual(maxInt32.toString(), 'NumberInt(2147483647)'); +assert.strictEqual(maxInt32.toNumber(), 2147483647); +const minInt32 = NumberInt(-2147483648); +assert.strictEqual(minInt32.toString(), 'NumberInt(-2147483648)'); +assert.strictEqual(minInt32.toNumber(), -2147483648); + assert.strictEqual(NumberLong(9223372036854775807).toString(), 'NumberLong("9223372036854775807")'); assert.strictEqual(NumberLong(-9223372036854775808).toString(), 'NumberLong("-9223372036854775808")'); const maxLong = NumberLong(9223372036854775807, 2147483647, -1);