@buka/class-transformer-extra
Version:
class-transformer-extra contains methods that's aren't included in the class-transform package.
48 lines (47 loc) • 1.93 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "class-transformer"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ToBoolean = void 0;
const class_transformer_1 = require("class-transformer");
function matchBasicType(basicType, value) {
if (typeof basicType === 'function')
return basicType(value);
return basicType === value;
}
function matchBasicTypes(basicTypes, value) {
return basicTypes.some((basicType) => matchBasicType(basicType, value));
}
function buildMapping(falseValuesOrTransformer, options) {
if (typeof falseValuesOrTransformer === 'function') {
return (value) => {
if (options?.optional && value === undefined)
return undefined;
return falseValuesOrTransformer(value);
};
}
const falseValues = falseValuesOrTransformer;
return (value) => {
if (options?.optional && value === undefined)
return undefined;
return !matchBasicTypes(falseValues, value);
};
}
function ToBoolean(falseValuesOrTransformer = Boolean, options) {
if (typeof falseValuesOrTransformer !== 'function' && !Array.isArray(falseValuesOrTransformer)) {
throw new TypeError('Invalid Parameter');
}
const to = buildMapping(falseValuesOrTransformer, options);
return (0, class_transformer_1.Transform)(function ToBooleanTransform({ value }) {
return to(value);
}, options);
}
exports.ToBoolean = ToBoolean;
});