{"version":3,"sources":["../src/domain.ts"],"sourcesContent":["export class Policy {\n  constructor(\n    public name: string,\n    public description: string,\n    public rotationDays = 90,\n    public minLength = 16,\n    public forbidPatterns?: string[],\n    public allowedCidrs?: string[]\n  ) {}\n}\n\nexport class Identity {\n  constructor(\n    public subject: string,\n    public roles: string[],\n    public tenant = 'default'\n  ) {}\n\n  hasRole(role: string): boolean {\n    return this.roles.includes(role);\n  }\n}\n\nexport type AuditLogEntry = {\n  timestamp: Date;\n  subject: string;\n  action: string;\n  secretId?: string | null;\n  tenant: string;\n  metadata: Record<string, string>;\n};\n\nexport class SecretVersion {\n  constructor(\n    public version: number,\n    public createdAt: Date,\n    public value: string,\n    public checksum: string,\n    public createdBy: string,\n    public expiresAt?: Date\n  ) {}\n\n  isExpired(): boolean {\n    return this.expiresAt ? new Date() > this.expiresAt : false;\n  }\n}\n\nexport class Secret {\n  constructor(\n    public id: string,\n    public name: string,\n    public tenant: string,\n    public policy: Policy,\n    public createdAt: Date,\n    public createdBy: string,\n    public versions: SecretVersion[],\n    public description?: string,\n    public rotationHandler?: () => string | Promise<string>\n  ) {}\n\n  latestVersion(): SecretVersion {\n    const [firstVersion] = this.versions;\n    if (!firstVersion) {\n      throw new Error('Secret has no versions');\n    }\n    return this.versions.reduce((latest, version) => {\n      return version.version > latest.version ? version : latest;\n    }, firstVersion);\n  }\n\n  nextVersionNumber(): number {\n    const maxVersion = this.versions.reduce((max, version) => Math.max(max, version.version), 0);\n    return maxVersion + 1;\n  }\n}\n"],"mappings":";AAAO,IAAM,SAAN,MAAa;AAAA,EAClB,YACS,MACA,aACA,eAAe,IACf,YAAY,IACZ,gBACA,cACP;AANO;AACA;AACA;AACA;AACA;AACA;AAAA,EACN;AACL;AAEO,IAAM,WAAN,MAAe;AAAA,EACpB,YACS,SACA,OACA,SAAS,WAChB;AAHO;AACA;AACA;AAAA,EACN;AAAA,EAEH,QAAQ,MAAuB;AAC7B,WAAO,KAAK,MAAM,SAAS,IAAI;AAAA,EACjC;AACF;AAWO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YACS,SACA,WACA,OACA,UACA,WACA,WACP;AANO;AACA;AACA;AACA;AACA;AACA;AAAA,EACN;AAAA,EAEH,YAAqB;AACnB,WAAO,KAAK,YAAY,oBAAI,KAAK,IAAI,KAAK,YAAY;AAAA,EACxD;AACF;AAEO,IAAM,SAAN,MAAa;AAAA,EAClB,YACS,IACA,MACA,QACA,QACA,WACA,WACA,UACA,aACA,iBACP;AATO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACN;AAAA,EAEH,gBAA+B;AAC7B,UAAM,CAAC,YAAY,IAAI,KAAK;AAC5B,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AACA,WAAO,KAAK,SAAS,OAAO,CAAC,QAAQ,YAAY;AAC/C,aAAO,QAAQ,UAAU,OAAO,UAAU,UAAU;AAAA,IACtD,GAAG,YAAY;AAAA,EACjB;AAAA,EAEA,oBAA4B;AAC1B,UAAM,aAAa,KAAK,SAAS,OAAO,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,QAAQ,OAAO,GAAG,CAAC;AAC3F,WAAO,aAAa;AAAA,EACtB;AACF;","names":[]}