@prismicio/mock 0.0.9 → 0.1.1

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 (96) hide show
  1. package/dist/api/index.cjs +153 -149
  2. package/dist/api/index.cjs.map +1 -1
  3. package/dist/api/index.d.ts +51 -5
  4. package/dist/api/index.js +153 -149
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/index.cjs +609 -357
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +240 -70
  9. package/dist/index.js +602 -358
  10. package/dist/index.js.map +1 -1
  11. package/dist/model/index.cjs +236 -66
  12. package/dist/model/index.cjs.map +1 -1
  13. package/dist/model/index.d.ts +113 -27
  14. package/dist/model/index.js +236 -66
  15. package/dist/model/index.js.map +1 -1
  16. package/dist/value/index.cjs +347 -315
  17. package/dist/value/index.cjs.map +1 -1
  18. package/dist/value/index.d.ts +90 -38
  19. package/dist/value/index.js +347 -315
  20. package/dist/value/index.js.map +1 -1
  21. package/package.json +14 -15
  22. package/src/api/createAPIMockFactory.ts +56 -0
  23. package/src/api/query.ts +2 -2
  24. package/src/api/ref.ts +3 -3
  25. package/src/api/repository.ts +7 -9
  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 +13 -4
  30. package/src/lib/buildImageFieldImage.ts +16 -5
  31. package/src/lib/createFaker.ts +14 -15
  32. package/src/lib/generateCustomTypeId.ts +12 -4
  33. package/src/lib/generateFieldId.ts +12 -4
  34. package/src/lib/generateTags.ts +13 -4
  35. package/src/lib/getMockEmbedData.ts +12 -4
  36. package/src/lib/getMockImageData.ts +12 -4
  37. package/src/lib/valueForModel.ts +47 -30
  38. package/src/lib/valueForModelMap.ts +24 -4
  39. package/src/model/boolean.ts +5 -5
  40. package/src/model/buildMockGroupFieldMap.ts +4 -4
  41. package/src/model/color.ts +2 -2
  42. package/src/model/contentRelationship.ts +2 -2
  43. package/src/model/createModelMockFactory.ts +213 -0
  44. package/src/model/customType.ts +3 -3
  45. package/src/model/date.ts +2 -2
  46. package/src/model/embed.ts +2 -2
  47. package/src/model/geoPoint.ts +2 -2
  48. package/src/model/group.ts +6 -6
  49. package/src/model/image.ts +3 -3
  50. package/src/model/index.ts +2 -0
  51. package/src/model/integrationFields.ts +2 -2
  52. package/src/model/keyText.ts +2 -2
  53. package/src/model/link.ts +3 -3
  54. package/src/model/linkToMedia.ts +3 -3
  55. package/src/model/number.ts +2 -2
  56. package/src/model/richText.ts +2 -2
  57. package/src/model/select.ts +3 -3
  58. package/src/model/sharedSlice.ts +3 -3
  59. package/src/model/sharedSliceVariation.ts +6 -6
  60. package/src/model/slice.ts +3 -3
  61. package/src/model/sliceZone.ts +7 -4
  62. package/src/model/timestamp.ts +2 -2
  63. package/src/model/title.ts +2 -2
  64. package/src/model/uid.ts +2 -2
  65. package/src/types.ts +67 -25
  66. package/src/value/boolean.ts +3 -5
  67. package/src/value/color.ts +2 -2
  68. package/src/value/contentRelationship.ts +18 -15
  69. package/src/value/createValueMockFactory.ts +236 -0
  70. package/src/value/customType.ts +7 -7
  71. package/src/value/date.ts +6 -2
  72. package/src/value/embed.ts +6 -3
  73. package/src/value/geoPoint.ts +2 -2
  74. package/src/value/group.ts +5 -5
  75. package/src/value/image.ts +26 -18
  76. package/src/value/integrationFields.ts +12 -26
  77. package/src/value/keyText.ts +2 -2
  78. package/src/value/link.ts +9 -7
  79. package/src/value/linkToMedia.ts +2 -2
  80. package/src/value/number.ts +2 -2
  81. package/src/value/richText/embed.ts +6 -3
  82. package/src/value/richText/heading.ts +29 -17
  83. package/src/value/richText/image.ts +6 -3
  84. package/src/value/richText/index.ts +71 -43
  85. package/src/value/richText/list.ts +2 -2
  86. package/src/value/richText/oList.ts +2 -2
  87. package/src/value/richText/paragraph.ts +2 -2
  88. package/src/value/richText/preformatted.ts +2 -2
  89. package/src/value/select.ts +10 -6
  90. package/src/value/sharedSlice.ts +4 -4
  91. package/src/value/sharedSliceVariation.ts +9 -10
  92. package/src/value/slice.ts +9 -9
  93. package/src/value/sliceZone.ts +10 -8
  94. package/src/value/timestamp.ts +2 -2
  95. package/src/value/title.ts +7 -3
  96. package/src/value/uid.ts +5 -3
@@ -1,27 +1,35 @@
1
1
  import * as prismicT from "@prismicio/types";
2
2
 
3
- import {
4
- MockValueConfig,
5
- MockValueConfigForModel,
6
- ModelValue,
7
- SetRequired,
8
- } from "../types";
3
+ import { MockValueConfigForModel, ModelValue, Seed } from "../types";
4
+ import * as value from "../value";
9
5
 
10
- type ValueForModelConfig<Model extends prismicT.CustomTypeModelField> = {
11
- config?: Omit<MockValueConfigForModel<Model>, "seed" | "model">;
12
- } & SetRequired<MockValueConfig<Model>, "model">;
6
+ import { createFaker, Faker } from "./createFaker";
13
7
 
14
- import * as value from "../value";
8
+ type ValueForModelConfig<Model extends prismicT.CustomTypeModelField> = {
9
+ model: Model;
10
+ config?: Omit<MockValueConfigForModel<Model>, "faker" | "seed" | "model">;
11
+ } & (
12
+ | {
13
+ seed: Seed;
14
+ faker?: never;
15
+ }
16
+ | {
17
+ faker: Faker;
18
+ seed?: never;
19
+ }
20
+ );
15
21
 
16
22
  export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
17
23
  config: ValueForModelConfig<Model>,
18
24
  ): ModelValue<Model> => {
25
+ const faker = config.faker || createFaker(config.seed);
26
+
19
27
  const model = config.model;
20
28
 
21
29
  switch (model.type) {
22
30
  case prismicT.CustomTypeModelFieldType.Boolean: {
23
31
  return value.boolean({
24
- seed: config.seed,
32
+ faker,
25
33
  model,
26
34
  ...config.config,
27
35
  }) as ModelValue<Model>;
@@ -29,17 +37,17 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
29
37
 
30
38
  case prismicT.CustomTypeModelFieldType.Color: {
31
39
  return value.color({
32
- seed: config.seed,
40
+ faker,
33
41
  model,
34
42
  ...config.config,
35
43
  }) as ModelValue<Model>;
36
44
  }
37
45
 
38
46
  case prismicT.CustomTypeModelFieldType.Link: {
39
- switch (model.config.select) {
47
+ switch (model.config?.select) {
40
48
  case prismicT.CustomTypeModelLinkSelectType.Document: {
41
49
  return value.contentRelationship({
42
- seed: config.seed,
50
+ faker,
43
51
  model: model as prismicT.CustomTypeModelContentRelationshipField,
44
52
  ...config.config,
45
53
  }) as ModelValue<Model>;
@@ -47,7 +55,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
47
55
 
48
56
  case prismicT.CustomTypeModelLinkSelectType.Media: {
49
57
  return value.linkToMedia({
50
- seed: config.seed,
58
+ faker,
51
59
  model: model as prismicT.CustomTypeModelLinkToMediaField,
52
60
  ...config.config,
53
61
  }) as ModelValue<Model>;
@@ -55,7 +63,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
55
63
 
56
64
  default: {
57
65
  return value.link({
58
- seed: config.seed,
66
+ faker,
59
67
  model: model as prismicT.CustomTypeModelLinkField,
60
68
  ...config.config,
61
69
  }) as ModelValue<Model>;
@@ -65,7 +73,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
65
73
 
66
74
  case prismicT.CustomTypeModelFieldType.Date: {
67
75
  return value.date({
68
- seed: config.seed,
76
+ faker,
69
77
  model,
70
78
  ...config.config,
71
79
  }) as ModelValue<Model>;
@@ -73,7 +81,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
73
81
 
74
82
  case prismicT.CustomTypeModelFieldType.Embed: {
75
83
  return value.embed({
76
- seed: config.seed,
84
+ faker,
77
85
  model,
78
86
  ...config.config,
79
87
  }) as ModelValue<Model>;
@@ -81,7 +89,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
81
89
 
82
90
  case prismicT.CustomTypeModelFieldType.GeoPoint: {
83
91
  return value.geoPoint({
84
- seed: config.seed,
92
+ faker,
85
93
  model,
86
94
  ...config.config,
87
95
  }) as ModelValue<Model>;
@@ -89,7 +97,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
89
97
 
90
98
  case prismicT.CustomTypeModelFieldType.Image: {
91
99
  return value.image({
92
- seed: config.seed,
100
+ faker,
93
101
  model,
94
102
  ...config.config,
95
103
  }) as ModelValue<Model>;
@@ -97,7 +105,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
97
105
 
98
106
  case prismicT.CustomTypeModelFieldType.Text: {
99
107
  return value.keyText({
100
- seed: config.seed,
108
+ faker,
101
109
  model,
102
110
  ...config.config,
103
111
  }) as ModelValue<Model>;
@@ -105,7 +113,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
105
113
 
106
114
  case prismicT.CustomTypeModelFieldType.Number: {
107
115
  return value.number({
108
- seed: config.seed,
116
+ faker,
109
117
  model,
110
118
  ...config.config,
111
119
  }) as ModelValue<Model>;
@@ -113,7 +121,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
113
121
 
114
122
  case prismicT.CustomTypeModelFieldType.Select: {
115
123
  return value.select({
116
- seed: config.seed,
124
+ faker,
117
125
  model,
118
126
  ...config.config,
119
127
  }) as ModelValue<Model>;
@@ -121,7 +129,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
121
129
 
122
130
  case prismicT.CustomTypeModelFieldType.Timestamp: {
123
131
  return value.timestamp({
124
- seed: config.seed,
132
+ faker,
125
133
  model,
126
134
  ...config.config,
127
135
  }) as ModelValue<Model>;
@@ -129,19 +137,21 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
129
137
 
130
138
  case prismicT.CustomTypeModelFieldType.StructuredText: {
131
139
  if (
140
+ model.config &&
132
141
  "single" in model.config &&
142
+ model.config.single &&
133
143
  model.config.single
134
144
  .split(",")
135
145
  .every((element) => /heading[1-6]/.test(element.trim()))
136
146
  ) {
137
147
  return value.title({
138
- seed: config.seed,
148
+ faker,
139
149
  model: model as prismicT.CustomTypeModelTitleField,
140
150
  ...config.config,
141
151
  }) as ModelValue<Model>;
142
152
  } else {
143
153
  return value.richText({
144
- seed: config.seed,
154
+ faker,
145
155
  model,
146
156
  ...config.config,
147
157
  }) as ModelValue<Model>;
@@ -150,7 +160,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
150
160
 
151
161
  case prismicT.CustomTypeModelFieldType.IntegrationFields: {
152
162
  return value.integrationFields({
153
- seed: config.seed,
163
+ faker,
154
164
  model,
155
165
  ...config.config,
156
166
  }) as ModelValue<Model>;
@@ -158,7 +168,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
158
168
 
159
169
  case prismicT.CustomTypeModelFieldType.UID: {
160
170
  return value.uid({
161
- seed: config.seed,
171
+ faker,
162
172
  model,
163
173
  ...config.config,
164
174
  }) as ModelValue<Model>;
@@ -166,18 +176,25 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
166
176
 
167
177
  case prismicT.CustomTypeModelFieldType.Group: {
168
178
  return value.group({
169
- seed: config.seed,
179
+ faker,
170
180
  model,
171
181
  ...config.config,
172
182
  }) as ModelValue<Model>;
173
183
  }
174
184
 
185
+ case prismicT.CustomTypeModelFieldType.LegacySlices:
175
186
  case prismicT.CustomTypeModelFieldType.Slices: {
176
187
  return value.sliceZone({
177
- seed: config.seed,
188
+ faker,
178
189
  model,
179
190
  ...config.config,
180
191
  }) as ModelValue<Model>;
181
192
  }
193
+
194
+ default: {
195
+ throw new Error(
196
+ `The "${model.type}" field type is not supported in @prismicio/mock.`,
197
+ );
198
+ }
182
199
  }
183
200
  };
@@ -1,6 +1,6 @@
1
1
  import * as prismicT from "@prismicio/types";
2
2
 
3
- import { MockValueConfig, ModelValue, ModelValueMap } from "../types";
3
+ import { ModelValue, ModelValueMap, Seed } from "../types";
4
4
  import {
5
5
  MockBooleanValueConfig,
6
6
  MockColorValueConfig,
@@ -24,6 +24,7 @@ import {
24
24
  } from "../value";
25
25
 
26
26
  import { valueForModel } from "./valueForModel";
27
+ import { createFaker, Faker } from "./createFaker";
27
28
 
28
29
  const getValueConfigType = <Model extends prismicT.CustomTypeModelField>(
29
30
  model: Model,
@@ -51,7 +52,7 @@ const getValueConfigType = <Model extends prismicT.CustomTypeModelField>(
51
52
  return "image";
52
53
 
53
54
  case prismicT.CustomTypeModelFieldType.Link: {
54
- switch (model.config.select) {
55
+ switch (model.config?.select) {
55
56
  case prismicT.CustomTypeModelLinkSelectType.Document:
56
57
  return "contentRelationship";
57
58
  case prismicT.CustomTypeModelLinkSelectType.Media:
@@ -69,7 +70,9 @@ const getValueConfigType = <Model extends prismicT.CustomTypeModelField>(
69
70
 
70
71
  case prismicT.CustomTypeModelFieldType.StructuredText: {
71
72
  if (
73
+ model.config &&
72
74
  "single" in model.config &&
75
+ model.config.single &&
73
76
  model.config.single
74
77
  .split(",")
75
78
  .every((element) => /heading{1,6}/.test(element.trim()))
@@ -94,6 +97,12 @@ const getValueConfigType = <Model extends prismicT.CustomTypeModelField>(
94
97
 
95
98
  case prismicT.CustomTypeModelFieldType.Slices:
96
99
  return "sliceZone";
100
+
101
+ default: {
102
+ throw new Error(
103
+ `The "${model.type}" field type is not supported in @prismicio/mock.`,
104
+ );
105
+ }
97
106
  }
98
107
  };
99
108
 
@@ -124,13 +133,24 @@ type ValueForModelMapConfig<
124
133
  > = {
125
134
  map: ModelMap;
126
135
  configs?: ValueForModelMapConfigs;
127
- } & Omit<MockValueConfig, "model">;
136
+ } & (
137
+ | {
138
+ seed: Seed;
139
+ faker?: never;
140
+ }
141
+ | {
142
+ faker: Faker;
143
+ seed?: never;
144
+ }
145
+ );
128
146
 
129
147
  export const valueForModelMap = <
130
148
  ModelMap extends Record<string, prismicT.CustomTypeModelField>,
131
149
  >(
132
150
  config: ValueForModelMapConfig<ModelMap>,
133
151
  ): ModelValueMap<ModelMap> => {
152
+ const faker = config.faker || createFaker(config.seed);
153
+
134
154
  const result = {} as ModelValueMap<ModelMap>;
135
155
 
136
156
  for (const fieldId in config.map) {
@@ -139,7 +159,7 @@ export const valueForModelMap = <
139
159
  const fieldConfig = config.configs?.[fieldConfigType];
140
160
 
141
161
  result[fieldId] = valueForModel({
142
- seed: config.seed,
162
+ faker,
143
163
  model: fieldModel as prismicT.CustomTypeModelField,
144
164
  config: fieldConfig,
145
165
  }) as ModelValue<typeof fieldModel>;
@@ -7,10 +7,10 @@ import { MockModelConfig } from "../types";
7
7
 
8
8
  export type MockBooleanModelConfig = MockModelConfig;
9
9
 
10
- export const boolean = (
11
- config: MockBooleanModelConfig = {},
12
- ): prismicT.CustomTypeModelBooleanField => {
13
- const faker = createFaker(config.seed);
10
+ export function boolean(
11
+ config: MockBooleanModelConfig,
12
+ ): prismicT.CustomTypeModelBooleanField {
13
+ const faker = config.faker || createFaker(config.seed);
14
14
 
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Boolean,
@@ -18,4 +18,4 @@ export const boolean = (
18
18
  label: changeCase.capitalCase(faker.word()),
19
19
  },
20
20
  };
21
- };
21
+ }
@@ -42,9 +42,9 @@ 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
 
@@ -53,12 +53,12 @@ export const buildMockGroupFieldMap = (
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,9 +8,9 @@ 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,9 +17,9 @@ 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,
@@ -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,9 +43,9 @@ 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
51
  config.label || changeCase.capitalCase(faker.words(faker.range(1, 2)));
package/src/model/date.ts CHANGED
@@ -8,9 +8,9 @@ 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,
@@ -8,9 +8,9 @@ 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,
@@ -8,9 +8,9 @@ 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,
@@ -5,14 +5,14 @@ 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,
@@ -21,4 +21,4 @@ export const group = <Fields extends GroupFieldModelMap>(
21
21
  fields: config.fields || ({} as Fields),
22
22
  },
23
23
  };
24
- };
24
+ }