Nghia

Nghia

// Name: Dummy Data
// Description: Generate fake data for real use-case (that #version just generate fields about person and color)
// Author: Nghia Vu (Ngh14)
import '@johnlindquist/kit';
import falso from '@ngneat/falso';
let counts = 1;
const randZodiacSign = () => {
const zodiacSigns = [
'Aries',
'Taurus',
'Gemini',
'Cancer',
'Leo',
'Virgo',
'Libra',
'Scorpio',
'Sagittarius',
'Capricorn',
'Aquarius',
'Pisces',
];
return falso.rand(zodiacSigns);
};
const person = [
{
name: 'Full Name',
value: () => falso.randFullName(),
description: 'The complete name of the randomly generated user.',
},
{
name: 'Title',
value: () => falso.randPersonTitle(),
description: 'The professional title of the randomly generated user.',
},
{
name: 'Email',
value: () => falso.randEmail(),
description: 'The email address of the randomly generated user.',
},
{
name: 'Phone',
value: () => falso.randPhoneNumber(),
description: 'The phone number of the randomly generated user.',
},
{
name: 'Address',
value: () => falso.randAddress(),
description: 'The physical address of the randomly generated user.',
},
{
name: 'Username',
value: () => falso.randUserName(),
description: 'The username chosen for the randomly generated user.',
},
{
name: 'Last Name',
value: () => falso.randLastName(),
description: 'The last name of the randomly generated user.',
},
{
name: 'First_Name',
value: () => falso.randFirstName(),
description: 'The first name of the randomly generated user.',
},
{
name: 'Gender',
value: () => falso.randGender(),
description: 'The gender of the randomly generated user.',
},
{
name: 'Avatar',
value: () => falso.randAvatar(),
description: 'The profile picture (avatar) of the randomly generated user.',
},
{
name: 'Pronoun',
value: () => falso.randPronoun(),
description: 'The preferred pronoun of the randomly generated user.',
},
{
name: 'Skill',
value: () => falso.randSkill(),
description: 'A skill associated with the randomly generated user.',
},
{
name: 'Password',
value: () => falso.randPassword(),
description: 'The password for the randomly generated user.',
},
{
name: 'Country',
value: () => falso.randCountry(),
description: 'The country of residence of the randomly generated user.',
},
{
name: 'City',
value: () => falso.randCity(),
description: 'The city of residence of the randomly generated user.',
},
{
name: 'Role',
value: () => falso.randRole(),
description: 'The role or position held by the randomly generated user.',
},
{
name: 'Company',
value: () => falso.randCompanyName(),
description:
'The name of the company associated with the randomly generated user.',
},
{
name: 'Subscription Plan',
value: () => falso.randSubscriptionPlan(),
description: 'The subscription plan chosen by the randomly generated user.',
},
{
name: 'Date of Birth',
value: () => falso.randPastDate(),
description: 'The date of birth of the randomly generated user.',
},
{
name: 'Credit Card',
value: () => falso.randCreditCard(),
description: 'The randomly generated credit card information of the user.',
},
{
name: 'User Agent',
value: () => falso.randUserAgent(),
description:
'The user agent of the device used by the randomly generated user.',
},
{
name: 'IP',
value: () => falso.randIP(),
description: 'The randomly generated IP address of the user.',
},
{
name: 'IP6',
value: () => falso.randIP6(),
description: 'The randomly generated IPv6 address of the user.',
},
{
name: 'Zodiac Sign',
value: () => randZodiacSign(),
description: 'The randomly generated zodiac sign of the user.',
},
];
const color = [
{
name: 'Name',
value: () => falso.randColor(),
description: 'Generates a random color name.',
},
{
name: 'HEX',
value: () => falso.randHex(),
description: 'Generates a random hexadecimal color code.',
},
{
name: 'HSL',
value: () => falso.randHsl(),
description:
'Generates a random HSL (Hue, Saturation, Lightness) color code.',
},
{
name: 'RGB',
value: () => falso.randRgb(),
description: 'Generates a random RGB (Red, Green, Blue) color code.',
},
{
name: 'RGBa',
value: () => falso.randRgb({ alpha: true }),
description:
'Generates a random RGBA (Red, Green, Blue, Alpha) color code.',
},
];
function filterDataField(arr, field) {
const filtered = {};
arr.map(({ name, value }) => {
if (field.includes(name)) {
filtered[name] = value();
}
});
return filtered;
}
function generateData({ types, fields, ...rest }) {
const arr = [];
for (let index = 0; index < counts; index++) {
arr.push(filterDataField(types, fields));
}
setSelectedText(JSON.stringify(arr));
}
let types = await arg('Generate Random Data...', ['people', 'color']);
if (types == 'people') {
let peopleField = await select(
'Select a fields....',
person
.sort((a, b) => a.name.localeCompare(b.name))
.map(({ name, value, description }) => ({
name,
description,
value: name,
height: PROMPT.HEIGHT.XS,
preview: () => JSON.stringify(value()),
})),
);
counts = await arg({
description: 'How many person records you want?',
placeholder: '1',
});
generateData({ types: person, fields: peopleField });
} else if (types == 'color') {
let result = await arg(
'Generate random color...',
color.map(({ name, value, description }) => ({
name,
description,
value: value(),
height: PROMPT.HEIGHT.XS,
preview: () => value(),
})),
);
setSelectedText(result);
}