From 796a6e73378fe43450f5abfc25ea807deb595055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobi=20Sch=C3=A4fer?= Date: Sat, 26 Aug 2023 21:29:54 +0200 Subject: [PATCH 1/2] Enable ES6 features in Rhino --- src/main/java/helma/scripting/rhino/RhinoCore.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/helma/scripting/rhino/RhinoCore.java b/src/main/java/helma/scripting/rhino/RhinoCore.java index 36c69ad6..ab1fc57d 100644 --- a/src/main/java/helma/scripting/rhino/RhinoCore.java +++ b/src/main/java/helma/scripting/rhino/RhinoCore.java @@ -93,8 +93,8 @@ public final class RhinoCore implements ScopeProvider { // optimization level for rhino engine, ranges from -1 to 9 int optLevel = 0; - // language version - default to JS 1.8 - int languageVersion = 180; + // language version - default to ES6 + int languageVersion = 200; // debugger/tracer flags boolean hasDebugger = false; From 0e8f04c0f50da940182fdea78bb0a1f15c8d6098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobi=20Sch=C3=A4fer?= Date: Sat, 26 Aug 2023 22:32:44 +0200 Subject: [PATCH 2/2] Replace for..each loops with for..of --- modules/jala/code/Database.js | 8 ++++---- modules/jala/util/HopKit/scripts/MessageParser.js | 4 ++-- modules/jala/util/Test/code/Global/jala.Test.js | 14 +++++++------- src/dist/apps/test/tests/HopObjectCollection.js | 2 +- src/dist/apps/test/tests/HopObjectGeneric.js | 2 +- src/dist/apps/test/tests/HopObjectGroupBy.js | 8 ++++---- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/modules/jala/code/Database.js b/modules/jala/code/Database.js index 58c2681e..913c9c4f 100644 --- a/modules/jala/code/Database.js +++ b/modules/jala/code/Database.js @@ -518,7 +518,7 @@ jala.db.DataType = function(type, typeName, params) { this.getParams = function() { return params; }; - + /** @ignore */ this.toString = function() { return "[DataType " + @@ -597,7 +597,7 @@ jala.db.RamDatabase = function(name, username, password) { this.getUsername = function() { return username || "sa"; }; - + /** * Returns the password of this database * @returns The password of this database @@ -841,7 +841,7 @@ jala.db.RamDatabase.prototype.copyTables = function(database, tables) { tables = jala.db.metadata.getTableNames(dbMetadata); } - for each (var tableName in tables) { + for (let tableName of tables) { // drop the table if it exists if (this.tableExists(tableName)) { this.dropTable(tableName); @@ -1011,7 +1011,7 @@ jala.db.FileDatabase = function(name, directory, username, password) { this.getUsername = function() { return username || "sa"; }; - + /** * Returns the password of this database * @returns The password of this database diff --git a/modules/jala/util/HopKit/scripts/MessageParser.js b/modules/jala/util/HopKit/scripts/MessageParser.js index 1916852b..06e1a34c 100644 --- a/modules/jala/util/HopKit/scripts/MessageParser.js +++ b/modules/jala/util/HopKit/scripts/MessageParser.js @@ -330,7 +330,7 @@ MessageParser.prototype.parseSkinFile = function(file, encoding) { var processMacros = function(macros) { var re = gettext_macro.REGEX; var id, pluralId, name, args, param, key, msg; - for each (var macro in macros) { + for (let macro of macros) { id = pluralId = null; name = macro.getName(); param = macro.getNamedParams(); @@ -374,7 +374,7 @@ MessageParser.prototype.parseSkinFile = function(file, encoding) { if (skin.hasMainskin()) { processMacros(skin.getMacros()); } - for each (var name in skin.getSubskinNames()) { + for (let name of skin.getSubskinNames()) { var subskin = skin.getSubskin(name); processMacros(subskin.getMacros()); } diff --git a/modules/jala/util/Test/code/Global/jala.Test.js b/modules/jala/util/Test/code/Global/jala.Test.js index cc2ef26e..f171da68 100644 --- a/modules/jala/util/Test/code/Global/jala.Test.js +++ b/modules/jala/util/Test/code/Global/jala.Test.js @@ -41,7 +41,7 @@ app.addRepository("modules/helma/Http.js"); /** * Jala dependencies */ -app.addRepository(getProperty("jala.dir", "modules/jala") + +app.addRepository(getProperty("jala.dir", "modules/jala") + "/code/Database.js"); /** @@ -573,11 +573,11 @@ jala.Test.prototype.executeTest = function(testFile) { } finally { // exit the js context created above cx.exit(); - // FIXME (sim) don't polute global in the first place or + // FIXME (sim) don't polute global in the first place or // get a fresh global for each testrun global.testFunctionIdents.forEach(function(funcName) { // NOTE won't work on var-defined props - // delete global[funcName]] + // delete global[funcName]] global[funcName] = "ignoreMe"; }, this); global["setup"] = "ignoreMe"; @@ -861,7 +861,7 @@ jala.Test.prototype.assertEqualFile = function assertEqualFile(val, file) { // the last linefeed in a file too var str = value1.replace(/\r?\n$/g, ""); equals = str === file.readAll(); - } + } if (!equals) { throw new jala.Test.TestException(comment, "Expected " + jala.Test.valueToString(value1) + @@ -1155,7 +1155,7 @@ jala.Test.HttpClient = function() { this.getClient = function() { return client; }; - + /** * Sets the cookie to use for subsequent requests using this client * @param {Array} arr The cookie object as received from helma.Http.getUrl @@ -1336,7 +1336,7 @@ jala.Test.DatabaseMgr.prototype.startDatabase = function(dbSourceName, copyTable // collect the table names of all relational prototypes tables = []; var protos = app.getPrototypes(); - for each (var proto in protos) { + for (let proto of protos) { var dbMap = proto.getDbMapping(); if (dbMap.isRelational()) { tables.push(dbMap.getTableName()); @@ -1401,7 +1401,7 @@ jala.Test.DatabaseMgr.prototype.stopAll = function() { */ jala.Test.SmtpServer = function(port) { var server = null; - + var oldSmtpServer = null; /** diff --git a/src/dist/apps/test/tests/HopObjectCollection.js b/src/dist/apps/test/tests/HopObjectCollection.js index 60ba4737..7971114d 100644 --- a/src/dist/apps/test/tests/HopObjectCollection.js +++ b/src/dist/apps/test/tests/HopObjectCollection.js @@ -149,7 +149,7 @@ function testOrder(org, pos) { function cleanup() { var persons = root.persons.list(); - for each (var person in persons) { + for (let person of persons) { person.remove(); } ikea.remove(); diff --git a/src/dist/apps/test/tests/HopObjectGeneric.js b/src/dist/apps/test/tests/HopObjectGeneric.js index c9929f8e..37d4eb99 100644 --- a/src/dist/apps/test/tests/HopObjectGeneric.js +++ b/src/dist/apps/test/tests/HopObjectGeneric.js @@ -86,7 +86,7 @@ function testAdd() { function cleanup() { var persons = org.generic.list(); - for each (var person in persons) { + for (let person of persons) { person.remove(); } org.remove(); diff --git a/src/dist/apps/test/tests/HopObjectGroupBy.js b/src/dist/apps/test/tests/HopObjectGroupBy.js index fc028b12..88a02818 100644 --- a/src/dist/apps/test/tests/HopObjectGroupBy.js +++ b/src/dist/apps/test/tests/HopObjectGroupBy.js @@ -68,7 +68,7 @@ function testGroupByAddRemoveNoCommit() { // FIXME HELMABUG: country is still accessible at this point // similar to http://helma.org/bugs/show_bug.cgi?id=551 assertNull(root.organisationsByCountry.get(org.country)); - + assertEqual(countryCount, root.organisationsByCountry.count()); } @@ -130,7 +130,7 @@ function testGroupTransient() { assertNotNull(country); assertEqual(country._prototype, "Country"); assertEqual(country.groupname, org.country); - + // These don't work as org uses the parent from type.properties // which is root.organisations. Not sure if this is a bug or not. // assertEqual(country, org._parent); @@ -143,7 +143,7 @@ function testGroupTransient() { function cleanup() { var orgs = root.organisations.list(); - for each (var org in orgs) { + for (let org of orgs) { org.remove(); } -} \ No newline at end of file +}