UNPKG

@credo-ts/core

Version:

<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1

40 lines (36 loc) • 1.51 kB
import { JsonTransformer } from "../../../../utils/JsonTransformer.mjs"; import "../../../../utils/index.mjs"; import { DidDocumentService } from "./DidDocumentService.mjs"; import { DidCommV1Service } from "./DidCommV1Service.mjs"; import { DidCommV2Service } from "./DidCommV2Service.mjs"; import { IndyAgentService } from "./IndyAgentService.mjs"; import { LegacyDidCommV2Service } from "./LegacyDidCommV2Service.mjs"; import { Transform } from "class-transformer"; //#region src/modules/dids/domain/service/ServiceTransformer.ts const serviceTypes = { [IndyAgentService.type]: IndyAgentService, [DidCommV1Service.type]: DidCommV1Service, [DidCommV2Service.type]: DidCommV2Service, [LegacyDidCommV2Service.type]: LegacyDidCommV2Service }; /** * Decorator that transforms service json to corresponding class instances. See {@link serviceTypes} * * @example * class Example { * ServiceTransformer() * private service: Service * } */ function ServiceTransformer() { return Transform(({ value }) => { return value?.map((serviceJson) => { let serviceClass = serviceTypes[serviceJson.type] ?? DidDocumentService; if (serviceJson.type === DidCommV2Service.type && "serviceEndpoint" in serviceJson && typeof serviceJson.serviceEndpoint === "string") serviceClass = LegacyDidCommV2Service; return JsonTransformer.fromJSON(serviceJson, serviceClass); }); }, { toClassOnly: true }); } //#endregion export { ServiceTransformer, serviceTypes }; //# sourceMappingURL=ServiceTransformer.mjs.map