@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
38 lines (37 loc) • 1.53 kB
JavaScript
import { Metadata } from "../storage/Metadata.mjs";
import { Transform, TransformationType } from "class-transformer";
import { ValidateBy, buildMessage, isString } from "class-validator";
//#region src/utils/transformers.ts
function MetadataTransformer() {
return Transform(({ value, type }) => {
if (type === TransformationType.CLASS_TO_PLAIN) return { ...value.data };
if (type === TransformationType.PLAIN_TO_CLASS) return new Metadata(value);
if (type === TransformationType.CLASS_TO_CLASS) return new Metadata({ ...value.data });
});
}
/**
* Decorator that transforms to and from a date instance.
*/
function DateTransformer() {
return Transform(({ value, type }) => {
if (value === void 0) return void 0;
if (type === TransformationType.CLASS_TO_PLAIN) return value.toISOString();
if (type === TransformationType.PLAIN_TO_CLASS) return new Date(value);
if (type === TransformationType.CLASS_TO_CLASS) return new Date(value.getTime());
});
}
/**
* Checks if a given value is a string or string array.
*/
function IsStringOrStringArray(validationOptions) {
return ValidateBy({
name: "isStringOrStringArray",
validator: {
validate: (value) => isString(value) || Array.isArray(value) && value.every((v) => isString(v)),
defaultMessage: buildMessage((eachPrefix) => `${eachPrefix}$property must be a string or string array`, validationOptions)
}
}, validationOptions);
}
//#endregion
export { DateTransformer, IsStringOrStringArray, MetadataTransformer };
//# sourceMappingURL=transformers.mjs.map