aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHarsohail Brar <[email protected]>2022-05-22 13:14:09 -0600
committerGitHub <[email protected]>2022-05-22 21:14:09 +0200
commitbee6054f8da67e26dcfdf572103eebabbd6443c0 (patch)
tree2390cf171db82a39acea58b793f630a5034feb35 /src
parentbd4d3dbc5ca54983ad28745825e4767c1f291e60 (diff)
downloadfaker-bee6054f8da67e26dcfdf572103eebabbd6443c0.tar.xz
faker-bee6054f8da67e26dcfdf572103eebabbd6443c0.zip
feat: color module (#801)
Co-authored-by: Shinigami <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/definitions/color.ts15
-rw-r--r--src/definitions/commerce.ts4
-rw-r--r--src/definitions/definitions.ts2
-rw-r--r--src/definitions/index.ts1
-rw-r--r--src/faker.ts2
-rw-r--r--src/index.ts9
-rw-r--r--src/locales/ar/color/human.ts (renamed from src/locales/ar/commerce/color.ts)0
-rw-r--r--src/locales/ar/color/index.ts12
-rw-r--r--src/locales/ar/commerce/index.ts2
-rw-r--r--src/locales/ar/index.ts2
-rw-r--r--src/locales/az/color/human.ts (renamed from src/locales/az/commerce/color.ts)0
-rw-r--r--src/locales/az/color/index.ts12
-rw-r--r--src/locales/az/commerce/index.ts2
-rw-r--r--src/locales/az/index.ts2
-rw-r--r--src/locales/el/color/human.ts (renamed from src/locales/el/commerce/color.ts)0
-rw-r--r--src/locales/el/color/index.ts12
-rw-r--r--src/locales/el/commerce/index.ts2
-rw-r--r--src/locales/el/index.ts2
-rw-r--r--src/locales/en/color/human.ts (renamed from src/locales/en/commerce/color.ts)0
-rw-r--r--src/locales/en/color/index.ts14
-rw-r--r--src/locales/en/color/space.ts43
-rw-r--r--src/locales/en/commerce/index.ts2
-rw-r--r--src/locales/en/index.ts2
-rw-r--r--src/locales/es/color/human.ts (renamed from src/locales/es/commerce/color.ts)0
-rw-r--r--src/locales/es/color/index.ts12
-rw-r--r--src/locales/es/commerce/index.ts2
-rw-r--r--src/locales/es/index.ts2
-rw-r--r--src/locales/es_MX/color/human.ts (renamed from src/locales/es_MX/commerce/color.ts)0
-rw-r--r--src/locales/es_MX/color/index.ts12
-rw-r--r--src/locales/es_MX/commerce/index.ts2
-rw-r--r--src/locales/es_MX/index.ts2
-rw-r--r--src/locales/fa/color/human.ts (renamed from src/locales/fa/commerce/color.ts)0
-rw-r--r--src/locales/fa/color/index.ts12
-rw-r--r--src/locales/fa/commerce/index.ts2
-rw-r--r--src/locales/fa/index.ts2
-rw-r--r--src/locales/he/color/human.ts (renamed from src/locales/he/commerce/color.ts)0
-rw-r--r--src/locales/he/color/index.ts12
-rw-r--r--src/locales/he/commerce/index.ts2
-rw-r--r--src/locales/he/index.ts2
-rw-r--r--src/locales/hy/color/human.ts (renamed from src/locales/hy/commerce/color.ts)0
-rw-r--r--src/locales/hy/color/index.ts12
-rw-r--r--src/locales/hy/commerce/index.ts12
-rw-r--r--src/locales/hy/index.ts4
-rw-r--r--src/locales/lv/color/human.ts (renamed from src/locales/lv/commerce/color.ts)0
-rw-r--r--src/locales/lv/color/index.ts12
-rw-r--r--src/locales/lv/commerce/index.ts2
-rw-r--r--src/locales/lv/index.ts2
-rw-r--r--src/locales/nl/color/human.ts (renamed from src/locales/nl/commerce/color.ts)0
-rw-r--r--src/locales/nl/color/index.ts12
-rw-r--r--src/locales/nl/commerce/index.ts2
-rw-r--r--src/locales/nl/index.ts2
-rw-r--r--src/locales/pt_BR/color/human.ts (renamed from src/locales/pt_BR/commerce/color.ts)0
-rw-r--r--src/locales/pt_BR/color/index.ts12
-rw-r--r--src/locales/pt_BR/commerce/index.ts2
-rw-r--r--src/locales/pt_BR/index.ts2
-rw-r--r--src/locales/pt_PT/color/human.ts (renamed from src/locales/pt_PT/commerce/color.ts)0
-rw-r--r--src/locales/pt_PT/color/index.ts12
-rw-r--r--src/locales/pt_PT/commerce/index.ts2
-rw-r--r--src/locales/pt_PT/index.ts2
-rw-r--r--src/locales/ru/color/human.ts (renamed from src/locales/ru/commerce/color.ts)0
-rw-r--r--src/locales/ru/color/index.ts12
-rw-r--r--src/locales/ru/commerce/index.ts2
-rw-r--r--src/locales/ru/index.ts2
-rw-r--r--src/locales/sv/color/human.ts (renamed from src/locales/sv/commerce/color.ts)0
-rw-r--r--src/locales/sv/color/index.ts12
-rw-r--r--src/locales/sv/commerce/index.ts2
-rw-r--r--src/locales/sv/index.ts2
-rw-r--r--src/locales/tr/color/human.ts (renamed from src/locales/tr/commerce/color.ts)0
-rw-r--r--src/locales/tr/color/index.ts12
-rw-r--r--src/locales/tr/commerce/index.ts2
-rw-r--r--src/locales/tr/index.ts2
-rw-r--r--src/locales/ur/color/human.ts (renamed from src/locales/ur/commerce/color.ts)0
-rw-r--r--src/locales/ur/color/index.ts12
-rw-r--r--src/locales/ur/commerce/index.ts2
-rw-r--r--src/locales/ur/index.ts2
-rw-r--r--src/modules/color/index.ts696
-rw-r--r--src/modules/commerce/index.ts15
-rw-r--r--src/modules/random/index.ts2
-rw-r--r--src/modules/vehicle/index.ts2
79 files changed, 1021 insertions, 56 deletions
diff --git a/src/definitions/color.ts b/src/definitions/color.ts
new file mode 100644
index 00000000..a5bbd282
--- /dev/null
+++ b/src/definitions/color.ts
@@ -0,0 +1,15 @@
+import type { LocaleEntry } from './definitions';
+
+/**
+ * The possible definitions related to color.
+ */
+export type ColorDefinitions = LocaleEntry<{
+ /**
+ * Human readable color names
+ */
+ human: string[];
+ /**
+ * Color space names.
+ */
+ space: string[];
+}>;
diff --git a/src/definitions/commerce.ts b/src/definitions/commerce.ts
index 65aef4ba..8157c1fc 100644
--- a/src/definitions/commerce.ts
+++ b/src/definitions/commerce.ts
@@ -5,10 +5,6 @@ import type { LocaleEntry } from './definitions';
*/
export type CommerceDefinitions = LocaleEntry<{
/**
- * Human readable color names
- */
- color: string[];
- /**
* Department names inside a shop.
*/
department: string[];
diff --git a/src/definitions/definitions.ts b/src/definitions/definitions.ts
index fae443ba..092c73a2 100644
--- a/src/definitions/definitions.ts
+++ b/src/definitions/definitions.ts
@@ -1,5 +1,6 @@
import type { AddressDefinitions } from './address';
import type { AnimalDefinitions } from './animal';
+import type { ColorDefinitions } from './color';
import type { CommerceDefinitions } from './commerce';
import type { CompanyDefinitions } from './company';
import type { DatabaseDefinitions } from './database';
@@ -26,6 +27,7 @@ export type LocaleEntry<T> = Partial<T> &
export interface Definitions {
address: AddressDefinitions;
animal: AnimalDefinitions;
+ color: ColorDefinitions;
commerce: CommerceDefinitions;
company: CompanyDefinitions;
database: DatabaseDefinitions;
diff --git a/src/definitions/index.ts b/src/definitions/index.ts
index bcfcab0f..7341e241 100644
--- a/src/definitions/index.ts
+++ b/src/definitions/index.ts
@@ -1,5 +1,6 @@
export type { AddressDefinitions } from './address';
export type { AnimalDefinitions } from './animal';
+export type { ColorDefinitions } from './color';
export type {
CommerceDefinitions,
CommerceProductNameDefinitions,
diff --git a/src/faker.ts b/src/faker.ts
index 3a7962c8..a252a3e0 100644
--- a/src/faker.ts
+++ b/src/faker.ts
@@ -3,6 +3,7 @@ import { FakerError } from './errors/faker-error';
import type { KnownLocale } from './locales';
import { Address } from './modules/address';
import { Animal } from './modules/animal';
+import { Color } from './modules/color';
import { Commerce } from './modules/commerce';
import { Company } from './modules/company';
import { Database } from './modules/database';
@@ -60,6 +61,7 @@ export class Faker {
readonly address: Address = new Address(this);
readonly animal: Animal = new Animal(this);
+ readonly color: Color = new Color(this);
readonly commerce: Commerce = new Commerce(this);
readonly company: Company = new Company(this);
readonly database: Database = new Database(this);
diff --git a/src/index.ts b/src/index.ts
index 64223a09..d437fd9d 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -4,6 +4,7 @@ import allLocales from './locales';
export type {
AddressDefinitions,
AnimalDefinitions,
+ ColorDefinitions,
CommerceDefinitions,
CommerceProductNameDefinitions,
CompanyDefinitions,
@@ -27,6 +28,14 @@ export type {
} from './definitions';
export { FakerError } from './errors/faker-error';
export type { FakerOptions, UsableLocale, UsedLocales } from './faker';
+export type {
+ Casing,
+ ColorFormat,
+ CSSFunction,
+ CSSSpace,
+ NumberColorFormat,
+ StringColorFormat,
+} from './modules/color';
export { Gender } from './modules/name';
export type { GenderType } from './modules/name';
export { Faker };
diff --git a/src/locales/ar/commerce/color.ts b/src/locales/ar/color/human.ts
index 71b2a10d..71b2a10d 100644
--- a/src/locales/ar/commerce/color.ts
+++ b/src/locales/ar/color/human.ts
diff --git a/src/locales/ar/color/index.ts b/src/locales/ar/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/ar/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/ar/commerce/index.ts b/src/locales/ar/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/ar/commerce/index.ts
+++ b/src/locales/ar/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/ar/index.ts b/src/locales/ar/index.ts
index e3e47d94..643d2823 100644
--- a/src/locales/ar/index.ts
+++ b/src/locales/ar/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import date from './date';
import name_ from './name';
@@ -17,6 +18,7 @@ const ar: LocaleDefinition = {
separator: ' & ',
address,
cell_phone,
+ color,
commerce,
date,
name: name_,
diff --git a/src/locales/az/commerce/color.ts b/src/locales/az/color/human.ts
index c84f6270..c84f6270 100644
--- a/src/locales/az/commerce/color.ts
+++ b/src/locales/az/color/human.ts
diff --git a/src/locales/az/color/index.ts b/src/locales/az/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/az/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/az/commerce/index.ts b/src/locales/az/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/az/commerce/index.ts
+++ b/src/locales/az/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/az/index.ts b/src/locales/az/index.ts
index 05b10fd4..55d7d807 100644
--- a/src/locales/az/index.ts
+++ b/src/locales/az/index.ts
@@ -4,6 +4,7 @@
*/
import type { LocaleDefinition } from '../..';
import address from './address';
+import color from './color';
import commerce from './commerce';
import company from './company';
import date from './date';
@@ -15,6 +16,7 @@ const az: LocaleDefinition = {
title: 'Azerbaijani',
separator: ' və ',
address,
+ color,
commerce,
company,
date,
diff --git a/src/locales/el/commerce/color.ts b/src/locales/el/color/human.ts
index fb1de99c..fb1de99c 100644
--- a/src/locales/el/commerce/color.ts
+++ b/src/locales/el/color/human.ts
diff --git a/src/locales/el/color/index.ts b/src/locales/el/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/el/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/el/commerce/index.ts b/src/locales/el/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/el/commerce/index.ts
+++ b/src/locales/el/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/el/index.ts b/src/locales/el/index.ts
index 430bdf68..69b91f40 100644
--- a/src/locales/el/index.ts
+++ b/src/locales/el/index.ts
@@ -7,6 +7,7 @@ import address from './address';
import app from './app';
import business from './business';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import company from './company';
import finance from './finance';
@@ -24,6 +25,7 @@ const el: LocaleDefinition = {
app,
business,
cell_phone,
+ color,
commerce,
company,
finance,
diff --git a/src/locales/en/commerce/color.ts b/src/locales/en/color/human.ts
index 6a9071ae..6a9071ae 100644
--- a/src/locales/en/commerce/color.ts
+++ b/src/locales/en/color/human.ts
diff --git a/src/locales/en/color/index.ts b/src/locales/en/color/index.ts
new file mode 100644
index 00000000..2f84c198
--- /dev/null
+++ b/src/locales/en/color/index.ts
@@ -0,0 +1,14 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+import space from './space';
+
+const color: ColorDefinitions = {
+ human,
+ space,
+};
+
+export default color;
diff --git a/src/locales/en/color/space.ts b/src/locales/en/color/space.ts
new file mode 100644
index 00000000..2fe91419
--- /dev/null
+++ b/src/locales/en/color/space.ts
@@ -0,0 +1,43 @@
+export default [
+ 'CIE 1931 XYZ',
+ 'CIEUVW',
+ 'Uniform Color Spaces (UCSs)',
+ 'CIELUV',
+ 'CIELAB',
+ 'HSLuv',
+ 'sRGB',
+ 'Adobe RGB',
+ 'Adobe Wide Gamut RGB',
+ 'Rec. 2100',
+ 'ProPhoto RGB Color Space',
+ 'scRGB',
+ 'DCI-P3',
+ 'Display-P3',
+ 'Rec. 601',
+ 'Rec. 709',
+ 'Academy Color Encoding System (ACES)',
+ 'Rec. 2020',
+ 'YPbPr',
+ 'YDbDr',
+ 'YIQ',
+ 'xvYCC',
+ 'sYCC',
+ 'HSV',
+ 'HSL',
+ 'HWB',
+ 'RGBA',
+ 'HSLA',
+ 'LCh',
+ 'CMY',
+ 'CMYK',
+ 'Munsell Color System',
+ 'Natural Color System (NSC)',
+ 'Pantone Matching System (PMS)',
+ 'RAL',
+ 'Federal Standard 595C',
+ 'British Standard Colour (BS)',
+ 'HKS',
+ 'LMS',
+ 'RG',
+ 'RGK',
+];
diff --git a/src/locales/en/commerce/index.ts b/src/locales/en/commerce/index.ts
index 2f3f890d..dab2aa69 100644
--- a/src/locales/en/commerce/index.ts
+++ b/src/locales/en/commerce/index.ts
@@ -3,13 +3,11 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_description from './product_description';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_description,
product_name,
diff --git a/src/locales/en/index.ts b/src/locales/en/index.ts
index ded35323..75bd0437 100644
--- a/src/locales/en/index.ts
+++ b/src/locales/en/index.ts
@@ -8,6 +8,7 @@ import animal from './animal';
import app from './app';
import business from './business';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import company from './company';
import database from './database';
@@ -32,6 +33,7 @@ const en: LocaleDefinition = {
app,
business,
cell_phone,
+ color,
commerce,
company,
database,
diff --git a/src/locales/es/commerce/color.ts b/src/locales/es/color/human.ts
index c30d0894..c30d0894 100644
--- a/src/locales/es/commerce/color.ts
+++ b/src/locales/es/color/human.ts
diff --git a/src/locales/es/color/index.ts b/src/locales/es/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/es/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/es/commerce/index.ts b/src/locales/es/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/es/commerce/index.ts
+++ b/src/locales/es/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/es/index.ts b/src/locales/es/index.ts
index dd8a4775..b97f68a2 100644
--- a/src/locales/es/index.ts
+++ b/src/locales/es/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import company from './company';
import internet from './internet';
@@ -15,6 +16,7 @@ const es: LocaleDefinition = {
title: 'Spanish',
address,
cell_phone,
+ color,
commerce,
company,
internet,
diff --git a/src/locales/es_MX/commerce/color.ts b/src/locales/es_MX/color/human.ts
index 9d7e4a07..9d7e4a07 100644
--- a/src/locales/es_MX/commerce/color.ts
+++ b/src/locales/es_MX/color/human.ts
diff --git a/src/locales/es_MX/color/index.ts b/src/locales/es_MX/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/es_MX/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/es_MX/commerce/index.ts b/src/locales/es_MX/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/es_MX/commerce/index.ts
+++ b/src/locales/es_MX/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/es_MX/index.ts b/src/locales/es_MX/index.ts
index 189829fa..c60536e9 100644
--- a/src/locales/es_MX/index.ts
+++ b/src/locales/es_MX/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import company from './company';
import internet from './internet';
@@ -18,6 +19,7 @@ const es_MX: LocaleDefinition = {
separator: ' & ',
address,
cell_phone,
+ color,
commerce,
company,
internet,
diff --git a/src/locales/fa/commerce/color.ts b/src/locales/fa/color/human.ts
index bc002f4b..bc002f4b 100644
--- a/src/locales/fa/commerce/color.ts
+++ b/src/locales/fa/color/human.ts
diff --git a/src/locales/fa/color/index.ts b/src/locales/fa/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/fa/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/fa/commerce/index.ts b/src/locales/fa/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/fa/commerce/index.ts
+++ b/src/locales/fa/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/fa/index.ts b/src/locales/fa/index.ts
index 9f53ec55..b554f801 100644
--- a/src/locales/fa/index.ts
+++ b/src/locales/fa/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import company from './company';
import date from './date';
@@ -19,6 +20,7 @@ const fa: LocaleDefinition = {
title: 'Farsi',
address,
cell_phone,
+ color,
commerce,
company,
date,
diff --git a/src/locales/he/commerce/color.ts b/src/locales/he/color/human.ts
index a6223626..a6223626 100644
--- a/src/locales/he/commerce/color.ts
+++ b/src/locales/he/color/human.ts
diff --git a/src/locales/he/color/index.ts b/src/locales/he/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/he/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/he/commerce/index.ts b/src/locales/he/commerce/index.ts
index 2f3f890d..dab2aa69 100644
--- a/src/locales/he/commerce/index.ts
+++ b/src/locales/he/commerce/index.ts
@@ -3,13 +3,11 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_description from './product_description';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_description,
product_name,
diff --git a/src/locales/he/index.ts b/src/locales/he/index.ts
index 1ab59ac8..38a26a29 100644
--- a/src/locales/he/index.ts
+++ b/src/locales/he/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import date from './date';
import lorem from './lorem';
@@ -17,6 +18,7 @@ const he: LocaleDefinition = {
separator: 'ו ',
address,
cell_phone,
+ color,
commerce,
date,
lorem,
diff --git a/src/locales/hy/commerce/color.ts b/src/locales/hy/color/human.ts
index fab129e0..fab129e0 100644
--- a/src/locales/hy/commerce/color.ts
+++ b/src/locales/hy/color/human.ts
diff --git a/src/locales/hy/color/index.ts b/src/locales/hy/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/hy/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/hy/commerce/index.ts b/src/locales/hy/commerce/index.ts
deleted file mode 100644
index 26b2864f..00000000
--- a/src/locales/hy/commerce/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * This file is automatically generated.
- * Run 'pnpm run generate:locales' to update.
- */
-import type { CommerceDefinitions } from '../../..';
-import color from './color';
-
-const commerce: CommerceDefinitions = {
- color,
-};
-
-export default commerce;
diff --git a/src/locales/hy/index.ts b/src/locales/hy/index.ts
index 2f9da62c..1a1fb639 100644
--- a/src/locales/hy/index.ts
+++ b/src/locales/hy/index.ts
@@ -4,7 +4,7 @@
*/
import type { LocaleDefinition } from '../..';
import address from './address';
-import commerce from './commerce';
+import color from './color';
import date from './date';
import internet from './internet';
import lorem from './lorem';
@@ -15,7 +15,7 @@ const hy: LocaleDefinition = {
title: 'Armenian',
separator: ' և ',
address,
- commerce,
+ color,
date,
internet,
lorem,
diff --git a/src/locales/lv/commerce/color.ts b/src/locales/lv/color/human.ts
index fb99fb4a..fb99fb4a 100644
--- a/src/locales/lv/commerce/color.ts
+++ b/src/locales/lv/color/human.ts
diff --git a/src/locales/lv/color/index.ts b/src/locales/lv/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/lv/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/lv/commerce/index.ts b/src/locales/lv/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/lv/commerce/index.ts
+++ b/src/locales/lv/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/lv/index.ts b/src/locales/lv/index.ts
index 31fe8253..527d7c3f 100644
--- a/src/locales/lv/index.ts
+++ b/src/locales/lv/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import company from './company';
import date from './date';
@@ -18,6 +19,7 @@ const lv: LocaleDefinition = {
separator: ' un ',
address,
cell_phone,
+ color,
commerce,
company,
date,
diff --git a/src/locales/nl/commerce/color.ts b/src/locales/nl/color/human.ts
index 4c8928e1..4c8928e1 100644
--- a/src/locales/nl/commerce/color.ts
+++ b/src/locales/nl/color/human.ts
diff --git a/src/locales/nl/color/index.ts b/src/locales/nl/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/nl/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/nl/commerce/index.ts b/src/locales/nl/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/nl/commerce/index.ts
+++ b/src/locales/nl/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/nl/index.ts b/src/locales/nl/index.ts
index 7dc23561..6e6fb8a5 100644
--- a/src/locales/nl/index.ts
+++ b/src/locales/nl/index.ts
@@ -4,6 +4,7 @@
*/
import type { LocaleDefinition } from '../..';
import address from './address';
+import color from './color';
import commerce from './commerce';
import company from './company';
import date from './date';
@@ -16,6 +17,7 @@ import phone_number from './phone_number';
const nl: LocaleDefinition = {
title: 'Dutch',
address,
+ color,
commerce,
company,
date,
diff --git a/src/locales/pt_BR/commerce/color.ts b/src/locales/pt_BR/color/human.ts
index e2f37a86..e2f37a86 100644
--- a/src/locales/pt_BR/commerce/color.ts
+++ b/src/locales/pt_BR/color/human.ts
diff --git a/src/locales/pt_BR/color/index.ts b/src/locales/pt_BR/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/pt_BR/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/pt_BR/commerce/index.ts b/src/locales/pt_BR/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/pt_BR/commerce/index.ts
+++ b/src/locales/pt_BR/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/pt_BR/index.ts b/src/locales/pt_BR/index.ts
index a23c5227..de563dcd 100644
--- a/src/locales/pt_BR/index.ts
+++ b/src/locales/pt_BR/index.ts
@@ -4,6 +4,7 @@
*/
import type { LocaleDefinition } from '../..';
import address from './address';
+import color from './color';
import commerce from './commerce';
import company from './company';
import date from './date';
@@ -15,6 +16,7 @@ import phone_number from './phone_number';
const pt_BR: LocaleDefinition = {
title: 'Portuguese (Brazil)',
address,
+ color,
commerce,
company,
date,
diff --git a/src/locales/pt_PT/commerce/color.ts b/src/locales/pt_PT/color/human.ts
index cf682574..cf682574 100644
--- a/src/locales/pt_PT/commerce/color.ts
+++ b/src/locales/pt_PT/color/human.ts
diff --git a/src/locales/pt_PT/color/index.ts b/src/locales/pt_PT/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/pt_PT/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/pt_PT/commerce/index.ts b/src/locales/pt_PT/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/pt_PT/commerce/index.ts
+++ b/src/locales/pt_PT/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/pt_PT/index.ts b/src/locales/pt_PT/index.ts
index cd2281d8..ca3a9f30 100644
--- a/src/locales/pt_PT/index.ts
+++ b/src/locales/pt_PT/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import date from './date';
import internet from './internet';
@@ -15,6 +16,7 @@ const pt_PT: LocaleDefinition = {
title: 'Portuguese (Portugal)',
address,
cell_phone,
+ color,
commerce,
date,
internet,
diff --git a/src/locales/ru/commerce/color.ts b/src/locales/ru/color/human.ts
index 2f4af921..2f4af921 100644
--- a/src/locales/ru/commerce/color.ts
+++ b/src/locales/ru/color/human.ts
diff --git a/src/locales/ru/color/index.ts b/src/locales/ru/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/ru/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/ru/commerce/index.ts b/src/locales/ru/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/ru/commerce/index.ts
+++ b/src/locales/ru/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/ru/index.ts b/src/locales/ru/index.ts
index b5366714..d8e94dee 100644
--- a/src/locales/ru/index.ts
+++ b/src/locales/ru/index.ts
@@ -4,6 +4,7 @@
*/
import type { LocaleDefinition } from '../..';
import address from './address';
+import color from './color';
import commerce from './commerce';
import company from './company';
import date from './date';
@@ -17,6 +18,7 @@ const ru: LocaleDefinition = {
title: 'Russian',
separator: ' и ',
address,
+ color,
commerce,
company,
date,
diff --git a/src/locales/sv/commerce/color.ts b/src/locales/sv/color/human.ts
index 359cbdaa..359cbdaa 100644
--- a/src/locales/sv/commerce/color.ts
+++ b/src/locales/sv/color/human.ts
diff --git a/src/locales/sv/color/index.ts b/src/locales/sv/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/sv/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/sv/commerce/index.ts b/src/locales/sv/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/sv/commerce/index.ts
+++ b/src/locales/sv/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/sv/index.ts b/src/locales/sv/index.ts
index dc0f0985..6c5ffe69 100644
--- a/src/locales/sv/index.ts
+++ b/src/locales/sv/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import company from './company';
import date from './date';
@@ -17,6 +18,7 @@ const sv: LocaleDefinition = {
title: 'Swedish',
address,
cell_phone,
+ color,
commerce,
company,
date,
diff --git a/src/locales/tr/commerce/color.ts b/src/locales/tr/color/human.ts
index 313a8afc..313a8afc 100644
--- a/src/locales/tr/commerce/color.ts
+++ b/src/locales/tr/color/human.ts
diff --git a/src/locales/tr/color/index.ts b/src/locales/tr/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/tr/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/tr/commerce/index.ts b/src/locales/tr/commerce/index.ts
index 2f3f890d..dab2aa69 100644
--- a/src/locales/tr/commerce/index.ts
+++ b/src/locales/tr/commerce/index.ts
@@ -3,13 +3,11 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_description from './product_description';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_description,
product_name,
diff --git a/src/locales/tr/index.ts b/src/locales/tr/index.ts
index 7a7fac2f..70a988b6 100644
--- a/src/locales/tr/index.ts
+++ b/src/locales/tr/index.ts
@@ -5,6 +5,7 @@
import type { LocaleDefinition } from '../..';
import address from './address';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import internet from './internet';
import lorem from './lorem';
@@ -15,6 +16,7 @@ const tr: LocaleDefinition = {
title: 'Turkish',
address,
cell_phone,
+ color,
commerce,
internet,
lorem,
diff --git a/src/locales/ur/commerce/color.ts b/src/locales/ur/color/human.ts
index 717ffb4c..717ffb4c 100644
--- a/src/locales/ur/commerce/color.ts
+++ b/src/locales/ur/color/human.ts
diff --git a/src/locales/ur/color/index.ts b/src/locales/ur/color/index.ts
new file mode 100644
index 00000000..79cc39f0
--- /dev/null
+++ b/src/locales/ur/color/index.ts
@@ -0,0 +1,12 @@
+/*
+ * This file is automatically generated.
+ * Run 'pnpm run generate:locales' to update.
+ */
+import type { ColorDefinitions } from '../../..';
+import human from './human';
+
+const color: ColorDefinitions = {
+ human,
+};
+
+export default color;
diff --git a/src/locales/ur/commerce/index.ts b/src/locales/ur/commerce/index.ts
index 823fcbd2..7e5f4475 100644
--- a/src/locales/ur/commerce/index.ts
+++ b/src/locales/ur/commerce/index.ts
@@ -3,12 +3,10 @@
* Run 'pnpm run generate:locales' to update.
*/
import type { CommerceDefinitions } from '../../..';
-import color from './color';
import department from './department';
import product_name from './product_name';
const commerce: CommerceDefinitions = {
- color,
department,
product_name,
};
diff --git a/src/locales/ur/index.ts b/src/locales/ur/index.ts
index 49aae08e..5794e793 100644
--- a/src/locales/ur/index.ts
+++ b/src/locales/ur/index.ts
@@ -8,6 +8,7 @@ import animal from './animal';
import app from './app';
import business from './business';
import cell_phone from './cell_phone';
+import color from './color';
import commerce from './commerce';
import date from './date';
import finance from './finance';
@@ -25,6 +26,7 @@ const ur: LocaleDefinition = {
app,
business,
cell_phone,
+ color,
commerce,
date,
finance,
diff --git a/src/modules/color/index.ts b/src/modules/color/index.ts
new file mode 100644
index 00000000..8b5fdba2
--- /dev/null
+++ b/src/modules/color/index.ts
@@ -0,0 +1,696 @@
+import type { Faker } from '../../faker';
+
+/**
+ * Color space names supported by CSS.
+ */
+export const CSS_SPACES = [
+ 'sRGB',
+ 'display-p3',
+ 'rec2020',
+ 'a98-rgb',
+ 'prophoto-rgb',
+ 'rec2020',
+] as const;
+
+/**
+ * Functions supported by CSS to produce color.
+ */
+export const CSS_FUNCTIONS = [
+ 'rgb',
+ 'rgba',
+ 'hsl',
+ 'hsla',
+ 'hwb',
+ 'cmyk',
+ 'lab',
+ 'lch',
+ 'color',
+] as const;
+
+export type CSSFunction = typeof CSS_FUNCTIONS[number];
+export type CSSSpace = typeof CSS_SPACES[number];
+export type StringColorFormat = 'css' | 'binary';
+export type NumberColorFormat = 'decimal';
+export type ColorFormat = StringColorFormat | NumberColorFormat;
+export type Casing = 'lower' | 'upper' | 'mixed';
+
+/**
+ * Formats the hex format of a generated color string according
+ * to options specified by user.
+ *
+ * @param hexColor Hex color string to be formatted.
+ * @param options Options object.
+ * @param options.prefix Prefix of the generated hex color. Defaults to `'0x'`.
+ * @param options.casing Letter type case of the generated hex color. Defaults to `'mixed'`.
+ */
+function formatHexColor(
+ hexColor: string,
+ options?: {
+ prefix?: string;
+ casing?: Casing;
+ }
+): string {
+ switch (options?.casing) {
+ case 'upper':
+ hexColor = hexColor.toUpperCase();
+ break;
+ case 'lower':
+ hexColor = hexColor.toLowerCase();
+ break;
+ }
+ if (options?.prefix) {
+ hexColor = options.prefix + hexColor;
+ }
+ return hexColor;
+}
+
+/**
+ * Converts an array of numbers into binary string format.
+ *
+ * @param values Array of values to be converted.
+ */
+function toBinary(values: number[]): string {
+ const binary: string[] = values.map((value) => {
+ const isFloat = value % 1 !== 0;
+ if (isFloat) {
+ const buffer = new ArrayBuffer(4);
+ new DataView(buffer).setFloat32(0, value);
+ const bytes = new Uint8Array(buffer);
+ return toBinary(Array.from(bytes)).split(' ').join('');
+ }
+ return (value >>> 0).toString(2).padStart(8, '0');
+ });
+ return binary.join(' ');
+}
+
+/**
+ * Converts an array of numbers into CSS accepted format.
+ *
+ * @param values Array of values to be converted.
+ * @param cssFunction CSS function to be generated for the color. Defaults to `'rgb'`.
+ * @param space Color space to format CSS color function with. Defaults to `'sRGB'`.
+ */
+function toCSS(
+ values: number[],
+ cssFunction: CSSFunction = 'rgb',
+ space: CSSSpace = 'sRGB'
+): string {
+ const percentage = (value: number) => Math.round(value * 100);
+ switch (cssFunction) {
+ case 'rgba':
+ return `rgba(${values[0]}, ${values[1]}, ${values[2]}, ${values[3]})`;
+ case 'color':
+ return `color(${space} ${values[0]} ${values[1]} ${values[2]})`;
+ case 'cmyk':
+ return `cmyk(${percentage(values[0])}%, ${percentage(
+ values[1]
+ )}%, ${percentage(values[2])}%, ${percentage(values[3])}%)`;
+ case 'hsl':
+ return `hsl(${values[0]}deg ${percentage(values[1])}% ${percentage(
+ values[2]
+ )}%)`;
+ case 'hsla':
+ return `hsl(${values[0]}deg ${percentage(values[1])}% ${percentage(
+ values[2]
+ )}% / ${percentage(values[3])})`;
+ case 'hwb':
+ return `hwb(${values[0]} ${percentage(values[1])}% ${percentage(
+ values[2]
+ )}%)`;
+ case 'lab':
+ return `lab(${percentage(values[0])}% ${values[1]} ${values[2]})`;
+ case 'lch':
+ return `lch(${percentage(values[0])}% ${values[1]} ${values[2]})`;
+ case 'rgb':
+ default:
+ return `rgb(${values[0]}, ${values[1]}, ${values[2]})`;
+ }
+}
+
+/**
+ * Converts an array of color values to the specified color format.
+ *
+ * @param values Array of color values to be converted.
+ * @param format Format of generated RGB color.
+ * @param cssFunction CSS function to be generated for the color. Defaults to `'rgb'`.
+ * @param space Color space to format CSS color function with. Defaults to `'sRGB'`.
+ */
+function toColorFormat(
+ values: number[],
+ format: ColorFormat,
+ cssFunction: CSSFunction = 'rgb',
+ space: CSSSpace = 'sRGB'
+): string | number[] {
+ switch (format) {
+ case 'css':
+ return toCSS(values, cssFunction, space);
+ case 'binary':
+ return toBinary(values);
+ default:
+ return values;
+ }
+}
+
+/**
+ * Module to generate colors.
+ */
+export class Color {
+ constructor(private readonly faker: Faker) {
+ // Bind `this` so namespaced is working correctly
+ for (const name of Object.getOwnPropertyNames(Color.prototype)) {
+ if (name === 'constructor' || typeof this[name] !== 'function') {
+ continue;
+ }
+ this[name] = this[name].bind(this);
+ }
+ }
+
+ /**
+ * Returns a random human readable color name.
+ *
+ * @example
+ * faker.color.human() // 'red'
+ */
+ human(): string {
+ return this.faker.helpers.arrayElement(this.faker.definitions.color.human);
+ }
+
+ /**
+ * Returns a random color space name from the worldwide accepted color spaces.
+ * Source: https://en.wikipedia.org/wiki/List_of_color_spaces_and_their_uses
+ *
+ * @example
+ * faker.color.space() // 'sRGB'
+ */
+ space(): string {
+ return this.faker.helpers.arrayElement(this.faker.definitions.color.space);
+ }
+
+ /**
+ * Returns a random css supported color function name.
+ *
+ * @example
+ * faker.color.cssSupportedFunction() // 'rgb'
+ */
+ cssSupportedFunction(): string {
+ return this.faker.helpers.arrayElement(CSS_FUNCTIONS);
+ }
+
+ /**
+ * Returns a random css supported color space name.
+ *
+ * @example
+ * faker.color.cssSupportedSpace() // 'display-p3'
+ */
+ cssSupportedSpace(): string {
+ return this.faker.helpers.arrayElement(CSS_SPACES);
+ }
+
+ /**
+ * Returns an RGB color.
+ *
+ * @example
+ * faker.color.rgb() // '0xffffFF'
+ */
+ rgb(): string;
+ /**
+ * Returns an RGB color.
+ *
+ * @param options Options object.
+ * @param options.prefix Prefix of the generated hex color. Only applied when 'hex' format is used. Defaults to `'0x'`.
+ * @param options.casing Letter type case of the generated hex color. Only applied when `'hex'` format is used. Defaults to `'mixed'`.
+ * @param options.format Format of generated RGB color. Defaults to `hex`.
+ * @param options.includeAlpha Adds an alpha value to the color (RGBA). Defaults to `false`.
+ *
+ * @example
+ * faker.color.rgb() // '0xffffFF'
+ * faker.color.rgb({ prefix: '#' }) // '#ffffFF'
+ * faker.color.rgb({ casing: 'upper' }) // '0xFFFFFF'
+ * faker.color.rgb({ casing: 'lower' }) // '0xffffff'
+ * faker.color.rgb({ prefix: '#', casing: 'lower' }) // '#ffffff'
+ * faker.color.rgb({ format: 'hex', casing: 'lower' }) // '#ffffff'
+ * faker.color.rgb({ format: 'css' }) // 'rgb(255, 0, 0)'
+ * faker.color.rgb({ format: 'binary' }) // '10000000 00000000 11111111'
+ */
+ rgb(options?: {
+ prefix?: string;
+ casing?: Casing;
+ format?: 'hex' | StringColorFormat;
+ includeAlpha?: boolean;
+ }): string;
+ /**
+ * Returns an RGB color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'hex'`.
+ * @param options.includeAlpha Adds an alpha value to the color (RGBA). Defaults to `false`.
+ *
+ * @example
+ * faker.color.rgb() // '0xffffFF'
+ * faker.color.rgb({ format: 'decimal' }) // [255, 255, 255]
+ * faker.color.rgb({ format: 'decimal', includeAlpha: true }) // [255, 255, 255, 0.4]
+ */
+ rgb(options?: {
+ format?: NumberColorFormat;
+ includeAlpha?: boolean;
+ }): number[];
+ /**
+ * Returns an RGB color.
+ *
+ * @param options Options object.
+ * @param options.prefix Prefix of the generated hex color. Only applied when `'hex'` format is used. Defaults to `'0x'`.
+ * @param options.casing Letter type case of the generated hex color. Only applied when `'hex'` format is used. Defaults to `'mixed'`.
+ * @param options.format Format of generated RGB color. Defaults to `'hex'`.
+ * @param options.includeAlpha Adds an alpha value to the color (RGBA). Defaults to `false`.
+ *
+ * @example
+ * faker.color.rgb() // '0xffffFF'
+ * faker.color.rgb({ prefix: '#' }) // '#ffffFF'
+ * faker.color.rgb({ casing: 'upper' }) // '0xFFFFFF'
+ * faker.color.rgb({ casing: 'lower' }) // '0xffffff'
+ * faker.color.rgb({ prefix: '#', casing: 'lower' }) // '#ffffff'
+ * faker.color.rgb({ format: 'hex', casing: 'lower' }) // '#ffffff'
+ * faker.color.rgb({ format: 'decimal' }) // [255, 255, 255]
+ * faker.color.rgb({ format: 'css' }) // 'rgb(255, 0, 0)'
+ * faker.color.rgb({ format: 'binary' }) // '10000000 00000000 11111111'
+ * faker.color.rgb({ format: 'decimal', includeAlpha: true }) // [255, 255, 255, 0.4]
+ */
+ rgb(options?: {
+ prefix?: string;
+ casing?: Casing;
+ format?: 'hex' | ColorFormat;
+ includeAlpha?: boolean;
+ }): string | number[];
+ rgb(options?: {
+ prefix?: string;
+ casing?: Casing;
+ format?: 'hex' | ColorFormat;
+ includeAlpha?: boolean;
+ }): string | number[] {
+ const {
+ format = 'hex',
+ includeAlpha = false,
+ prefix = '#',
+ casing = 'lower',
+ } = options || {};
+ options = { format, includeAlpha, prefix, casing };
+ let color: string | number[];
+ let cssFunction: CSSFunction = 'rgb';
+ if (format === 'hex') {
+ color = this.faker.datatype.hexadecimal(includeAlpha ? 8 : 6).slice(2);
+ color = formatHexColor(color, options);
+ return color;
+ }
+ color = Array.from({ length: 3 }).map(() =>
+ this.faker.datatype.number({ min: 0, max: 255 })
+ );
+ if (includeAlpha) {
+ color.push(
+ this.faker.datatype.float({ min: 0, max: 1, precision: 0.01 })
+ );
+ cssFunction = 'rgba';
+ }
+ return toColorFormat(color, format, cssFunction);
+ }
+
+ /**
+ * Returns a CMYK color.
+ *
+ * @example
+ * faker.color.cmyk() // [0.31, 0.52, 0.32, 0.43]
+ */
+ cmyk(): number[];
+ /**
+ * Returns a CMYK color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated CMYK color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.cmyk() // [0.31, 0.52, 0.32, 0.43]
+ * faker.color.cmyk({ format: 'css' }) // cmyk(100%, 0%, 0%, 0%)
+ * faker.color.cmyk({ format: 'binary' }) // (8-32 bits) x 4
+ */
+ cmyk(options?: { format?: StringColorFormat }): string;
+ /**
+ * Returns a CMYK color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated CMYK color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.cmyk() // [0.31, 0.52, 0.32, 0.43]
+ * faker.color.cmyk({ format: 'decimal' }) // [0.31, 0.52, 0.32, 0.43]
+ */
+ cmyk(options?: { format?: NumberColorFormat }): number[];
+ /**
+ * Returns a CMYK color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated CMYK color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.cmyk() // [0.31, 0.52, 0.32, 0.43]
+ * faker.color.cmyk({ format: 'decimal' }) // [0.31, 0.52, 0.32, 0.43]
+ * faker.color.cmyk({ format: 'css' }) // cmyk(100%, 0%, 0%, 0%)
+ * faker.color.cmyk({ format: 'binary' }) // (8-32 bits) x 4
+ */
+ cmyk(options?: { format?: ColorFormat }): string | number[];
+ cmyk(options?: { format?: ColorFormat }): string | number[] {
+ const color: string | number[] = Array.from({ length: 4 }).map(() =>
+ this.faker.datatype.float({ min: 0, max: 1, precision: 0.01 })
+ );
+ return toColorFormat(color, options?.format || 'decimal', 'cmyk');
+ }
+
+ /**
+ * Returns an HSL color.
+ *
+ * @example
+ * faker.color.hsl() // [201, 0.23, 0.32]
+ */
+ hsl(): number[];
+ /**
+ * Returns an HSL color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated HSL color. Defaults to `'decimal'`.
+ * @param options.includeAlpha Adds an alpha value to the color (RGBA). Defaults to `false`.
+ *
+ * @example
+ * faker.color.hsl() // [201, 0.23, 0.32]
+ * faker.color.hsl({ format: 'css' }) // hsl(0deg, 100%, 80%)
+ * faker.color.hsl({ format: 'css', includeAlpha: true }) // hsl(0deg 100% 50% / 0.5)
+ * faker.color.hsl({ format: 'binary' }) // (8-32 bits) x 3
+ * faker.color.hsl({ format: 'binary', includeAlpha: true }) // (8-32 bits) x 4
+ */
+ hsl(options?: { format?: StringColorFormat; includeAlpha?: boolean }): string;
+ /**
+ * Returns an HSL color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated HSL color. Defaults to `'decimal'`.
+ * @param options.includeAlpha Adds an alpha value to the color (RGBA). Defaults to `false`.
+ *
+ * @example
+ * faker.color.hsl() // [201, 0.23, 0.32]
+ * faker.color.hsl({ format: 'decimal' }) // [300, 0.21, 0.52]
+ * faker.color.hsl({ format: 'decimal', includeAlpha: true }) // [300, 0.21, 0.52, 0.28]
+ */
+ hsl(options?: {
+ format?: NumberColorFormat;
+ includeAlpha?: boolean;
+ }): number[];
+ /**
+ * Returns an HSL color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated HSL color. Defaults to `'decimal'`.
+ * @param options.includeAlpha Adds an alpha value to the color (RGBA). Defaults to `false`.
+ *
+ * @example
+ * faker.color.hsl() // [201, 0.23, 0.32]
+ * faker.color.hsl({ format: 'decimal' }) // [300, 0.21, 0.52]
+ * faker.color.hsl({ format: 'decimal', includeAlpha: true }) // [300, 0.21, 0.52, 0.28]
+ * faker.color.hsl({ format: 'css' }) // hsl(0deg, 100%, 80%)
+ * faker.color.hsl({ format: 'css', includeAlpha: true }) // hsl(0deg 100% 50% / 0.5)
+ * faker.color.hsl({ format: 'binary' }) // (8-32 bits) x 3
+ * faker.color.hsl({ format: 'binary', includeAlpha: true }) // (8-32 bits) x 4
+ */
+ hsl(options?: {
+ format?: ColorFormat;
+ includeAlpha?: boolean;
+ }): string | number[];
+ hsl(options?: {
+ format?: ColorFormat;
+ includeAlpha?: boolean;
+ }): string | number[] {
+ const hsl: number[] = [this.faker.datatype.number({ min: 0, max: 360 })];
+ for (let i = 0; i < (options?.includeAlpha ? 3 : 2); i++) {
+ hsl.push(this.faker.datatype.float({ min: 0, max: 1, precision: 0.01 }));
+ }
+ return toColorFormat(
+ hsl,
+ options?.format || 'decimal',
+ options?.includeAlpha ? 'hsla' : 'hsl'
+ );
+ }
+
+ /**
+ * Returns an HWB color.
+ *
+ * @example
+ * faker.color.hwb() // [201, 0.21, 0.31]
+ */
+ hwb(): number[];
+ /**
+ * Returns an HWB color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.hwb() // [201, 0.21, 0.31]
+ * faker.color.hwb({ format: 'css' }) // hwb(194 0% 0%)
+ * faker.color.hwb({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ hwb(options?: { format?: StringColorFormat }): string;
+ /**
+ * Returns an HWB color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.hwb() // [201, 0.21, 0.31]
+ * faker.color.hwb({ format: 'decimal' }) // [201, 0.21, 0.31]
+ */
+ hwb(options?: { format?: NumberColorFormat }): number[];
+ /**
+ * Returns an HWB color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.hwb() // [201, 0.21, 0.31]
+ * faker.color.hwb({ format: 'decimal' }) // [201, 0.21, 0.31]
+ * faker.color.hwb({ format: 'css' }) // hwb(194 0% 0%)
+ * faker.color.hwb({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ hwb(options?: { format?: ColorFormat }): string | number[];
+ /**
+ * Returns an HWB color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.hwb() // [201, 0.21, 0.31]
+ * faker.color.hwb({ format: 'decimal' }) // [201, 0.21, 0.31]
+ * faker.color.hwb({ format: 'css' }) // hwb(194 0% 0%)
+ * faker.color.hwb({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ hwb(options?: { format?: ColorFormat }): string | number[] {
+ const hsl: number[] = [this.faker.datatype.number({ min: 0, max: 360 })];
+ for (let i = 0; i < 2; i++) {
+ hsl.push(this.faker.datatype.float({ min: 0, max: 1, precision: 0.01 }));
+ }
+ return toColorFormat(hsl, options?.format || 'decimal', 'hwb');
+ }
+
+ /**
+ * Returns a LAB (CIELAB) color.
+ *
+ * @example
+ * faker.color.lab() // [0.832133, -80.3245, 100.1234]
+ */
+ lab(): number[];
+ /**
+ * Returns a LAB (CIELAB) color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.lab() // [0.832133, -80.3245, 100.1234]
+ * faker.color.lab({ format: 'css' }) // lab(29.2345% 39.3825 20.0664)
+ * faker.color.lab({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ lab(options?: { format?: StringColorFormat }): string;
+ /**
+ * Returns a LAB (CIELAB) color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.lab() // [0.832133, -80.3245, 100.1234]
+ * faker.color.lab({ format: 'decimal' }) // [0.856773, -80.2345, 100.2341]
+ */
+ lab(options?: { format?: NumberColorFormat }): number[];
+ /**
+ * Returns a LAB (CIELAB) color.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.lab() // [0.832133, -80.3245, 100.1234]
+ * faker.color.lab({ format: 'decimal' }) // [0.856773, -80.2345, 100.2341]
+ * faker.color.lab({ format: 'css' }) // lab(29.2345% 39.3825 20.0664)
+ * faker.color.lab({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ lab(options?: { format?: ColorFormat }): string | number[];
+ lab(options?: { format?: ColorFormat }): string | number[] {
+ const lab = [
+ this.faker.datatype.float({ min: 0, max: 1, precision: 0.000001 }),
+ ];
+ for (let i = 0; i < 2; i++) {
+ lab.push(
+ this.faker.datatype.float({ min: -100, max: 100, precision: 0.0001 })
+ );
+ }
+ return toColorFormat(lab, options?.format || 'decimal', 'lab');
+ }
+
+ /**
+ * Returns an LCH color. Even though upper bound of
+ * chroma in LCH color space is theoretically unbounded,
+ * it is bounded to 230 as anything above will not
+ * make a noticeable difference in the browser.
+ *
+ * @example
+ * faker.color.lch() // [0.522345, 72.2, 56.2]
+ */
+ lch(): number[];
+ /**
+ * Returns an LCH color. Even though upper bound of
+ * chroma in LCH color space is theoretically unbounded,
+ * it is bounded to 230 as anything above will not
+ * make a noticeable difference in the browser.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.lch() // [0.522345, 72.2, 56.2]
+ * faker.color.lch({ format: 'css' }) // lch(52.2345% 72.2 56.2)
+ * faker.color.lch({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ lch(options?: { format?: StringColorFormat }): string;
+ /**
+ * Returns an LCH color. Even though upper bound of
+ * chroma in LCH color space is theoretically unbounded,
+ * it is bounded to 230 as anything above will not
+ * make a noticeable difference in the browser.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.lch() // [0.522345, 72.2, 56.2]
+ * faker.color.lch({ format: 'decimal' }) // [0.522345, 72.2, 56.2]
+ */
+ lch(options?: { format?: NumberColorFormat }): number[];
+ /**
+ * Returns an LCH color. Even though upper bound of
+ * chroma in LCH color space is theoretically unbounded,
+ * it is bounded to 230 as anything above will not
+ * make a noticeable difference in the browser.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ *
+ * @example
+ * faker.color.lch() // [0.522345, 72.2, 56.2]
+ * faker.color.lch({ format: 'decimal' }) // [0.522345, 72.2, 56.2]
+ * faker.color.lch({ format: 'css' }) // lch(52.2345% 72.2 56.2)
+ * faker.color.lch({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ lch(options?: { format?: ColorFormat }): string | number[];
+ lch(options?: { format?: ColorFormat }): string | number[] {
+ const lch = [
+ this.faker.datatype.float({ min: 0, max: 1, precision: 0.000001 }),
+ ];
+ for (let i = 0; i < 2; i++) {
+ lch.push(
+ this.faker.datatype.number({ min: 0, max: 230, precision: 0.1 })
+ );
+ }
+ return toColorFormat(lch, options?.format || 'decimal', 'lch');
+ }
+
+ /**
+ * Returns a random color based on CSS color space specified.
+ *
+ * @example
+ * faker.color.colorByCSSColorSpace() // [0.93, 1, 0.82]
+ */
+ colorByCSSColorSpace(): number[];
+ /**
+ * Returns a random color based on CSS color space specified.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ * @param options.space Color space to generate the color for. Defaults to `'sRGB'`.
+ *
+ * @example
+ * faker.color.colorByCSSColorSpace() // [0.93, 1, 0.82]
+ * faker.color.colorByCSSColorSpace({ format: 'css', space: 'display-p3' }) // color(display-p3 0.12 1 0.23)
+ * faker.color.colorByCSSColorSpace({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ colorByCSSColorSpace(options?: {
+ format?: StringColorFormat;
+ space?: CSSSpace;
+ }): string;
+ /**
+ * Returns a random color based on CSS color space specified.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ * @param options.space Color space to generate the color for. Defaults to `'sRGB'`.
+ *
+ * @example
+ * faker.color.colorByCSSColorSpace() // [0.93, 1, 0.82]
+ * faker.color.colorByCSSColorSpace({ format: 'decimal' }) // [0.12, 0.21, 0.31]
+ */
+ colorByCSSColorSpace(options?: {
+ format?: NumberColorFormat;
+ space?: CSSSpace;
+ }): number[];
+ /**
+ * Returns a random color based on CSS color space specified.
+ *
+ * @param options Options object.
+ * @param options.format Format of generated RGB color. Defaults to `'decimal'`.
+ * @param options.space Color space to generate the color for. Defaults to `'sRGB'`.
+ *
+ * @example
+ * faker.color.colorByCSSColorSpace() // [0.93, 1, 0.82]
+ * faker.color.colorByCSSColorSpace({ format: 'decimal' }) // [0.12, 0.21, 0.31]
+ * faker.color.colorByCSSColorSpace({ format: 'css', space: 'display-p3' }) // color(display-p3 0.12 1 0.23)
+ * faker.color.colorByCSSColorSpace({ format: 'binary' }) // (8-32 bits x 3)
+ */
+ colorByCSSColorSpace(options?: {
+ format?: ColorFormat;
+ space?: CSSSpace;
+ }): string | number[];
+ colorByCSSColorSpace(options?: {
+ format?: ColorFormat;
+ space?: CSSSpace;
+ }): string | number[] {
+ if (options?.format === 'css' && !options?.space) {
+ options = { ...options, space: 'sRGB' };
+ }
+ const color = Array.from({ length: 3 }).map(() =>
+ this.faker.datatype.float({ min: 0, max: 1, precision: 0.0001 })
+ );
+ return toColorFormat(
+ color,
+ options?.format || 'decimal',
+ 'color',
+ options?.space
+ );
+ }
+}
diff --git a/src/modules/commerce/index.ts b/src/modules/commerce/index.ts
index 71ce96d6..d17c473b 100644
--- a/src/modules/commerce/index.ts
+++ b/src/modules/commerce/index.ts
@@ -1,4 +1,5 @@
-import type { Faker } from '../..';
+import type { Faker } from '../../faker';
+import { deprecated } from '../../internal/deprecated';
/**
* Module to generate commerce and product related entries.
@@ -19,11 +20,17 @@ export class Commerce {
*
* @example
* faker.commerce.color() // 'red'
+ *
+ * @deprecated
*/
color(): string {
- return this.faker.helpers.arrayElement(
- this.faker.definitions.commerce.color
- );
+ deprecated({
+ deprecated: 'faker.commerce.color()',
+ proposed: 'faker.color.human()',
+ since: 'v7.0.0',
+ until: 'v8.0.0',
+ });
+ return this.faker.color.human();
}
/**
diff --git a/src/modules/random/index.ts b/src/modules/random/index.ts
index 57783c9b..616dc4dd 100644
--- a/src/modules/random/index.ts
+++ b/src/modules/random/index.ts
@@ -121,7 +121,7 @@ export class Random {
this.faker.commerce.productAdjective,
this.faker.commerce.productMaterial,
this.faker.commerce.product,
- this.faker.commerce.color,
+ this.faker.color.human,
this.faker.company.catchPhraseAdjective,
this.faker.company.catchPhraseDescriptor,
diff --git a/src/modules/vehicle/index.ts b/src/modules/vehicle/index.ts
index fb5cd9f9..903dab53 100644
--- a/src/modules/vehicle/index.ts
+++ b/src/modules/vehicle/index.ts
@@ -97,7 +97,7 @@ export class Vehicle {
* faker.vehicle.color() // 'red'
*/
color(): string {
- return this.faker.commerce.color();
+ return this.faker.color.human();
}
/**