import { EntityDict } from '@project/oak-app-domain'; import { EntityDict as BaseEntityDict, SelectOpResult } from 'oak-domain/lib/types/Entity'; import { RuntimeContext } from './RuntimeContext'; import { BackendRuntimeContext as DependentBackendRuntimeContext } from './DependentContext'; import { unset } from 'oak-domain/lib/utils/lodash'; export class BackendRuntimeContext extends DependentBackendRuntimeContext implements RuntimeContext { async toString() { const data = await this.getSerializedData(); return JSON.stringify(data); } async refineOpRecords(): Promise { await super.refineOpRecords(); for (const opRecord of this.opRecords) { if (opRecord.a === 's') { const { d } = opRecord as SelectOpResult; for (const entity in d) { if ( ['application', 'system'].includes(entity) ) { // todo 删除掉config中的敏感返回信息 const rowDict = d[entity as 'system']; for (const id in rowDict) { const { payConfig } = rowDict[id] as EntityDict['system']['OpSchema']; if (payConfig) { payConfig.forEach( (config) => { unset(config, 'publicKeyFilePath'); unset(config, 'privateKeyFilePath'); unset(config, 'apiV3Key'); } ); } } } } } } } }; export default BackendRuntimeContext;