@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
37 lines (36 loc) • 1.51 kB
JavaScript
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