@decaf-ts/decorator-validation
Version:
simple decorator based validation engine
25 lines • 3.65 kB
JavaScript
import { ModelKeys } from "./../utils/constants.js";
export function getModelKey(str) {
return ModelKeys.REFLECT + str;
}
export function getMetadata(model) {
const metadata = Reflect.getMetadata(getModelKey(ModelKeys.MODEL), model.constructor);
if (!metadata)
throw new Error("could not find metadata for provided " + model.constructor.name);
return metadata;
}
/**
* Wraps a value in a Promise if the `async` flag is true.
*
* @template T - The type of the value being wrapped.
* @template Async - A boolean type that determines if the result should be wrapped in a Promise.
*
* @param value - The value to return directly or wrap in a Promise.
* @param async - If true, the value is wrapped in a resolved Promise. If false or undefined, the value is returned as-is.
*
* @returns The original value or a Promise resolving to it, depending on the `async` flag.
*/
export function toConditionalPromise(value, async) {
return (async ? Promise.resolve(value) : value);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQ0FBMkI7QUFJL0MsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLE9BQU8sU0FBUyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDakMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQWtCLEtBQVE7SUFDbkQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FDbEMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFDNUIsS0FBSyxDQUFDLFdBQVcsQ0FDbEIsQ0FBQztJQUNGLElBQUksQ0FBQyxRQUFRO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYix1Q0FBdUMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDakUsQ0FBQztJQUNKLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxLQUFRLEVBQ1IsS0FBYTtJQUViLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBK0IsQ0FBQztBQUNoRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxLZXlzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxBc3luYyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi9Nb2RlbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZWxLZXkoc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIE1vZGVsS2V5cy5SRUZMRUNUICsgc3RyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0YWRhdGE8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgZ2V0TW9kZWxLZXkoTW9kZWxLZXlzLk1PREVMKSxcbiAgICBtb2RlbC5jb25zdHJ1Y3RvclxuICApO1xuICBpZiAoIW1ldGFkYXRhKVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiY291bGQgbm90IGZpbmQgbWV0YWRhdGEgZm9yIHByb3ZpZGVkIFwiICsgbW9kZWwuY29uc3RydWN0b3IubmFtZVxuICAgICk7XG4gIHJldHVybiBtZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBXcmFwcyBhIHZhbHVlIGluIGEgUHJvbWlzZSBpZiB0aGUgYGFzeW5jYCBmbGFnIGlzIHRydWUuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgYmVpbmcgd3JhcHBlZC5cbiAqIEB0ZW1wbGF0ZSBBc3luYyAtIEEgYm9vbGVhbiB0eXBlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgcmVzdWx0IHNob3VsZCBiZSB3cmFwcGVkIGluIGEgUHJvbWlzZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gcmV0dXJuIGRpcmVjdGx5IG9yIHdyYXAgaW4gYSBQcm9taXNlLlxuICogQHBhcmFtIGFzeW5jIC0gSWYgdHJ1ZSwgdGhlIHZhbHVlIGlzIHdyYXBwZWQgaW4gYSByZXNvbHZlZCBQcm9taXNlLiBJZiBmYWxzZSBvciB1bmRlZmluZWQsIHRoZSB2YWx1ZSBpcyByZXR1cm5lZCBhcy1pcy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgb3JpZ2luYWwgdmFsdWUgb3IgYSBQcm9taXNlIHJlc29sdmluZyB0byBpdCwgZGVwZW5kaW5nIG9uIHRoZSBgYXN5bmNgIGZsYWcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NvbmRpdGlvbmFsUHJvbWlzZTxULCBBc3luYyBleHRlbmRzIGJvb2xlYW4+KFxuICB2YWx1ZTogVCxcbiAgYXN5bmM/OiBBc3luY1xuKTogQ29uZGl0aW9uYWxBc3luYzxBc3luYywgVD4ge1xuICByZXR1cm4gKGFzeW5jID8gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKSA6IHZhbHVlKSBhcyBDb25kaXRpb25hbEFzeW5jPEFzeW5jLCBUPjtcbn1cbiJdfQ==