mirror of
https://github.com/CharaChorder/DeviceManager.git
synced 2026-01-18 07:52:50 +00:00
55 lines
998 B
TypeScript
55 lines
998 B
TypeScript
import Config, { RecordHash, RecordMate } from './config'
|
|
|
|
export type RecordProps = {
|
|
config: Config
|
|
}
|
|
class Record {
|
|
private config: Config
|
|
|
|
constructor(options: RecordProps) {
|
|
this.config = options.config
|
|
}
|
|
|
|
public getHosts() {
|
|
return this.config.getRecord()?.hosts
|
|
}
|
|
|
|
public getHash() {
|
|
return this.config.getRecord()?.hash
|
|
}
|
|
|
|
public contains(hosts: string[]) {
|
|
const oldHosts = this.getHosts()
|
|
|
|
if (!oldHosts) {
|
|
return false
|
|
}
|
|
|
|
// require hosts is subset of oldHosts
|
|
for (const host of hosts) {
|
|
if (!oldHosts.includes(host)) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// whether the files has been tampered with
|
|
public equal(hash: RecordHash) {
|
|
const oldHash = this.getHash()
|
|
|
|
if (!oldHash) {
|
|
return false
|
|
}
|
|
|
|
return oldHash.key === hash.key && oldHash.cert === hash.cert
|
|
}
|
|
|
|
public async update(record: RecordMate) {
|
|
await this.config.merge({ record })
|
|
}
|
|
}
|
|
|
|
export default Record
|