// FIXME: Update this file to be type safe and remove this and next line // @ts-strict-ignore import { Jsonify } from "type-fest"; import { Classifier } from "./state/classifier"; export class PrivateClassifier implements Classifier, Data> { constructor(private keys: (keyof Jsonify)[] = undefined) {} classify(value: Data): { disclosed: Jsonify>; secret: Jsonify } { const pickMe = JSON.parse(JSON.stringify(value)); const keys: (keyof Jsonify)[] = this.keys ?? (Object.keys(pickMe) as any); const picked: Partial> = {}; for (const key of keys) { picked[key] = pickMe[key]; } const secret = picked as Jsonify; return { disclosed: null, secret }; } declassify(_disclosed: Jsonify>, secret: Jsonify) { const result: Partial> = {}; const keys: (keyof Jsonify)[] = this.keys ?? (Object.keys(secret) as any); for (const key of keys) { result[key] = secret[key]; } return result as Jsonify; } }