diff --git a/.github/workflows/publish-extension.yml b/.github/workflows/publish-extension.yml
index cce6038..b6958c2 100644
--- a/.github/workflows/publish-extension.yml
+++ b/.github/workflows/publish-extension.yml
@@ -16,13 +16,25 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '18'
+ cache: 'npm'
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Build extension
+ run: npm run build
+
- name: Set version from tag
id: version
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
- name: Create zip package
run: |
- zip -r goose-highlighter.zip . -x '*.git*' 'node_modules/*' 'versioning.md' '.releaserc.json' 'package.json' 'package-lock.json' 'README.md'
+ zip -r goose-highlighter.zip . -x '*.git*' 'node_modules/*' 'src/*' 'versioning.md' '.releaserc.json' 'package.json' 'package-lock.json' 'README.md' 'tsconfig.json' 'eslint.config.mjs'
- name: Install webstore upload CLI
run: npm install -g chrome-webstore-upload-cli
diff --git a/.gitignore b/.gitignore
index b512c09..35ccbe5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
-node_modules
\ No newline at end of file
+node_modules
+
+dist
\ No newline at end of file
diff --git a/background.js b/background.js
deleted file mode 100644
index b602714..0000000
--- a/background.js
+++ /dev/null
@@ -1,18 +0,0 @@
-chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
- if (changeInfo.status === 'complete' && /^https?:/.test(tab.url)) {
- chrome.scripting.executeScript({
- target: { tabId },
- files: ['main.js']
- }).catch(err => {
- console.warn('Injection failed:', err);
- });
- }
-});
-
-chrome.runtime.onInstalled.addListener(() => {
- chrome.storage.local.get(['exceptionsList'], (result) => {
- if (!result.exceptionsList) {
- chrome.storage.local.set({ exceptionsList: [] });
- }
- });
-});
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 7e99661..0b303f1 100644
--- a/manifest.json
+++ b/manifest.json
@@ -17,7 +17,7 @@
"default_icon": "icons/icon128.png"
},
"background": {
- "service_worker": "background.js"
+ "service_worker": "dist/background.js"
},
"icons": {
"48": "icons/icon48.png",
diff --git a/package-lock.json b/package-lock.json
index 76258ac..8eb47c6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,9 +10,11 @@
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^7.1.0",
"@semantic-release/git": "^10.0.1",
+ "@types/chrome": "^0.0.270",
"eslint": "^9.30.0",
"globals": "^16.2.0",
- "semantic-release": "^24.2.5"
+ "semantic-release": "^24.2.5",
+ "typescript": "^5.6.0"
}
},
"node_modules/@babel/code-frame": {
@@ -1213,6 +1215,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@types/chrome": {
+ "version": "0.0.270",
+ "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.270.tgz",
+ "integrity": "sha512-ADvkowV7YnJfycZZxL2brluZ6STGW+9oKG37B422UePf2PCXuFA/XdERI0T18wtuWPx0tmFeZqq6MOXVk1IC+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/filesystem": "*",
+ "@types/har-format": "*"
+ }
+ },
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
@@ -1220,6 +1233,30 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/filesystem": {
+ "version": "0.0.36",
+ "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.36.tgz",
+ "integrity": "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/filewriter": "*"
+ }
+ },
+ "node_modules/@types/filewriter": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.33.tgz",
+ "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/har-format": {
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.16.tgz",
+ "integrity": "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
@@ -7624,6 +7661,20 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/uglify-js": {
"version": "3.19.3",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
diff --git a/package.json b/package.json
index f7e87fa..5753006 100644
--- a/package.json
+++ b/package.json
@@ -5,11 +5,17 @@
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^7.1.0",
"@semantic-release/git": "^10.0.1",
+ "@types/chrome": "^0.0.270",
"eslint": "^9.30.0",
"globals": "^16.2.0",
- "semantic-release": "^24.2.5"
+ "semantic-release": "^24.2.5",
+ "typescript": "^5.6.0"
},
"scripts": {
- "prepare": "node scripts/update-manifest-version.js"
+ "build": "tsc",
+ "watch": "tsc --watch",
+ "clean": "rimraf dist",
+ "rebuild": "npm run clean && npm run build",
+ "prepare": "npm run build && node scripts/update-manifest-version.js"
}
}
diff --git a/popup/popup.html b/popup/popup.html
index 6bc1bba..b3f4a61 100644
--- a/popup/popup.html
+++ b/popup/popup.html
@@ -148,8 +148,7 @@
-
-
+