This is an automated email from the ASF dual-hosted git repository.

Antonio-Maranhao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb-fauxton.git


The following commit(s) were added to refs/heads/main by this push:
     new 885270a8 fix: removes BOM char in generated CSS files (#1560)
885270a8 is described below

commit 885270a8f12edbefe25e64f909c65c65e105335e
Author: Antonio Maranhao <[email protected]>
AuthorDate: Tue Aug 11 16:06:52 2026 -0400

    fix: removes BOM char in generated CSS files (#1560)
    
    Since the update to sass 1.82.0, the `\uFEFF` UTF-8 character was being
    added to the beggining of some lines in the generated CSS files.
    This happens because Sass adds a UTF-8 Byte Order Mark (BOM) automatically
    in compressed output mode when non-ASCII characters are detected.
    
    The BOM character causes problems because in some situations the
    browser seems to stop parsing the CSS and the CSS properties after the 
charater
    are not loaded.
---
 package-lock.json         | 124 ++++++++++++++++++++++++++++++++++++++++++++++
 package.json              |   1 +
 webpack.config.release.js |   9 ++++
 3 files changed, 134 insertions(+)

diff --git a/package-lock.json b/package-lock.json
index a598e4fb..efd7bfb2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -95,6 +95,7 @@
         "node-fetch": "^2.6.7",
         "redux-mock-store": "^1.5.4",
         "sinon": "^21.0.1",
+        "string-replace-loader": "^3.3.0",
         "style-loader": "^3.3.1",
         "webpack": "^5.74.0",
         "webpack-cli": "^5.0.1",
@@ -19363,6 +19364,79 @@
         "node": ">=10"
       }
     },
+    "node_modules/string-replace-loader": {
+      "version": "3.3.0",
+      "resolved": 
"https://registry.npmjs.org/string-replace-loader/-/string-replace-loader-3.3.0.tgz";,
+      "integrity": 
"sha512-AZ3y7ktSHhd/Ebipczkp6vdfp01d2kQVwFujCGAgmogTB8t4dRhbsRGDKnyZAYqBbIA9QW7+D/IsACVJOOpcBg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "schema-utils": "^4"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "webpack": "^5"
+      }
+    },
+    "node_modules/string-replace-loader/node_modules/ajv": {
+      "version": "8.20.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz";,
+      "integrity": 
"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.3",
+        "fast-uri": "^3.0.1",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin";
+      }
+    },
+    "node_modules/string-replace-loader/node_modules/ajv-keywords": {
+      "version": "5.1.0",
+      "resolved": 
"https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz";,
+      "integrity": 
"sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.3"
+      },
+      "peerDependencies": {
+        "ajv": "^8.8.2"
+      }
+    },
+    "node_modules/string-replace-loader/node_modules/json-schema-traverse": {
+      "version": "1.0.0",
+      "resolved": 
"https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz";,
+      "integrity": 
"sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/string-replace-loader/node_modules/schema-utils": {
+      "version": "4.3.3",
+      "resolved": 
"https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz";,
+      "integrity": 
"sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.9",
+        "ajv": "^8.9.0",
+        "ajv-formats": "^2.1.1",
+        "ajv-keywords": "^5.1.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack";
+      }
+    },
     "node_modules/string-width": {
       "version": "4.2.3",
       "resolved": 
"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz";,
@@ -34871,6 +34945,56 @@
         "strip-ansi": "^6.0.0"
       }
     },
+    "string-replace-loader": {
+      "version": "3.3.0",
+      "resolved": 
"https://registry.npmjs.org/string-replace-loader/-/string-replace-loader-3.3.0.tgz";,
+      "integrity": 
"sha512-AZ3y7ktSHhd/Ebipczkp6vdfp01d2kQVwFujCGAgmogTB8t4dRhbsRGDKnyZAYqBbIA9QW7+D/IsACVJOOpcBg==",
+      "dev": true,
+      "requires": {
+        "schema-utils": "^4"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "8.20.0",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz";,
+          "integrity": 
"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.3",
+            "fast-uri": "^3.0.1",
+            "json-schema-traverse": "^1.0.0",
+            "require-from-string": "^2.0.2"
+          }
+        },
+        "ajv-keywords": {
+          "version": "5.1.0",
+          "resolved": 
"https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz";,
+          "integrity": 
"sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.3"
+          }
+        },
+        "json-schema-traverse": {
+          "version": "1.0.0",
+          "resolved": 
"https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz";,
+          "integrity": 
"sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+          "dev": true
+        },
+        "schema-utils": {
+          "version": "4.3.3",
+          "resolved": 
"https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz";,
+          "integrity": 
"sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.9",
+            "ajv": "^8.9.0",
+            "ajv-formats": "^2.1.1",
+            "ajv-keywords": "^5.1.0"
+          }
+        }
+      }
+    },
     "string-width": {
       "version": "4.2.3",
       "resolved": 
"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz";,
diff --git a/package.json b/package.json
index 27cee8e3..1ae2515b 100644
--- a/package.json
+++ b/package.json
@@ -54,6 +54,7 @@
     "node-fetch": "^2.6.7",
     "redux-mock-store": "^1.5.4",
     "sinon": "^21.0.1",
+    "string-replace-loader": "^3.3.0",
     "style-loader": "^3.3.1",
     "webpack": "^5.74.0",
     "webpack-cli": "^5.0.1",
diff --git a/webpack.config.release.js b/webpack.config.release.js
index d61f2569..94af02cb 100644
--- a/webpack.config.release.js
+++ b/webpack.config.release.js
@@ -122,6 +122,15 @@ module.exports = {
             },
           },
           "css-loader",
+          // Removes UTF-8 Byte Order Mark (BOM) characters added by sass, 
which causes the brower to ignore
+          // CSS properties defined after the character.
+          {
+            loader: "string-replace-loader",
+            options: {
+              search: /^\uFEFF/gm,
+              replace: "",
+            },
+          },
           {
             loader: "sass-loader",
             options: {

Reply via email to