fauxy 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,152 @@
1
+ import {
2
+ af_ZA,
3
+ ar,
4
+ az,
5
+ base,
6
+ bn_BD,
7
+ cs_CZ,
8
+ cy,
9
+ da,
10
+ de,
11
+ de_AT,
12
+ de_CH,
13
+ dv,
14
+ el,
15
+ en,
16
+ en_AU,
17
+ en_AU_ocker,
18
+ en_BORK,
19
+ en_CA,
20
+ en_GB,
21
+ en_GH,
22
+ en_HK,
23
+ en_IE,
24
+ en_IN,
25
+ en_NG,
26
+ en_US,
27
+ en_ZA,
28
+ eo,
29
+ es,
30
+ es_MX,
31
+ fa,
32
+ fi,
33
+ fr,
34
+ fr_BE,
35
+ fr_CA,
36
+ fr_CH,
37
+ fr_LU,
38
+ fr_SN,
39
+ he,
40
+ hr,
41
+ hu,
42
+ hy,
43
+ id_ID,
44
+ it,
45
+ ja,
46
+ ka_GE,
47
+ ko,
48
+ ku_ckb,
49
+ lv,
50
+ mk,
51
+ nb_NO,
52
+ ne,
53
+ nl,
54
+ nl_BE,
55
+ pl,
56
+ pt_BR,
57
+ pt_PT,
58
+ ro,
59
+ ro_MD,
60
+ ru,
61
+ sk,
62
+ sr_RS_latin,
63
+ sv,
64
+ ta_IN,
65
+ th,
66
+ tr,
67
+ uk,
68
+ ur,
69
+ uz_UZ_latin,
70
+ vi,
71
+ yo_NG,
72
+ zh_CN,
73
+ zh_TW,
74
+ zu_ZA,
75
+ } from '@faker-js/faker'
76
+
77
+ export const locales = {
78
+ af_ZA,
79
+ ar,
80
+ az,
81
+ base,
82
+ bn_BD,
83
+ cs_CZ,
84
+ cy,
85
+ da,
86
+ de,
87
+ de_AT,
88
+ de_CH,
89
+ dv,
90
+ el,
91
+ en,
92
+ en_AU,
93
+ en_AU_ocker,
94
+ en_BORK,
95
+ en_CA,
96
+ en_GB,
97
+ en_GH,
98
+ en_HK,
99
+ en_IE,
100
+ en_IN,
101
+ en_NG,
102
+ en_US,
103
+ en_ZA,
104
+ eo,
105
+ es,
106
+ es_MX,
107
+ fa,
108
+ fi,
109
+ fr,
110
+ fr_BE,
111
+ fr_CA,
112
+ fr_CH,
113
+ fr_LU,
114
+ fr_SN,
115
+ he,
116
+ hr,
117
+ hu,
118
+ hy,
119
+ id_ID,
120
+ it,
121
+ ja,
122
+ ka_GE,
123
+ ko,
124
+ ku_ckb,
125
+ lv,
126
+ mk,
127
+ nb_NO,
128
+ ne,
129
+ nl,
130
+ nl_BE,
131
+ pl,
132
+ pt_BR,
133
+ pt_PT,
134
+ ro,
135
+ ro_MD,
136
+ ru,
137
+ sk,
138
+ sr_RS_latin,
139
+ sv,
140
+ ta_IN,
141
+ th,
142
+ tr,
143
+ uk,
144
+ ur,
145
+ uz_UZ_latin,
146
+ vi,
147
+ yo_NG,
148
+ zh_CN,
149
+ zh_TW,
150
+ zu_ZA,
151
+ } as const
152
+ export type Locale = keyof typeof locales
@@ -1,4 +1,4 @@
1
- import { Faker } from './faker'
1
+ import { FakerWrapper } from './fakerWrapper'
2
2
 
3
3
  /**
4
4
  * Utils
@@ -13,109 +13,41 @@ export type Count =
13
13
  /**
14
14
  * Mock config
15
15
  */
16
- export type FakerType =
17
- | 'uuid'
18
- | 'boolean'
19
- | 'words'
20
- | 'number'
21
- | 'url'
22
- | 'fullName'
23
- | 'date'
24
- | 'personalNumber'
25
- | 'rank'
26
- | 'arrayElement'
27
- | 'arrayElements'
28
- | 'callback'
29
- | 'array'
30
- | 'object'
16
+ export type FakerWrapperType = 'callback' | 'array' | 'object' | 'instance'
31
17
 
32
- interface BaseFakerConfig {
33
- type: FakerType
18
+ interface BaseFakerWrapperConfig {
19
+ type: FakerWrapperType
34
20
  }
35
21
 
36
- export interface UuidFakerConfig extends BaseFakerConfig {
37
- type: 'uuid'
38
- }
39
-
40
- export interface BooleanFakerConfig extends BaseFakerConfig {
41
- type: 'boolean'
42
- }
43
-
44
- export interface WordsFakerConfig extends BaseFakerConfig {
45
- type: 'words'
46
- count?: Count
47
- }
48
-
49
- export interface NumberFakerConfig extends BaseFakerConfig {
50
- type: 'number'
51
- min?: number
52
- max?: number
53
- }
54
-
55
- export interface UrlFakerConfig extends BaseFakerConfig {
56
- type: 'url'
57
- }
58
-
59
- export interface DateFakerConfig extends BaseFakerConfig {
60
- type: 'date'
61
- }
62
-
63
- export interface FullNameFakerConfig extends BaseFakerConfig {
64
- type: 'fullName'
65
- }
66
-
67
- export interface PersonalNumberFakerConfig extends BaseFakerConfig {
68
- type: 'personalNumber'
69
- }
70
-
71
- export interface RankFakerConfig extends BaseFakerConfig {
72
- type: 'rank'
73
- }
74
-
75
- export interface ArrayElementFakerConfig extends BaseFakerConfig {
76
- type: 'arrayElement'
77
- items: unknown[]
78
- }
79
-
80
- export interface ArrayElementsFakerConfig extends BaseFakerConfig {
81
- type: 'arrayElements'
82
- items: unknown[]
83
- count?: Count
84
- }
85
-
86
- export interface CallbackFakerConfig extends BaseFakerConfig {
22
+ export interface CallbackFakerWrapperConfig extends BaseFakerWrapperConfig {
87
23
  type: 'callback'
88
24
  callback: (...args: unknown[]) => any
89
25
  }
90
26
 
91
- export interface ArrayFakerConfig extends BaseFakerConfig {
27
+ export interface ArrayFakerWrapperConfig extends BaseFakerWrapperConfig {
92
28
  type: 'array'
93
- items: Faker<any>
29
+ items: FakerWrapper<any>
94
30
  count: Count
95
31
  }
96
32
 
97
- export interface ObjectFakerConfig<O extends Record<string, any> = Record<string, any>>
98
- extends BaseFakerConfig {
33
+ export interface ObjectFakerWrapperConfig<O extends Record<string, any> = Record<string, any>>
34
+ extends BaseFakerWrapperConfig {
99
35
  type: 'object'
100
36
  properties: {
101
- [_ in keyof O]: Faker<any> | any
37
+ [_ in keyof O]: FakerWrapper<any> | any
102
38
  }
103
39
  }
104
40
 
41
+ export interface InstanceFakerWrapperConfig extends BaseFakerWrapperConfig {
42
+ type: 'instance'
43
+ callback: () => unknown
44
+ args: unknown[]
45
+ }
46
+
105
47
  export type FakerConfig =
106
- | UuidFakerConfig
107
- | BooleanFakerConfig
108
- | WordsFakerConfig
109
- | NumberFakerConfig
110
- | UrlFakerConfig
111
- | FullNameFakerConfig
112
- | DateFakerConfig
113
- | PersonalNumberFakerConfig
114
- | RankFakerConfig
115
- | ArrayElementFakerConfig
116
- | ArrayElementsFakerConfig
117
- | CallbackFakerConfig
118
- | ArrayFakerConfig
119
- | ObjectFakerConfig
48
+ | CallbackFakerWrapperConfig
49
+ | ArrayFakerWrapperConfig
50
+ | ObjectFakerWrapperConfig
51
+ | InstanceFakerWrapperConfig
120
52
 
121
- export type ExtractFakerConfig<T extends FakerType> = Extract<FakerConfig, { type: T }>
53
+ export type ExtractFakerConfig<T extends FakerWrapperType> = Extract<FakerConfig, { type: T }>
@@ -1,153 +0,0 @@
1
- import { generate } from './generators'
2
- import {
3
- ArrayElementFakerConfig,
4
- ArrayElementsFakerConfig,
5
- ArrayFakerConfig,
6
- CallbackFakerConfig,
7
- ExtractFakerConfig,
8
- FakerType,
9
- NumberFakerConfig,
10
- ObjectFakerConfig,
11
- WordsFakerConfig,
12
- } from './types'
13
-
14
- export class Faker<T extends FakerType> {
15
- private readonly params: {
16
- config: ExtractFakerConfig<T>
17
- nullable: boolean
18
- nullableProbability: number
19
- }
20
-
21
- private constructor(config: ExtractFakerConfig<T>) {
22
- this.params = {
23
- config,
24
- nullable: false,
25
- nullableProbability: 0,
26
- }
27
- }
28
-
29
- public static uuid() {
30
- return new Faker<'uuid'>({
31
- type: 'uuid',
32
- })
33
- }
34
-
35
- public static boolean() {
36
- return new Faker<'boolean'>({
37
- type: 'boolean',
38
- })
39
- }
40
-
41
- public static words(params: Omit<WordsFakerConfig, 'type'> = {}) {
42
- return new Faker<'words'>({
43
- type: 'words',
44
- count: params?.count,
45
- })
46
- }
47
-
48
- public static number(params: Omit<NumberFakerConfig, 'type'> = {}) {
49
- return new Faker<'number'>({
50
- type: 'number',
51
- min: params?.min ?? 0,
52
- max: params?.max ?? 1000,
53
- })
54
- }
55
-
56
- public static url() {
57
- return new Faker<'url'>({
58
- type: 'url',
59
- })
60
- }
61
-
62
- public static date() {
63
- return new Faker<'date'>({
64
- type: 'date',
65
- })
66
- }
67
-
68
- public static fullName() {
69
- return new Faker<'fullName'>({
70
- type: 'fullName',
71
- })
72
- }
73
-
74
- public static personalNumber() {
75
- return new Faker<'personalNumber'>({
76
- type: 'personalNumber',
77
- })
78
- }
79
-
80
- public static rank() {
81
- return new Faker<'rank'>({
82
- type: 'rank',
83
- })
84
- }
85
-
86
- public static arrayElement(params: Omit<ArrayElementFakerConfig, 'type'>) {
87
- return new Faker<'arrayElement'>({
88
- type: 'arrayElement',
89
- items: params.items,
90
- })
91
- }
92
-
93
- public static arrayElements(params: Omit<ArrayElementsFakerConfig, 'type'>) {
94
- return new Faker<'arrayElements'>({
95
- type: 'arrayElements',
96
- items: params.items,
97
- count: params?.count,
98
- })
99
- }
100
-
101
- public static callback(callback: CallbackFakerConfig['callback']) {
102
- return new Faker<'callback'>({
103
- type: 'callback',
104
- callback,
105
- })
106
- }
107
-
108
- public static array(params: Omit<ArrayFakerConfig, 'type'>) {
109
- return new Faker<'array'>({
110
- type: 'array',
111
- items: params.items,
112
- count: params.count,
113
- })
114
- }
115
-
116
- public static object<O extends object = object>(params: Omit<ObjectFakerConfig<O>, 'type'>) {
117
- return new Faker<'object'>({
118
- type: 'object',
119
- properties: params.properties,
120
- })
121
- }
122
-
123
- // modifiers
124
- public nullable(probability: number = 0.5) {
125
- this.params.nullable = true
126
- this.params.nullableProbability = probability
127
-
128
- return this
129
- }
130
-
131
- // create methods
132
- private createSingle<U>(): U {
133
- return generate(this.params) as U
134
- }
135
-
136
- private createMultiple<U>(count: number): U[] {
137
- return Array(count)
138
- .fill(null)
139
- .map(() => this.createSingle<U>())
140
- }
141
-
142
- public create<U>(): U
143
-
144
- public create<U>(count: number): U[]
145
-
146
- public create<U>(count?: number): U | U[] {
147
- if (count === undefined) {
148
- return this.createSingle<U>()
149
- }
150
-
151
- return this.createMultiple<U>(count)
152
- }
153
- }
@@ -1,7 +0,0 @@
1
- import { faker } from '@faker-js/faker'
2
- import { ArrayElementFakerConfig } from '../types'
3
-
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- export const generateArrayElement = (config: ArrayElementFakerConfig) => {
6
- return faker.helpers.arrayElement(config.items)
7
- }
@@ -1,8 +0,0 @@
1
- import { faker } from '@faker-js/faker'
2
- import { makeCount } from '@/faker/utils'
3
- import { ArrayElementsFakerConfig } from '../types'
4
-
5
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
- export const generateArrayElements = (config: ArrayElementsFakerConfig) => {
7
- return faker.helpers.arrayElements(config.items, makeCount(config.count))
8
- }
@@ -1,7 +0,0 @@
1
- import { faker } from '@faker-js/faker'
2
- import { BooleanFakerConfig } from '../types'
3
-
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- export const generateBoolean = (config: BooleanFakerConfig) => {
6
- return faker.datatype.boolean()
7
- }
@@ -1,13 +0,0 @@
1
- import { faker } from '@faker-js/faker'
2
- import { DateFakerConfig } from '../types'
3
-
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- export const generateDate = (config: DateFakerConfig) => {
6
- const date = new Date(faker.date.anytime())
7
-
8
- const day = date.getDate()
9
- const month = date.getMonth() + 1
10
- const year = date.getFullYear()
11
-
12
- return `${day}.${month.toString().padStart(2, '0')}.${year}`
13
- }
@@ -1,11 +0,0 @@
1
- import { fakerRU } from '@faker-js/faker'
2
- import { FullNameFakerConfig } from '../types'
3
-
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- export const generateFullName = (config: FullNameFakerConfig) => {
6
- const firstName = fakerRU.person.firstName('male')
7
- const lastName = fakerRU.person.lastName('male')
8
- const middleName = fakerRU.person.middleName('male')
9
-
10
- return `${lastName} ${firstName} ${middleName}`
11
- }
@@ -1,9 +0,0 @@
1
- import { faker } from '@faker-js/faker'
2
- import { NumberFakerConfig } from '../types'
3
-
4
- export const generateNumber = (config: NumberFakerConfig) => {
5
- return faker.number.int({
6
- min: config.min,
7
- max: config.max,
8
- })
9
- }
@@ -1,12 +0,0 @@
1
- import { PersonalNumberFakerConfig } from '../types'
2
-
3
- const letters = ['Х', 'Э', 'ВЕ', 'Е']
4
- const digits = '0123456789'
5
-
6
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
7
- export const generatePersonalNumber = (config: PersonalNumberFakerConfig) => {
8
- return `${letters[Math.floor(Math.random() * letters.length)]}-${Array.from(
9
- { length: 6 },
10
- () => digits[Math.floor(Math.random() * digits.length)],
11
- ).join('')}`
12
- }
@@ -1,36 +0,0 @@
1
- import { RankFakerConfig } from '../types'
2
-
3
- const ranks = [
4
- 'рядовой',
5
- 'матрос',
6
- 'ефрейтор',
7
- 'старший матрос',
8
- 'младший сержант',
9
- 'старшина 2 статьи',
10
- 'сержант',
11
- 'старшина 3 статьи',
12
- 'старший сержант',
13
- 'главный старшина',
14
- 'старшина',
15
- 'главный корабельный старшина',
16
- 'прапорщик',
17
- 'мичман',
18
- 'старший прапорщик',
19
- 'старший мичман',
20
- 'младший лейтенант',
21
- 'лейтенант',
22
- 'старший лейтенант',
23
- 'капитан',
24
- 'капитан-лейтенант',
25
- 'майор',
26
- 'капитан 3 ранга',
27
- 'подполковник',
28
- 'капитан 2 ранга',
29
- 'полковник',
30
- 'капитан 1 ранга',
31
- ]
32
-
33
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
34
- export const generateRank = (config: RankFakerConfig) => {
35
- return ranks[Math.floor(Math.random() * ranks.length)]
36
- }
@@ -1,7 +0,0 @@
1
- import { faker } from '@faker-js/faker'
2
- import { UrlFakerConfig } from '../types'
3
-
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- export const generateUrl = (config: UrlFakerConfig) => {
6
- return faker.internet.url()
7
- }
@@ -1,7 +0,0 @@
1
- import { faker } from '@faker-js/faker'
2
- import { UuidFakerConfig } from '../types'
3
-
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- export const generateUuid = (config: UuidFakerConfig) => {
6
- return faker.string.uuid()
7
- }
@@ -1,10 +0,0 @@
1
- import { fakerRU } from '@faker-js/faker'
2
- import { makeCount } from '@/faker/utils'
3
- import { WordsFakerConfig } from '../types'
4
-
5
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
- export const generateWords = (config: WordsFakerConfig) => {
7
- return fakerRU.word.words({
8
- count: makeCount(config?.count),
9
- })
10
- }