Home / File/ Generators.ts — drizzle-orm Source File

Generators.ts — drizzle-orm Source File

Architecture documentation for Generators.ts, a typescript file in the drizzle-orm codebase. 18 imports, 6 dependents.

File typescript DrizzleSeed SeedOrchestration 18 imports 6 dependents 51 classes

Entity Profile

Dependency Diagram

graph LR
  e5cee001_0354_7e76_ef0a_06dca71dc8ce["Generators.ts"]
  548622d0_481e_2ed1_ebf9_8daa881d8d9b["adjectives.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 548622d0_481e_2ed1_ebf9_8daa881d8d9b
  9f4b1a2a_9d78_39f9_5a16_cb8bce702da3["cityNames.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 9f4b1a2a_9d78_39f9_5a16_cb8bce702da3
  648ff6d8_987e_83df_8c00_cd30c3f5c694["companyNameSuffixes.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 648ff6d8_987e_83df_8c00_cd30c3f5c694
  3e5b5e2a_10e5_bbd8_4558_d35112d20cca["countries.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 3e5b5e2a_10e5_bbd8_4558_d35112d20cca
  61c731c7_334e_933d_08e6_64d8ba51d1e0["emailDomains.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 61c731c7_334e_933d_08e6_64d8ba51d1e0
  cee553c6_ee67_0d2e_d45a_d71ef53bd652["firstNames.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> cee553c6_ee67_0d2e_d45a_d71ef53bd652
  a044e088_1af8_0cd0_150e_7cdb30f9332c["jobsTitles.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> a044e088_1af8_0cd0_150e_7cdb30f9332c
  1f78c73d_3792_a591_e275_80c319a4355a["lastNames.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 1f78c73d_3792_a591_e275_80c319a4355a
  6a145fc8_0bd2_3ede_f81d_aa0ce4f91349["loremIpsumSentences.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 6a145fc8_0bd2_3ede_f81d_aa0ce4f91349
  3688a531_159c_b781_3433_f6d2fb463f42["phonesInfo.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 3688a531_159c_b781_3433_f6d2fb463f42
  cf43445f_42d5_a331_7b0e_a2eb02a20d93["states.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> cf43445f_42d5_a331_7b0e_a2eb02a20d93
  9339787e_0c0b_c589_91f9_b5a8158edb51["streetSuffix.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 9339787e_0c0b_c589_91f9_b5a8158edb51
  3590021a_2509_fc1e_c0e6_fb6ddfe693d4["utils.ts"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 3590021a_2509_fc1e_c0e6_fb6ddfe693d4
  2d30e7dc_1674_cb54_a3c4_d833d08298ce["fastCartesianProduct"]
  e5cee001_0354_7e76_ef0a_06dca71dc8ce --> 2d30e7dc_1674_cb54_a3c4_d833d08298ce
  style e5cee001_0354_7e76_ef0a_06dca71dc8ce fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/* eslint-disable drizzle-internal/require-entity-kind */
import prand from 'pure-rand';
import adjectives, { maxStringLength as maxAdjectiveLength } from '../datasets/adjectives.ts';
import cityNames, { maxStringLength as maxCityNameLength } from '../datasets/cityNames.ts';
import companyNameSuffixes, { maxStringLength as maxCompanyNameSuffixLength } from '../datasets/companyNameSuffixes.ts';
import countries, { maxStringLength as maxCountryLength } from '../datasets/countries.ts';
import emailDomains, { maxStringLength as maxEmailDomainLength } from '../datasets/emailDomains.ts';
import firstNames, { maxStringLength as maxFirstNameLength } from '../datasets/firstNames.ts';
import jobsTitles, { maxStringLength as maxJobTitleLength } from '../datasets/jobsTitles.ts';
import lastNames, { maxStringLength as maxLastNameLength } from '../datasets/lastNames.ts';
import loremIpsumSentences, { maxStringLength as maxLoremIpsumLength } from '../datasets/loremIpsumSentences.ts';
import phonesInfo from '../datasets/phonesInfo.ts';
import states, { maxStringLength as maxStateLength } from '../datasets/states.ts';
import streetSuffix, { maxStringLength as maxStreetSuffixLength } from '../datasets/streetSuffix.ts';
import { fastCartesianProduct, fillTemplate, getWeightedIndices, isObject } from './utils.ts';

export abstract class AbstractGenerator<T = {}> {
	static readonly entityKind: string = 'AbstractGenerator';
	static readonly version: number = 1;

	public isUnique = false;
	public notNull = false;

	// param for generators which have a unique version of themselves
	public uniqueVersionOfGen?: new(params: T) => AbstractGenerator<T>;

	public dataType?: string;
	public timeSpent?: number;

	//
	public arraySize?: number;
	public baseColumnDataType?: string;

	// param for text-like generators
	public stringLength?: number;

	// params for GenerateValuesFromArray
	public weightedCountSeed?: number | undefined;
	public maxRepeatedValuesCount?: number | { weight: number; count: number | number[] }[] | undefined;

	public params: T;

	constructor(params?: T) {
		this.params = params === undefined ? {} as T : params as T;
	}

	init(params: { count: number | { weight: number; count: number | number[] }[]; seed: number }): void;
	init() {
		this.updateParams();
	}

	updateParams() {
		if ((this.params as any).arraySize !== undefined) {
			this.arraySize = (this.params as any).arraySize;
		}

		if ((this.params as any).isUnique !== undefined) {
			if ((this.params as any).isUnique === false && this.isUnique === true) {
				throw new Error('specifying non unique generator to unique column.');
			}
// ... (3060 more lines)

Domain

Subdomains

Frequently Asked Questions

What does Generators.ts do?
Generators.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleSeed domain, SeedOrchestration subdomain.
What does Generators.ts depend on?
Generators.ts imports 18 module(s): adjectives.ts, cityNames.ts, companyNameSuffixes.ts, countries.ts, emailDomains.ts, fastCartesianProduct, fillTemplate, firstNames.ts, and 10 more.
What files import Generators.ts?
Generators.ts is imported by 6 file(s): GeneratorFuncs.ts, SeedService.ts, generatorsBenchmark.ts, index.ts, seedService.ts, v2.ts.
Where is Generators.ts in the architecture?
Generators.ts is located at drizzle-seed/src/services/Generators.ts (domain: DrizzleSeed, subdomain: SeedOrchestration, directory: drizzle-seed/src/services).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free