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