@chinmayn00b/faker-ind
Version:
Generate Fake Contextual Data For India Region
60 lines • 2.47 kB
JavaScript
import { ZodError } from 'zod';
import * as accountUtils from './account';
import * as loremUtils from './lorem';
import * as nameUtils from './name';
import * as phoneUtils from './phone';
import * as randomUtils from './random';
import { fakerIndOptsSchema } from './schema';
export function fakerInd(opts) {
try {
fakerIndOptsSchema.parse(opts);
let language = opts.language ?? 'English';
const fakerInd = {
random: {
number: randomUtils.number,
boolean: randomUtils.boolean,
arrayElement: randomUtils.arrayElement,
objectElement: randomUtils.objectElement,
alphanumeric: randomUtils.alphanumeric,
hexadecimal: randomUtils.hexadecimal,
},
account: {
bank: () => accountUtils.bank(),
accountNumber: (count) => accountUtils.accountNumber(count),
},
phone: {
serviceProvider: () => phoneUtils.serviceProvider(),
number: (intl) => phoneUtils.number(intl),
},
name: {
firstName: (gender) => nameUtils.firstName(language, gender),
lastName: () => nameUtils.lastName(language),
prefix: () => nameUtils.prefix(language),
fullName: () => nameUtils.fullName(language),
},
lorem: {
word: () => loremUtils.word(language),
phrase: () => loremUtils.phrase(language),
},
setLanguage: (newLanguage) => {
language = newLanguage;
// Update closures to use new language
fakerInd.name.firstName = (gender) => nameUtils.firstName(language, gender);
fakerInd.name.lastName = () => nameUtils.lastName(language);
fakerInd.name.prefix = () => nameUtils.prefix(language);
fakerInd.name.fullName = () => nameUtils.fullName(language);
fakerInd.lorem.word = () => loremUtils.word(language);
fakerInd.lorem.phrase = () => loremUtils.phrase(language);
},
};
return fakerInd;
}
catch (err) {
if (err instanceof ZodError) {
const [firstError] = err.errors;
throw new Error(`Invalid options: ${firstError.message}`);
}
throw err;
}
}
//# sourceMappingURL=index.js.map