@prismicio/mock 0.0.8 → 0.1.0

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.
Files changed (97) hide show
  1. package/dist/api/index.cjs +348 -236
  2. package/dist/api/index.cjs.map +1 -1
  3. package/dist/api/index.d.ts +52 -6
  4. package/dist/api/index.js +348 -236
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/index.cjs +893 -543
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +247 -73
  9. package/dist/index.js +885 -542
  10. package/dist/index.js.map +1 -1
  11. package/dist/model/index.cjs +398 -134
  12. package/dist/model/index.cjs.map +1 -1
  13. package/dist/model/index.d.ts +114 -28
  14. package/dist/model/index.js +398 -134
  15. package/dist/model/index.js.map +1 -1
  16. package/dist/value/index.cjs +598 -468
  17. package/dist/value/index.cjs.map +1 -1
  18. package/dist/value/index.d.ts +96 -40
  19. package/dist/value/index.js +598 -468
  20. package/dist/value/index.js.map +1 -1
  21. package/package.json +22 -20
  22. package/src/api/createAPIMockFactory.ts +56 -0
  23. package/src/api/query.ts +4 -4
  24. package/src/api/ref.ts +6 -6
  25. package/src/api/repository.ts +12 -14
  26. package/src/api/tags.ts +5 -2
  27. package/src/createMockFactory.ts +52 -0
  28. package/src/index.ts +15 -0
  29. package/src/lib/buildEmbedField.ts +28 -30
  30. package/src/lib/buildImageFieldImage.ts +19 -7
  31. package/src/lib/createFaker.ts +99 -22
  32. package/src/lib/generateCustomTypeId.ts +13 -5
  33. package/src/lib/generateFieldId.ts +13 -7
  34. package/src/lib/generateTags.ts +17 -16
  35. package/src/lib/getMockEmbedData.ts +45 -16
  36. package/src/lib/getMockImageData.ts +13 -5
  37. package/src/lib/lorem.ts +112 -0
  38. package/src/lib/valueForModel.ts +47 -30
  39. package/src/lib/valueForModelMap.ts +24 -4
  40. package/src/model/boolean.ts +6 -6
  41. package/src/model/buildMockGroupFieldMap.ts +5 -5
  42. package/src/model/color.ts +4 -4
  43. package/src/model/contentRelationship.ts +4 -4
  44. package/src/model/createModelMockFactory.ts +213 -0
  45. package/src/model/customType.ts +6 -6
  46. package/src/model/date.ts +4 -4
  47. package/src/model/embed.ts +4 -4
  48. package/src/model/geoPoint.ts +3 -3
  49. package/src/model/group.ts +7 -7
  50. package/src/model/image.ts +8 -12
  51. package/src/model/index.ts +2 -0
  52. package/src/model/integrationFields.ts +4 -4
  53. package/src/model/keyText.ts +4 -4
  54. package/src/model/link.ts +6 -6
  55. package/src/model/linkToMedia.ts +5 -5
  56. package/src/model/number.ts +4 -4
  57. package/src/model/richText.ts +8 -8
  58. package/src/model/select.ts +5 -5
  59. package/src/model/sharedSlice.ts +5 -5
  60. package/src/model/sharedSliceVariation.ts +10 -10
  61. package/src/model/slice.ts +7 -7
  62. package/src/model/sliceZone.ts +7 -4
  63. package/src/model/timestamp.ts +4 -4
  64. package/src/model/title.ts +7 -7
  65. package/src/model/uid.ts +4 -4
  66. package/src/types.ts +70 -31
  67. package/src/value/boolean.ts +4 -6
  68. package/src/value/color.ts +3 -3
  69. package/src/value/contentRelationship.ts +21 -18
  70. package/src/value/createValueMockFactory.ts +236 -0
  71. package/src/value/customType.ts +12 -12
  72. package/src/value/date.ts +6 -2
  73. package/src/value/embed.ts +23 -7
  74. package/src/value/geoPoint.ts +4 -6
  75. package/src/value/group.ts +6 -11
  76. package/src/value/image.ts +26 -18
  77. package/src/value/integrationFields.ts +12 -26
  78. package/src/value/keyText.ts +3 -5
  79. package/src/value/link.ts +11 -9
  80. package/src/value/linkToMedia.ts +9 -8
  81. package/src/value/number.ts +3 -3
  82. package/src/value/richText/embed.ts +6 -3
  83. package/src/value/richText/heading.ts +32 -27
  84. package/src/value/richText/image.ts +9 -8
  85. package/src/value/richText/index.ts +71 -48
  86. package/src/value/richText/list.ts +6 -10
  87. package/src/value/richText/oList.ts +6 -10
  88. package/src/value/richText/paragraph.ts +10 -6
  89. package/src/value/richText/preformatted.ts +11 -7
  90. package/src/value/select.ts +11 -7
  91. package/src/value/sharedSlice.ts +5 -5
  92. package/src/value/sharedSliceVariation.ts +11 -16
  93. package/src/value/slice.ts +11 -15
  94. package/src/value/sliceZone.ts +14 -18
  95. package/src/value/timestamp.ts +31 -18
  96. package/src/value/title.ts +7 -3
  97. package/src/value/uid.ts +6 -4
@@ -42,23 +42,23 @@ const mockModelFns = {
42
42
  export type BuildMockGroupFieldMapConfig = MockModelConfig;
43
43
 
44
44
  export const buildMockGroupFieldMap = (
45
- config: BuildMockGroupFieldMapConfig = {},
45
+ config: BuildMockGroupFieldMapConfig,
46
46
  ): GroupFieldModelMap => {
47
- const faker = createFaker(config.seed);
47
+ const faker = config.faker || createFaker(config.seed);
48
48
 
49
49
  const fields: GroupFieldModelMap = {};
50
50
 
51
- const fieldTypes = faker.random.arrayElements(
51
+ const fieldTypes = faker.randomElements(
52
52
  Object.keys(mockModelFns) as (keyof typeof mockModelFns)[],
53
53
  );
54
54
 
55
55
  for (const fieldType of fieldTypes) {
56
- const fieldId = generateFieldId({ seed: config.seed });
56
+ const fieldId = generateFieldId({ faker });
57
57
  const mockModelFn = mockModelFns[fieldType] as (
58
58
  config: MockModelConfig,
59
59
  ) => ValueOf<GroupFieldModelMap>;
60
60
 
61
- fields[fieldId] = mockModelFn({ seed: config.seed });
61
+ fields[fieldId] = mockModelFn({ faker });
62
62
  }
63
63
 
64
64
  return fields;
@@ -8,15 +8,15 @@ import { MockModelConfig } from "../types";
8
8
  export type MockColorModelConfig = MockModelConfig;
9
9
 
10
10
  export const color = (
11
- config: MockColorModelConfig = {},
11
+ config: MockColorModelConfig,
12
12
  ): prismicT.CustomTypeModelColorField => {
13
- const faker = createFaker(config.seed);
13
+ const faker = config.faker || createFaker(config.seed);
14
14
 
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Color,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
@@ -17,15 +17,15 @@ export const contentRelationship = <
17
17
  CustomTypeIDs extends string,
18
18
  Tags extends string,
19
19
  >(
20
- config: MockContentRelationshipModelConfig<CustomTypeIDs, Tags> = {},
20
+ config: MockContentRelationshipModelConfig<CustomTypeIDs, Tags>,
21
21
  ): prismicT.CustomTypeModelContentRelationshipField<CustomTypeIDs, Tags> => {
22
- const faker = createFaker(config.seed);
22
+ const faker = config.faker || createFaker(config.seed);
23
23
 
24
24
  return {
25
25
  type: prismicT.CustomTypeModelFieldType.Link,
26
26
  config: {
27
- label: changeCase.capitalCase(faker.company.bsNoun()),
28
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
27
+ label: changeCase.capitalCase(faker.word()),
28
+ placeholder: changeCase.sentenceCase(faker.words(3)),
29
29
  select: prismicT.CustomTypeModelLinkSelectType.Document,
30
30
  customtypes: config.customTypeIDs,
31
31
  tags: config.tags,
@@ -0,0 +1,213 @@
1
+ import * as prismicT from "@prismicio/types";
2
+
3
+ import { createFaker, Faker } from "../lib/createFaker";
4
+
5
+ import { GroupFieldModelMap, Seed, WithoutFakerConfig } from "../types";
6
+
7
+ import { boolean, MockBooleanModelConfig } from "./boolean";
8
+ import {
9
+ buildMockGroupFieldMap,
10
+ BuildMockGroupFieldMapConfig,
11
+ } from "./buildMockGroupFieldMap";
12
+ import { color, MockColorModelConfig } from "./color";
13
+ import {
14
+ contentRelationship,
15
+ MockContentRelationshipModelConfig,
16
+ } from "./contentRelationship";
17
+ import { customType, MockCustomTypeModelConfig } from "./customType";
18
+ import { date, MockDateModelConfig } from "./date";
19
+ import { embed, MockEmbedModelConfig } from "./embed";
20
+ import { geoPoint, MockGeoPointModelConfig } from "./geoPoint";
21
+ import { group, MockGroupModelConfig } from "./group";
22
+ import { image, MockImageModelConfig } from "./image";
23
+ import {
24
+ integrationFields,
25
+ MockIntegrationFieldsModelConfig,
26
+ } from "./integrationFields";
27
+ import { keyText, MockKeyTextModelConfig } from "./keyText";
28
+ import { link, MockLinkModelConfig } from "./link";
29
+ import { linkToMedia, MockLinkToMediaModelConfig } from "./linkToMedia";
30
+ import { number, MockNumberModelConfig } from "./number";
31
+ import { richText, MockRichTextModelConfig } from "./richText";
32
+ import { select, MockSelectModelConfig } from "./select";
33
+ import { sharedSlice, MockSharedSliceModelConfig } from "./sharedSlice";
34
+ import { sharedSliceChoice } from "./sharedSliceChoice";
35
+ import {
36
+ sharedSliceVariation,
37
+ MockSharedSliceVariationModelConfig,
38
+ } from "./sharedSliceVariation";
39
+ import { slice, MockSliceModelConfig } from "./slice";
40
+ import { sliceZone, MockSliceZoneModelConfig } from "./sliceZone";
41
+ import { timestamp, MockTimestampModelConfig } from "./timestamp";
42
+ import { title, MockTitleModelConfig } from "./title";
43
+ import { uid, MockUIDModelConfig } from "./uid";
44
+
45
+ export const createModelMockFactory = (
46
+ ...args: ConstructorParameters<typeof ModelMockFactory>
47
+ ): ModelMockFactory => {
48
+ return new ModelMockFactory(...args);
49
+ };
50
+
51
+ type ModelMockFactoryConfig =
52
+ | {
53
+ seed: Seed;
54
+ }
55
+ | {
56
+ faker: Faker;
57
+ };
58
+
59
+ export class ModelMockFactory {
60
+ private faker: Faker;
61
+
62
+ constructor(config: ModelMockFactoryConfig) {
63
+ this.faker = "faker" in config ? config.faker : createFaker(config.seed);
64
+ }
65
+
66
+ get seed() {
67
+ return this.faker.seed;
68
+ }
69
+
70
+ buildMockGroupFieldMap(
71
+ config?: WithoutFakerConfig<BuildMockGroupFieldMapConfig>,
72
+ ) {
73
+ return buildMockGroupFieldMap({ ...config, faker: this.faker });
74
+ }
75
+
76
+ boolean(config?: WithoutFakerConfig<MockBooleanModelConfig>) {
77
+ return boolean({ ...config, faker: this.faker });
78
+ }
79
+
80
+ color(config?: WithoutFakerConfig<MockColorModelConfig>) {
81
+ return color({ ...config, faker: this.faker });
82
+ }
83
+
84
+ contentRelationship<CustomTypeIDs extends string, Tags extends string>(
85
+ config?: WithoutFakerConfig<
86
+ MockContentRelationshipModelConfig<CustomTypeIDs, Tags>
87
+ >,
88
+ ) {
89
+ return contentRelationship({ ...config, faker: this.faker });
90
+ }
91
+
92
+ customType<
93
+ Definition extends
94
+ | prismicT.CustomTypeModelTab
95
+ | prismicT.CustomTypeModelDefinition,
96
+ >(config?: WithoutFakerConfig<MockCustomTypeModelConfig<Definition>>) {
97
+ return customType({ ...config, faker: this.faker });
98
+ }
99
+
100
+ date(config?: WithoutFakerConfig<MockDateModelConfig>) {
101
+ return date({ ...config, faker: this.faker });
102
+ }
103
+
104
+ embed(config?: WithoutFakerConfig<MockEmbedModelConfig>) {
105
+ return embed({ ...config, faker: this.faker });
106
+ }
107
+
108
+ geoPoint(config?: WithoutFakerConfig<MockGeoPointModelConfig>) {
109
+ return geoPoint({ ...config, faker: this.faker });
110
+ }
111
+
112
+ group<Fields extends GroupFieldModelMap>(
113
+ config?: WithoutFakerConfig<MockGroupModelConfig<Fields>>,
114
+ ) {
115
+ return group({ ...config, faker: this.faker });
116
+ }
117
+
118
+ image<ThumbnailNames extends string = string>(
119
+ config?: WithoutFakerConfig<MockImageModelConfig<ThumbnailNames>>,
120
+ ) {
121
+ return image({ ...config, faker: this.faker });
122
+ }
123
+
124
+ integrationFields(
125
+ config?: WithoutFakerConfig<MockIntegrationFieldsModelConfig>,
126
+ ) {
127
+ return integrationFields({ ...config, faker: this.faker });
128
+ }
129
+
130
+ keyText(config?: WithoutFakerConfig<MockKeyTextModelConfig>) {
131
+ return keyText({ ...config, faker: this.faker });
132
+ }
133
+
134
+ link<AllowTargetBlank extends boolean = boolean>(
135
+ config?: WithoutFakerConfig<MockLinkModelConfig<AllowTargetBlank>>,
136
+ ) {
137
+ return link({ ...config, faker: this.faker });
138
+ }
139
+
140
+ linkToMedia(config?: WithoutFakerConfig<MockLinkToMediaModelConfig>) {
141
+ return linkToMedia({ ...config, faker: this.faker });
142
+ }
143
+
144
+ number(config?: WithoutFakerConfig<MockNumberModelConfig>) {
145
+ return number({ ...config, faker: this.faker });
146
+ }
147
+
148
+ richText<WithMultipleBlocks extends boolean = boolean>(
149
+ config?: WithoutFakerConfig<MockRichTextModelConfig<WithMultipleBlocks>>,
150
+ ) {
151
+ return richText({ ...config, faker: this.faker });
152
+ }
153
+
154
+ select<Option extends string, DefaultOption extends Option>(
155
+ config?: WithoutFakerConfig<MockSelectModelConfig<Option, DefaultOption>>,
156
+ ) {
157
+ return select({ ...config, faker: this.faker });
158
+ }
159
+
160
+ sharedSlice<Variation extends prismicT.SharedSliceModelVariation>(
161
+ config?: WithoutFakerConfig<MockSharedSliceModelConfig<Variation>>,
162
+ ) {
163
+ return sharedSlice({ ...config, faker: this.faker });
164
+ }
165
+
166
+ sharedSliceChoice() {
167
+ return sharedSliceChoice();
168
+ }
169
+
170
+ sharedSliceVariation<
171
+ ID extends string,
172
+ PrimaryFields extends GroupFieldModelMap,
173
+ ItemsFields extends GroupFieldModelMap,
174
+ >(
175
+ config?: WithoutFakerConfig<
176
+ MockSharedSliceVariationModelConfig<ID, PrimaryFields, ItemsFields>
177
+ >,
178
+ ) {
179
+ return sharedSliceVariation({ ...config, faker: this.faker });
180
+ }
181
+
182
+ slice<
183
+ NonRepeatFields extends GroupFieldModelMap,
184
+ RepeatFields extends GroupFieldModelMap,
185
+ >(
186
+ config?: WithoutFakerConfig<
187
+ MockSliceModelConfig<NonRepeatFields, RepeatFields>
188
+ >,
189
+ ) {
190
+ return slice({ ...config, faker: this.faker });
191
+ }
192
+
193
+ sliceZone<
194
+ Slices extends Record<
195
+ string,
196
+ prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
197
+ >,
198
+ >(config?: WithoutFakerConfig<MockSliceZoneModelConfig<Slices>>) {
199
+ return sliceZone({ ...config, faker: this.faker });
200
+ }
201
+
202
+ timestamp(config?: WithoutFakerConfig<MockTimestampModelConfig>) {
203
+ return timestamp({ ...config, faker: this.faker });
204
+ }
205
+
206
+ title(config?: WithoutFakerConfig<MockTitleModelConfig>) {
207
+ return title({ ...config, faker: this.faker });
208
+ }
209
+
210
+ uid(config?: WithoutFakerConfig<MockUIDModelConfig>) {
211
+ return uid({ ...config, faker: this.faker });
212
+ }
213
+ }
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
5
5
 
6
6
  import { MockModelConfig } from "../types";
7
7
 
8
- type MockCustomTypeModelConfig<
8
+ export type MockCustomTypeModelConfig<
9
9
  Definition extends
10
10
  | prismicT.CustomTypeModelTab
11
11
  | prismicT.CustomTypeModelDefinition =
@@ -43,12 +43,12 @@ export const customType = <
43
43
  | prismicT.CustomTypeModelTab
44
44
  | prismicT.CustomTypeModelDefinition,
45
45
  >(
46
- config: MockCustomTypeModelConfig<Definition> = {},
46
+ config: MockCustomTypeModelConfig<Definition>,
47
47
  ): MockCustomTypeModel<Definition> => {
48
- const faker = createFaker(config.seed);
48
+ const faker = config.faker || createFaker(config.seed);
49
49
 
50
50
  let label: string =
51
- config.label || changeCase.capitalCase(faker.company.bsNoun());
51
+ config.label || changeCase.capitalCase(faker.words(faker.range(1, 2)));
52
52
  let id: string = config.id || changeCase.snakeCase(label);
53
53
 
54
54
  if (config.id && !config.label) {
@@ -68,8 +68,8 @@ export const customType = <
68
68
  return {
69
69
  id,
70
70
  label,
71
- status: config.status ?? faker.datatype.boolean(),
72
- repeatable: config.repeatable ?? faker.datatype.boolean(),
71
+ status: config.status ?? faker.boolean(),
72
+ repeatable: config.repeatable ?? faker.boolean(),
73
73
  json,
74
74
  } as MockCustomTypeModel<Definition>;
75
75
  };
package/src/model/date.ts CHANGED
@@ -8,15 +8,15 @@ import { MockModelConfig } from "../types";
8
8
  export type MockDateModelConfig = MockModelConfig;
9
9
 
10
10
  export const date = (
11
- config: MockDateModelConfig = {},
11
+ config: MockDateModelConfig,
12
12
  ): prismicT.CustomTypeModelDateField => {
13
- const faker = createFaker(config.seed);
13
+ const faker = config.faker || createFaker(config.seed);
14
14
 
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Date,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
@@ -8,15 +8,15 @@ import { MockModelConfig } from "../types";
8
8
  export type MockEmbedModelConfig = MockModelConfig;
9
9
 
10
10
  export const embed = (
11
- config: MockEmbedModelConfig = {},
11
+ config: MockEmbedModelConfig,
12
12
  ): prismicT.CustomTypeModelEmbedField => {
13
- const faker = createFaker(config.seed);
13
+ const faker = config.faker || createFaker(config.seed);
14
14
 
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Embed,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
@@ -8,14 +8,14 @@ import { MockModelConfig } from "../types";
8
8
  export type MockGeoPointModelConfig = MockModelConfig;
9
9
 
10
10
  export const geoPoint = (
11
- config: MockGeoPointModelConfig = {},
11
+ config: MockGeoPointModelConfig,
12
12
  ): prismicT.CustomTypeModelGeoPointField => {
13
- const faker = createFaker(config.seed);
13
+ const faker = config.faker || createFaker(config.seed);
14
14
 
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.GeoPoint,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
18
+ label: changeCase.capitalCase(faker.word()),
19
19
  },
20
20
  };
21
21
  };
@@ -5,20 +5,20 @@ import { createFaker } from "../lib/createFaker";
5
5
 
6
6
  import { GroupFieldModelMap, MockModelConfig } from "../types";
7
7
 
8
- type MockGroupModelConfig<Fields extends GroupFieldModelMap> = {
8
+ export type MockGroupModelConfig<Fields extends GroupFieldModelMap> = {
9
9
  fields?: Fields;
10
10
  } & MockModelConfig;
11
11
 
12
- export const group = <Fields extends GroupFieldModelMap>(
13
- config: MockGroupModelConfig<Fields> = {},
14
- ): prismicT.CustomTypeModelGroupField<Fields> => {
15
- const faker = createFaker(config.seed);
12
+ export function group<Fields extends GroupFieldModelMap>(
13
+ config: MockGroupModelConfig<Fields>,
14
+ ): prismicT.CustomTypeModelGroupField<Fields> {
15
+ const faker = config.faker || createFaker(config.seed);
16
16
 
17
17
  return {
18
18
  type: prismicT.CustomTypeModelFieldType.Group,
19
19
  config: {
20
- label: changeCase.capitalCase(faker.company.bsNoun()),
20
+ label: changeCase.capitalCase(faker.word()),
21
21
  fields: config.fields || ({} as Fields),
22
22
  },
23
23
  };
24
- };
24
+ }
@@ -5,35 +5,31 @@ import { createFaker } from "../lib/createFaker";
5
5
 
6
6
  import { MockModelConfig } from "../types";
7
7
 
8
- type MockImageModelConfig<ThumbnailNames extends string = string> = {
8
+ export type MockImageModelConfig<ThumbnailNames extends string = string> = {
9
9
  withConstraint?: boolean;
10
10
  thumbnailNames?: readonly ThumbnailNames[];
11
11
  } & MockModelConfig;
12
12
 
13
13
  export const image = <ThumbnailNames extends string = string>(
14
- config: MockImageModelConfig<ThumbnailNames> = {},
14
+ config: MockImageModelConfig<ThumbnailNames>,
15
15
  ): prismicT.CustomTypeModelImageField<ThumbnailNames> => {
16
- const faker = createFaker(config.seed);
16
+ const faker = config.faker || createFaker(config.seed);
17
17
 
18
18
  const thumbnails = (config.thumbnailNames || []).map((name) => {
19
19
  return {
20
20
  name,
21
- width: faker.datatype.number({ min: 500, max: 2000 }),
22
- height: faker.datatype.number({ min: 500, max: 2000 }),
21
+ width: faker.range(500, 2000),
22
+ height: faker.range(500, 2000),
23
23
  };
24
24
  });
25
25
 
26
26
  return {
27
27
  type: prismicT.CustomTypeModelFieldType.Image,
28
28
  config: {
29
- label: changeCase.capitalCase(faker.company.bsNoun()),
29
+ label: changeCase.capitalCase(faker.word()),
30
30
  constraint: {
31
- width: config.withConstraint
32
- ? faker.datatype.number({ min: 500, max: 2000 })
33
- : null,
34
- height: config.withConstraint
35
- ? faker.datatype.number({ min: 500, max: 2000 })
36
- : null,
31
+ width: config.withConstraint ? faker.range(500, 2000) : null,
32
+ height: config.withConstraint ? faker.range(500, 2000) : null,
37
33
  },
38
34
  thumbnails,
39
35
  },
@@ -24,3 +24,5 @@ export { title } from "./title";
24
24
  export { uid } from "./uid";
25
25
 
26
26
  export { buildMockGroupFieldMap } from "./buildMockGroupFieldMap";
27
+
28
+ export { createModelMockFactory as createModelFactory } from "./createModelMockFactory";
@@ -10,15 +10,15 @@ export type MockIntegrationFieldsModelConfig = {
10
10
  } & MockModelConfig;
11
11
 
12
12
  export const integrationFields = (
13
- config: MockIntegrationFieldsModelConfig = {},
13
+ config: MockIntegrationFieldsModelConfig,
14
14
  ): prismicT.CustomTypeModelIntegrationFieldsField => {
15
- const faker = createFaker(config.seed);
15
+ const faker = config.faker || createFaker(config.seed);
16
16
 
17
17
  return {
18
18
  type: prismicT.CustomTypeModelFieldType.IntegrationFields,
19
19
  config: {
20
- label: changeCase.capitalCase(faker.company.bsNoun()),
21
- catalog: config.catalog || changeCase.snakeCase(faker.lorem.words(4)),
20
+ label: changeCase.capitalCase(faker.word()),
21
+ catalog: config.catalog || changeCase.snakeCase(faker.words(2)),
22
22
  },
23
23
  };
24
24
  };
@@ -8,15 +8,15 @@ import { MockModelConfig } from "../types";
8
8
  export type MockKeyTextModelConfig = MockModelConfig;
9
9
 
10
10
  export const keyText = (
11
- config: MockKeyTextModelConfig = {},
11
+ config: MockKeyTextModelConfig,
12
12
  ): prismicT.CustomTypeModelKeyTextField => {
13
- const faker = createFaker(config.seed);
13
+ const faker = config.faker || createFaker(config.seed);
14
14
 
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Text,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
package/src/model/link.ts CHANGED
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
5
5
 
6
6
  import { MockModelConfig } from "../types";
7
7
 
8
- type MockLinkModel<AllowTargetBlank extends boolean = boolean> =
8
+ export type MockLinkModel<AllowTargetBlank extends boolean = boolean> =
9
9
  prismicT.CustomTypeModelLinkField & {
10
10
  config: AllowTargetBlank extends true
11
11
  ? {
@@ -21,20 +21,20 @@ export type MockLinkModelConfig<AllowTargetBlank extends boolean = boolean> = {
21
21
  } & MockModelConfig;
22
22
 
23
23
  export const link = <AllowTargetBlank extends boolean = boolean>(
24
- config: MockLinkModelConfig<AllowTargetBlank> = {},
24
+ config: MockLinkModelConfig<AllowTargetBlank>,
25
25
  ): MockLinkModel<AllowTargetBlank> => {
26
- const faker = createFaker(config.seed);
26
+ const faker = config.faker || createFaker(config.seed);
27
27
 
28
28
  return {
29
29
  type: prismicT.CustomTypeModelFieldType.Link,
30
30
  config: {
31
- label: changeCase.capitalCase(faker.company.bsNoun()),
32
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
31
+ label: changeCase.capitalCase(faker.word()),
32
+ placeholder: changeCase.sentenceCase(faker.words(3)),
33
33
  select: null,
34
34
  allowTargetBlank:
35
35
  ("allowTargetBlank" in config
36
36
  ? config.allowTargetBlank
37
- : faker.datatype.boolean()) || undefined,
37
+ : faker.boolean()) || undefined,
38
38
  },
39
39
  } as MockLinkModel<AllowTargetBlank>;
40
40
  };
@@ -5,18 +5,18 @@ import { createFaker } from "../lib/createFaker";
5
5
 
6
6
  import { MockModelConfig } from "../types";
7
7
 
8
- export type MockLinkTomediaModelConfig = MockModelConfig;
8
+ export type MockLinkToMediaModelConfig = MockModelConfig;
9
9
 
10
10
  export const linkToMedia = (
11
- config: MockLinkTomediaModelConfig = {},
11
+ config: MockLinkToMediaModelConfig,
12
12
  ): prismicT.CustomTypeModelLinkToMediaField => {
13
- const faker = createFaker(config.seed);
13
+ const faker = config.faker || createFaker(config.seed);
14
14
 
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Link,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  select: prismicT.CustomTypeModelLinkSelectType.Media,
21
21
  },
22
22
  };
@@ -8,15 +8,15 @@ import { MockModelConfig } from "../types";
8
8
  export type MockNumberModelConfig = MockModelConfig;
9
9
 
10
10
  export const number = (
11
- config: MockNumberModelConfig = {},
11
+ config: MockNumberModelConfig,
12
12
  ): prismicT.CustomTypeModelNumberField => {
13
- const faker = createFaker(config.seed);
13
+ const faker = config.faker || createFaker(config.seed);
14
14
 
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Number,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
@@ -12,14 +12,14 @@ export type MockRichTextModelConfig<
12
12
  } & MockModelConfig;
13
13
 
14
14
  export const richText = <WithMultipleBlocks extends boolean = boolean>(
15
- config: MockRichTextModelConfig<WithMultipleBlocks> = {},
15
+ config: MockRichTextModelConfig<WithMultipleBlocks>,
16
16
  ): WithMultipleBlocks extends true
17
17
  ? prismicT.CustomTypeModelRichTextMultiField
18
18
  : prismicT.CustomTypeModelRichTextSingleField => {
19
- const faker = createFaker(config.seed);
19
+ const faker = config.faker || createFaker(config.seed);
20
20
 
21
- const blockTypes = faker.random
22
- .arrayElements([
21
+ const blockTypes = faker
22
+ .randomElements([
23
23
  prismicT.RichTextNodeType.heading1,
24
24
  prismicT.RichTextNodeType.heading2,
25
25
  prismicT.RichTextNodeType.heading3,
@@ -39,16 +39,16 @@ export const richText = <WithMultipleBlocks extends boolean = boolean>(
39
39
  .join(",");
40
40
 
41
41
  const blockTypeConfig =
42
- config.withMultipleBlocks ?? faker.datatype.boolean()
42
+ config.withMultipleBlocks ?? faker.boolean()
43
43
  ? { multi: blockTypes }
44
44
  : { single: blockTypes };
45
45
 
46
46
  return {
47
47
  type: prismicT.CustomTypeModelFieldType.StructuredText,
48
48
  config: {
49
- label: changeCase.capitalCase(faker.company.bsNoun()),
50
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
51
- allowTargetBlank: faker.datatype.boolean() ? true : undefined,
49
+ label: changeCase.capitalCase(faker.word()),
50
+ placeholder: changeCase.sentenceCase(faker.words(3)),
51
+ allowTargetBlank: faker.boolean() ? true : undefined,
52
52
  ...blockTypeConfig,
53
53
  },
54
54
  } as WithMultipleBlocks extends true
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
5
5
 
6
6
  import { MockModelConfig } from "../types";
7
7
 
8
- type MockSelectModelConfig<
8
+ export type MockSelectModelConfig<
9
9
  Option extends string = string,
10
10
  DefaultOption extends Option = Option,
11
11
  > = {
@@ -14,15 +14,15 @@ type MockSelectModelConfig<
14
14
  } & MockModelConfig;
15
15
 
16
16
  export const select = <Option extends string, DefaultOption extends Option>(
17
- config: MockSelectModelConfig<Option, DefaultOption> = {},
17
+ config: MockSelectModelConfig<Option, DefaultOption>,
18
18
  ): prismicT.CustomTypeModelSelectField<Option, DefaultOption> => {
19
- const faker = createFaker(config.seed);
19
+ const faker = config.faker || createFaker(config.seed);
20
20
 
21
21
  return {
22
22
  type: prismicT.CustomTypeModelFieldType.Select,
23
23
  config: {
24
- label: changeCase.capitalCase(faker.company.bsNoun()),
25
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
24
+ label: changeCase.capitalCase(faker.word()),
25
+ placeholder: changeCase.sentenceCase(faker.words(3)),
26
26
  options: config.options || [],
27
27
  default_value: config.defaultValue || undefined,
28
28
  },