Skip to content
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
2 changes: 1 addition & 1 deletion src/api/sw/merge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ export const listAllMergeRules = () => sendMsg2Runtime('merge.all')

export const deleteMergeRule = (origin: string) => sendMsg2Runtime('merge.delete', origin)

export const addMergeRule = (rule: tt4b.merge.Rule) => sendMsg2Runtime('merge.add', rule)
export const addMergeRule = (rule: tt4b.site.MergeRule) => sendMsg2Runtime('merge.add', rule)
8 changes: 6 additions & 2 deletions src/background/content-script-handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/

import { getTab } from '@api/chrome/tab'
import { saveSite } from '@service/site-service'
import { getSite, saveSite } from '@service/site-service'
import { IS_ANDROID, IS_CHROME, IS_FIREFOX, IS_SAFARI, isNotTrackable } from "@util/constant/environment"
import { extractHostname, isHomepage } from "@util/pattern"
import { extractSiteName } from "@util/site"
Expand All @@ -30,7 +30,11 @@ async function processTabInfo(tab: ChromeTab): Promise<void> {
IS_CHROME && /^localhost(:.+)?/.test(host) && (iconUrl = undefined)
// Only collect site name for homepage
const alias = isHomepage(url) ? extractSiteName(title) : undefined
await saveSite({ host, type: 'normal', alias, iconUrl }, false)
if (!iconUrl && !alias) return
const exist = await getSite({ host, type: 'normal' })
exist.iconUrl ??= iconUrl
exist.alias ??= alias
await saveSite(exist)
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/background/database/cate-database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class CateDatabase extends BaseDatabase {

const ids = Object.keys(items).map(Number).filter(Number.isFinite)
const id = (ids.length ? Math.max(...ids) : 0) + 1
items[id] = {n: name}
items[id] = { n: name }

await this.saveItems(items)
return { name, id }
Expand Down
6 changes: 0 additions & 6 deletions src/background/database/common/constant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,6 @@
*/
export const REMAIN_WORD_PREFIX = '__timer__'

/**
* Key of white list
* @since 0.0.5
*/
export const WHITELIST_KEY = REMAIN_WORD_PREFIX + 'WHITELIST'

/**
* Key of metadata
* @since 0.6.0
Expand Down
11 changes: 5 additions & 6 deletions src/background/database/merge-rule-database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const isMergeValue = createUnionGuard(isString, isInt)

const isMergeRuleSet = createRecordGuard(isMergeValue)

const isMergeRule = createObjectGuard<tt4b.merge.Rule>({
const isMergeRule = createObjectGuard<tt4b.site.MergeRule>({
origin: isString,
merged: isMergeValue,
})
Expand All @@ -42,10 +42,9 @@ class MergeRuleDatabase extends BaseDatabase implements BrowserMigratable<'__mer
return this.setByKey(DB_KEY, data)
}

async selectAll(): Promise<tt4b.merge.Rule[]> {
async selectAll(): Promise<tt4b.site.MergeRule[]> {
const set = await this.refresh()
return Object.entries(set)
.map(([origin, merged]) => ({ origin, merged } satisfies tt4b.merge.Rule))
return Object.entries(set).map(([origin, merged]) => ({ origin, merged }))
}

async remove(origin: string): Promise<void> {
Expand All @@ -57,7 +56,7 @@ class MergeRuleDatabase extends BaseDatabase implements BrowserMigratable<'__mer
/**
* Add to the db
*/
async add(...toAdd: tt4b.merge.Rule[]): Promise<void> {
async add(...toAdd: tt4b.site.MergeRule[]): Promise<void> {
const set = await this.refresh()
// Not rewrite
toAdd.forEach(({ origin, merged }) => set[origin] = set[origin] ?? merged)
Expand Down Expand Up @@ -87,7 +86,7 @@ class MergeRuleDatabase extends BaseDatabase implements BrowserMigratable<'__mer
await this.update(exist)
}

exportData(): Promise<tt4b.merge.Rule[]> {
exportData(): Promise<tt4b.site.MergeRule[]> {
return this.selectAll()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/

import { CATE_NOT_SET_ID } from '@util/site'
import { BaseIDBStorage, iterateCursor, type Key, req2Promise, type Table } from '../common/indexed-storage'
import { BaseIDBStorage, iterateCursor, type Key, req2Promise, type Table } from './common/indexed-storage'

const INDEXES: (Key<tt4b.site.SiteInfo> | Key<tt4b.site.SiteInfo>[])[] = [
'host',
Expand Down
89 changes: 0 additions & 89 deletions src/background/database/site-database/classic.ts

This file was deleted.

28 changes: 0 additions & 28 deletions src/background/database/whitelist-database.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/background/install-handler/version/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { getVersion } from "@api/chrome/runtime"
import CateInitializer from "./cate-initializer"
import HostMergeInitializer from "./host-merge-initializer"
import LocalFileInitializer from "./local-file-initializer"
import SiteMigrator from './site-migrator'
import type { Migrator } from "./types"
import WhitelistInitializer from "./whitelist-initializer"

Expand All @@ -27,7 +26,6 @@ class VersionManager {
new LocalFileInitializer(),
new WhitelistInitializer(),
new CateInitializer(),
new SiteMigrator(),
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default class LocalFileInitializer implements Migrator {
[TXT_HOST]: t(msg => msg.initial.localFile.txt),
}
for (const [host, alias] of Object.entries(hostAlias)) {
void saveSite({ host, type: 'normal', alias, iconUrl: undefined }, true)
void saveSite({ host, type: 'normal', alias, iconUrl: undefined })
}
}
}
55 changes: 0 additions & 55 deletions src/background/install-handler/version/site-migrator.ts

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export default class WhitelistInitializer implements Migrator {
host: 'localhost:*/**', type: 'virtual',
alias: 'localhost with ports',
options: { white: true },
}, true)
})
}

onUpdate(_version: string): void {
Expand Down
2 changes: 1 addition & 1 deletion src/background/message-dispatcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class MessageDispatcher {
.register('site.add', addSite)
.register('site.delete', removeSites)
.register('site.changeCate', ({ cateId, keys }) => batchChangeCate(cateId, keys))
.register('site.modify', param => saveSite(param, true))
.register('site.modify', param => saveSite(param))
.register('site.fillAlias', fillInitialAlias)
.register('site.initialAlias', getInitialAlias)
.register('site.detect', detectSites)
Expand Down
4 changes: 2 additions & 2 deletions src/background/service/components/host-merge-ruler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const processRegStr = (regStr: string) => regStr
.split('**').join('.+')
.split('*').join('[^\\.]+')

function convert(dbItem: tt4b.merge.Rule): RegRuleItem | [string, string | number] {
function convert(dbItem: tt4b.site.MergeRule): RegRuleItem | [string, string | number] {
const { origin, merged } = dbItem
if (origin.includes('*')) {
const regStr = processRegStr(origin)
Expand All @@ -61,7 +61,7 @@ export default class CustomizedHostMergeRuler {

private cache: FIFOCache<string> = new FIFOCache(500)

constructor(rules: tt4b.merge.Rule[]) {
constructor(rules: tt4b.site.MergeRule[]) {
rules.map(item => convert(item))
.forEach(rule => Array.isArray(rule)
? (this.noRegMergeRules[rule[0]] = rule[1] || rule[0])
Expand Down
18 changes: 10 additions & 8 deletions src/background/service/components/immigration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ import packageInfo from "@/package"
import limitDatabase from "@db/limit-database"
import mergeRuleDatabase from "@db/merge-rule-database"
import statDatabase from "@db/stat-database"
import type { BrowserMigratable, StorageMigratable } from '@db/types'
import type { BrowserMigratable, BrowserMigratableNamespace, StorageMigratable } from '@db/types'
import siteMigrator from '@service/site-service/migrator'

const BROWSER_MIGRATABLES: BrowserMigratable[] = [
statDatabase,
limitDatabase,
mergeRuleDatabase,
]
const BROWSER_REGISTRY: Record<BrowserMigratableNamespace, BrowserMigratable> = {
__stat__: statDatabase,
__limit__: limitDatabase,
__merge__: mergeRuleDatabase,
__site__: siteMigrator,
}

const STORAGE_MIGRATABLES: StorageMigratable<unknown>[] = [
statDatabase,
Expand All @@ -25,7 +27,7 @@ export async function exportData(): Promise<tt4b.backup.ExportData> {
const data: tt4b.backup.ExportData = {
__meta__: { version: packageInfo.version, ts: Date.now() },
}
for (const migratable of BROWSER_MIGRATABLES) {
for (const migratable of Object.values(BROWSER_REGISTRY)) {
const namespace = migratable.namespace
const dataAny = data as any
dataAny[namespace] = await migratable.exportData()
Expand All @@ -34,7 +36,7 @@ export async function exportData(): Promise<tt4b.backup.ExportData> {
}

export async function importData(data: unknown): Promise<void> {
for (const db of BROWSER_MIGRATABLES) await db.importData(data)
for (const db of Object.values(BROWSER_REGISTRY)) await db.importData(data)
}

export async function migrateStorage(type: tt4b.option.StorageType): Promise<void> {
Expand Down
Loading