mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
Split config defaults, option metadata, runtime-option registry, and template sections into domain modules while preserving the composed public API in definitions.ts. This keeps ConfigService behavior stable and makes future config extensions easier to add with focused regression coverage.
138 lines
9.2 KiB
JSON
138 lines
9.2 KiB
JSON
{
|
|
"name": "subminer",
|
|
"version": "0.1.0",
|
|
"description": "All-in-one sentence mining overlay with AnkiConnect and dictionary integration",
|
|
"packageManager": "bun@1.3.5",
|
|
"main": "dist/main-entry.js",
|
|
"scripts": {
|
|
"get-frequency": "bun run scripts/get_frequency.ts --pretty --color-top-x 10000 --yomitan-user-data ~/.config/SubMiner --colorized-line",
|
|
"get-frequency:electron": "bun build scripts/get_frequency.ts --format=cjs --target=node --outfile dist/scripts/get_frequency.js --external electron && electron dist/scripts/get_frequency.js --pretty --color-top-x 10000 --yomitan-user-data ~/.config/SubMiner --colorized-line",
|
|
"test-yomitan-parser": "bun run scripts/test-yomitan-parser.ts",
|
|
"test-yomitan-parser:electron": "bun build scripts/test-yomitan-parser.ts --format=cjs --target=node --outfile dist/scripts/test-yomitan-parser.js --external electron && electron dist/scripts/test-yomitan-parser.js",
|
|
"build": "tsc && bun run build:renderer && cp src/renderer/index.html src/renderer/style.css dist/renderer/ && cp -r src/renderer/fonts dist/renderer/ && bash scripts/build-macos-helper.sh",
|
|
"build:renderer": "esbuild src/renderer/renderer.ts --bundle --platform=browser --format=esm --target=es2022 --outfile=dist/renderer/renderer.js --sourcemap",
|
|
"docs:dev": "VITE_EXTRA_EXTENSIONS=jsonc vitepress dev docs --host 0.0.0.0 --port 5173 --strictPort",
|
|
"docs:build": "VITE_EXTRA_EXTENSIONS=jsonc vitepress build docs",
|
|
"docs:preview": "VITE_EXTRA_EXTENSIONS=jsonc vitepress preview docs --host 0.0.0.0 --port 4173 --strictPort",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"check:file-budgets": "bun run scripts/check-file-budgets.ts",
|
|
"check:file-budgets:strict": "bun run scripts/check-file-budgets.ts --strict",
|
|
"check:main-fanin": "bun run scripts/check-main-runtime-fanin.ts",
|
|
"check:main-fanin:strict": "bun run scripts/check-main-runtime-fanin.ts --strict",
|
|
"test:config:src": "bun test src/config/config.test.ts src/config/path-resolution.test.ts src/config/resolve/anki-connect.test.ts src/config/resolve/subtitle-style.test.ts src/config/resolve/jellyfin.test.ts src/config/definitions/domain-registry.test.ts",
|
|
"test:config:dist": "node --test dist/config/config.test.js dist/config/path-resolution.test.js dist/config/resolve/anki-connect.test.js dist/config/resolve/subtitle-style.test.js dist/config/resolve/jellyfin.test.js dist/config/definitions/domain-registry.test.js",
|
|
"test:config:smoke:dist": "node --test dist/config/path-resolution.test.js",
|
|
"test:launcher:src": "bun test launcher/config.test.ts launcher/parse-args.test.ts launcher/main.test.ts",
|
|
"test:core:src": "bun test src/cli/args.test.ts src/cli/help.test.ts src/core/services/cli-command.test.ts src/core/services/field-grouping-overlay.test.ts src/core/services/numeric-shortcut-session.test.ts src/core/services/secondary-subtitle.test.ts src/core/services/mpv-render-metrics.test.ts src/core/services/overlay-content-measurement.test.ts src/core/services/mpv-control.test.ts src/core/services/mpv.test.ts src/core/services/runtime-options-ipc.test.ts src/core/services/runtime-config.test.ts src/core/services/config-hot-reload.test.ts src/core/services/tokenizer.test.ts src/core/services/tokenizer/annotation-stage.test.ts src/core/services/tokenizer/parser-selection-stage.test.ts src/core/services/tokenizer/parser-enrichment-stage.test.ts src/core/services/subsync.test.ts src/core/services/overlay-bridge.test.ts src/core/services/overlay-shortcut-handler.test.ts src/core/services/mining.test.ts src/core/services/anki-jimaku.test.ts src/core/services/jellyfin.test.ts src/core/services/jellyfin-remote.test.ts src/core/services/immersion-tracker-service.test.ts src/core/services/app-ready.test.ts src/core/services/startup-bootstrap.test.ts src/core/services/subtitle-processing-controller.test.ts src/core/services/anilist/anilist-update-queue.test.ts src/renderer/error-recovery.test.ts src/subsync/utils.test.ts src/main/anilist-url-guard.test.ts src/window-trackers/x11-tracker.test.ts launcher/config.test.ts launcher/parse-args.test.ts launcher/main.test.ts",
|
|
"test:core:dist": "node --test dist/cli/args.test.js dist/cli/help.test.js dist/core/services/cli-command.test.js dist/core/services/ipc.test.js dist/core/services/field-grouping-overlay.test.js dist/core/services/numeric-shortcut-session.test.js dist/core/services/secondary-subtitle.test.js dist/core/services/mpv-render-metrics.test.js dist/core/services/overlay-content-measurement.test.js dist/core/services/mpv-control.test.js dist/core/services/mpv.test.js dist/core/services/runtime-options-ipc.test.js dist/core/services/runtime-config.test.js dist/core/services/config-hot-reload.test.js dist/core/services/tokenizer.test.js dist/core/services/tokenizer/annotation-stage.test.js dist/core/services/tokenizer/parser-selection-stage.test.js dist/core/services/tokenizer/parser-enrichment-stage.test.js dist/core/services/subsync.test.js dist/core/services/overlay-bridge.test.js dist/core/services/overlay-manager.test.js dist/core/services/overlay-shortcut-handler.test.js dist/core/services/mining.test.js dist/core/services/anki-jimaku.test.js dist/core/services/jellyfin.test.js dist/core/services/jellyfin-remote.test.js dist/core/services/immersion-tracker-service.test.js dist/core/services/app-ready.test.js dist/core/services/startup-bootstrap.test.js dist/core/services/subtitle-processing-controller.test.js dist/core/services/anilist/anilist-token-store.test.js dist/core/services/anilist/anilist-update-queue.test.js dist/renderer/error-recovery.test.js dist/subsync/utils.test.js dist/main/anilist-url-guard.test.js dist/window-trackers/x11-tracker.test.js",
|
|
"test:core:smoke:dist": "node --test dist/cli/help.test.js dist/core/services/runtime-config.test.js dist/core/services/ipc.test.js dist/core/services/overlay-manager.test.js dist/core/services/anilist/anilist-token-store.test.js dist/core/services/startup-bootstrap.test.js dist/renderer/error-recovery.test.js dist/main/anilist-url-guard.test.js dist/window-trackers/x11-tracker.test.js",
|
|
"test:smoke:dist": "bun run test:config:smoke:dist && bun run test:core:smoke:dist",
|
|
"test:subtitle:dist": "echo \"Subtitle tests are currently not configured\"",
|
|
"test": "bun run test:config && bun run test:core",
|
|
"test:config": "bun run test:config:src",
|
|
"test:launcher": "bun run test:launcher:src",
|
|
"test:core": "bun run test:core:src",
|
|
"test:subtitle": "bun run build && bun run test:subtitle:dist",
|
|
"test:fast": "bun run test:config:src && bun run test:core:src",
|
|
"generate:config-example": "bun run build && node dist/generate-config-example.js",
|
|
"start": "bun run build && electron . --start",
|
|
"dev": "bun run build && electron . --start --dev",
|
|
"stop": "electron . --stop",
|
|
"toggle": "electron . --toggle",
|
|
"build:appimage": "bun run build && electron-builder --linux AppImage",
|
|
"build:mac": "bun run build && electron-builder --mac dmg zip",
|
|
"build:mac:unsigned": "bun run build && env -u APPLE_ID -u APPLE_APP_SPECIFIC_PASSWORD -u APPLE_TEAM_ID -u CSC_LINK -u CSC_KEY_PASSWORD CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --mac dmg zip",
|
|
"build:mac:zip": "bun run build && electron-builder --mac zip"
|
|
},
|
|
"keywords": [
|
|
"anki",
|
|
"ankiconnect",
|
|
"sentence-mining",
|
|
"japanese",
|
|
"subtitles",
|
|
"overlay",
|
|
"mpv",
|
|
"yomitan"
|
|
],
|
|
"author": "",
|
|
"license": "GPL-3.0-or-later",
|
|
"dependencies": {
|
|
"@catppuccin/vitepress": "^0.1.2",
|
|
"axios": "^1.13.5",
|
|
"commander": "^14.0.3",
|
|
"jsonc-parser": "^3.3.1",
|
|
"mermaid": "^11.12.2",
|
|
"ws": "^8.19.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^25.2.3",
|
|
"@types/ws": "^8.18.1",
|
|
"electron": "^37.10.3",
|
|
"electron-builder": "^26.7.0",
|
|
"esbuild": "^0.25.0",
|
|
"prettier": "^3.6.2",
|
|
"typescript": "^5.9.3",
|
|
"vitepress": "^1.6.4"
|
|
},
|
|
"build": {
|
|
"appId": "com.sudacode.SubMiner",
|
|
"productName": "SubMiner",
|
|
"executableName": "SubMiner",
|
|
"artifactName": "SubMiner-${version}.${ext}",
|
|
"icon": "assets/SubMiner.png",
|
|
"directories": {
|
|
"output": "release"
|
|
},
|
|
"linux": {
|
|
"target": [
|
|
"AppImage"
|
|
],
|
|
"category": "AudioVideo",
|
|
"executableArgs": [
|
|
"--background"
|
|
]
|
|
},
|
|
"mac": {
|
|
"target": [
|
|
"dmg",
|
|
"zip"
|
|
],
|
|
"category": "public.app-category.video",
|
|
"icon": "assets/SubMiner.png",
|
|
"hardenedRuntime": true,
|
|
"entitlements": "build/entitlements.mac.plist",
|
|
"entitlementsInherit": "build/entitlements.mac.plist"
|
|
},
|
|
"files": [
|
|
"dist/**/*",
|
|
"vendor/texthooker-ui/docs/**/*",
|
|
"vendor/texthooker-ui/package.json",
|
|
"package.json",
|
|
"scripts/get-mpv-window-macos.swift"
|
|
],
|
|
"extraResources": [
|
|
{
|
|
"from": "vendor/yomitan",
|
|
"to": "yomitan"
|
|
},
|
|
{
|
|
"from": "vendor/yomitan-jlpt-vocab",
|
|
"to": "yomitan-jlpt-vocab"
|
|
},
|
|
{
|
|
"from": "vendor/jiten_freq_global",
|
|
"to": "jiten_freq_global"
|
|
},
|
|
{
|
|
"from": "assets",
|
|
"to": "assets"
|
|
},
|
|
{
|
|
"from": "dist/scripts/get-mpv-window-macos",
|
|
"to": "scripts/get-mpv-window-macos"
|
|
}
|
|
]
|
|
}
|
|
}
|