Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: kubespider-extension support firefox. #519

Merged
merged 1 commit into from
May 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 34 additions & 1 deletion .github/workflows/release-extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ permissions:
contents: write

jobs:
Release-Extension:
Release-Chrome-Extension:
name: Release Kubespider Chrome Extension
runs-on: ubuntu-20.04
steps:
Expand All @@ -26,3 +26,36 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{github.event.release.tag_name}} chrome-extension.zip
shell: bash
Release-Firefox-Extension:
name: Release Kubespider Firefox Extension
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "21"
- name: Cache dependencies
uses: actions/cache@v3
with:
path: kubespider-extension/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('kubespider-extension/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies
run: |
npm install
working-directory: ./kubespider-extension
- name: Build
run: |
npm run build:firefox
working-directory: ./kubespider-extension
- name: Zip
run: zip -r firefox-extension.zip chrome-extension
shell: bash

- name: Upload Release Asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{github.event.release.tag_name}} firefox-extension.zip
shell: bash
1 change: 1 addition & 0 deletions kubespider-extension/.env.chrome
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_BROWSER_TYPE=chrome
1 change: 1 addition & 0 deletions kubespider-extension/.env.firefox
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_BROWSER_TYPE=firefox
1,268 changes: 734 additions & 534 deletions kubespider-extension/package-lock.json

Large diffs are not rendered by default.

45 changes: 23 additions & 22 deletions kubespider-extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,36 @@
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"build": "tsc && vite build --mode chrome",
"build:chrome": "tsc && vite build --mode chrome",
"build:firefox": "tsc && vite build --mode firefox",
"lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@crxjs/vite-plugin": "^2.0.0-beta.21",
"@crxjs/vite-plugin": "^2.0.0-beta.23",
"@thedutchcoder/postcss-rem-to-px": "^0.0.2",
"@types/chrome": "^0.0.254",
"@types/node": "^20.10.5",
"@types/react": "^18.2.45",
"@types/react-dom": "^18.2.18",
"@types/node": "^20.12.12",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@types/webextension-polyfill": "^0.10.7",
"@typescript-eslint/eslint-plugin": "^6.15.0",
"@typescript-eslint/parser": "^6.15.0",
"@vitejs/plugin-react": "^4.2.1",
"autoprefixer": "^10.4.16",
"classnames": "^2.3.2",
"eslint": "^8.56.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.5",
"postcss": "^8.4.32",
"tailwindcss": "^3.3.7",
"typescript": "^5.3.3",
"vite": "^4.5.3",
"vite-plugin-zip-pack": "^1.0.7",
"webextension-polyfill": "^0.10.0"
"@typescript-eslint/eslint-plugin": "^7.11.0",
"@typescript-eslint/parser": "^7.11.0",
"@vitejs/plugin-react": "^4.3.0",
"autoprefixer": "^10.4.19",
"classnames": "^2.5.1",
"eslint": "^8.57.0",
"eslint-plugin-react-hooks": "^4.6.2",
"eslint-plugin-react-refresh": "^0.4.7",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.3",
"typescript": "^5.4.5",
"vite": "^5.2.11",
"vite-plugin-zip-pack": "^1.2.3",
"webextension-polyfill": "^0.12.0"
}
}
2 changes: 1 addition & 1 deletion kubespider-extension/src/lib/bridge/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Browser from "webextension-polyfill";

namespace Tab {
export async function getCurrentTabId(): Promise<number> {
const [tab] = await chrome.tabs.query({
const [tab] = await Browser.tabs.query({
active: true,
currentWindow: true,
});
Expand Down
4 changes: 2 additions & 2 deletions kubespider-extension/src/lib/storage/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ const defaultConfig: Config = {

namespace Storage {
export const read = async (): Promise<Config> => {
return Browser.storage.sync.get(defaultConfig).then((config) => {
return Browser.storage.local.get(defaultConfig).then((config) => {
return config as Config;
});
};
export const save = async (config: Config): Promise<void> => {
return Browser.storage.sync.set(config);
return Browser.storage.local.set(config);
};
}

Expand Down
1 change: 1 addition & 0 deletions kubespider-extension/src/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export default defineManifest({
default_icon: "img/icon48.png",
},
background: {
scripts: ["src/background/index.ts"],
service_worker: "src/background/index.ts",
type: "module",
},
Expand Down
8 changes: 2 additions & 6 deletions kubespider-extension/tsconfig.node.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,5 @@
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true
},
"include": [
"vite.config.ts",
"src/manifest.ts",
"package.json"
]
}
"include": ["vite.config.ts", "src/manifest.ts", "package.json"]
}
49 changes: 26 additions & 23 deletions kubespider-extension/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,36 @@
import { defineConfig } from "vite";
import { defineConfig, loadEnv } from "vite";
import react from "@vitejs/plugin-react";
import { crx } from "@crxjs/vite-plugin";
import manifest from "./src/manifest";
import { resolve } from "path";

console.log(resolve(__dirname, "../chrome-extension"));

// https://vitejs.dev/config/
export default defineConfig({
plugins: [react(), crx({ manifest })],
resolve: {
alias: {
"@": resolve(__dirname, "src"),
"@lib": resolve(__dirname, "src/lib"),
"@api": resolve(__dirname, "src/lib/api"),
"@bridge": resolve(__dirname, "src/lib/bridge"),
"@component": resolve(__dirname, "src/lib/component"),
"@message": resolve(__dirname, "src/lib/message"),
"@polyfill": resolve(__dirname, "src/lib/polyfill"),
"@storage": resolve(__dirname, "src/lib/storage"),
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd());
const browser = (env.VITE_BROWSER_TYPE || "chrome") as "chrome" | "firefox";
console.log("build browser type", browser);
return {
plugins: [react(), crx({ manifest, browser })],
resolve: {
alias: {
"@": resolve(__dirname, "src"),
"@lib": resolve(__dirname, "src/lib"),
"@api": resolve(__dirname, "src/lib/api"),
"@bridge": resolve(__dirname, "src/lib/bridge"),
"@component": resolve(__dirname, "src/lib/component"),
"@message": resolve(__dirname, "src/lib/message"),
"@polyfill": resolve(__dirname, "src/lib/polyfill"),
"@storage": resolve(__dirname, "src/lib/storage"),
},
},
},
build: {
emptyOutDir: true,
outDir: resolve(__dirname, "../chrome-extension"),
rollupOptions: {
output: {
chunkFileNames: "assets/chunk-[hash].js",
build: {
emptyOutDir: true,
outDir: resolve(__dirname, "../chrome-extension"),
rollupOptions: {
output: {
chunkFileNames: "assets/chunk-[hash].js",
},
},
},
},
};
});
3 changes: 2 additions & 1 deletion kubespider/core/webhook_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from functools import wraps
from flask import Flask, jsonify, request
from flask_cors import CORS

from api.values import Event
from utils import global_config
Expand All @@ -12,7 +13,7 @@
from core import source_manager

kubespider_server = Flask(__name__)

CORS(kubespider_server)

def auth_required(func):
@wraps(func)
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ pyexecjs==1.5.1
bencodepy==0.9.5
qbittorrent-api==2023.7.52
flask==2.3.3
flask_cors==4.0.1
pyyaml==6.0.1
feedparser==6.0.10
transmission-rpc==4.3.0
Expand Down
Loading