UNPKG

@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
(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; });