typeorm-stubs
Version:
Stubs generator for Typeorm entities
53 lines • 2.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Stub = void 0;
const typeorm_1 = require("typeorm");
const parser_1 = require("./parser");
const generator_1 = require("./generator");
const type_guards_1 = require("./type-guards");
const constants_1 = require("./constants");
const utils_1 = require("./utils");
/**
* Stub creator.
* */
class Stub {
/**
* If you want to override the behavior of some Generator methods,
* pass a class that implements the "StubGenerator" interface.
* */
constructor(generator) {
this.generator = generator_1.Generator.getInstance();
if (generator) {
constants_1.STUB_GENERATOR_METHODS.forEach((method) => {
if ((0, type_guards_1.isFunction)(generator[method])) {
Reflect.set(this.generator, method, generator[method]);
}
});
}
this.parser = parser_1.Parser.getInstance(this.generator);
}
createOne(entity, options = constants_1.DEFAULT_STUB_OPTIONS) {
const stub = new entity();
const metadataStorage = (0, typeorm_1.getMetadataArgsStorage)();
if (!(0, type_guards_1.isNotNull)(metadataStorage))
return stub;
const addedRelations = [];
const parent = (0, utils_1.getParentClass)(entity);
if (parent) {
this.parser.parseMetadata(stub, parent, metadataStorage, addedRelations, options);
}
this.parser.parseMetadata(stub, entity, metadataStorage, addedRelations, options);
return stub;
}
createMany(entity, countOrOptions, maybeOptions) {
const count = (0, type_guards_1.isNumber)(countOrOptions)
? countOrOptions
: this.generator.generateRandomNumber?.(constants_1.MIN_ARR_LENGTH, constants_1.MAX_ARR_LENGTH) ?? constants_1.MIN_ARR_LENGTH;
const options = (0, type_guards_1.isNumber)(countOrOptions) ? maybeOptions : countOrOptions;
return Array(count ?? constants_1.MIN_ARR_LENGTH)
.fill('')
.map(() => this.createOne(entity, options));
}
}
exports.Stub = Stub;
//# sourceMappingURL=stub.js.map