UNPKG

typeorm-stubs

Version:
75 lines 2.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Generator = void 0; const singleton_1 = require("./singleton"); const type_guards_1 = require("./type-guards"); const utils_1 = require("./utils"); const constants_1 = require("./constants"); const crypto = require("crypto"); class Generator extends singleton_1.Singleton { generateDate(_column) { return new Date(); } generateEnum(column) { const columnEnum = column.options.enum; if (!(0, type_guards_1.isNotNull)(columnEnum)) { throw new Error(`Enum for column "${column.propertyName}" was not provided`); } if (Array.isArray(columnEnum)) { const index = this.generateRandomNumber(0, columnEnum.length - 1); return columnEnum[index]; } if ((0, type_guards_1.isObject)(columnEnum)) { const keys = (0, utils_1.typedKeys)(columnEnum); const index = this.generateRandomNumber(0, keys.length - 1); const key = keys[index]; const val = key ? columnEnum[key] : 0; return (0, type_guards_1.isString)(val) || (0, type_guards_1.isNumber)(val) ? val : 0; } return 0; } generateNumber(_column) { return this.generateRandomNumber(0, 999); } generateString(_column) { const words = constants_1.ABSTRACT_TEXT.split(' '); return ([...Array(this.generateRandomNumber(constants_1.MIN_WORDS_COUNT, constants_1.MAX_WORDS_COUNT))] .map((_, i) => this.getRandomWord(i === 0, words)) .join(' ') .trim() + '.'); } generateUuid(_column) { return crypto.randomUUID(); } generateBoolean(_column) { const num = this.generateRandomNumber(1, 10); return Boolean(num % 2); } generateRandomNumber(min, max) { return Math.round(Math.random() * (max - min) + min); } generate(column, method, designType) { if (column.options.array || designType === Array) { return Array(this.generateRandomNumber(constants_1.MIN_ARR_LENGTH, constants_1.MAX_ARR_LENGTH)) .fill('') .map(() => { const val = this[method](column); if (designType === Array) { return val; } return designType(val); }); } const val = this[method](column); if (val instanceof Date && designType === String) { return val.toISOString(); } return designType(val); } getRandomWord(firstLetterToUppercase, words) { const word = words[this.generateRandomNumber(0, words.length - 1)] ?? ''; return firstLetterToUppercase ? word.charAt(0).toUpperCase() + word.slice(1) : word; } } exports.Generator = Generator; //# sourceMappingURL=generator.js.map