UNPKG

@forestadmin/datasource-toolkit

Version:
86 lines 6.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const luxon_1 = require("luxon"); const uuid_1 = require("uuid"); class TypeGetter { static get(value, typeContext) { if (typeContext === 'Json') return 'Json'; if (typeof value === 'string') return TypeGetter.getTypeFromString(value, typeContext); if (typeof value === 'number' && !Number.isNaN(Number(value))) return 'Number'; if (value instanceof Date && luxon_1.DateTime.fromJSDate(value).isValid) return 'Date'; if (typeof value === 'boolean') return 'Boolean'; if (value instanceof Buffer) return 'Binary'; if (value === null || value === undefined) return null; return undefined; } static isPrimitiveType(columnType) { const primitiveTypes = [ 'Boolean', 'Binary', 'Date', 'Dateonly', 'Enum', 'Json', 'Number', 'Point', 'String', 'Time', 'Timeonly', 'Uuid', ]; return primitiveTypes.includes(columnType); } static isArrayOfPrimitiveType(columnType) { return Array.isArray(columnType) && this.isPrimitiveType(columnType[0]); } static getDateType(value) { const dateTime = luxon_1.DateTime.fromISO(value); if (dateTime.toISODate() === value) return 'Dateonly'; if (dateTime.toISOTime().match(value)) return 'Time'; return 'Date'; } static getTypeFromString(value, typeContext) { if (['Enum', 'String'].includes(typeContext)) return typeContext; if ((0, uuid_1.validate)(value)) return 'Uuid'; if (TypeGetter.isValidDate(value)) return TypeGetter.getDateType(value); if (TypeGetter.isPoint(value, typeContext)) return 'Point'; // BigInt if (typeContext === 'Number' && TypeGetter.isBigInt(value)) return typeContext; return 'String'; } static isBigInt(value) { try { BigInt(value); return true; } catch (e) { /* empty */ } return false; } static isValidDate(value) { return luxon_1.DateTime.fromISO(value).isValid; } static isPoint(value, typeContext) { const potentialPoint = value.split(','); return (potentialPoint.length === 2 && typeContext === 'Point' && potentialPoint.every(point => TypeGetter.get(Number(point), 'Number') === 'Number')); } } exports.default = TypeGetter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1nZXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlLWdldHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFpQztBQUNqQywrQkFBZ0Q7QUFJaEQsTUFBcUIsVUFBVTtJQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQWMsRUFBRSxXQUEyQjtRQUNwRCxJQUFJLFdBQVcsS0FBSyxNQUFNO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFFMUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXZGLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUUvRSxJQUFJLEtBQUssWUFBWSxJQUFJLElBQUksZ0JBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBRS9FLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRWpELElBQUksS0FBSyxZQUFZLE1BQU07WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUU3QyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2RCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFzQjtRQUMzQyxNQUFNLGNBQWMsR0FBcUI7WUFDdkMsU0FBUztZQUNULFFBQVE7WUFDUixNQUFNO1lBQ04sVUFBVTtZQUNWLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLE9BQU87WUFDUCxRQUFRO1lBQ1IsTUFBTTtZQUNO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