diff --git a/package-lock.json b/package-lock.json index 855ae31..6f3c39e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { - "name": "chrome-extension-typescript-starter", + "name": "bing-chat-for-all-browsers", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "chrome-extension-typescript-starter", + "name": "bing-chat-for-all-browsers", "version": "1.0.0", "license": "MIT", "dependencies": { "react": "^17.0.1", - "react-dom": "^17.0.1" + "react-dom": "^17.0.1", + "webextension-polyfill-ts": "^0.26.0" }, "devDependencies": { "@types/chrome": "0.0.158", @@ -4828,6 +4829,20 @@ "node": ">=10.13.0" } }, + "node_modules/webextension-polyfill": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.8.0.tgz", + "integrity": "sha512-a19+DzlT6Kp9/UI+mF9XQopeZ+n2ussjhxHJ4/pmIGge9ijCDz7Gn93mNnjpZAk95T4Tae8iHZ6sSf869txqiQ==" + }, + "node_modules/webextension-polyfill-ts": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill-ts/-/webextension-polyfill-ts-0.26.0.tgz", + "integrity": "sha512-XEFL+aYVEsm/d4RajVwP75g56c/w2aSHnPwgtUv8/nCzbLNSzRQIix6aj1xqFkA5yr7OIDkk3OD/QTnPp8ThYA==", + "deprecated": "This project has moved to @types/webextension-polyfill", + "dependencies": { + "webextension-polyfill": "^0.8.0" + } + }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -9085,6 +9100,19 @@ "graceful-fs": "^4.1.2" } }, + "webextension-polyfill": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.8.0.tgz", + "integrity": "sha512-a19+DzlT6Kp9/UI+mF9XQopeZ+n2ussjhxHJ4/pmIGge9ijCDz7Gn93mNnjpZAk95T4Tae8iHZ6sSf869txqiQ==" + }, + "webextension-polyfill-ts": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill-ts/-/webextension-polyfill-ts-0.26.0.tgz", + "integrity": "sha512-XEFL+aYVEsm/d4RajVwP75g56c/w2aSHnPwgtUv8/nCzbLNSzRQIix6aj1xqFkA5yr7OIDkk3OD/QTnPp8ThYA==", + "requires": { + "webextension-polyfill": "^0.8.0" + } + }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", diff --git a/package.json b/package.json index 37ce9df..db8274b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "watch": "webpack --config webpack/webpack.dev.js --watch", "build": "webpack --config webpack/webpack.chrome.js & webpack --config webpack/webpack.firefox.js", - "clean": "rimraf dist", + "clean": "rimraf release", "test": "npx jest", "style": "prettier --write \"**/*.{ts,tsx,json,js,jsx,css,scss,html,md}\"" }, diff --git a/release/chrome/favicon.ico b/release/chrome/favicon.ico new file mode 100644 index 0000000..dbd128d Binary files /dev/null and b/release/chrome/favicon.ico differ diff --git a/release/chrome/firefox.json b/release/chrome/firefox.json new file mode 100644 index 0000000..f8d3580 --- /dev/null +++ b/release/chrome/firefox.json @@ -0,0 +1,18 @@ +{ + "manifest_version": 2, + "name": "Bing Chat for All Browsers", + "description": "Bing Chat for All Browsers", + "version": "1.0", + "background": { + "scripts": ["js/background.js"] + }, + "icons": { + "16": "icon16.png", + "32": "icon32.png", + "128": "icon128.png", + "192": "icon192.png", + "512": "icon512.png", + "1024": "icon1024.png" + }, + "permissions": ["webRequest", "webRequestBlocking", "http://*.bing.com/*", "https://*.bing.com/*"] +} diff --git a/release/chrome/icon1024.png b/release/chrome/icon1024.png new file mode 100644 index 0000000..82e2132 Binary files /dev/null and b/release/chrome/icon1024.png differ diff --git a/release/chrome/icon128.png b/release/chrome/icon128.png new file mode 100644 index 0000000..5b1b041 Binary files /dev/null and b/release/chrome/icon128.png differ diff --git a/release/chrome/icon16.png b/release/chrome/icon16.png new file mode 100644 index 0000000..9f538f7 Binary files /dev/null and b/release/chrome/icon16.png differ diff --git a/release/chrome/icon192.png b/release/chrome/icon192.png new file mode 100644 index 0000000..6056b26 Binary files /dev/null and b/release/chrome/icon192.png differ diff --git a/release/chrome/icon32.png b/release/chrome/icon32.png new file mode 100644 index 0000000..9395df5 Binary files /dev/null and b/release/chrome/icon32.png differ diff --git a/release/chrome/icon512.png b/release/chrome/icon512.png new file mode 100644 index 0000000..2e64884 Binary files /dev/null and b/release/chrome/icon512.png differ diff --git a/release/chrome/js/background.js b/release/chrome/js/background.js new file mode 100644 index 0000000..9c5a428 --- /dev/null +++ b/release/chrome/js/background.js @@ -0,0 +1 @@ +(()=>{"use strict";chrome.webRequest.onBeforeSendHeaders.addListener((e=>{const{requestHeaders:r}=e;if(r)return{requestHeaders:r.map((e=>("user-agent"===e.name.toLowerCase()&&(console.log("Changing user agent from",e.value),e.value="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.100.0",console.log("Changing user agent to",e.value)),e)))}}),{urls:["*://*.bing.com/*"]},["blocking","requestHeaders"])})(); \ No newline at end of file diff --git a/release/chrome/manifest.json b/release/chrome/manifest.json new file mode 100644 index 0000000..088ea24 --- /dev/null +++ b/release/chrome/manifest.json @@ -0,0 +1,25 @@ +{ + "manifest_version": 3, + "name": "Bing Chat for All Browsers", + "description": "Bing Chat for All Browsers", + "version": "1.0", + "icons": { + "16": "icon16.png", + "32": "icon32.png", + "128": "icon128.png", + "192": "icon192.png", + "512": "icon512.png", + "1024": "icon1024.png" + }, + "declarative_net_request": { + "rule_resources": [ + { + "id": "1", + "enabled": true, + "path": "rules.json" + } + ] + }, + "permissions": ["webRequest", "declarativeNetRequest"], + "host_permissions": ["http://*.bing.com/*", "https://*.bing.com/*"] +} diff --git a/release/chrome/rules.json b/release/chrome/rules.json new file mode 100644 index 0000000..cfe96c6 --- /dev/null +++ b/release/chrome/rules.json @@ -0,0 +1,20 @@ +[ + { + "id": 1, + "priority": 1, + "action": { + "type": "modifyHeaders", + "requestHeaders": [ + { + "header": "User-Agent", + "operation": "set", + "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.100.0" + } + ] + }, + "condition": { + "regexFilter": ".*bing\\.com.*", + "resourceTypes": ["main_frame"] + } + } +] diff --git a/release/firefox/chrome.json b/release/firefox/chrome.json new file mode 100644 index 0000000..088ea24 --- /dev/null +++ b/release/firefox/chrome.json @@ -0,0 +1,25 @@ +{ + "manifest_version": 3, + "name": "Bing Chat for All Browsers", + "description": "Bing Chat for All Browsers", + "version": "1.0", + "icons": { + "16": "icon16.png", + "32": "icon32.png", + "128": "icon128.png", + "192": "icon192.png", + "512": "icon512.png", + "1024": "icon1024.png" + }, + "declarative_net_request": { + "rule_resources": [ + { + "id": "1", + "enabled": true, + "path": "rules.json" + } + ] + }, + "permissions": ["webRequest", "declarativeNetRequest"], + "host_permissions": ["http://*.bing.com/*", "https://*.bing.com/*"] +} diff --git a/release/firefox/favicon.ico b/release/firefox/favicon.ico new file mode 100644 index 0000000..dbd128d Binary files /dev/null and b/release/firefox/favicon.ico differ diff --git a/release/firefox/icon1024.png b/release/firefox/icon1024.png new file mode 100644 index 0000000..82e2132 Binary files /dev/null and b/release/firefox/icon1024.png differ diff --git a/release/firefox/icon128.png b/release/firefox/icon128.png new file mode 100644 index 0000000..5b1b041 Binary files /dev/null and b/release/firefox/icon128.png differ diff --git a/release/firefox/icon16.png b/release/firefox/icon16.png new file mode 100644 index 0000000..9f538f7 Binary files /dev/null and b/release/firefox/icon16.png differ diff --git a/release/firefox/icon192.png b/release/firefox/icon192.png new file mode 100644 index 0000000..6056b26 Binary files /dev/null and b/release/firefox/icon192.png differ diff --git a/release/firefox/icon32.png b/release/firefox/icon32.png new file mode 100644 index 0000000..9395df5 Binary files /dev/null and b/release/firefox/icon32.png differ diff --git a/release/firefox/icon512.png b/release/firefox/icon512.png new file mode 100644 index 0000000..2e64884 Binary files /dev/null and b/release/firefox/icon512.png differ diff --git a/release/firefox/js/background.js b/release/firefox/js/background.js new file mode 100644 index 0000000..9c5a428 --- /dev/null +++ b/release/firefox/js/background.js @@ -0,0 +1 @@ +(()=>{"use strict";chrome.webRequest.onBeforeSendHeaders.addListener((e=>{const{requestHeaders:r}=e;if(r)return{requestHeaders:r.map((e=>("user-agent"===e.name.toLowerCase()&&(console.log("Changing user agent from",e.value),e.value="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.100.0",console.log("Changing user agent to",e.value)),e)))}}),{urls:["*://*.bing.com/*"]},["blocking","requestHeaders"])})(); \ No newline at end of file diff --git a/release/firefox/manifest.json b/release/firefox/manifest.json new file mode 100644 index 0000000..f8d3580 --- /dev/null +++ b/release/firefox/manifest.json @@ -0,0 +1,18 @@ +{ + "manifest_version": 2, + "name": "Bing Chat for All Browsers", + "description": "Bing Chat for All Browsers", + "version": "1.0", + "background": { + "scripts": ["js/background.js"] + }, + "icons": { + "16": "icon16.png", + "32": "icon32.png", + "128": "icon128.png", + "192": "icon192.png", + "512": "icon512.png", + "1024": "icon1024.png" + }, + "permissions": ["webRequest", "webRequestBlocking", "http://*.bing.com/*", "https://*.bing.com/*"] +} diff --git a/release/firefox/rules.json b/release/firefox/rules.json new file mode 100644 index 0000000..cfe96c6 --- /dev/null +++ b/release/firefox/rules.json @@ -0,0 +1,20 @@ +[ + { + "id": 1, + "priority": 1, + "action": { + "type": "modifyHeaders", + "requestHeaders": [ + { + "header": "User-Agent", + "operation": "set", + "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.100.0" + } + ] + }, + "condition": { + "regexFilter": ".*bing\\.com.*", + "resourceTypes": ["main_frame"] + } + } +] diff --git a/tsconfig.json b/tsconfig.json index d6fb839..146e5bf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "esModuleInterop": true, "sourceMap": false, "rootDir": "src", - "outDir": "dist/js", + "outDir": "release/js", "noEmitOnError": true, "jsx": "react", "typeRoots": ["node_modules/@types"] diff --git a/webpack/webpack.chrome.js b/webpack/webpack.chrome.js index 790b379..347a960 100644 --- a/webpack/webpack.chrome.js +++ b/webpack/webpack.chrome.js @@ -6,7 +6,7 @@ const common = require('./webpack.common.js') module.exports = merge(common, { mode: 'production', output: { - path: path.join(__dirname, '../dist/chrome/js'), + path: path.join(__dirname, '../release/chrome/js'), filename: '[name].js', }, plugins: [ @@ -16,9 +16,9 @@ module.exports = merge(common, { from: './public', to: ({ absoluteFilename }) => { if (absoluteFilename.endsWith('chrome.json')) { - return path.join(__dirname, '../dist/chrome') + '/manifest.json' + return path.join(__dirname, '../release/chrome') + '/manifest.json' } else { - return path.join(__dirname, '../dist/chrome') + '/[name][ext]' + return path.join(__dirname, '../release/chrome') + '/[name][ext]' } }, }, diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index 1f2e02a..7b0030b 100644 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -6,7 +6,7 @@ module.exports = { background: path.join(srcDir, 'background.ts'), }, output: { - path: path.join(__dirname, '../dist/js'), + path: path.join(__dirname, '../release/js'), filename: '[name].js', }, optimization: { diff --git a/webpack/webpack.firefox.js b/webpack/webpack.firefox.js index 5181467..08705d7 100644 --- a/webpack/webpack.firefox.js +++ b/webpack/webpack.firefox.js @@ -6,7 +6,7 @@ const common = require('./webpack.common.js') module.exports = merge(common, { mode: 'production', output: { - path: path.join(__dirname, '../dist/firefox/js'), + path: path.join(__dirname, '../release/firefox/js'), filename: '[name].js', }, plugins: [ @@ -16,9 +16,9 @@ module.exports = merge(common, { from: './public', to: ({ absoluteFilename }) => { if (absoluteFilename.endsWith('firefox.json')) { - return path.join(__dirname, '../dist/firefox') + '/manifest.json' + return path.join(__dirname, '../release/firefox') + '/manifest.json' } else { - return path.join(__dirname, '../dist/firefox') + '/[name][ext]' + return path.join(__dirname, '../release/firefox') + '/[name][ext]' } }, },