@prismicio/mock 0.0.3 → 0.0.7

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 (78) hide show
  1. package/README.md +4 -1
  2. package/dist/api/index.cjs +561 -0
  3. package/dist/api/index.cjs.map +1 -0
  4. package/dist/api/index.d.ts +36 -0
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/index.js +561 -0
  7. package/dist/api/index.js.map +1 -0
  8. package/dist/index.cjs +672 -644
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.ts +228 -262
  11. package/dist/{index.mjs → index.js} +663 -634
  12. package/dist/index.js.map +1 -0
  13. package/dist/model/index.cjs +163 -203
  14. package/dist/model/index.cjs.map +1 -0
  15. package/dist/model/index.d.ts +70 -96
  16. package/dist/model/index.d.ts.map +1 -0
  17. package/dist/model/index.js +462 -0
  18. package/dist/model/index.js.map +1 -0
  19. package/dist/value/index.cjs +284 -499
  20. package/dist/value/index.cjs.map +1 -0
  21. package/dist/value/index.d.ts +60 -120
  22. package/dist/value/index.d.ts.map +1 -0
  23. package/dist/value/{index.mjs → index.js} +447 -608
  24. package/dist/value/index.js.map +1 -0
  25. package/package.json +25 -20
  26. package/src/api/index.ts +11 -0
  27. package/src/api/query.ts +38 -0
  28. package/src/api/ref.ts +41 -0
  29. package/src/api/repository.ts +54 -0
  30. package/src/api/tags.ts +15 -0
  31. package/src/constants.ts +3 -1
  32. package/src/index.ts +1 -0
  33. package/src/lib/buildAlternativeLanguage.ts +18 -0
  34. package/src/lib/buildContentRelationshipField.ts +12 -5
  35. package/src/lib/buildEmbedField.ts +1 -1
  36. package/src/lib/buildImageFieldImage.ts +48 -0
  37. package/src/lib/createFaker.ts +19 -10
  38. package/src/lib/generateTags.ts +10 -2
  39. package/src/lib/valueForModelMap.ts +2 -2
  40. package/src/model/buildMockGroupFieldMap.ts +65 -0
  41. package/src/model/contentRelationship.ts +14 -21
  42. package/src/model/customType.ts +49 -48
  43. package/src/model/group.ts +8 -15
  44. package/src/model/image.ts +13 -13
  45. package/src/model/index.ts +2 -0
  46. package/src/model/select.ts +11 -16
  47. package/src/model/sharedSlice.ts +23 -30
  48. package/src/model/sharedSliceVariation.ts +33 -21
  49. package/src/model/slice.ts +15 -19
  50. package/src/model/sliceZone.ts +25 -42
  51. package/src/types.ts +50 -15
  52. package/src/value/color.ts +16 -6
  53. package/src/value/contentRelationship.ts +52 -36
  54. package/src/value/customType.ts +27 -4
  55. package/src/value/date.ts +25 -9
  56. package/src/value/embed.ts +18 -6
  57. package/src/value/geoPoint.ts +21 -9
  58. package/src/value/group.ts +7 -27
  59. package/src/value/image.ts +22 -9
  60. package/src/value/integrationFields.ts +26 -14
  61. package/src/value/keyText.ts +18 -6
  62. package/src/value/link.ts +33 -34
  63. package/src/value/linkToMedia.ts +15 -20
  64. package/src/value/number.ts +16 -6
  65. package/src/value/richText/heading.ts +7 -7
  66. package/src/value/richText/image.ts +6 -2
  67. package/src/value/richText/index.ts +1 -1
  68. package/src/value/select.ts +23 -8
  69. package/src/value/sharedSlice.ts +2 -2
  70. package/src/value/sharedSliceVariation.ts +6 -34
  71. package/src/value/slice.ts +5 -30
  72. package/src/value/sliceZone.ts +44 -60
  73. package/src/value/timestamp.ts +19 -6
  74. package/src/value/title.ts +1 -1
  75. package/src/value/uid.ts +1 -1
  76. package/dist/model/index.mjs +0 -448
  77. package/src/lib/buildImageField.ts +0 -34
  78. package/src/lib/buildMockGroupFieldMap.ts +0 -84
@@ -10,26 +10,11 @@ import * as modelGen from "../model";
10
10
  import { slice } from "./slice";
11
11
  import { sharedSlice } from "./sharedSlice";
12
12
 
13
- const patterns = {
14
- short: {
15
- minItems: 1,
16
- maxItems: 3,
17
- },
18
- medium: {
19
- minItems: 3,
20
- maxItems: 6,
21
- },
22
- long: {
23
- minItems: 6,
24
- maxItems: 12,
25
- },
26
- } as const;
27
-
28
13
  export type MockSliceZoneValueConfig<
29
14
  Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
30
15
  > = {
31
16
  sharedSliceModels?: prismicT.SharedSliceModel[];
32
- pattern?: keyof typeof patterns;
17
+ itemsCount?: number;
33
18
  primaryFieldConfigs?: ValueForModelMapConfigs;
34
19
  itemsFieldConfigs?: ValueForModelMapConfigs;
35
20
  } & MockValueConfig<Model>;
@@ -43,57 +28,56 @@ export const sliceZone = <
43
28
 
44
29
  const model = config.model || modelGen.sliceZone({ seed: config.seed });
45
30
 
46
- const patternKey =
47
- config.pattern ||
48
- faker.random.arrayElement(
49
- Object.keys(patterns) as (keyof typeof patterns)[],
50
- );
51
- const pattern = patterns[patternKey];
52
-
53
- const itemsCount = faker.datatype.number({
54
- min: pattern.minItems,
55
- max: pattern.maxItems,
56
- });
57
-
58
- return Array(itemsCount)
59
- .fill(undefined)
60
- .map(() => {
61
- const choices = Object.entries(model.config.choices);
62
- const [choiceType, choiceModel] = faker.random.arrayElement(choices);
63
-
64
- const choiceLabels = model.config.labels[choiceType] || [];
65
- const choiceLabel = faker.random.arrayElement(choiceLabels);
31
+ if (Object.keys(model.config.choices).length > 0) {
32
+ const itemsCount =
33
+ config.itemsCount ??
34
+ faker.datatype.number({
35
+ min: 1,
36
+ max: 6,
37
+ });
66
38
 
67
- switch (choiceModel.type) {
68
- case prismicT.CustomTypeModelSliceType.Slice: {
69
- return slice({
70
- seed: config.seed,
71
- model: choiceModel,
72
- type: choiceType,
73
- label: choiceLabel ? choiceLabel.name : null,
74
- primaryFieldConfigs: config.primaryFieldConfigs,
75
- itemsFieldConfigs: config.itemsFieldConfigs,
76
- });
77
- }
39
+ return Array(itemsCount)
40
+ .fill(undefined)
41
+ .map(() => {
42
+ const choices = Object.entries(model.config.choices);
43
+ const [choiceType, choiceModel] = faker.random.arrayElement(choices);
78
44
 
79
- case prismicT.CustomTypeModelSliceType.SharedSlice: {
80
- const sharedSliceModel = config.sharedSliceModels?.find(
81
- (sharedSliceModel) => sharedSliceModel.id === choiceType,
82
- );
45
+ const choiceLabels = model.config.labels[choiceType] || [];
46
+ const choiceLabel = faker.random.arrayElement(choiceLabels);
83
47
 
84
- if (sharedSliceModel) {
85
- return sharedSlice({
48
+ switch (choiceModel.type) {
49
+ case prismicT.CustomTypeModelSliceType.Slice: {
50
+ return slice({
86
51
  seed: config.seed,
87
- model: sharedSliceModel,
52
+ model: choiceModel,
53
+ type: choiceType,
54
+ label: choiceLabel ? choiceLabel.name : null,
88
55
  primaryFieldConfigs: config.primaryFieldConfigs,
89
56
  itemsFieldConfigs: config.itemsFieldConfigs,
90
57
  });
91
58
  }
59
+
60
+ case prismicT.CustomTypeModelSliceType.SharedSlice: {
61
+ const sharedSliceModel = config.sharedSliceModels?.find(
62
+ (sharedSliceModel) => sharedSliceModel.id === choiceType,
63
+ );
64
+
65
+ if (sharedSliceModel) {
66
+ return sharedSlice({
67
+ seed: config.seed,
68
+ model: sharedSliceModel,
69
+ primaryFieldConfigs: config.primaryFieldConfigs,
70
+ itemsFieldConfigs: config.itemsFieldConfigs,
71
+ });
72
+ }
73
+ }
92
74
  }
93
- }
94
- })
95
- .filter(
96
- (slice): slice is prismicT.Slice | prismicT.SharedSlice =>
97
- slice !== undefined,
98
- ) as ModelValue<Model>;
75
+ })
76
+ .filter(
77
+ (slice): slice is prismicT.Slice | prismicT.SharedSlice =>
78
+ slice !== undefined,
79
+ ) as ModelValue<Model>;
80
+ } else {
81
+ return [] as unknown as ModelValue<Model>;
82
+ }
99
83
  };
@@ -2,18 +2,27 @@ import * as prismicT from "@prismicio/types";
2
2
 
3
3
  import { createFaker } from "../lib/createFaker";
4
4
 
5
- import { MockValueConfig } from "../types";
5
+ import { MockValueStateConfig, MockValueConfig } from "../types";
6
6
 
7
7
  export type MockTimestampValueConfig<
8
8
  Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
9
+ State extends prismicT.FieldState = prismicT.FieldState,
9
10
  > = {
10
11
  after?: Date;
11
12
  before?: Date;
12
- } & MockValueConfig<Model>;
13
+ } & MockValueConfig<Model> &
14
+ MockValueStateConfig<State>;
13
15
 
14
- export const timestamp = (
15
- config: MockTimestampValueConfig = {},
16
- ): prismicT.TimestampField => {
16
+ export type MockTimestampValue<
17
+ State extends prismicT.FieldState = prismicT.FieldState,
18
+ > = prismicT.TimestampField<State>;
19
+
20
+ export const timestamp = <
21
+ Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
22
+ State extends prismicT.FieldState = "filled",
23
+ >(
24
+ config: MockTimestampValueConfig<Model, State> = {},
25
+ ): MockTimestampValue<State> => {
17
26
  const faker = createFaker(config.seed);
18
27
 
19
28
  // Faker seems to have problems accepting parameters for `faker.date.between`
@@ -26,5 +35,9 @@ export const timestamp = (
26
35
  config.before ||
27
36
  faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
28
37
 
29
- return faker.date.between(after, before).toISOString();
38
+ return (
39
+ config.state === "empty"
40
+ ? null
41
+ : faker.date.between(after, before).toISOString()
42
+ ) as MockTimestampValue<State>;
30
43
  };
@@ -20,5 +20,5 @@ export const title = (
20
20
  model: config.model,
21
21
  pattern: config.pattern,
22
22
  })!,
23
- ];
23
+ ] as prismicT.TitleField;
24
24
  };
package/src/value/uid.ts CHANGED
@@ -11,7 +11,7 @@ export type MockUIDValueConfig<
11
11
 
12
12
  export const uid = (
13
13
  config: MockUIDValueConfig = {},
14
- ): prismicT.PrismicDocument["uid"] => {
14
+ ): NonNullable<prismicT.PrismicDocument["uid"]> => {
15
15
  const faker = createFaker(config.seed);
16
16
 
17
17
  return changeCase.snakeCase(faker.lorem.words(2));
@@ -1,448 +0,0 @@
1
- import * as prismicT from '@prismicio/types';
2
- import * as changeCase from 'change-case';
3
- import * as fakerLocaleEN from 'faker/lib/locales/en';
4
- import Faker from 'faker/lib';
5
-
6
- const FAKER_SEED = 1984;
7
-
8
- const createFaker = (seed = FAKER_SEED) => {
9
- if (createFaker.cache[seed]) {
10
- return createFaker.cache[seed];
11
- }
12
- const seededFaker = new Faker();
13
- seededFaker.seed(seed);
14
- seededFaker.locales["en"] = fakerLocaleEN;
15
- createFaker.cache[seed] = seededFaker;
16
- return seededFaker;
17
- };
18
- createFaker.cache = {};
19
-
20
- const boolean = (config = {}) => {
21
- const faker = createFaker(config.seed);
22
- return {
23
- type: prismicT.CustomTypeModelFieldType.Boolean,
24
- config: {
25
- label: changeCase.capitalCase(faker.company.bsNoun())
26
- }
27
- };
28
- };
29
-
30
- const color = (config = {}) => {
31
- const faker = createFaker(config.seed);
32
- return {
33
- type: prismicT.CustomTypeModelFieldType.Color,
34
- config: {
35
- label: changeCase.capitalCase(faker.company.bsNoun()),
36
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
37
- }
38
- };
39
- };
40
-
41
- const generateCustomTypeId = (config) => {
42
- const faker = createFaker(config.seed);
43
- return changeCase.snakeCase(faker.company.bsNoun());
44
- };
45
-
46
- const contentRelationship = (config = {}) => {
47
- const faker = createFaker(config.seed);
48
- return {
49
- type: prismicT.CustomTypeModelFieldType.Link,
50
- config: {
51
- label: changeCase.capitalCase(faker.company.bsNoun()),
52
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
53
- select: prismicT.CustomTypeModelLinkSelectType.Document,
54
- customtypes: config.constrainCustomTypes ? Array(faker.datatype.number({ min: 1, max: 3 })).fill(void 0).map(() => generateCustomTypeId({ seed: config.seed })) : void 0,
55
- tags: config.constrainTags ? Array(faker.datatype.number({ min: 1, max: 3 })).fill(void 0).map(() => changeCase.capitalCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 })))) : void 0
56
- }
57
- };
58
- };
59
-
60
- const date = (config = {}) => {
61
- const faker = createFaker(config.seed);
62
- return {
63
- type: prismicT.CustomTypeModelFieldType.Date,
64
- config: {
65
- label: changeCase.capitalCase(faker.company.bsNoun()),
66
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
67
- }
68
- };
69
- };
70
-
71
- const embed = (config = {}) => {
72
- const faker = createFaker(config.seed);
73
- return {
74
- type: prismicT.CustomTypeModelFieldType.Embed,
75
- config: {
76
- label: changeCase.capitalCase(faker.company.bsNoun()),
77
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
78
- }
79
- };
80
- };
81
-
82
- const geoPoint = (config = {}) => {
83
- const faker = createFaker(config.seed);
84
- return {
85
- type: prismicT.CustomTypeModelFieldType.GeoPoint,
86
- config: {
87
- label: changeCase.capitalCase(faker.company.bsNoun())
88
- }
89
- };
90
- };
91
-
92
- const image = (config = {}) => {
93
- var _a;
94
- const faker = createFaker(config.seed);
95
- const thumbnailsCount = (_a = config.thumbnailsCount) != null ? _a : faker.datatype.number(3);
96
- return {
97
- type: prismicT.CustomTypeModelFieldType.Image,
98
- config: {
99
- label: changeCase.capitalCase(faker.company.bsNoun()),
100
- constraint: {
101
- width: config.withConstraint ? faker.datatype.number({ min: 500, max: 2e3 }) : null,
102
- height: config.withConstraint ? faker.datatype.number({ min: 500, max: 2e3 }) : null
103
- },
104
- thumbnails: Array(thumbnailsCount).fill(void 0).map(() => ({
105
- name: changeCase.capitalCase(faker.company.bsNoun()),
106
- width: faker.datatype.number({ min: 500, max: 2e3 }),
107
- height: faker.datatype.number({ min: 500, max: 2e3 })
108
- }))
109
- }
110
- };
111
- };
112
-
113
- const integrationFields = (config = {}) => {
114
- const faker = createFaker(config.seed);
115
- return {
116
- type: prismicT.CustomTypeModelFieldType.IntegrationFields,
117
- config: {
118
- label: changeCase.capitalCase(faker.company.bsNoun()),
119
- catalog: changeCase.snakeCase(faker.lorem.words(4))
120
- }
121
- };
122
- };
123
-
124
- const keyText = (config = {}) => {
125
- const faker = createFaker(config.seed);
126
- return {
127
- type: prismicT.CustomTypeModelFieldType.Text,
128
- config: {
129
- label: changeCase.capitalCase(faker.company.bsNoun()),
130
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
131
- }
132
- };
133
- };
134
-
135
- const link = (config = {}) => {
136
- const faker = createFaker(config.seed);
137
- return {
138
- type: prismicT.CustomTypeModelFieldType.Link,
139
- config: {
140
- label: changeCase.capitalCase(faker.company.bsNoun()),
141
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
142
- select: null,
143
- allowTargetBlank: ("allowTargetBlank" in config ? config.allowTargetBlank : faker.datatype.boolean()) || void 0
144
- }
145
- };
146
- };
147
-
148
- const linkToMedia = (config = {}) => {
149
- const faker = createFaker(config.seed);
150
- return {
151
- type: prismicT.CustomTypeModelFieldType.Link,
152
- config: {
153
- label: changeCase.capitalCase(faker.company.bsNoun()),
154
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
155
- select: prismicT.CustomTypeModelLinkSelectType.Media
156
- }
157
- };
158
- };
159
-
160
- const number = (config = {}) => {
161
- const faker = createFaker(config.seed);
162
- return {
163
- type: prismicT.CustomTypeModelFieldType.Number,
164
- config: {
165
- label: changeCase.capitalCase(faker.company.bsNoun()),
166
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
167
- }
168
- };
169
- };
170
-
171
- const richText = (config = {}) => {
172
- var _a;
173
- const faker = createFaker(config.seed);
174
- const blockTypes = faker.random.arrayElements([
175
- prismicT.RichTextNodeType.heading1,
176
- prismicT.RichTextNodeType.heading2,
177
- prismicT.RichTextNodeType.heading3,
178
- prismicT.RichTextNodeType.heading4,
179
- prismicT.RichTextNodeType.heading5,
180
- prismicT.RichTextNodeType.heading6,
181
- prismicT.RichTextNodeType.paragraph,
182
- prismicT.RichTextNodeType.preformatted,
183
- prismicT.RichTextNodeType.strong,
184
- prismicT.RichTextNodeType.em,
185
- prismicT.RichTextNodeType.listItem,
186
- prismicT.RichTextNodeType.oListItem,
187
- prismicT.RichTextNodeType.image,
188
- prismicT.RichTextNodeType.embed,
189
- prismicT.RichTextNodeType.hyperlink
190
- ]).join(",");
191
- const blockTypeConfig = ((_a = config.withMultipleBlocks) != null ? _a : faker.datatype.boolean()) ? { multi: blockTypes } : { single: blockTypes };
192
- return {
193
- type: prismicT.CustomTypeModelFieldType.StructuredText,
194
- config: {
195
- label: changeCase.capitalCase(faker.company.bsNoun()),
196
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
197
- allowTargetBlank: faker.datatype.boolean() ? true : void 0,
198
- ...blockTypeConfig
199
- }
200
- };
201
- };
202
-
203
- const select = (config = {}) => {
204
- var _a;
205
- const faker = createFaker(config.seed);
206
- const optionsCount = (_a = config.optionsCount) != null ? _a : faker.datatype.number({ min: 1, max: 5 });
207
- const options = Array(optionsCount).fill(void 0).map(() => changeCase.capitalCase(faker.company.bsBuzz()));
208
- return {
209
- type: prismicT.CustomTypeModelFieldType.Select,
210
- config: {
211
- label: changeCase.capitalCase(faker.company.bsNoun()),
212
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
213
- options,
214
- default_value: config.withDefaultValue ? faker.random.arrayElement(options) : void 0
215
- }
216
- };
217
- };
218
-
219
- const timestamp = (config = {}) => {
220
- const faker = createFaker(config.seed);
221
- return {
222
- type: prismicT.CustomTypeModelFieldType.Timestamp,
223
- config: {
224
- label: changeCase.capitalCase(faker.company.bsNoun()),
225
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
226
- }
227
- };
228
- };
229
-
230
- const title = (config = {}) => {
231
- const faker = createFaker(config.seed);
232
- const single = faker.random.arrayElements([
233
- "heading1",
234
- "heading2",
235
- "heading3",
236
- "heading4",
237
- "heading5",
238
- "heading6"
239
- ]).join(",");
240
- return {
241
- type: prismicT.CustomTypeModelFieldType.StructuredText,
242
- config: {
243
- label: changeCase.capitalCase(faker.company.bsNoun()),
244
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
245
- single,
246
- allowTargetBlank: faker.datatype.boolean() ? true : void 0
247
- }
248
- };
249
- };
250
-
251
- const generateFieldId = (config) => {
252
- const faker = createFaker(config.seed);
253
- return changeCase.snakeCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 })));
254
- };
255
-
256
- const mockModelFns = {
257
- boolean,
258
- color,
259
- contentRelationship,
260
- date,
261
- embed,
262
- geoPoint,
263
- image,
264
- integrationFields,
265
- keyText,
266
- link,
267
- linkToMedia,
268
- number,
269
- richText,
270
- select,
271
- timestamp,
272
- title
273
- };
274
- const buildMockGroupFieldMap = (config = {}) => {
275
- var _a;
276
- const faker = createFaker(config.seed);
277
- const configs = config.configs || {};
278
- const fields = {};
279
- for (const mockModelType in mockModelFns) {
280
- const mockModelFn = mockModelFns[mockModelType];
281
- const mockModelMapConfig = configs[mockModelType] || {};
282
- const count = (_a = mockModelMapConfig.count) != null ? _a : faker.random.arrayElement([0, 0, 0, 1]);
283
- for (let i = 0; i < count; i++) {
284
- const fieldId = generateFieldId({ seed: config.seed });
285
- fields[fieldId] = mockModelFn({
286
- seed: config.seed,
287
- ...mockModelMapConfig.config
288
- });
289
- }
290
- }
291
- return fields;
292
- };
293
-
294
- const uid = (config = {}) => {
295
- const faker = createFaker(config.seed);
296
- return {
297
- type: prismicT.CustomTypeModelFieldType.UID,
298
- config: {
299
- label: changeCase.capitalCase(faker.company.bsNoun()),
300
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
301
- }
302
- };
303
- };
304
-
305
- const sharedSliceChoice = () => {
306
- return {
307
- type: prismicT.CustomTypeModelSliceType.SharedSlice
308
- };
309
- };
310
-
311
- const slice = (config = {}) => {
312
- var _a, _b, _c, _d, _e, _f;
313
- const faker = createFaker(config.seed);
314
- return {
315
- type: prismicT.CustomTypeModelSliceType.Slice,
316
- icon: changeCase.snakeCase(faker.company.bsNoun()),
317
- display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List,
318
- fieldset: changeCase.capitalCase(faker.lorem.words()),
319
- description: faker.lorem.sentence(),
320
- repeat: buildMockGroupFieldMap({
321
- seed: (_b = (_a = config.repeatFieldConfig) == null ? void 0 : _a.seed) != null ? _b : config.seed,
322
- configs: (_c = config.repeatFieldConfig) == null ? void 0 : _c.configs
323
- }),
324
- "non-repeat": buildMockGroupFieldMap({
325
- seed: (_e = (_d = config.nonRepeatFieldConfig) == null ? void 0 : _d.seed) != null ? _e : config.seed,
326
- configs: (_f = config.nonRepeatFieldConfig) == null ? void 0 : _f.configs
327
- })
328
- };
329
- };
330
-
331
- const sliceZone = (config = {}) => {
332
- var _a;
333
- const faker = createFaker(config.seed);
334
- const choicesCount = (_a = config.choicesCount) != null ? _a : faker.datatype.number({ min: 2, max: 6 });
335
- const choices = {};
336
- for (let i = 0; i < choicesCount; i++) {
337
- const choiceId = generateFieldId({ seed: config.seed });
338
- choices[choiceId] = config.withSharedSlices ? sharedSliceChoice() : slice({ seed: config.seed });
339
- }
340
- const labels = {};
341
- if (!config.withSharedSlices) {
342
- for (const choiceId in choices) {
343
- const labelsCount = faker.datatype.number({ min: 0, max: 3 });
344
- labels[choiceId] = Array(labelsCount).fill(void 0).map(() => ({
345
- name: changeCase.capitalCase(faker.company.bsNoun()),
346
- display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List
347
- }));
348
- }
349
- }
350
- return {
351
- type: prismicT.CustomTypeModelFieldType.Slices,
352
- fieldset: "Slice zone",
353
- config: {
354
- labels,
355
- choices
356
- }
357
- };
358
- };
359
-
360
- const customType = (config = {}) => {
361
- var _a;
362
- const faker = createFaker(config.seed);
363
- const tabsCount = (_a = config.tabsCount) != null ? _a : faker.datatype.number({ min: 1, max: 3 });
364
- const json = {};
365
- for (let i = 0; i < tabsCount; i++) {
366
- const tabName = changeCase.capitalCase(faker.company.bsNoun());
367
- const tabFields = buildMockGroupFieldMap({
368
- seed: config.seed,
369
- configs: config.configs
370
- });
371
- if (i === 0 && config.withUID) {
372
- const fieldId = generateFieldId({ seed: config.seed });
373
- tabFields[fieldId] = uid();
374
- }
375
- if (config.withSliceZones) {
376
- const sliceZoneId = generateFieldId({ seed: config.seed });
377
- tabFields[sliceZoneId] = sliceZone({
378
- withSharedSlices: config.withSharedSlices
379
- });
380
- }
381
- json[tabName] = tabFields;
382
- }
383
- const id = generateCustomTypeId({ seed: config.seed });
384
- return {
385
- id,
386
- label: changeCase.capitalCase(id),
387
- status: faker.datatype.boolean(),
388
- repeatable: faker.datatype.boolean(),
389
- json
390
- };
391
- };
392
-
393
- const group = (config = {}) => {
394
- const faker = createFaker(config.seed);
395
- const fields = buildMockGroupFieldMap({
396
- seed: config.seed,
397
- configs: config.configs
398
- });
399
- return {
400
- type: prismicT.CustomTypeModelFieldType.Group,
401
- config: {
402
- label: changeCase.capitalCase(faker.company.bsNoun()),
403
- fields
404
- }
405
- };
406
- };
407
-
408
- const sharedSliceVariation = (config = {}) => {
409
- var _a, _b, _c, _d, _e, _f;
410
- const faker = createFaker(config.seed);
411
- const name = changeCase.capitalCase(faker.company.bsNoun());
412
- return {
413
- id: changeCase.snakeCase(name),
414
- name,
415
- description: faker.lorem.sentence(),
416
- docURL: faker.internet.url(),
417
- version: faker.git.shortSha(),
418
- primary: buildMockGroupFieldMap({
419
- seed: (_b = (_a = config.primaryFieldConfig) == null ? void 0 : _a.seed) != null ? _b : config.seed,
420
- configs: (_c = config.primaryFieldConfig) == null ? void 0 : _c.configs
421
- }),
422
- items: buildMockGroupFieldMap({
423
- seed: (_e = (_d = config.itemsFieldConfig) == null ? void 0 : _d.seed) != null ? _e : config.seed,
424
- configs: (_f = config.itemsFieldConfig) == null ? void 0 : _f.configs
425
- })
426
- };
427
- };
428
-
429
- const sharedSlice = (config = {}) => {
430
- var _a;
431
- const faker = createFaker(config.seed);
432
- const variationsCount = (_a = config.variationsCount) != null ? _a : faker.datatype.number({ min: 1, max: 3 });
433
- const name = changeCase.capitalCase(faker.company.bsNoun());
434
- const variations = Array(variationsCount).fill(void 0).map(() => sharedSliceVariation({
435
- seed: config.seed,
436
- itemsFieldConfig: config.itemsFieldConfig,
437
- primaryFieldConfig: config.primaryFieldConfig
438
- }));
439
- return {
440
- type: prismicT.CustomTypeModelSliceType.SharedSlice,
441
- id: changeCase.snakeCase(name),
442
- name,
443
- description: faker.lorem.sentence(),
444
- variations
445
- };
446
- };
447
-
448
- export { boolean, color, contentRelationship, customType, date, embed, geoPoint, group, image, integrationFields, keyText, link, linkToMedia, number, richText, select, sharedSlice, sharedSliceChoice, sharedSliceVariation, slice, sliceZone, timestamp, title, uid };
@@ -1,34 +0,0 @@
1
- import * as prismicT from "@prismicio/types";
2
-
3
- import { createFaker } from "../lib/createFaker";
4
-
5
- import { MockImageData, MockValueConfig } from "../types";
6
-
7
- type BuildImageFieldConfig = {
8
- imageData: MockImageData;
9
- constraint?: prismicT.CustomTypeModelImageField["config"]["constraint"];
10
- } & Pick<MockValueConfig, "seed">;
11
-
12
- export const buildImageField = (
13
- config: BuildImageFieldConfig,
14
- ): prismicT.ImageField => {
15
- const faker = createFaker(config.seed);
16
-
17
- const url = new URL(config.imageData.url);
18
-
19
- const dimensions = {
20
- width: config.constraint?.width ?? config.imageData.width,
21
- height: config.constraint?.height ?? config.imageData.height,
22
- };
23
-
24
- url.searchParams.set("w", dimensions.width.toString());
25
- url.searchParams.set("h", dimensions.height.toString());
26
- url.searchParams.set("fit", "crop");
27
-
28
- return {
29
- url: url.toString(),
30
- dimensions,
31
- alt: faker.lorem.sentence(),
32
- copyright: faker.lorem.sentence(),
33
- };
34
- };