@forestadmin/datasource-toolkit
Version:
86 lines • 6.02 kB
JavaScript
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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
;