import * as plugins from './smartacme.plugins.js'; import * as interfaces from './interfaces/index.js'; import { SmartacmeCertManager } from './smartacme.classes.certmanager.js'; import { Collection, svDb, unI } from '@push.rocks/smartdata'; @plugins.smartdata.Collection(() => { return SmartacmeCertManager.activeDB; }) export class SmartacmeCert extends plugins.smartdata.SmartDataDbDoc implements plugins.tsclass.network.ICert { @unI() public id: string; @svDb() public domainName: string; @svDb() public created: number; @svDb() public privateKey: string; @svDb() public publicKey: string; @svDb() public csr: string; @svDb() public validUntil: number; public isStillValid(): boolean { return this.validUntil >= Date.now(); } public shouldBeRenewed(): boolean { const shouldBeValidAtLeastUntil = Date.now() + plugins.smarttime.getMilliSecondsFromUnits({ days: 10, }); return !(this.validUntil >= shouldBeValidAtLeastUntil); } public update(certDataArg: plugins.tsclass.network.ICert) { Object.keys(certDataArg).forEach((key) => { this[key] = certDataArg[key]; }); } constructor(optionsArg: plugins.tsclass.network.ICert) { super(); if (optionsArg) { Object.keys(optionsArg).forEach((key) => { this[key] = optionsArg[key]; }); } } }