feat: support for predefined variables (#3886)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com> Co-authored-by: jamesgeorge007 <25279263+jamesgeorge007@users.noreply.github.com>
This commit is contained in:
committed by
jamesgeorge007
parent
db8cf229ac
commit
e4d9f82a75
370
packages/hoppscotch-data/src/predefinedVariables.ts
Normal file
370
packages/hoppscotch-data/src/predefinedVariables.ts
Normal file
@@ -0,0 +1,370 @@
|
||||
export type PredefinedVariable = {
|
||||
key: `$${string}`
|
||||
description: string
|
||||
getValue: () => string
|
||||
}
|
||||
|
||||
export const HOPP_SUPPORTED_PREDEFINED_VARIABLES: PredefinedVariable[] = [
|
||||
// Common
|
||||
{
|
||||
key: "$guid",
|
||||
description: "A v4 style GUID.",
|
||||
getValue: () => {
|
||||
const characters = "0123456789abcdef"
|
||||
let guid = ""
|
||||
for (let i = 0; i < 36; i++) {
|
||||
if (i === 8 || i === 13 || i === 18 || i === 23) {
|
||||
guid += "-"
|
||||
} else if (i === 14) {
|
||||
guid += "4"
|
||||
} else if (i === 19) {
|
||||
guid += characters.charAt(8 + Math.floor(Math.random() * 4))
|
||||
} else {
|
||||
guid += characters.charAt(
|
||||
Math.floor(Math.random() * characters.length)
|
||||
)
|
||||
}
|
||||
}
|
||||
return guid
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$nowISO",
|
||||
description: "Current date and time in ISO-8601 format.",
|
||||
getValue: () => new Date().toISOString(),
|
||||
},
|
||||
{
|
||||
key: "$timestamp",
|
||||
description: "The current UNIX timestamp in seconds.",
|
||||
getValue: () => Math.floor(Date.now() / 1000).toString(),
|
||||
},
|
||||
|
||||
{
|
||||
key: "$isoTimestamp",
|
||||
description: "The current ISO timestamp at zero UTC.",
|
||||
getValue: () => new Date().toISOString(),
|
||||
},
|
||||
{
|
||||
key: "$randomUUID",
|
||||
description: "A random 36-character UUID.",
|
||||
getValue: () => {
|
||||
const characters = "0123456789abcdef"
|
||||
let uuid = ""
|
||||
for (let i = 0; i < 36; i++) {
|
||||
if (i === 8 || i === 13 || i === 18 || i === 23) {
|
||||
uuid += "-"
|
||||
} else {
|
||||
uuid += characters.charAt(
|
||||
Math.floor(Math.random() * characters.length)
|
||||
)
|
||||
}
|
||||
}
|
||||
return uuid
|
||||
},
|
||||
},
|
||||
|
||||
// Text, numbers, and colors
|
||||
{
|
||||
key: "$randomAlphaNumeric",
|
||||
description: "A random alpha-numeric character.",
|
||||
getValue: () => {
|
||||
const characters =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
||||
return characters.charAt(Math.floor(Math.random() * characters.length))
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomBoolean",
|
||||
description: "A random boolean value.",
|
||||
getValue: () => (Math.random() < 0.5 ? "true" : "false"),
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomInt",
|
||||
description: "A random integer between 0 and 1000.",
|
||||
getValue: () => Math.floor(Math.random() * 1000).toString(),
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomColor",
|
||||
description: "A random color.",
|
||||
getValue: () => {
|
||||
const colors = ["red", "green", "blue", "yellow", "purple", "orange"]
|
||||
return colors[Math.floor(Math.random() * colors.length)]
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomHexColor",
|
||||
description: "A random hex value.",
|
||||
getValue: () => {
|
||||
const characters = "0123456789abcdef"
|
||||
let color = "#"
|
||||
for (let i = 0; i < 6; i++) {
|
||||
color += characters.charAt(
|
||||
Math.floor(Math.random() * characters.length)
|
||||
)
|
||||
}
|
||||
return color
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomAbbreviation",
|
||||
description: "A random abbreviation.",
|
||||
getValue: () => {
|
||||
const abbreviations = [
|
||||
"SQL",
|
||||
"PCI",
|
||||
"JSON",
|
||||
"HTML",
|
||||
"CSS",
|
||||
"JS",
|
||||
"TS",
|
||||
"API",
|
||||
]
|
||||
return abbreviations[Math.floor(Math.random() * abbreviations.length)]
|
||||
},
|
||||
},
|
||||
|
||||
// Internet and IP addresses
|
||||
{
|
||||
key: "$randomIP",
|
||||
description: "A random IPv4 address.",
|
||||
getValue: () => {
|
||||
const ip = Array.from({ length: 4 }, () =>
|
||||
Math.floor(Math.random() * 256)
|
||||
)
|
||||
return ip.join(".")
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomIPV6",
|
||||
description: "A random IPv6 address.",
|
||||
getValue: () => {
|
||||
const ip = Array.from({ length: 8 }, () =>
|
||||
Math.floor(Math.random() * 65536).toString(16)
|
||||
)
|
||||
return ip.join(":")
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomMACAddress",
|
||||
description: "A random MAC address.",
|
||||
getValue: () => {
|
||||
const mac = Array.from({ length: 6 }, () =>
|
||||
Math.floor(Math.random() * 256).toString(16)
|
||||
)
|
||||
return mac.join(":")
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomPassword",
|
||||
description: "A random 15-character alpha-numeric password.",
|
||||
getValue: () => {
|
||||
const characters =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
||||
let password = ""
|
||||
for (let i = 0; i < 15; i++) {
|
||||
password += characters.charAt(
|
||||
Math.floor(Math.random() * characters.length)
|
||||
)
|
||||
}
|
||||
return password
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomLocale",
|
||||
description: "A random two-letter language code (ISO 639-1).",
|
||||
getValue: () => {
|
||||
const locales = ["ny", "sr", "si"]
|
||||
return locales[Math.floor(Math.random() * locales.length)]
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomUserAgent",
|
||||
description: "A random user agent.",
|
||||
getValue: () => {
|
||||
const userAgents = [
|
||||
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.9.8; rv:15.6) Gecko/20100101 Firefox/15.6.6",
|
||||
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.6) Gecko/20100101 Firefox/15.6.6",
|
||||
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.6) Gecko/20100101 Firefox/15.6.6",
|
||||
]
|
||||
return userAgents[Math.floor(Math.random() * userAgents.length)]
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$randomProtocol",
|
||||
description: "A random internet protocol.",
|
||||
getValue: () => {
|
||||
const protocols = ["http", "https"]
|
||||
return protocols[Math.floor(Math.random() * protocols.length)]
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
key: "$randomSemver",
|
||||
description: "A random semantic version number.",
|
||||
getValue: () => {
|
||||
const semver = Array.from({ length: 3 }, () =>
|
||||
Math.floor(Math.random() * 10)
|
||||
)
|
||||
return semver.join(".")
|
||||
},
|
||||
},
|
||||
|
||||
// Names
|
||||
{
|
||||
key: "$randomFirstName",
|
||||
description: "A random first name.",
|
||||
getValue: () => {
|
||||
const firstNames = [
|
||||
"Ethan",
|
||||
"Chandler",
|
||||
"Megane",
|
||||
"John",
|
||||
"Jane",
|
||||
"Alice",
|
||||
"Bob",
|
||||
]
|
||||
return firstNames[Math.floor(Math.random() * firstNames.length)]
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$randomLastName",
|
||||
description: "A random last name.",
|
||||
getValue: () => {
|
||||
const lastNames = [
|
||||
"Schaden",
|
||||
"Schneider",
|
||||
"Willms",
|
||||
"Doe",
|
||||
"Smith",
|
||||
"Johnson",
|
||||
]
|
||||
return lastNames[Math.floor(Math.random() * lastNames.length)]
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$randomFullName",
|
||||
description: "A random first and last name.",
|
||||
getValue: () => {
|
||||
const firstNames = [
|
||||
"Ethan",
|
||||
"Chandler",
|
||||
"Megane",
|
||||
"John",
|
||||
"Jane",
|
||||
"Alice",
|
||||
"Bob",
|
||||
]
|
||||
const lastNames = [
|
||||
"Schaden",
|
||||
"Schneider",
|
||||
"Willms",
|
||||
"Doe",
|
||||
"Smith",
|
||||
"Johnson",
|
||||
]
|
||||
return `${firstNames[Math.floor(Math.random() * firstNames.length)]} ${
|
||||
lastNames[Math.floor(Math.random() * lastNames.length)]
|
||||
}`
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$randomNamePrefix",
|
||||
description: "A random name prefix.",
|
||||
getValue: () => {
|
||||
const prefixes = ["Dr.", "Ms.", "Mr.", "Mrs.", "Miss", "Prof."]
|
||||
return prefixes[Math.floor(Math.random() * prefixes.length)]
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$randomNameSuffix",
|
||||
description: "A random name suffix.",
|
||||
getValue: () => {
|
||||
const suffixes = ["I", "MD", "DDS", "PhD", "Esq.", "Jr."]
|
||||
return suffixes[Math.floor(Math.random() * suffixes.length)]
|
||||
},
|
||||
},
|
||||
|
||||
// Addresses
|
||||
{
|
||||
key: "$randomCity",
|
||||
description: "A random city name.",
|
||||
getValue: () => {
|
||||
const cities = [
|
||||
"New York",
|
||||
"Los Angeles",
|
||||
"Chicago",
|
||||
"Houston",
|
||||
"Phoenix",
|
||||
"Philadelphia",
|
||||
]
|
||||
return cities[Math.floor(Math.random() * cities.length)]
|
||||
},
|
||||
},
|
||||
|
||||
// profession
|
||||
{
|
||||
key: "$randomJobArea",
|
||||
description: "A random job area.",
|
||||
getValue: () => {
|
||||
const jobAreas = [
|
||||
"Mobility",
|
||||
"Intranet",
|
||||
"Configuration",
|
||||
"Development",
|
||||
"Design",
|
||||
"Testing",
|
||||
]
|
||||
return jobAreas[Math.floor(Math.random() * jobAreas.length)]
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$randomJobDescriptor",
|
||||
description: "A random job descriptor.",
|
||||
getValue: () => {
|
||||
const jobDescriptors = [
|
||||
"Forward",
|
||||
"Corporate",
|
||||
"Senior",
|
||||
"Junior",
|
||||
"Lead",
|
||||
"Principal",
|
||||
]
|
||||
return jobDescriptors[Math.floor(Math.random() * jobDescriptors.length)]
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$randomJobTitle",
|
||||
description: "A random job title.",
|
||||
getValue: () => {
|
||||
const jobTitles = [
|
||||
"International Creative Liaison",
|
||||
"Global Branding Officer",
|
||||
"Dynamic Data Specialist",
|
||||
"Internal Communications Consultant",
|
||||
"Productivity Analyst",
|
||||
"Regional Applications Developer",
|
||||
]
|
||||
return jobTitles[Math.floor(Math.random() * jobTitles.length)]
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "$randomJobType",
|
||||
description: "A random job type.",
|
||||
getValue: () => {
|
||||
const jobTypes = ["Supervisor", "Manager", "Coordinator", "Director"]
|
||||
return jobTypes[Math.floor(Math.random() * jobTypes.length)]
|
||||
},
|
||||
},
|
||||
|
||||
// TODO: Support various other predefined variables
|
||||
]
|
||||
Reference in New Issue
Block a user