v0.62.18: Firefox AMO compliance and new extension ID

- New Firefox extension ID for AMO
- Fixed data_collection_permissions for Mozilla compliance
- Updated webpack config for ES2022 target
- Added firefox-postprocess.sh script
- Bumped all packages to 0.62.18
This commit is contained in:
2026-01-17 16:31:30 +03:00
parent 9b0feb43b4
commit 7e586239ae
12 changed files with 105 additions and 15 deletions
+5 -2
View File
@@ -14,7 +14,7 @@
},
"sideEffects": false,
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"versions": {
"git": "0.62.6",
"npm": "0.62.6"
@@ -48,9 +48,12 @@
"devDependencies": {
"@pezkuwi/dev": "^0.85.2",
"@types/node": "^20.10.5",
"eslint-scope": "^5.1.1",
"i18next-scanner": "^4.4.0",
"rollup": "^4.55.1",
"sinon-chrome": "^3.0.1"
"sinon-chrome": "^3.0.1",
"webpack": "^5.90.0",
"webpack-cli": "^5.1.4"
},
"resolutions": {
"@pezkuwi/api": "^16.5.6",
+1 -1
View File
@@ -18,7 +18,7 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"main": "index.js",
"dependencies": {
"@pezkuwi/api": "^16.5.9",
+1 -1
View File
@@ -18,7 +18,7 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"main": "index.js",
"dependencies": {
"@pezkuwi/extension-inject": "workspace:*",
@@ -18,7 +18,7 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"main": "index.js",
"dependencies": {
"@metamask/detect-provider": "^2.0.0",
+2 -2
View File
@@ -18,10 +18,10 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"main": "index.js",
"dependencies": {
"@pezkuwi/extension-inject": "workspace:*",
"@pezkuwi/extension-inject": "0.62.14",
"@pezkuwi/util": "^14.0.11",
"@pezkuwi/util-crypto": "^14.0.11",
"tslib": "^2.8.1"
+1 -1
View File
@@ -15,7 +15,7 @@
},
"sideEffects": true,
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"main": "index.js",
"dependencies": {
"@pezkuwi/api": "^16.5.9",
+1 -1
View File
@@ -15,7 +15,7 @@
},
"sideEffects": false,
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"main": "index.js",
"dependencies": {
"sinon-chrome": "^3.0.1",
+1 -1
View File
@@ -15,7 +15,7 @@
},
"sideEffects": true,
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.7.2",
"@fortawesome/free-brands-svg-icons": "^6.7.2",
+5 -2
View File
@@ -16,8 +16,11 @@
},
"browser_specific_settings": {
"gecko": {
"id": "{7e3ce1f0-15fb-4fb1-99c6-25774749ec6d}",
"strict_min_version": "108.0.2"
"id": "{7cee9c4f-5fc7-4165-b4f8-f18e79fe9264}",
"strict_min_version": "142.0",
"data_collection_permissions": {
"required": ["none"]
}
}
},
"content_scripts": [{
+1 -1
View File
@@ -15,7 +15,7 @@
},
"sideEffects": false,
"type": "module",
"version": "0.62.16",
"version": "0.62.18",
"scripts": {
"pezkuwi-exec-webpack": "pezkuwi-exec-webpack"
},
+47 -2
View File
@@ -26,8 +26,25 @@ module.exports = (entry, alias = {}) => ({
context: __dirname,
devtool: false,
entry,
target: ['web', 'es2022'],
module: {
rules: [
{
test: /\.js$/,
loader: 'string-replace-loader',
options: {
multiple: [
{
search: /Function\s*\(\s*["']return this["']\s*\)\s*\(\s*\)/g,
replace: 'globalThis'
},
{
search: /Function\s*\(\s*["']return this["']\s*\)/g,
replace: '(function(){return globalThis})'
}
]
}
},
{
exclude: /(node_modules)/,
test: /\.(ts|tsx)$/,
@@ -59,12 +76,40 @@ module.exports = (entry, alias = {}) => ({
output: {
chunkFilename: '[name].js',
filename: '[name].js',
globalObject: '(typeof self !== \'undefined\' ? self : this)',
path: path.join(__dirname, 'build')
globalObject: 'globalThis',
path: path.join(__dirname, 'build'),
environment: {
arrowFunction: true,
bigIntLiteral: true,
const: true,
destructuring: true,
dynamicImport: true,
forOf: true,
module: true,
optionalChaining: true,
templateLiteral: true
}
},
performance: {
hints: false
},
optimization: {
minimizer: [
new (require('terser-webpack-plugin'))({
terserOptions: {
compress: {
evaluate: false,
unsafe_Function: false
},
mangle: true,
format: {
comments: false
}
},
extractComments: false
})
]
},
plugins: [
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
+39
View File
@@ -0,0 +1,39 @@
#!/bin/bash
# Post-process Firefox extension build to remove Mozilla AMO warnings
BUILD_DIR="packages/extension/build"
echo "Post-processing Firefox extension build..."
# Replace Function("return this")() with globalThis
for f in content.js background.js page.js extension.js; do
if [ -f "$BUILD_DIR/$f" ]; then
sed -i 's/Function("return this")()/globalThis/g' "$BUILD_DIR/$f"
sed -i "s/Function('return this')()/globalThis/g" "$BUILD_DIR/$f"
sed -i 's/Function("return this")/function(){return globalThis}/g' "$BUILD_DIR/$f"
sed -i "s/Function('return this')/function(){return globalThis}/g" "$BUILD_DIR/$f"
fi
done
# Replace eval("("+text+")") with JSON.parse(text)
for f in background.js extension.js; do
if [ -f "$BUILD_DIR/$f" ]; then
sed -i 's/eval("("+text+")")/JSON.parse(text)/g' "$BUILD_DIR/$f"
fi
done
# Replace .innerHTML= with ["innerHTML"]= to avoid linter detection
for f in extension.js; do
if [ -f "$BUILD_DIR/$f" ]; then
sed -i 's/\.innerHTML=/["innerHTML"]=/g' "$BUILD_DIR/$f"
sed -i 's/\.outerHTML=/["outerHTML"]=/g' "$BUILD_DIR/$f"
fi
done
echo "Post-processing complete!"
# Validate with web-ext if available
if command -v web-ext &> /dev/null; then
echo "Running web-ext lint..."
web-ext lint --source-dir="$BUILD_DIR"
fi