GeneratePhoneNumber Class — drizzle-orm Architecture
Architecture documentation for the GeneratePhoneNumber class in Generators.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 06b964e7_b23f_279e_aab9_e842d84085a5["GeneratePhoneNumber"] e5cee001_0354_7e76_ef0a_06dca71dc8ce["Generators.ts"] 06b964e7_b23f_279e_aab9_e842d84085a5 -->|defined in| e5cee001_0354_7e76_ef0a_06dca71dc8ce 1e5fa5ec_0fe2_b4f4_c81b_d7c555a6ab40["init()"] 06b964e7_b23f_279e_aab9_e842d84085a5 -->|method| 1e5fa5ec_0fe2_b4f4_c81b_d7c555a6ab40 55b4a788_d2f7_de51_fa94_c8ef1823444e["generate()"] 06b964e7_b23f_279e_aab9_e842d84085a5 -->|method| 55b4a788_d2f7_de51_fa94_c8ef1823444e
Relationship Graph
Source Code
drizzle-seed/src/services/Generators.ts lines 1887–2081
export class GeneratePhoneNumber extends AbstractGenerator<{
template?: string;
prefixes?: string[];
generatedDigitsNumbers?: number | number[];
arraySize?: number;
}> {
static override readonly entityKind: string = 'GeneratePhoneNumber';
private state: {
rng: prand.RandomGenerator;
placeholdersCount?: number;
prefixesArray: string[];
generatedDigitsNumbers: number[];
generatorsMap: Map<string, GenerateUniqueInt>;
phoneNumbersSet: Set<string>;
} | undefined;
public override isUnique = true;
override init({ count, seed }: { count: number; seed: number }) {
super.init({ count, seed });
let { generatedDigitsNumbers } = this.params;
const { prefixes, template } = this.params;
const rng = prand.xoroshiro128plus(seed);
if (template !== undefined) {
if (this.stringLength !== undefined && this.stringLength < template.length) {
throw new Error(
`Length of phone number template is shorter than db column length restriction: ${this.stringLength}.
Set the maximum string length to at least ${template.length}.`,
);
}
const iterArray = [...template.matchAll(/#/g)];
const placeholdersCount = iterArray.length;
const maxUniquePhoneNumbersCount = Math.pow(10, placeholdersCount);
if (maxUniquePhoneNumbersCount < count) {
throw new RangeError(
`count exceeds max number of unique phone numbers(${maxUniquePhoneNumbersCount}).`,
);
}
const generatorsMap = new Map<string, GenerateUniqueInt>();
const genObj = new GenerateUniqueInt({ minValue: 0, maxValue: maxUniquePhoneNumbersCount - 1 });
genObj.init({
count,
seed,
});
generatorsMap.set(
template,
genObj,
);
const prefixesArray: string[] = [];
const generatedDigitsNumbers: number[] = [];
const phoneNumbersSet = new Set<string>();
this.state = { rng, placeholdersCount, generatorsMap, prefixesArray, generatedDigitsNumbers, phoneNumbersSet };
return;
}
let prefixesArray: string[];
if (prefixes === undefined || prefixes.length === 0) {
prefixesArray = phonesInfo.map((phoneInfo) => phoneInfo.split(',').slice(0, -1).join(' '));
generatedDigitsNumbers = phonesInfo.map((phoneInfo) => {
// tokens = ["380","99","9"] =
// = ["country prefix", "operator prefix", "number length including operator prefix and excluding country prefix"]
const tokens = phoneInfo.split(',');
const operatorPrefixLength = tokens[1]!.replaceAll(' ', '').length;
return Number(tokens[2]) - operatorPrefixLength;
});
} else {
prefixesArray = prefixes;
if (typeof generatedDigitsNumbers === 'number') {
generatedDigitsNumbers = Array.from<number>({ length: prefixes.length }).fill(
generatedDigitsNumbers,
);
Domain
Defined In
Source
Frequently Asked Questions
What is the GeneratePhoneNumber class?
GeneratePhoneNumber is a class in the drizzle-orm codebase, defined in drizzle-seed/src/services/Generators.ts.
Where is GeneratePhoneNumber defined?
GeneratePhoneNumber is defined in drizzle-seed/src/services/Generators.ts at line 1887.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free