From 1e1c447d0dc26fa62e73d643d504a02665ec0d9e Mon Sep 17 00:00:00 2001 From: "Michael (mcm)" Date: Thu, 20 Apr 2023 07:18:56 +0000 Subject: [PATCH] [REF] tools: transpile esm to sync module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit changes the js transpiler to write sync module. The goal is to remove all async module and simplify the module loader in the future. task id: 3265979 closes odoo/odoo#119186 Signed-off-by: Géry Debongnie --- .../tests/test_js_transpiler.py | 46 +++++++++---------- odoo/tools/js_transpiler.py | 10 ++-- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/odoo/addons/test_assetsbundle/tests/test_js_transpiler.py b/odoo/addons/test_assetsbundle/tests/test_js_transpiler.py index 9c946b32170..6c61c8084f4 100644 --- a/odoo/addons/test_assetsbundle/tests/test_js_transpiler.py +++ b/odoo/addons/test_assetsbundle/tests/test_js_transpiler.py @@ -14,14 +14,14 @@ class TestJsTranspiler(TransactionCase): input_content = """/** @odoo-module alias=test_assetsbundle.Alias **/""" result = transpile_javascript("/test_assetsbundle/static/src/alias.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/alias', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/alias', [], function (require) { 'use strict'; let __exports = {}; /** @odoo-module alias=test_assetsbundle.Alias **/ return __exports; }); -odoo.define(`test_assetsbundle.Alias`, async function(require) { +odoo.define(`test_assetsbundle.Alias`, function (require) { return require('@test_assetsbundle/alias')[Symbol.for("default")]; }); """ @@ -32,14 +32,14 @@ odoo.define(`test_assetsbundle.Alias`, async function(require) { input_content = """/** @odoo-module alias=test_assetsbundle.Alias default=False **/""" result = transpile_javascript("/test_assetsbundle/static/src/alias.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/alias', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/alias', [], function (require) { 'use strict'; let __exports = {}; /** @odoo-module alias=test_assetsbundle.Alias default=False **/ return __exports; }); -odoo.define(`test_assetsbundle.Alias`, async function(require) { +odoo.define(`test_assetsbundle.Alias`, function (require) { return require('@test_assetsbundle/alias'); }); """ @@ -49,14 +49,14 @@ odoo.define(`test_assetsbundle.Alias`, async function(require) { input_content = """/** @odoo-module alias=test_assetsbundle.Alias default=0 **/""" result = transpile_javascript("/test_assetsbundle/static/src/alias.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/alias', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/alias', [], function (require) { 'use strict'; let __exports = {}; /** @odoo-module alias=test_assetsbundle.Alias default=0 **/ return __exports; }); -odoo.define(`test_assetsbundle.Alias`, async function(require) { +odoo.define(`test_assetsbundle.Alias`, function (require) { return require('@test_assetsbundle/alias'); }); """ @@ -66,14 +66,14 @@ odoo.define(`test_assetsbundle.Alias`, async function(require) { input_content = """/** @odoo-module alias=test_assetsbundle.Alias default=false **/""" result = transpile_javascript("/test_assetsbundle/static/src/alias.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/alias', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/alias', [], function (require) { 'use strict'; let __exports = {}; /** @odoo-module alias=test_assetsbundle.Alias default=false **/ return __exports; }); -odoo.define(`test_assetsbundle.Alias`, async function(require) { +odoo.define(`test_assetsbundle.Alias`, function (require) { return require('@test_assetsbundle/alias'); }); """ @@ -93,7 +93,7 @@ export const Ferrari = class Ferrari extends Car {}; """ result = transpile_javascript("/test_assetsbundle/static/src/classes.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/classes', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/classes', [], function (require) { 'use strict'; let __exports = {}; const Nice = __exports[Symbol.for("default")] = class Nice {} @@ -146,7 +146,7 @@ const aaa = "keep!"; """ result = transpile_javascript("/test_assetsbundle/static/src/comments.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/comments', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/comments', [], function (require) { 'use strict'; let __exports = {}; /** @@ -206,7 +206,7 @@ export default function sayHelloDefault() { """ result = transpile_javascript("/test_assetsbundle/static/src/functions.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/functions', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/functions', [], function (require) { 'use strict'; let __exports = {}; __exports.sayHello = sayHello; function sayHello() { @@ -268,7 +268,7 @@ import Line16 from "test.Dialog.error"; """ result = transpile_javascript("/test_assetsbundle/static/src/import.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/import', ['@test_assetsbundle/Dialog', 'Dialog', '@tests/Dialog', 'test.Dialog', 'test.Dialog2', 'legacy.module', '@new_module/file', '@test.Dialog', 'test/Dialog', 'test.Dialog.error'], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/import', ['@test_assetsbundle/Dialog', 'Dialog', '@tests/Dialog', 'test.Dialog', 'test.Dialog2', 'legacy.module', '@new_module/file', '@test.Dialog', 'test/Dialog', 'test.Dialog.error'], function (require) { 'use strict'; let __exports = {}; /** @@ -322,7 +322,7 @@ import c from "@tests/dir/index/"; import d from "@tests";""" result = transpile_javascript("/test_assetsbundle/static/src/index.js", input_content) - expected_result = """odoo.define('@test_assetsbundle', ['@tests/dir', '@tests'], async function (require) { + expected_result = """odoo.define('@test_assetsbundle', ['@tests/dir', '@tests'], function (require) { 'use strict'; let __exports = {}; const a = __exports.a = 5; @@ -364,7 +364,7 @@ export * from "@tests/Dialog"; """ result = transpile_javascript("/test_assetsbundle/static/src/list.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/list', ['@tests/Dialog', '@test_assetsbundle/Dialog'], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/list', ['@tests/Dialog', '@test_assetsbundle/Dialog'], function (require) { 'use strict'; let __exports = {}; Object.assign(__exports, {a, b}); @@ -411,7 +411,7 @@ export default a; """ result = transpile_javascript("/test_assetsbundle/static/src/variables.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/variables', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/variables', [], function (require) { 'use strict'; let __exports = {}; const v = __exports.v = 5; @@ -432,14 +432,14 @@ return __exports; self.assertEqual(result, expected_result) def test_10_qunit_module_test(self): - input_content = """QUnit.test("Tests", async function (assert) {{}})""" + input_content = """QUnit.test("Tests", function (assert) {{}})""" result = transpile_javascript("/test_assetsbundle/static/tests/alias.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/../tests/alias', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/../tests/alias', [], function (require) { 'use strict'; let __exports = {}; -QUnit.module("test_assetsbundle", function() {QUnit.test("Tests", async function (assert) {{}})}); +QUnit.module("test_assetsbundle", function() {QUnit.test("Tests", function (assert) {{}})}); return __exports; }); """ @@ -447,14 +447,14 @@ return __exports; self.assertEqual(result, expected_result) def test_11_qunit_module_debug(self): - input_content = """QUnit.debug("Tests", async function (assert) {{}})""" + input_content = """QUnit.debug("Tests", function (assert) {{}})""" result = transpile_javascript("/test_assetsbundle/static/tests/alias.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/../tests/alias', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/../tests/alias', [], function (require) { 'use strict'; let __exports = {}; -QUnit.module("test_assetsbundle", function() {QUnit.debug("Tests", async function (assert) {{}})}); +QUnit.module("test_assetsbundle", function() {QUnit.debug("Tests", function (assert) {{}})}); return __exports; }); """ @@ -466,7 +466,7 @@ return __exports; result = transpile_javascript("/test_assetsbundle/static/tests/alias.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/../tests/alias', [], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/../tests/alias', [], function (require) { 'use strict'; let __exports = {}; let a = 1 + 1; @@ -497,7 +497,7 @@ const dialog = require("@test/Dialog2") result = transpile_javascript("/test_assetsbundle/static/src/alias.js", input_content) - expected_result = """odoo.define('@test_assetsbundle/alias', ['@test/Dialog', '@test/Dialog2'], async function (require) { + expected_result = """odoo.define('@test_assetsbundle/alias', ['@test/Dialog', '@test/Dialog2'], function (require) { 'use strict'; let __exports = {}; diff --git a/odoo/tools/js_transpiler.py b/odoo/tools/js_transpiler.py index be9a70ca713..1aaaa4815cd 100644 --- a/odoo/tools/js_transpiler.py +++ b/odoo/tools/js_transpiler.py @@ -68,7 +68,7 @@ URL_RE = re.compile(r""" def url_to_module_path(url): """ - Odoo modules each have a name. (odoo.define("", async function (require) {...}); + Odoo modules each have a name. (odoo.define("", function (require) {...}); It is used in to be required later. (const { something } = require(""). The transpiler transforms the url of the file in the project to this name. It takes the module name and add a @ on the start of it, and map it to be the source of the static/src (or @@ -113,7 +113,7 @@ def wrap_with_odoo_define(module_path, dependencies, content): It adds as a second argument the list of dependencies. Should logically be called once all other operations have been performed. """ - return f"""odoo.define({module_path!r}, {list(dependencies)}, async function (require) {{ + return f"""odoo.define({module_path!r}, {list(dependencies)}, function (require) {{ 'use strict'; let __exports = {{}}; {content} @@ -694,7 +694,7 @@ def get_aliased_odoo_define_content(module_path, content): we have a problem when we will have converted to module to ES6: its new name will be more like "web/chrome/abstract_action". So the require would fail ! So we add a second small modules, an alias, as such: - > odoo.define("web/chrome/abstract_action", async function(require) { + > odoo.define("web/chrome/abstract_action", function (require) { > return require('web.AbstractAction')[Symbol.for("default")]; > }); @@ -724,11 +724,11 @@ def get_aliased_odoo_define_content(module_path, content): alias = matchobj['alias'] if alias: if matchobj['default']: - return """\nodoo.define(`%s`, async function(require) { + return """\nodoo.define(`%s`, function (require) { return require('%s'); });\n""" % (alias, module_path) else: - return """\nodoo.define(`%s`, async function(require) { + return """\nodoo.define(`%s`, function (require) { return require('%s')[Symbol.for("default")]; });\n""" % (alias, module_path)