aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/helpers.ts37
-rw-r--r--src/internal/deprecated.ts29
-rw-r--r--src/name.ts82
-rw-r--r--src/random.ts55
-rw-r--r--src/time.ts14
-rw-r--r--test/helpers.spec.ts4
-rw-r--r--test/name.spec.ts16
-rw-r--r--test/random.spec.ts2
-rw-r--r--test/time.spec.ts24
-rw-r--r--tsconfig.json3
10 files changed, 170 insertions, 96 deletions
diff --git a/src/helpers.ts b/src/helpers.ts
index 38e70c29..6ed51ec5 100644
--- a/src/helpers.ts
+++ b/src/helpers.ts
@@ -1,4 +1,5 @@
import type { Faker } from '.';
+import { deprecated } from './internal/deprecated';
/**
* A full card with various details.
@@ -143,9 +144,12 @@ export class Helpers {
randomize<T = string>(
array: ReadonlyArray<T> = ['a', 'b', 'c'] as unknown as ReadonlyArray<T>
): T {
- console.warn(
- 'Deprecation Warning: faker.helpers.randomize is now located in faker.random.arrayElement'
- );
+ deprecated({
+ deprecated: 'faker.helpers.randomize()',
+ proposed: 'faker.random.arrayElement()',
+ // since: 'v5.0.0', (?)
+ until: 'v7.0.0',
+ });
return this.faker.random.arrayElement(array);
}
@@ -511,9 +515,12 @@ export class Helpers {
* @deprecated If you need some specific object you should create your own method.
*/
createCard(): Card {
- console.warn(
- 'Deprecation Warning: If you need some specific object you should create your own method.'
- );
+ deprecated({
+ deprecated: 'helpers.createCard()',
+ proposed: 'a self-build function',
+ since: 'v6.1.0',
+ until: 'v7.0.0',
+ });
return {
name: this.faker.name.findName(),
username: this.faker.internet.userName(),
@@ -582,9 +589,12 @@ export class Helpers {
* @deprecated If you need some specific object you should create your own method.
*/
contextualCard(): ContextualCard {
- console.warn(
- 'Deprecation Warning: If you need some specific object you should create your own method.'
- );
+ deprecated({
+ deprecated: 'helpers.contextualCard()',
+ proposed: 'a self-build function',
+ since: 'v6.1.0',
+ until: 'v7.0.0',
+ });
const name = this.faker.name.firstName();
const userName = this.faker.internet.userName(name);
return {
@@ -631,9 +641,12 @@ export class Helpers {
* @deprecated If you need some specific object you should create your own method.
*/
userCard(): UserCard {
- console.warn(
- 'Deprecation Warning: If you need some specific object you should create your own method.'
- );
+ deprecated({
+ deprecated: 'helpers.userCard()',
+ proposed: 'a self-build function',
+ since: 'v6.1.0',
+ until: 'v7.0.0',
+ });
return {
name: this.faker.name.findName(),
username: this.faker.internet.userName(),
diff --git a/src/internal/deprecated.ts b/src/internal/deprecated.ts
new file mode 100644
index 00000000..7f20c24f
--- /dev/null
+++ b/src/internal/deprecated.ts
@@ -0,0 +1,29 @@
+/* eslint-disable jsdoc/check-tag-names */
+/* eslint-disable jsdoc/require-param */
+
+/** @internal */
+export interface DeprecatedOptions {
+ deprecated: string;
+ proposed?: string;
+ since?: string;
+ until?: string;
+}
+
+/** @internal */
+export function deprecated(opts: DeprecatedOptions): void {
+ let message = `[@faker-js/faker]: ${opts.deprecated} is deprecated`;
+
+ if (opts.since) {
+ message += ` since ${opts.since}`;
+ }
+
+ if (opts.until) {
+ message += ` and will be removed in ${opts.until}`;
+ }
+
+ if (opts.proposed) {
+ message += `. Please use ${opts.proposed} instead`;
+ }
+
+ console.warn(message + '.');
+}
diff --git a/src/name.ts b/src/name.ts
index 8fac27c4..a6dd4ea6 100644
--- a/src/name.ts
+++ b/src/name.ts
@@ -1,4 +1,5 @@
import type { Faker } from '.';
+import { deprecated } from './internal/deprecated';
export enum Gender {
female = 'female',
@@ -12,10 +13,12 @@ export type GenderType = 'female' | 'male' | 0 | 1;
* Normalize gender.
*
* @param gender Gender.
+ * @param functionName Temporary parameter for deprecation message.
* @returns Normalized gender.
*/
function normalizeGender(
- gender?: GenderType
+ gender?: GenderType,
+ functionName?: string
): Exclude<GenderType, number> | undefined {
if (gender == null || typeof gender === 'string') {
// TODO @Shinigami92 21-03-2022: Cast can be removed when we set `strict: true`
@@ -24,9 +27,12 @@ function normalizeGender(
const normalizedGender = gender === 0 ? 'male' : 'female';
- console.warn(
- `Deprecation Warning: Please use '${normalizedGender}' for gender instead of ${gender}`
- );
+ deprecated({
+ deprecated: `name.${functionName}(number)`,
+ proposed: "'female' or 'male'",
+ since: 'v6.1.0',
+ until: 'v7.0.0',
+ });
return normalizedGender;
}
@@ -40,6 +46,7 @@ function normalizeGender(
* @param param2.generic Non-gender definitions.
* @param param2.female Female definitions.
* @param param2.male Male definitions.
+ * @param functionName Temporary parameter for deprecation message.
* @returns Definition based on given gender.
*/
function selectDefinition(
@@ -50,9 +57,10 @@ function selectDefinition(
generic,
female,
male,
- }: { generic?: string[]; female?: string[]; male?: string[] } = {}
+ }: { generic?: string[]; female?: string[]; male?: string[] } = {},
+ functionName?: string
) {
- const normalizedGender = normalizeGender(gender);
+ const normalizedGender = normalizeGender(gender, functionName);
let values: string[] | undefined;
switch (normalizedGender) {
@@ -107,11 +115,16 @@ export class Name {
const { first_name, female_first_name, male_first_name } =
this.faker.definitions.name;
- return selectDefinition(this.faker, gender, {
- generic: first_name,
- female: female_first_name,
- male: male_first_name,
- });
+ return selectDefinition(
+ this.faker,
+ gender,
+ {
+ generic: first_name,
+ female: female_first_name,
+ male: male_first_name,
+ },
+ 'firstName'
+ );
}
/**
@@ -129,11 +142,16 @@ export class Name {
const { last_name, female_last_name, male_last_name } =
this.faker.definitions.name;
- return selectDefinition(this.faker, gender, {
- generic: last_name,
- female: female_last_name,
- male: male_last_name,
- });
+ return selectDefinition(
+ this.faker,
+ gender,
+ {
+ generic: last_name,
+ female: female_last_name,
+ male: male_last_name,
+ },
+ 'lastName'
+ );
}
/**
@@ -151,11 +169,16 @@ export class Name {
const { middle_name, female_middle_name, male_middle_name } =
this.faker.definitions.name;
- return selectDefinition(this.faker, gender, {
- generic: middle_name,
- female: female_middle_name,
- male: male_middle_name,
- });
+ return selectDefinition(
+ this.faker,
+ gender,
+ {
+ generic: middle_name,
+ female: female_middle_name,
+ male: male_middle_name,
+ },
+ 'middleName'
+ );
}
/**
@@ -179,7 +202,7 @@ export class Name {
let suffix = '';
const normalizedGender: Exclude<GenderType, number> =
- normalizeGender(gender) ??
+ normalizeGender(gender, 'findName') ??
this.faker.random.arrayElement(['female', 'male']);
firstName = firstName || this.faker.name.firstName(normalizedGender);
@@ -237,11 +260,16 @@ export class Name {
prefix(gender?: GenderType): string {
const { prefix, female_prefix, male_prefix } = this.faker.definitions.name;
- return selectDefinition(this.faker, gender, {
- generic: prefix,
- female: female_prefix,
- male: male_prefix,
- });
+ return selectDefinition(
+ this.faker,
+ gender,
+ {
+ generic: prefix,
+ female: female_prefix,
+ male: male_prefix,
+ },
+ 'prefix'
+ );
}
/**
diff --git a/src/random.ts b/src/random.ts
index fced36a3..0a3b3c5e 100644
--- a/src/random.ts
+++ b/src/random.ts
@@ -1,4 +1,5 @@
import type { Faker } from '.';
+import { deprecated } from './internal/deprecated';
/**
* Method to reduce array of characters.
@@ -52,9 +53,12 @@ export class Random {
number(
options?: number | { min?: number; max?: number; precision?: number }
): number {
- console.warn(
- 'Deprecation Warning: faker.random.number is now located in faker.datatype.number'
- );
+ deprecated({
+ deprecated: 'faker.random.number()',
+ proposed: 'faker.datatype.number()',
+ // since: 'v5.0.0', (?)
+ until: 'v7.0.0',
+ });
return this.faker.datatype.number(options);
}
@@ -81,9 +85,12 @@ export class Random {
float(
options?: number | { min?: number; max?: number; precision?: number }
): number {
- console.warn(
- 'Deprecation Warning: faker.random.float is now located in faker.datatype.float'
- );
+ deprecated({
+ deprecated: 'faker.random.float()',
+ proposed: 'faker.datatype.float()',
+ // since: 'v5.0.0', (?)
+ until: 'v7.0.0',
+ });
return this.faker.datatype.float(options);
}
@@ -213,9 +220,12 @@ export class Random {
* @deprecated
*/
uuid(): string {
- console.warn(
- 'Deprecation Warning: faker.random.uuid is now located in faker.datatype.uuid'
- );
+ deprecated({
+ deprecated: 'faker.random.uuid()',
+ proposed: 'faker.datatype.uuid()',
+ // since: 'v5.0.0', (?)
+ until: 'v7.0.0',
+ });
return this.faker.datatype.uuid();
}
@@ -230,9 +240,12 @@ export class Random {
* @deprecated
*/
boolean(): boolean {
- console.warn(
- 'Deprecation Warning: faker.random.boolean is now located in faker.datatype.boolean'
- );
+ deprecated({
+ deprecated: 'faker.random.boolean()',
+ proposed: 'faker.datatype.boolean()',
+ // since: 'v5.0.0', (?)
+ until: 'v7.0.0',
+ });
return this.faker.datatype.boolean();
}
@@ -347,9 +360,12 @@ export class Random {
* @deprecated
*/
image(): string {
- console.warn(
- 'Deprecation Warning: faker.random.image is now located in faker.image.image'
- );
+ deprecated({
+ deprecated: 'faker.random.image()',
+ proposed: 'faker.image.image()',
+ // since: 'v5.0.0', (?)
+ until: 'v7.0.0',
+ });
return this.faker.image.image();
}
@@ -533,9 +549,12 @@ export class Random {
* @deprecated
*/
hexaDecimal(count?: number): string {
- console.warn(
- 'Deprecation Warning: faker.random.hexaDecimal is now located in faker.datatype.hexaDecimal'
- );
+ deprecated({
+ deprecated: 'faker.random.hexaDecimal()',
+ proposed: 'faker.datatype.hexaDecimal()',
+ // since: 'v5.0.0', (?)
+ until: 'v7.0.0',
+ });
return this.faker.datatype.hexaDecimal(count);
}
}
diff --git a/src/time.ts b/src/time.ts
index 06a32021..8eeaef42 100644
--- a/src/time.ts
+++ b/src/time.ts
@@ -1,4 +1,5 @@
import type { LiteralUnion } from './faker';
+import { deprecated } from './internal/deprecated';
/**
* Module to generate time of dates in various formats.
@@ -28,13 +29,12 @@ export class Time {
recent(
format: LiteralUnion<'abbr' | 'date' | 'wide' | 'unix'> = 'unix'
): string | number | Date {
- console.warn(
- `Deprecation Warning: faker.time.recent() is deprecated. Use the native \`new Date()\` and call the function you want on it.
- abbr => toLocaleTimeString()
- wide => toTimeString()
- unix => getTime()
-`
- );
+ deprecated({
+ deprecated: 'faker.time.recent()',
+ proposed: 'native `new Date()` and call the function you want on it',
+ since: 'v6.1.0',
+ until: 'v7.0.0',
+ });
let date: string | number | Date = new Date();
diff --git a/test/helpers.spec.ts b/test/helpers.spec.ts
index cbb541c1..0be83f98 100644
--- a/test/helpers.spec.ts
+++ b/test/helpers.spec.ts
@@ -774,7 +774,7 @@ describe('helpers', () => {
faker.helpers[functionName]();
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: faker.helpers.${functionName} is now located in faker.${newLocation}`
+ `[@faker-js/faker]: faker.helpers.${functionName}() is deprecated and will be removed in v7.0.0. Please use faker.${newLocation}() instead.`
);
spy.mockRestore();
}
@@ -791,7 +791,7 @@ describe('helpers', () => {
faker.helpers[functionName]();
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: If you need some specific object you should create your own method.`
+ `[@faker-js/faker]: helpers.${functionName}() is deprecated since v6.1.0 and will be removed in v7.0.0. Please use a self-build function instead.`
);
spy.mockRestore();
}
diff --git a/test/name.spec.ts b/test/name.spec.ts
index 7572b3d6..40f34955 100644
--- a/test/name.spec.ts
+++ b/test/name.spec.ts
@@ -189,13 +189,13 @@ describe('name', () => {
let name = faker.name.firstName(0);
expect(faker.definitions.name.male_first_name).toContain(name);
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: Please use 'male' for gender instead of 0`
+ "[@faker-js/faker]: name.firstName(number) is deprecated since v6.1.0 and will be removed in v7.0.0. Please use 'female' or 'male' instead."
);
name = faker.name.firstName(1);
expect(faker.definitions.name.female_first_name).toContain(name);
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: Please use 'female' for gender instead of 1`
+ "[@faker-js/faker]: name.firstName(number) is deprecated since v6.1.0 and will be removed in v7.0.0. Please use 'female' or 'male' instead."
);
spy.mockRestore();
@@ -242,13 +242,13 @@ describe('name', () => {
let name = faker.name.lastName(0);
expect(faker.definitions.name.male_last_name).toContain(name);
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: Please use 'male' for gender instead of 0`
+ "[@faker-js/faker]: name.lastName(number) is deprecated since v6.1.0 and will be removed in v7.0.0. Please use 'female' or 'male' instead."
);
name = faker.name.lastName(1);
expect(faker.definitions.name.female_last_name).toContain(name);
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: Please use 'female' for gender instead of 1`
+ "[@faker-js/faker]: name.lastName(number) is deprecated since v6.1.0 and will be removed in v7.0.0. Please use 'female' or 'male' instead."
);
spy.mockRestore();
@@ -299,13 +299,13 @@ describe('name', () => {
let name = faker.name.middleName(0);
expect(faker.definitions.name.male_middle_name).toContain(name);
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: Please use 'male' for gender instead of 0`
+ "[@faker-js/faker]: name.middleName(number) is deprecated since v6.1.0 and will be removed in v7.0.0. Please use 'female' or 'male' instead."
);
name = faker.name.middleName(1);
expect(faker.definitions.name.female_middle_name).toContain(name);
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: Please use 'female' for gender instead of 1`
+ "[@faker-js/faker]: name.middleName(number) is deprecated since v6.1.0 and will be removed in v7.0.0. Please use 'female' or 'male' instead."
);
spy.mockRestore();
@@ -475,7 +475,7 @@ describe('name', () => {
expect(faker.definitions.name.male_prefix).toContain(prefix);
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: Please use 'male' for gender instead of 0`
+ "[@faker-js/faker]: name.prefix(number) is deprecated since v6.1.0 and will be removed in v7.0.0. Please use 'female' or 'male' instead."
);
spy.mockRestore();
@@ -492,7 +492,7 @@ describe('name', () => {
expect(faker.definitions.name.female_prefix).toContain(prefix);
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: Please use 'female' for gender instead of 1`
+ "[@faker-js/faker]: name.prefix(number) is deprecated since v6.1.0 and will be removed in v7.0.0. Please use 'female' or 'male' instead."
);
spy.mockRestore();
diff --git a/test/random.spec.ts b/test/random.spec.ts
index ceb454cc..9e66f58a 100644
--- a/test/random.spec.ts
+++ b/test/random.spec.ts
@@ -294,7 +294,7 @@ describe('random', () => {
faker.random[functionName]();
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: faker.random.${functionName} is now located in faker.${newLocation}`
+ `[@faker-js/faker]: faker.random.${functionName}() is deprecated and will be removed in v7.0.0. Please use faker.${newLocation}() instead.`
);
spy.mockRestore();
}
diff --git a/test/time.spec.ts b/test/time.spec.ts
index 90d4d2c4..82c3fbae 100644
--- a/test/time.spec.ts
+++ b/test/time.spec.ts
@@ -62,11 +62,7 @@ describe('time', () => {
expect(date).toBeTypeOf('number');
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: faker.time.recent() is deprecated. Use the native \`new Date()\` and call the function you want on it.
- abbr => toLocaleTimeString()
- wide => toTimeString()
- unix => getTime()
-`
+ '[@faker-js/faker]: faker.time.recent() is deprecated since v6.1.0 and will be removed in v7.0.0. Please use native `new Date()` and call the function you want on it instead.'
);
spy.mockRestore();
});
@@ -78,11 +74,7 @@ describe('time', () => {
expect(date).toBeTypeOf('string');
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: faker.time.recent() is deprecated. Use the native \`new Date()\` and call the function you want on it.
- abbr => toLocaleTimeString()
- wide => toTimeString()
- unix => getTime()
-`
+ '[@faker-js/faker]: faker.time.recent() is deprecated since v6.1.0 and will be removed in v7.0.0. Please use native `new Date()` and call the function you want on it instead.'
);
spy.mockRestore();
});
@@ -94,11 +86,7 @@ describe('time', () => {
expect(date).toBeTypeOf('string');
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: faker.time.recent() is deprecated. Use the native \`new Date()\` and call the function you want on it.
- abbr => toLocaleTimeString()
- wide => toTimeString()
- unix => getTime()
-`
+ '[@faker-js/faker]: faker.time.recent() is deprecated since v6.1.0 and will be removed in v7.0.0. Please use native `new Date()` and call the function you want on it instead.'
);
spy.mockRestore();
});
@@ -110,11 +98,7 @@ describe('time', () => {
expect(date).toBeTypeOf('number');
expect(spy).toHaveBeenCalledWith(
- `Deprecation Warning: faker.time.recent() is deprecated. Use the native \`new Date()\` and call the function you want on it.
- abbr => toLocaleTimeString()
- wide => toTimeString()
- unix => getTime()
-`
+ '[@faker-js/faker]: faker.time.recent() is deprecated since v6.1.0 and will be removed in v7.0.0. Please use native `new Date()` and call the function you want on it instead.'
);
spy.mockRestore();
});
diff --git a/tsconfig.json b/tsconfig.json
index aea7ca43..06a5489f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -12,7 +12,8 @@
// "strictPropertyInitialization": true,
// "noImplicitAny": true,
// "noImplicitThis": true,
- "useUnknownInCatchVariables": true
+ "useUnknownInCatchVariables": true,
+ "stripInternal": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]