UNPKG

typedconverter

Version:

Convert object into classes match with TypeScript type annotation

52 lines (51 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.safeToString = exports.defaultConverters = void 0; // --------------------------------------------------------------------- // // ------------------------------- HELPER ------------------------------ // // --------------------------------------------------------------------- // //some object can't simply convertible to string https://github.com/emberjs/ember.js/issues/14922#issuecomment-278986178 function safeToString(value) { try { return value.toString(); } catch (e) { return "[object Object]"; } } exports.safeToString = safeToString; // --------------------------------------------------------------------- // // ----------------------------- CONVERTERS ---------------------------- // // --------------------------------------------------------------------- // function booleanConverter(rawValue) { const value = safeToString(rawValue); const list = { on: true, true: true, "1": true, yes: true, off: false, false: false, "0": false, no: false }; return list[value.toLowerCase()]; } function numberConverter(rawValue) { const value = safeToString(rawValue); if (value === "") return; const result = Number(value); if (isNaN(result)) return; return result; } function dateConverter(rawValue) { const value = safeToString(rawValue); const stamp = Date.parse(value); return isNaN(stamp) ? undefined : new Date(stamp); } function stringConverter(rawValue) { return safeToString(rawValue); } const defaultConverters = new Map([ [Boolean, booleanConverter], [Date, dateConverter], [Number, numberConverter], [String, stringConverter] ]); exports.defaultConverters = defaultConverters;