From 4ae7e36a52f5008e8aedb59287b54c2fd245f745 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Sat, 28 Dec 2024 20:47:13 +0200
Subject: [PATCH 01/15] Update build-codemirror.es6.js

---
 build/build-modules-js/javascript/build-codemirror.es6.js | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/build/build-modules-js/javascript/build-codemirror.es6.js b/build/build-modules-js/javascript/build-codemirror.es6.js
index cac5370e30f74..10a9d059f3199 100644
--- a/build/build-modules-js/javascript/build-codemirror.es6.js
+++ b/build/build-modules-js/javascript/build-codemirror.es6.js
@@ -89,7 +89,10 @@ module.exports.compileCodemirror = async () => {
 
   const cmModules = getPackagesUnderScope('@codemirror');
   const lModules = getPackagesUnderScope('@lezer');
-  const externalModules = [...cmModules, ...lModules];
+  const externalModules = [
+    ...cmModules.filter((a, i) => cmModules.findIndex((s) => a === s) === i),
+    ...lModules.filter((a, i) => lModules.findIndex((s) => a === s) === i)
+  ];
   const destBasePath = 'media/vendor/codemirror/js';
   const assets = [];
   const tasks = [];

From baff145877295ecec7cf111e382b488dce86baa5 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Sat, 28 Dec 2024 20:57:39 +0200
Subject: [PATCH 02/15] Update build-codemirror.es6.js

---
 build/build-modules-js/javascript/build-codemirror.es6.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build/build-modules-js/javascript/build-codemirror.es6.js b/build/build-modules-js/javascript/build-codemirror.es6.js
index 10a9d059f3199..e322637181833 100644
--- a/build/build-modules-js/javascript/build-codemirror.es6.js
+++ b/build/build-modules-js/javascript/build-codemirror.es6.js
@@ -91,7 +91,7 @@ module.exports.compileCodemirror = async () => {
   const lModules = getPackagesUnderScope('@lezer');
   const externalModules = [
     ...cmModules.filter((a, i) => cmModules.findIndex((s) => a === s) === i),
-    ...lModules.filter((a, i) => lModules.findIndex((s) => a === s) === i)
+    ...lModules.filter((a, i) => lModules.findIndex((s) => a === s) === i),
   ];
   const destBasePath = 'media/vendor/codemirror/js';
   const assets = [];

From d2375ec44bfe5908afbd2ef65b1918e998b2b644 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Sat, 28 Dec 2024 21:03:41 +0200
Subject: [PATCH 03/15] Update build-codemirror.es6.js

---
 .../javascript/build-codemirror.es6.js               | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/build/build-modules-js/javascript/build-codemirror.es6.js b/build/build-modules-js/javascript/build-codemirror.es6.js
index e322637181833..b6731f9971588 100644
--- a/build/build-modules-js/javascript/build-codemirror.es6.js
+++ b/build/build-modules-js/javascript/build-codemirror.es6.js
@@ -87,12 +87,12 @@ module.exports.compileCodemirror = async () => {
   // eslint-disable-next-line no-console
   console.log('Building Codemirror Components...');
 
-  const cmModules = getPackagesUnderScope('@codemirror');
-  const lModules = getPackagesUnderScope('@lezer');
-  const externalModules = [
-    ...cmModules.filter((a, i) => cmModules.findIndex((s) => a === s) === i),
-    ...lModules.filter((a, i) => lModules.findIndex((s) => a === s) === i),
-  ];
+  let cmModules = getPackagesUnderScope('@codemirror');
+  let lModules = getPackagesUnderScope('@lezer');
+  cmModules = cmModules.filter((a, i) => cmModules.findIndex((s) => a === s) === i);
+  lModules = lModules.filter((a, i) => lModules.findIndex((s) => a === s) === i);
+  
+  const externalModules = [...cmModules, ...lModules];
   const destBasePath = 'media/vendor/codemirror/js';
   const assets = [];
   const tasks = [];

From 2152bf2730af4f03dffc4b8977e4dbedb54c99e4 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Sat, 28 Dec 2024 21:19:33 +0200
Subject: [PATCH 04/15] Update build-codemirror.es6.js

---
 build/build-modules-js/javascript/build-codemirror.es6.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build/build-modules-js/javascript/build-codemirror.es6.js b/build/build-modules-js/javascript/build-codemirror.es6.js
index b6731f9971588..52a1ca3739f06 100644
--- a/build/build-modules-js/javascript/build-codemirror.es6.js
+++ b/build/build-modules-js/javascript/build-codemirror.es6.js
@@ -91,7 +91,7 @@ module.exports.compileCodemirror = async () => {
   let lModules = getPackagesUnderScope('@lezer');
   cmModules = cmModules.filter((a, i) => cmModules.findIndex((s) => a === s) === i);
   lModules = lModules.filter((a, i) => lModules.findIndex((s) => a === s) === i);
-  
+
   const externalModules = [...cmModules, ...lModules];
   const destBasePath = 'media/vendor/codemirror/js';
   const assets = [];

From d274b79045e0145e21d3c5f8c389d87edb2940e8 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 17:20:57 +0200
Subject: [PATCH 05/15] Update resolve-package.es6.js

---
 .../init/common/resolve-package.es6.js        | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/build/build-modules-js/init/common/resolve-package.es6.js b/build/build-modules-js/init/common/resolve-package.es6.js
index c69e25e5cef3e..125946d879743 100644
--- a/build/build-modules-js/init/common/resolve-package.es6.js
+++ b/build/build-modules-js/init/common/resolve-package.es6.js
@@ -8,8 +8,7 @@ const { existsSync, readdirSync } = require('fs-extra');
  * @returns {string|boolean}
  */
 module.exports.resolvePackageFile = (relativePath) => {
-  for (let i = 0, l = module.paths.length; i < l; i += 1) {
-    const path = module.paths[i];
+  for (const path of module.paths) {
     const fullPath = `${path}/${relativePath}`;
     if (existsSync(fullPath)) {
       return fullPath;
@@ -27,23 +26,21 @@ module.exports.resolvePackageFile = (relativePath) => {
  * @returns {[]}
  */
 module.exports.getPackagesUnderScope = (scope) => {
-  const cmModules = [];
+  const cmModules = new Set();
 
   // Get the scope roots
   const roots = [];
-  module.paths.forEach((path) => {
+  for (const path of module.paths) {
     const fullPath = `${path}/${scope}`;
     if (existsSync(fullPath)) {
       roots.push(fullPath);
     }
-  });
+  };
 
   // List of modules
-  roots.forEach((rootPath) => {
-    readdirSync(rootPath).forEach((subModule) => {
-      cmModules.push(`${scope}/${subModule}`);
-    });
-  });
+  for (const rootPath of roots) {
+    readdirSync(rootPath).forEach((subModule) => cmModules.add(`${scope}/${subModule}`));
+  };
 
-  return cmModules;
+  return [...cmModules];
 };

From c1cafb4b3c6630d40b7b0b80d604ad5cc03d8e32 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 17:21:37 +0200
Subject: [PATCH 06/15] Update build-codemirror.es6.js

---
 build/build-modules-js/javascript/build-codemirror.es6.js | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/build/build-modules-js/javascript/build-codemirror.es6.js b/build/build-modules-js/javascript/build-codemirror.es6.js
index 52a1ca3739f06..cac5370e30f74 100644
--- a/build/build-modules-js/javascript/build-codemirror.es6.js
+++ b/build/build-modules-js/javascript/build-codemirror.es6.js
@@ -87,11 +87,8 @@ module.exports.compileCodemirror = async () => {
   // eslint-disable-next-line no-console
   console.log('Building Codemirror Components...');
 
-  let cmModules = getPackagesUnderScope('@codemirror');
-  let lModules = getPackagesUnderScope('@lezer');
-  cmModules = cmModules.filter((a, i) => cmModules.findIndex((s) => a === s) === i);
-  lModules = lModules.filter((a, i) => lModules.findIndex((s) => a === s) === i);
-
+  const cmModules = getPackagesUnderScope('@codemirror');
+  const lModules = getPackagesUnderScope('@lezer');
   const externalModules = [...cmModules, ...lModules];
   const destBasePath = 'media/vendor/codemirror/js';
   const assets = [];

From 3ef26b00ff5c838fec81f979530c0454c431ff5d Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 17:39:07 +0200
Subject: [PATCH 07/15] Update resolve-package.es6.js

---
 .../init/common/resolve-package.es6.js               | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/build/build-modules-js/init/common/resolve-package.es6.js b/build/build-modules-js/init/common/resolve-package.es6.js
index 125946d879743..dcc56febc8cb9 100644
--- a/build/build-modules-js/init/common/resolve-package.es6.js
+++ b/build/build-modules-js/init/common/resolve-package.es6.js
@@ -8,12 +8,12 @@ const { existsSync, readdirSync } = require('fs-extra');
  * @returns {string|boolean}
  */
 module.exports.resolvePackageFile = (relativePath) => {
-  for (const path of module.paths) {
+  module.paths.forEach((path) => {
     const fullPath = `${path}/${relativePath}`;
     if (existsSync(fullPath)) {
       return fullPath;
     }
-  }
+  });
 
   return false;
 };
@@ -30,17 +30,15 @@ module.exports.getPackagesUnderScope = (scope) => {
 
   // Get the scope roots
   const roots = [];
-  for (const path of module.paths) {
+  module.paths.forEach((path) => {
     const fullPath = `${path}/${scope}`;
     if (existsSync(fullPath)) {
       roots.push(fullPath);
     }
-  };
+  });
 
   // List of modules
-  for (const rootPath of roots) {
-    readdirSync(rootPath).forEach((subModule) => cmModules.add(`${scope}/${subModule}`));
-  };
+  roots.forEach((rootPath) => readdirSync(rootPath).forEach((subModule) => cmModules.add(`${scope}/${subModule}`)));
 
   return [...cmModules];
 };

From d0458fe0fdbc09b12450aade78b3ad4f594873ae Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 17:53:14 +0200
Subject: [PATCH 08/15] Update resolve-package.es6.js

---
 build/build-modules-js/init/common/resolve-package.es6.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/build/build-modules-js/init/common/resolve-package.es6.js b/build/build-modules-js/init/common/resolve-package.es6.js
index dcc56febc8cb9..d4a264ebb9925 100644
--- a/build/build-modules-js/init/common/resolve-package.es6.js
+++ b/build/build-modules-js/init/common/resolve-package.es6.js
@@ -38,7 +38,11 @@ module.exports.getPackagesUnderScope = (scope) => {
   });
 
   // List of modules
-  roots.forEach((rootPath) => readdirSync(rootPath).forEach((subModule) => cmModules.add(`${scope}/${subModule}`)));
+  roots.forEach((rootPath) => {
+    readdirSync(rootPath).forEach((subModule) => {
+      cmModules.add(`${scope}/${subModule}`);
+    });
+  });
 
   return [...cmModules];
 };

From a3480ff9aae48840d42411fd05ac32b5448a5fbc Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 18:05:50 +0200
Subject: [PATCH 09/15] Update localise-packages.es6.js

---
 build/build-modules-js/init/localise-packages.es6.js | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/build/build-modules-js/init/localise-packages.es6.js b/build/build-modules-js/init/localise-packages.es6.js
index e72229a3a52e1..b787fd54bde79 100644
--- a/build/build-modules-js/init/localise-packages.es6.js
+++ b/build/build-modules-js/init/localise-packages.es6.js
@@ -132,9 +132,11 @@ module.exports.localisePackages = async (options) => {
   // Loop to get some text for the package.json
   // eslint-disable-next-line guard-for-in, no-restricted-syntax
   for (const packageName in options.settings.vendors) {
-    const vendor = options.settings.vendors[packageName];
+    const resolvedPackage = resolvePackage(options.settings.vendors[packageName], packageName, mediaVendorPath, options, registry)
 
-    promises.push(resolvePackage(vendor, packageName, mediaVendorPath, options, registry));
+    if (resolvedPackage) {
+      promises.push(resolvePackage(vendor, packageName, mediaVendorPath, options, registry));
+    }
   }
 
   await Promise.all(promises);

From a5071e96381fb1903e4c97c8a938068ad777c34f Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 18:06:13 +0200
Subject: [PATCH 10/15] Update localise-packages.es6.js

---
 build/build-modules-js/init/localise-packages.es6.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build/build-modules-js/init/localise-packages.es6.js b/build/build-modules-js/init/localise-packages.es6.js
index b787fd54bde79..31f3200193b3e 100644
--- a/build/build-modules-js/init/localise-packages.es6.js
+++ b/build/build-modules-js/init/localise-packages.es6.js
@@ -135,7 +135,7 @@ module.exports.localisePackages = async (options) => {
     const resolvedPackage = resolvePackage(options.settings.vendors[packageName], packageName, mediaVendorPath, options, registry)
 
     if (resolvedPackage) {
-      promises.push(resolvePackage(vendor, packageName, mediaVendorPath, options, registry));
+      promises.push(resolvedPackage);
     }
   }
 

From b5dca1c6ea42e938a68e915367a53fc5e23f4493 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 18:26:07 +0200
Subject: [PATCH 11/15] Update localise-packages.es6.js

---
 build/build-modules-js/init/localise-packages.es6.js | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/build/build-modules-js/init/localise-packages.es6.js b/build/build-modules-js/init/localise-packages.es6.js
index 31f3200193b3e..f51dcc451fa66 100644
--- a/build/build-modules-js/init/localise-packages.es6.js
+++ b/build/build-modules-js/init/localise-packages.es6.js
@@ -40,6 +40,11 @@ const copyFilesTo = async (files, srcDir, destDir) => {
 const resolvePackage = async (vendor, packageName, mediaVendorPath, options, registry) => {
   const vendorName = vendor.name || packageName;
   const modulePathJson = resolvePackageFile(`${packageName}/package.json`);
+
+  if (!modulePathJson) {
+    return;
+  }
+
   const modulePathRoot = dirname(modulePathJson);
   // eslint-disable-next-line global-require, import/no-dynamic-require
   const moduleOptions = require(modulePathJson);

From 09f5daf94dcb3a8450384593056a936c0997ab94 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 18:32:27 +0200
Subject: [PATCH 12/15] Update localise-packages.es6.js

---
 build/build-modules-js/init/localise-packages.es6.js | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/build/build-modules-js/init/localise-packages.es6.js b/build/build-modules-js/init/localise-packages.es6.js
index f51dcc451fa66..fb7e8ab6753d6 100644
--- a/build/build-modules-js/init/localise-packages.es6.js
+++ b/build/build-modules-js/init/localise-packages.es6.js
@@ -137,11 +137,9 @@ module.exports.localisePackages = async (options) => {
   // Loop to get some text for the package.json
   // eslint-disable-next-line guard-for-in, no-restricted-syntax
   for (const packageName in options.settings.vendors) {
-    const resolvedPackage = resolvePackage(options.settings.vendors[packageName], packageName, mediaVendorPath, options, registry)
+    const vendor = options.settings.vendors[packageName];
 
-    if (resolvedPackage) {
-      promises.push(resolvedPackage);
-    }
+    promises.push(resolvePackage(vendor, packageName, mediaVendorPath, options, registry));
   }
 
   await Promise.all(promises);

From 56278ad4ef956da0ea3df8174207fb8d4dfe49c3 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 18:33:04 +0200
Subject: [PATCH 13/15] Update localise-packages.es6.js

---
 build/build-modules-js/init/localise-packages.es6.js | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/build/build-modules-js/init/localise-packages.es6.js b/build/build-modules-js/init/localise-packages.es6.js
index fb7e8ab6753d6..e72229a3a52e1 100644
--- a/build/build-modules-js/init/localise-packages.es6.js
+++ b/build/build-modules-js/init/localise-packages.es6.js
@@ -40,11 +40,6 @@ const copyFilesTo = async (files, srcDir, destDir) => {
 const resolvePackage = async (vendor, packageName, mediaVendorPath, options, registry) => {
   const vendorName = vendor.name || packageName;
   const modulePathJson = resolvePackageFile(`${packageName}/package.json`);
-
-  if (!modulePathJson) {
-    return;
-  }
-
   const modulePathRoot = dirname(modulePathJson);
   // eslint-disable-next-line global-require, import/no-dynamic-require
   const moduleOptions = require(modulePathJson);

From 7cbf244b96073e82e878cdf3e07d1d37038a2b08 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 18:51:55 +0200
Subject: [PATCH 14/15] Update resolve-package.es6.js

---
 .../init/common/resolve-package.es6.js            | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/build/build-modules-js/init/common/resolve-package.es6.js b/build/build-modules-js/init/common/resolve-package.es6.js
index d4a264ebb9925..7ac0e2f22fc49 100644
--- a/build/build-modules-js/init/common/resolve-package.es6.js
+++ b/build/build-modules-js/init/common/resolve-package.es6.js
@@ -8,14 +8,15 @@ const { existsSync, readdirSync } = require('fs-extra');
  * @returns {string|boolean}
  */
 module.exports.resolvePackageFile = (relativePath) => {
-  module.paths.forEach((path) => {
-    const fullPath = `${path}/${relativePath}`;
-    if (existsSync(fullPath)) {
-      return fullPath;
-    }
-  });
+  for (let i = 0, l = module.paths.length; i < l; i += 1) {
+     const path = module.paths[i];
+     const fullPath = `${path}/${relativePath}`;
+     if (existsSync(fullPath)) {
+       return fullPath;
+     }
+   }
 
-  return false;
+   return false;
 };
 
 /**

From b057e7c4f339726181e668e8f80d480e44972f43 Mon Sep 17 00:00:00 2001
From: Dimitris Grammatikogiannis <dg@dgrammatiko.dev>
Date: Mon, 30 Dec 2024 19:01:12 +0200
Subject: [PATCH 15/15] Update resolve-package.es6.js

---
 .../init/common/resolve-package.es6.js             | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/build/build-modules-js/init/common/resolve-package.es6.js b/build/build-modules-js/init/common/resolve-package.es6.js
index 7ac0e2f22fc49..8f5c68b3f1569 100644
--- a/build/build-modules-js/init/common/resolve-package.es6.js
+++ b/build/build-modules-js/init/common/resolve-package.es6.js
@@ -9,14 +9,14 @@ const { existsSync, readdirSync } = require('fs-extra');
  */
 module.exports.resolvePackageFile = (relativePath) => {
   for (let i = 0, l = module.paths.length; i < l; i += 1) {
-     const path = module.paths[i];
-     const fullPath = `${path}/${relativePath}`;
-     if (existsSync(fullPath)) {
-       return fullPath;
-     }
-   }
+    const path = module.paths[i];
+    const fullPath = `${path}/${relativePath}`;
+    if (existsSync(fullPath)) {
+      return fullPath;
+    }
+  }
 
-   return false;
+  return false;
 };
 
 /**