typeorm-stubs
Version:
Stubs generator for Typeorm entities
75 lines • 2.9 kB
JavaScript
;
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