@prismicio/mock 0.0.4 → 0.0.8

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 (72) hide show
  1. package/README.md +4 -1
  2. package/dist/api/index.cjs +54 -35
  3. package/dist/api/index.cjs.map +1 -0
  4. package/dist/api/index.d.ts +4 -2
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/{index.mjs → index.js} +116 -63
  7. package/dist/api/index.js.map +1 -0
  8. package/dist/index.cjs +365 -417
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.ts +157 -243
  11. package/dist/{index.mjs → index.js} +359 -409
  12. package/dist/index.js.map +1 -0
  13. package/dist/model/index.cjs +164 -204
  14. package/dist/model/index.cjs.map +1 -0
  15. package/dist/model/index.d.ts +73 -97
  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 +310 -519
  20. package/dist/value/index.cjs.map +1 -0
  21. package/dist/value/index.d.ts +71 -132
  22. package/dist/value/index.d.ts.map +1 -0
  23. package/dist/value/{index.mjs → index.js} +474 -629
  24. package/dist/value/index.js.map +1 -0
  25. package/package.json +21 -21
  26. package/src/constants.ts +3 -1
  27. package/src/lib/buildAlternativeLanguage.ts +18 -0
  28. package/src/lib/buildContentRelationshipField.ts +12 -5
  29. package/src/lib/buildEmbedField.ts +1 -1
  30. package/src/lib/buildImageFieldImage.ts +48 -0
  31. package/src/lib/createFaker.ts +19 -10
  32. package/src/lib/valueForModelMap.ts +2 -2
  33. package/src/model/buildMockGroupFieldMap.ts +65 -0
  34. package/src/model/contentRelationship.ts +14 -21
  35. package/src/model/customType.ts +49 -48
  36. package/src/model/group.ts +8 -15
  37. package/src/model/image.ts +13 -13
  38. package/src/model/index.ts +2 -0
  39. package/src/model/integrationFields.ts +4 -2
  40. package/src/model/select.ts +11 -16
  41. package/src/model/sharedSlice.ts +23 -30
  42. package/src/model/sharedSliceVariation.ts +33 -21
  43. package/src/model/slice.ts +15 -19
  44. package/src/model/sliceZone.ts +25 -42
  45. package/src/types.ts +130 -83
  46. package/src/value/color.ts +16 -6
  47. package/src/value/contentRelationship.ts +52 -36
  48. package/src/value/customType.ts +22 -3
  49. package/src/value/date.ts +25 -9
  50. package/src/value/embed.ts +18 -6
  51. package/src/value/geoPoint.ts +21 -9
  52. package/src/value/group.ts +35 -44
  53. package/src/value/image.ts +22 -9
  54. package/src/value/integrationFields.ts +26 -14
  55. package/src/value/keyText.ts +18 -6
  56. package/src/value/link.ts +33 -34
  57. package/src/value/linkToMedia.ts +15 -20
  58. package/src/value/number.ts +16 -6
  59. package/src/value/richText/heading.ts +7 -7
  60. package/src/value/richText/image.ts +6 -2
  61. package/src/value/richText/index.ts +1 -1
  62. package/src/value/select.ts +23 -8
  63. package/src/value/sharedSlice.ts +2 -2
  64. package/src/value/sharedSliceVariation.ts +6 -34
  65. package/src/value/slice.ts +5 -30
  66. package/src/value/sliceZone.ts +60 -69
  67. package/src/value/timestamp.ts +19 -6
  68. package/src/value/title.ts +26 -13
  69. package/src/value/uid.ts +1 -1
  70. package/dist/model/index.mjs +0 -448
  71. package/src/lib/buildImageField.ts +0 -34
  72. package/src/lib/buildMockGroupFieldMap.ts +0 -84
@@ -1,19 +1,26 @@
1
1
  import * as changeCase from 'change-case';
2
- import * as fakerLocaleEN from 'faker/lib/locales/en';
3
- import Faker from 'faker/lib';
2
+ import * as fakerLocaleEN from 'faker/lib/locales/en/index.js';
3
+ import Faker from 'faker/lib/index.js';
4
4
  import * as prismicT from '@prismicio/types';
5
5
 
6
6
  const FAKER_SEED = 1984;
7
7
 
8
8
  const createFaker = (seed = FAKER_SEED) => {
9
- if (createFaker.cache[seed]) {
10
- return createFaker.cache[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];
11
18
  }
12
- const seededFaker = new Faker();
13
- seededFaker.seed(seed);
14
- seededFaker.locales["en"] = fakerLocaleEN;
15
- createFaker.cache[seed] = seededFaker;
16
- return seededFaker;
19
+ const fakerInstance = new Faker();
20
+ fakerInstance.locales["en"] = fakerLocaleEN;
21
+ fakerInstance.seed(normalizedSeed);
22
+ createFaker.cache[cacheKey] = fakerInstance;
23
+ return fakerInstance;
17
24
  };
18
25
  createFaker.cache = {};
19
26
 
@@ -221,7 +228,7 @@ const getValueConfigType = (model) => {
221
228
  case prismicT.CustomTypeModelFieldType.IntegrationFields:
222
229
  return "integrationFields";
223
230
  case prismicT.CustomTypeModelFieldType.Slices:
224
- return "slices";
231
+ return "sliceZone";
225
232
  }
226
233
  };
227
234
  const valueForModelMap = (config) => {
@@ -261,11 +268,6 @@ const color$1 = (config = {}) => {
261
268
  };
262
269
  };
263
270
 
264
- const generateCustomTypeId = (config) => {
265
- const faker = createFaker(config.seed);
266
- return changeCase.snakeCase(faker.company.bsNoun());
267
- };
268
-
269
271
  const contentRelationship$1 = (config = {}) => {
270
272
  const faker = createFaker(config.seed);
271
273
  return {
@@ -274,12 +276,37 @@ const contentRelationship$1 = (config = {}) => {
274
276
  label: changeCase.capitalCase(faker.company.bsNoun()),
275
277
  placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
276
278
  select: prismicT.CustomTypeModelLinkSelectType.Document,
277
- customtypes: config.constrainCustomTypes ? Array(faker.datatype.number({ min: 1, max: 3 })).fill(void 0).map(() => generateCustomTypeId({ seed: config.seed })) : void 0,
278
- 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
279
+ customtypes: config.customTypeIDs,
280
+ tags: config.tags
279
281
  }
280
282
  };
281
283
  };
282
284
 
285
+ const customType$1 = (config = {}) => {
286
+ var _a, _b;
287
+ const faker = createFaker(config.seed);
288
+ let label = config.label || changeCase.capitalCase(faker.company.bsNoun());
289
+ let id = config.id || changeCase.snakeCase(label);
290
+ if (config.id && !config.label) {
291
+ label = changeCase.capitalCase(config.id);
292
+ } else if (config.label && !config.label) {
293
+ id = changeCase.snakeCase(config.label);
294
+ }
295
+ let json = {};
296
+ if ("fields" in config && config.fields) {
297
+ json = { Main: config.fields };
298
+ } else if ("tabs" in config && config.tabs) {
299
+ json = config.tabs;
300
+ }
301
+ return {
302
+ id,
303
+ label,
304
+ status: (_a = config.status) != null ? _a : faker.datatype.boolean(),
305
+ repeatable: (_b = config.repeatable) != null ? _b : faker.datatype.boolean(),
306
+ json
307
+ };
308
+ };
309
+
283
310
  const date$1 = (config = {}) => {
284
311
  const faker = createFaker(config.seed);
285
312
  return {
@@ -312,10 +339,26 @@ const geoPoint$1 = (config = {}) => {
312
339
  };
313
340
  };
314
341
 
342
+ const group$1 = (config = {}) => {
343
+ const faker = createFaker(config.seed);
344
+ return {
345
+ type: prismicT.CustomTypeModelFieldType.Group,
346
+ config: {
347
+ label: changeCase.capitalCase(faker.company.bsNoun()),
348
+ fields: config.fields || {}
349
+ }
350
+ };
351
+ };
352
+
315
353
  const image$2 = (config = {}) => {
316
- var _a;
317
354
  const faker = createFaker(config.seed);
318
- const thumbnailsCount = (_a = config.thumbnailsCount) != null ? _a : faker.datatype.number(3);
355
+ const thumbnails = (config.thumbnailNames || []).map((name) => {
356
+ return {
357
+ name,
358
+ width: faker.datatype.number({ min: 500, max: 2e3 }),
359
+ height: faker.datatype.number({ min: 500, max: 2e3 })
360
+ };
361
+ });
319
362
  return {
320
363
  type: prismicT.CustomTypeModelFieldType.Image,
321
364
  config: {
@@ -324,11 +367,7 @@ const image$2 = (config = {}) => {
324
367
  width: config.withConstraint ? faker.datatype.number({ min: 500, max: 2e3 }) : null,
325
368
  height: config.withConstraint ? faker.datatype.number({ min: 500, max: 2e3 }) : null
326
369
  },
327
- thumbnails: Array(thumbnailsCount).fill(void 0).map(() => ({
328
- name: changeCase.capitalCase(faker.company.bsNoun()),
329
- width: faker.datatype.number({ min: 500, max: 2e3 }),
330
- height: faker.datatype.number({ min: 500, max: 2e3 })
331
- }))
370
+ thumbnails
332
371
  }
333
372
  };
334
373
  };
@@ -339,7 +378,7 @@ const integrationFields$1 = (config = {}) => {
339
378
  type: prismicT.CustomTypeModelFieldType.IntegrationFields,
340
379
  config: {
341
380
  label: changeCase.capitalCase(faker.company.bsNoun()),
342
- catalog: changeCase.snakeCase(faker.lorem.words(4))
381
+ catalog: config.catalog || changeCase.snakeCase(faker.lorem.words(4))
343
382
  }
344
383
  };
345
384
  };
@@ -424,17 +463,89 @@ const richText$1 = (config = {}) => {
424
463
  };
425
464
 
426
465
  const select$1 = (config = {}) => {
427
- var _a;
428
466
  const faker = createFaker(config.seed);
429
- const optionsCount = (_a = config.optionsCount) != null ? _a : faker.datatype.number({ min: 1, max: 5 });
430
- const options = Array(optionsCount).fill(void 0).map(() => changeCase.capitalCase(faker.company.bsBuzz()));
431
467
  return {
432
468
  type: prismicT.CustomTypeModelFieldType.Select,
433
469
  config: {
434
470
  label: changeCase.capitalCase(faker.company.bsNoun()),
435
471
  placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
436
- options,
437
- default_value: config.withDefaultValue ? faker.random.arrayElement(options) : void 0
472
+ options: config.options || [],
473
+ default_value: config.defaultValue || void 0
474
+ }
475
+ };
476
+ };
477
+
478
+ const sharedSlice$1 = (config = {}) => {
479
+ const faker = createFaker(config.seed);
480
+ let name = config.name || changeCase.capitalCase(faker.company.bsNoun());
481
+ let id = config.id || changeCase.snakeCase(name);
482
+ if (config.id && !config.name) {
483
+ name = changeCase.pascalCase(config.id);
484
+ } else if (config.name && !config.name) {
485
+ id = changeCase.snakeCase(config.name);
486
+ }
487
+ return {
488
+ type: prismicT.CustomTypeModelSliceType.SharedSlice,
489
+ id,
490
+ name,
491
+ description: faker.lorem.sentence(),
492
+ variations: config.variations || []
493
+ };
494
+ };
495
+
496
+ const sharedSliceChoice = () => {
497
+ return {
498
+ type: prismicT.CustomTypeModelSliceType.SharedSlice
499
+ };
500
+ };
501
+
502
+ const sharedSliceVariation$1 = (config = {}) => {
503
+ const faker = createFaker(config.seed);
504
+ let name = config.name || changeCase.capitalCase(faker.company.bsNoun());
505
+ let id = config.id || changeCase.snakeCase(name);
506
+ if (config.id && !config.name) {
507
+ name = changeCase.pascalCase(config.id);
508
+ } else if (config.name && !config.name) {
509
+ id = changeCase.snakeCase(config.name);
510
+ }
511
+ return {
512
+ id,
513
+ name,
514
+ description: faker.lorem.sentence(),
515
+ docURL: faker.internet.url(),
516
+ version: faker.git.shortSha(),
517
+ primary: config.primaryFields || {},
518
+ items: config.itemsFields || {}
519
+ };
520
+ };
521
+
522
+ const slice$1 = (config = {}) => {
523
+ const faker = createFaker(config.seed);
524
+ return {
525
+ type: prismicT.CustomTypeModelSliceType.Slice,
526
+ icon: changeCase.snakeCase(faker.company.bsNoun()),
527
+ display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List,
528
+ fieldset: changeCase.capitalCase(faker.lorem.words()),
529
+ description: faker.lorem.sentence(),
530
+ repeat: config.repeatFields || {},
531
+ "non-repeat": config.nonRepeatFields || {}
532
+ };
533
+ };
534
+
535
+ const sliceZone$1 = (config = {}) => {
536
+ const labels = {};
537
+ for (const choiceId in config.choices) {
538
+ const choice = config.choices[choiceId];
539
+ if (choice.type === prismicT.CustomTypeModelSliceType.Slice) {
540
+ labels[choiceId] = [];
541
+ }
542
+ }
543
+ return {
544
+ type: prismicT.CustomTypeModelFieldType.Slices,
545
+ fieldset: "Slice zone",
546
+ config: {
547
+ labels,
548
+ choices: config.choices || {}
438
549
  }
439
550
  };
440
551
  };
@@ -471,6 +582,17 @@ const title$1 = (config = {}) => {
471
582
  };
472
583
  };
473
584
 
585
+ const uid$1 = (config = {}) => {
586
+ const faker = createFaker(config.seed);
587
+ return {
588
+ type: prismicT.CustomTypeModelFieldType.UID,
589
+ config: {
590
+ label: changeCase.capitalCase(faker.company.bsNoun()),
591
+ placeholder: changeCase.sentenceCase(faker.lorem.words(3))
592
+ }
593
+ };
594
+ };
595
+
474
596
  const generateFieldId = (config) => {
475
597
  const faker = createFaker(config.seed);
476
598
  return changeCase.snakeCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 })));
@@ -495,179 +617,17 @@ const mockModelFns = {
495
617
  title: title$1
496
618
  };
497
619
  const buildMockGroupFieldMap = (config = {}) => {
498
- var _a;
499
620
  const faker = createFaker(config.seed);
500
- const configs = config.configs || {};
501
621
  const fields = {};
502
- for (const mockModelType in mockModelFns) {
503
- const mockModelFn = mockModelFns[mockModelType];
504
- const mockModelMapConfig = configs[mockModelType] || {};
505
- const count = (_a = mockModelMapConfig.count) != null ? _a : faker.random.arrayElement([0, 0, 0, 1]);
506
- for (let i = 0; i < count; i++) {
507
- const fieldId = generateFieldId({ seed: config.seed });
508
- fields[fieldId] = mockModelFn({
509
- seed: config.seed,
510
- ...mockModelMapConfig.config
511
- });
512
- }
622
+ const fieldTypes = faker.random.arrayElements(Object.keys(mockModelFns));
623
+ for (const fieldType of fieldTypes) {
624
+ const fieldId = generateFieldId({ seed: config.seed });
625
+ const mockModelFn = mockModelFns[fieldType];
626
+ fields[fieldId] = mockModelFn({ seed: config.seed });
513
627
  }
514
628
  return fields;
515
629
  };
516
630
 
517
- const uid$1 = (config = {}) => {
518
- const faker = createFaker(config.seed);
519
- return {
520
- type: prismicT.CustomTypeModelFieldType.UID,
521
- config: {
522
- label: changeCase.capitalCase(faker.company.bsNoun()),
523
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
524
- }
525
- };
526
- };
527
-
528
- const sharedSliceChoice = () => {
529
- return {
530
- type: prismicT.CustomTypeModelSliceType.SharedSlice
531
- };
532
- };
533
-
534
- const slice$1 = (config = {}) => {
535
- var _a, _b, _c, _d, _e, _f;
536
- const faker = createFaker(config.seed);
537
- return {
538
- type: prismicT.CustomTypeModelSliceType.Slice,
539
- icon: changeCase.snakeCase(faker.company.bsNoun()),
540
- display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List,
541
- fieldset: changeCase.capitalCase(faker.lorem.words()),
542
- description: faker.lorem.sentence(),
543
- repeat: buildMockGroupFieldMap({
544
- seed: (_b = (_a = config.repeatFieldConfig) == null ? void 0 : _a.seed) != null ? _b : config.seed,
545
- configs: (_c = config.repeatFieldConfig) == null ? void 0 : _c.configs
546
- }),
547
- "non-repeat": buildMockGroupFieldMap({
548
- seed: (_e = (_d = config.nonRepeatFieldConfig) == null ? void 0 : _d.seed) != null ? _e : config.seed,
549
- configs: (_f = config.nonRepeatFieldConfig) == null ? void 0 : _f.configs
550
- })
551
- };
552
- };
553
-
554
- const sliceZone$1 = (config = {}) => {
555
- var _a;
556
- const faker = createFaker(config.seed);
557
- const choicesCount = (_a = config.choicesCount) != null ? _a : faker.datatype.number({ min: 2, max: 6 });
558
- const choices = {};
559
- for (let i = 0; i < choicesCount; i++) {
560
- const choiceId = generateFieldId({ seed: config.seed });
561
- choices[choiceId] = config.withSharedSlices ? sharedSliceChoice() : slice$1({ seed: config.seed });
562
- }
563
- const labels = {};
564
- if (!config.withSharedSlices) {
565
- for (const choiceId in choices) {
566
- const labelsCount = faker.datatype.number({ min: 0, max: 3 });
567
- labels[choiceId] = Array(labelsCount).fill(void 0).map(() => ({
568
- name: changeCase.capitalCase(faker.company.bsNoun()),
569
- display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List
570
- }));
571
- }
572
- }
573
- return {
574
- type: prismicT.CustomTypeModelFieldType.Slices,
575
- fieldset: "Slice zone",
576
- config: {
577
- labels,
578
- choices
579
- }
580
- };
581
- };
582
-
583
- const customType$1 = (config = {}) => {
584
- var _a;
585
- const faker = createFaker(config.seed);
586
- const tabsCount = (_a = config.tabsCount) != null ? _a : faker.datatype.number({ min: 1, max: 3 });
587
- const json = {};
588
- for (let i = 0; i < tabsCount; i++) {
589
- const tabName = changeCase.capitalCase(faker.company.bsNoun());
590
- const tabFields = buildMockGroupFieldMap({
591
- seed: config.seed,
592
- configs: config.configs
593
- });
594
- if (i === 0 && config.withUID) {
595
- const fieldId = generateFieldId({ seed: config.seed });
596
- tabFields[fieldId] = uid$1();
597
- }
598
- if (config.withSliceZones) {
599
- const sliceZoneId = generateFieldId({ seed: config.seed });
600
- tabFields[sliceZoneId] = sliceZone$1({
601
- withSharedSlices: config.withSharedSlices
602
- });
603
- }
604
- json[tabName] = tabFields;
605
- }
606
- const id = generateCustomTypeId({ seed: config.seed });
607
- return {
608
- id,
609
- label: changeCase.capitalCase(id),
610
- status: faker.datatype.boolean(),
611
- repeatable: faker.datatype.boolean(),
612
- json
613
- };
614
- };
615
-
616
- const group$1 = (config = {}) => {
617
- const faker = createFaker(config.seed);
618
- const fields = buildMockGroupFieldMap({
619
- seed: config.seed,
620
- configs: config.configs
621
- });
622
- return {
623
- type: prismicT.CustomTypeModelFieldType.Group,
624
- config: {
625
- label: changeCase.capitalCase(faker.company.bsNoun()),
626
- fields
627
- }
628
- };
629
- };
630
-
631
- const sharedSliceVariation$1 = (config = {}) => {
632
- var _a, _b, _c, _d, _e, _f;
633
- const faker = createFaker(config.seed);
634
- const name = changeCase.capitalCase(faker.company.bsNoun());
635
- return {
636
- id: changeCase.snakeCase(name),
637
- name,
638
- description: faker.lorem.sentence(),
639
- docURL: faker.internet.url(),
640
- version: faker.git.shortSha(),
641
- primary: buildMockGroupFieldMap({
642
- seed: (_b = (_a = config.primaryFieldConfig) == null ? void 0 : _a.seed) != null ? _b : config.seed,
643
- configs: (_c = config.primaryFieldConfig) == null ? void 0 : _c.configs
644
- }),
645
- items: buildMockGroupFieldMap({
646
- seed: (_e = (_d = config.itemsFieldConfig) == null ? void 0 : _d.seed) != null ? _e : config.seed,
647
- configs: (_f = config.itemsFieldConfig) == null ? void 0 : _f.configs
648
- })
649
- };
650
- };
651
-
652
- const sharedSlice$1 = (config = {}) => {
653
- var _a;
654
- const faker = createFaker(config.seed);
655
- const variationsCount = (_a = config.variationsCount) != null ? _a : faker.datatype.number({ min: 1, max: 3 });
656
- const name = changeCase.capitalCase(faker.company.bsNoun());
657
- const variations = Array(variationsCount).fill(void 0).map(() => sharedSliceVariation$1({
658
- seed: config.seed,
659
- itemsFieldConfig: config.itemsFieldConfig,
660
- primaryFieldConfig: config.primaryFieldConfig
661
- }));
662
- return {
663
- type: prismicT.CustomTypeModelSliceType.SharedSlice,
664
- id: changeCase.snakeCase(name),
665
- name,
666
- description: faker.lorem.sentence(),
667
- variations
668
- };
669
- };
670
-
671
631
  var index$2 = /*#__PURE__*/Object.freeze({
672
632
  __proto__: null,
673
633
  boolean: boolean,
@@ -693,14 +653,24 @@ var index$2 = /*#__PURE__*/Object.freeze({
693
653
  sliceZone: sliceZone$1,
694
654
  timestamp: timestamp$1,
695
655
  title: title$1,
696
- uid: uid$1
656
+ uid: uid$1,
657
+ buildMockGroupFieldMap: buildMockGroupFieldMap
697
658
  });
698
659
 
699
660
  const timestamp = (config = {}) => {
700
661
  const faker = createFaker(config.seed);
701
662
  const after = config.after || faker.date.past(20, new Date("2021-03-07")).toISOString().split("T")[0];
702
663
  const before = config.before || faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
703
- return faker.date.between(after, before).toISOString();
664
+ return config.state === "empty" ? null : faker.date.between(after, before).toISOString();
665
+ };
666
+
667
+ const buildAlternativeLanguage = (config) => {
668
+ return {
669
+ id: config.document.id,
670
+ type: config.document.type,
671
+ lang: config.document.lang,
672
+ uid: config.document.uid || void 0
673
+ };
704
674
  };
705
675
 
706
676
  const customType = (config = {}) => {
@@ -708,8 +678,18 @@ const customType = (config = {}) => {
708
678
  const faker = createFaker(config.seed);
709
679
  const model = config.model || customType$1({ seed: config.seed });
710
680
  const fieldModelsMap = Object.assign({}, ...Object.values(model.json));
681
+ const dataFieldModelsMap = {};
682
+ for (const key in fieldModelsMap) {
683
+ const fieldModel = fieldModelsMap[key];
684
+ if (fieldModel.type !== prismicT.CustomTypeModelFieldType.UID) {
685
+ dataFieldModelsMap[key] = fieldModel;
686
+ }
687
+ }
711
688
  const hasUID = Object.values(fieldModelsMap).some((fieldModel) => fieldModel.type === prismicT.CustomTypeModelFieldType.UID);
712
689
  const withURL = (_a = config.withURL) != null ? _a : true;
690
+ const alternateLanguages = (config.alternateLanguages || []).map((alternateLanguageDocument) => buildAlternativeLanguage({
691
+ document: alternateLanguageDocument
692
+ }));
713
693
  return {
714
694
  type: model.id,
715
695
  id: faker.git.shortSha(),
@@ -720,12 +700,12 @@ const customType = (config = {}) => {
720
700
  tags: generateTags({ seed: config.seed }),
721
701
  slugs: [],
722
702
  linked_documents: [],
723
- alternate_languages: [],
703
+ alternate_languages: alternateLanguages,
724
704
  first_publication_date: timestamp({ seed: config.seed }),
725
705
  last_publication_date: timestamp({ seed: config.seed }),
726
706
  data: valueForModelMap({
727
707
  seed: config.seed,
728
- map: fieldModelsMap,
708
+ map: dataFieldModelsMap,
729
709
  configs: config.configs
730
710
  })
731
711
  };
@@ -733,7 +713,7 @@ const customType = (config = {}) => {
733
713
 
734
714
  const color = (config = {}) => {
735
715
  const faker = createFaker(config.seed);
736
- return faker.internet.color().toUpperCase();
716
+ return config.state === "empty" ? null : faker.internet.color().toUpperCase();
737
717
  };
738
718
 
739
719
  const buildContentRelationshipField = (config) => {
@@ -750,11 +730,18 @@ const buildContentRelationshipField = (config) => {
750
730
  };
751
731
  };
752
732
 
733
+ const generateCustomTypeId = (config) => {
734
+ const faker = createFaker(config.seed);
735
+ return changeCase.snakeCase(faker.company.bsNoun());
736
+ };
737
+
753
738
  const contentRelationship = (config = {}) => {
754
- var _a;
755
739
  const faker = createFaker(config.seed);
756
- const isFilled = (_a = config.isFilled) != null ? _a : true;
757
- if (isFilled) {
740
+ if (config.state === "empty") {
741
+ return {
742
+ link_type: prismicT.LinkType.Document
743
+ };
744
+ } else {
758
745
  const model = config.model || contentRelationship$1({ seed: config.seed });
759
746
  const linkableDocuments = config.linkableDocuments ? config.linkableDocuments.filter((document2) => {
760
747
  let shouldKeep = true;
@@ -776,19 +763,18 @@ const contentRelationship = (config = {}) => {
776
763
  if (!document) {
777
764
  throw new Error("A linkable document could not be found.");
778
765
  }
779
- return buildContentRelationshipField({ document });
780
- } else {
781
- return {
782
- link_type: prismicT.LinkType.Document
783
- };
766
+ return buildContentRelationshipField({
767
+ document
768
+ });
784
769
  }
785
770
  };
786
771
 
787
772
  const date = (config = {}) => {
788
- return timestamp({
773
+ return config.state === "empty" ? null : timestamp({
789
774
  seed: config.seed,
790
775
  after: config.after,
791
- before: config.before
776
+ before: config.before,
777
+ state: "filled"
792
778
  }).split("T")[0];
793
779
  };
794
780
 
@@ -878,67 +864,65 @@ const getMockEmbedData = (config) => {
878
864
 
879
865
  const embed$1 = (config = {}) => {
880
866
  const embedData = getMockEmbedData({ seed: config.seed });
881
- return buildEmbedField({ seed: config.seed, embedData });
867
+ return config.state === "empty" ? {} : buildEmbedField({ seed: config.seed, embedData });
882
868
  };
883
869
 
884
870
  const geoPoint = (config = {}) => {
885
871
  const faker = createFaker(config.seed);
886
872
  const coordinates = faker.address.nearbyGPSCoordinate();
887
- return {
873
+ return config.state === "empty" ? {} : {
888
874
  longitude: Number.parseFloat(coordinates[0]),
889
875
  latitude: Number.parseFloat(coordinates[1])
890
876
  };
891
877
  };
892
878
 
893
- const patterns$9 = {
894
- short: {
895
- minItems: 1,
896
- maxItems: 3
897
- },
898
- medium: {
899
- minItems: 3,
900
- maxItems: 6
901
- },
902
- long: {
903
- minItems: 6,
904
- maxItems: 12
905
- }
906
- };
907
879
  const group = (config = {}) => {
908
- const faker = createFaker(config.seed);
909
- const model = config.model || group$1({ seed: config.seed });
910
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$9));
911
- const pattern = patterns$9[patternKey];
912
- const itemsCount = faker.datatype.number({
913
- min: pattern.minItems,
914
- max: pattern.maxItems
915
- });
916
- return Array(itemsCount).fill(void 0).map(() => {
917
- return valueForModelMap({
918
- seed: config.seed,
919
- map: model.config.fields,
920
- configs: config.configs
880
+ var _a;
881
+ if (config.state === "empty") {
882
+ return [];
883
+ } else {
884
+ const faker = createFaker(config.seed);
885
+ const model = config.model || group$1({ seed: config.seed });
886
+ const itemsCount = (_a = config.itemsCount) != null ? _a : faker.datatype.number({
887
+ min: 1,
888
+ max: 6
921
889
  });
922
- });
890
+ return Array(itemsCount).fill(void 0).map(() => {
891
+ return valueForModelMap({
892
+ seed: config.seed,
893
+ map: model.config.fields,
894
+ configs: config.configs
895
+ });
896
+ });
897
+ }
923
898
  };
924
899
 
925
- const buildImageField = (config) => {
900
+ const buildImageFieldImage = (config) => {
926
901
  var _a, _b, _c, _d;
927
- const faker = createFaker(config.seed);
928
- const url = new URL(config.imageData.url);
929
- const dimensions = {
930
- width: (_b = (_a = config.constraint) == null ? void 0 : _a.width) != null ? _b : config.imageData.width,
931
- height: (_d = (_c = config.constraint) == null ? void 0 : _c.height) != null ? _d : config.imageData.height
932
- };
933
- url.searchParams.set("w", dimensions.width.toString());
934
- url.searchParams.set("h", dimensions.height.toString());
935
- url.searchParams.set("fit", "crop");
936
- return {
937
- url: url.toString(),
938
- dimensions,
939
- alt: faker.lorem.sentence(),
940
- copyright: faker.lorem.sentence()
941
- };
902
+ if (config.state === "empty") {
903
+ return {
904
+ url: null,
905
+ dimensions: null,
906
+ alt: null,
907
+ copyright: null
908
+ };
909
+ } else {
910
+ const faker = createFaker(config.seed);
911
+ const url = new URL(config.imageData.url);
912
+ const dimensions = {
913
+ width: (_b = (_a = config.constraint) == null ? void 0 : _a.width) != null ? _b : config.imageData.width,
914
+ height: (_d = (_c = config.constraint) == null ? void 0 : _c.height) != null ? _d : config.imageData.height
915
+ };
916
+ url.searchParams.set("w", dimensions.width.toString());
917
+ url.searchParams.set("h", dimensions.height.toString());
918
+ url.searchParams.set("fit", "crop");
919
+ return {
920
+ url: url.toString(),
921
+ dimensions,
922
+ alt: faker.lorem.sentence(),
923
+ copyright: faker.lorem.sentence()
924
+ };
925
+ }
942
926
  };
943
927
 
944
928
  const dataSet = [
@@ -1031,19 +1015,21 @@ const getMockImageData = (config) => {
1031
1015
  const image$1 = (config = {}) => {
1032
1016
  const model = config.model || image$2({ seed: config.seed });
1033
1017
  const imageData = getMockImageData({ seed: config.seed });
1034
- const value = buildImageField({
1018
+ const value = buildImageFieldImage({
1035
1019
  seed: config.seed,
1036
1020
  imageData,
1037
- constraint: model.config.constraint
1021
+ constraint: model.config.constraint,
1022
+ state: config.state
1038
1023
  });
1039
1024
  for (const thumbnail of model.config.thumbnails) {
1040
- value[thumbnail.name] = buildImageField({
1025
+ value[thumbnail.name] = buildImageFieldImage({
1041
1026
  seed: config.seed,
1042
1027
  imageData,
1043
1028
  constraint: {
1044
1029
  width: thumbnail.width,
1045
1030
  height: thumbnail.height
1046
- }
1031
+ },
1032
+ state: config.state
1047
1033
  });
1048
1034
  }
1049
1035
  return value;
@@ -1052,7 +1038,7 @@ const image$1 = (config = {}) => {
1052
1038
  const integrationFields = (config = {}) => {
1053
1039
  const faker = createFaker(config.seed);
1054
1040
  const imageData = getMockImageData({ seed: config.seed });
1055
- return {
1041
+ return config.state === "empty" ? null : {
1056
1042
  id: faker.git.shortSha(),
1057
1043
  title: changeCase.capitalCase(faker.lorem.words(3)),
1058
1044
  description: faker.lorem.sentence(),
@@ -1064,14 +1050,16 @@ const integrationFields = (config = {}) => {
1064
1050
 
1065
1051
  const keyText = (config = {}) => {
1066
1052
  const faker = createFaker(config.seed);
1067
- return changeCase.sentenceCase(faker.lorem.words(3));
1053
+ return config.state === "empty" ? null : changeCase.sentenceCase(faker.lorem.words(3));
1068
1054
  };
1069
1055
 
1070
1056
  const linkToMedia = (config = {}) => {
1071
- var _a;
1072
1057
  const faker = createFaker(config.seed);
1073
- const isFilled = (_a = config.isFilled) != null ? _a : true;
1074
- if (isFilled) {
1058
+ if (config.state === "empty") {
1059
+ return {
1060
+ link_type: prismicT.LinkType.Media
1061
+ };
1062
+ } else {
1075
1063
  return {
1076
1064
  link_type: prismicT.LinkType.Media,
1077
1065
  name: faker.system.commonFileName(),
@@ -1081,58 +1069,55 @@ const linkToMedia = (config = {}) => {
1081
1069
  height: faker.datatype.number().toString(),
1082
1070
  width: faker.datatype.number().toString()
1083
1071
  };
1084
- } else {
1085
- return {
1086
- link_type: prismicT.LinkType.Media
1087
- };
1088
1072
  }
1089
1073
  };
1090
1074
 
1091
1075
  const link = (config = {}) => {
1092
- var _a, _b;
1076
+ var _a;
1093
1077
  const faker = createFaker(config.seed);
1094
- const isFilled = (_a = config.isFilled) != null ? _a : true;
1095
1078
  const type = config.type || faker.random.arrayElement([
1096
1079
  prismicT.LinkType.Web,
1097
1080
  prismicT.LinkType.Document,
1098
1081
  prismicT.LinkType.Media
1099
1082
  ]);
1100
- if (isFilled) {
1083
+ if (config.state === "empty") {
1084
+ return {
1085
+ link_type: type
1086
+ };
1087
+ } else {
1101
1088
  switch (type) {
1102
1089
  case prismicT.LinkType.Document: {
1103
1090
  return contentRelationship({
1104
1091
  seed: config.seed,
1105
- isFilled,
1092
+ state: config.state,
1106
1093
  linkableDocuments: config.linkableDocuments
1107
1094
  });
1108
1095
  }
1109
1096
  case prismicT.LinkType.Media: {
1110
1097
  return linkToMedia({
1111
1098
  seed: config.seed,
1112
- isFilled
1099
+ state: config.state
1113
1100
  });
1114
1101
  }
1115
- case prismicT.LinkType.Web: {
1102
+ case prismicT.LinkType.Web:
1103
+ default: {
1116
1104
  const model = config.model || link$1({ seed: config.seed });
1117
1105
  return {
1118
1106
  link_type: prismicT.LinkType.Web,
1119
1107
  url: faker.internet.url(),
1120
- target: ((_b = config.withTargetBlank) != null ? _b : model.config.allowTargetBlank && faker.datatype.boolean()) ? "_blank" : void 0
1108
+ target: ((_a = config.withTargetBlank) != null ? _a : model.config.allowTargetBlank && faker.datatype.boolean()) ? "_blank" : void 0
1121
1109
  };
1122
1110
  }
1123
1111
  }
1124
1112
  }
1125
- return {
1126
- link_type: type
1127
- };
1128
1113
  };
1129
1114
 
1130
1115
  const number = (config = {}) => {
1131
1116
  const faker = createFaker(config.seed);
1132
- return faker.datatype.number();
1117
+ return config.state === "empty" ? null : faker.datatype.number();
1133
1118
  };
1134
1119
 
1135
- const patterns$8 = {
1120
+ const patterns$5 = {
1136
1121
  short: {
1137
1122
  minWords: 1,
1138
1123
  maxWords: 3
@@ -1159,8 +1144,8 @@ const heading = (config = {}) => {
1159
1144
  ].includes(type2));
1160
1145
  const type = faker.random.arrayElement(types);
1161
1146
  if (type) {
1162
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$8));
1163
- const pattern = patterns$8[patternKey];
1147
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$5));
1148
+ const pattern = patterns$5[patternKey];
1164
1149
  return {
1165
1150
  type,
1166
1151
  text: changeCase.capitalCase(faker.lorem.words(faker.datatype.number({
@@ -1174,7 +1159,7 @@ const heading = (config = {}) => {
1174
1159
  }
1175
1160
  };
1176
1161
 
1177
- const patterns$7 = {
1162
+ const patterns$4 = {
1178
1163
  short: {
1179
1164
  sentenceCount: 2
1180
1165
  },
@@ -1187,8 +1172,8 @@ const patterns$7 = {
1187
1172
  };
1188
1173
  const paragraph = (config = {}) => {
1189
1174
  const faker = createFaker(config.seed);
1190
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$7));
1191
- const pattern = patterns$7[patternKey];
1175
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$4));
1176
+ const pattern = patterns$4[patternKey];
1192
1177
  return {
1193
1178
  type: prismicT.RichTextNodeType.paragraph,
1194
1179
  text: faker.lorem.paragraph(pattern.sentenceCount),
@@ -1196,7 +1181,7 @@ const paragraph = (config = {}) => {
1196
1181
  };
1197
1182
  };
1198
1183
 
1199
- const patterns$6 = {
1184
+ const patterns$3 = {
1200
1185
  short: {
1201
1186
  sentenceCount: 2
1202
1187
  },
@@ -1209,8 +1194,8 @@ const patterns$6 = {
1209
1194
  };
1210
1195
  const preformatted = (config = {}) => {
1211
1196
  const faker = createFaker(config.seed);
1212
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$6));
1213
- const pattern = patterns$6[patternKey];
1197
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$3));
1198
+ const pattern = patterns$3[patternKey];
1214
1199
  return {
1215
1200
  type: prismicT.RichTextNodeType.preformatted,
1216
1201
  text: faker.lorem.paragraph(pattern.sentenceCount),
@@ -1218,7 +1203,7 @@ const preformatted = (config = {}) => {
1218
1203
  };
1219
1204
  };
1220
1205
 
1221
- const patterns$5 = {
1206
+ const patterns$2 = {
1222
1207
  short: {
1223
1208
  minItems: 1,
1224
1209
  maxItems: 3
@@ -1234,8 +1219,8 @@ const patterns$5 = {
1234
1219
  };
1235
1220
  const list = (config = {}) => {
1236
1221
  const faker = createFaker(config.seed);
1237
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$5));
1238
- const pattern = patterns$5[patternKey];
1222
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$2));
1223
+ const pattern = patterns$2[patternKey];
1239
1224
  const itemsCount = faker.datatype.number({
1240
1225
  min: pattern.minItems,
1241
1226
  max: pattern.maxItems
@@ -1249,7 +1234,7 @@ const list = (config = {}) => {
1249
1234
  });
1250
1235
  };
1251
1236
 
1252
- const patterns$4 = {
1237
+ const patterns$1 = {
1253
1238
  short: {
1254
1239
  minItems: 1,
1255
1240
  maxItems: 3
@@ -1265,8 +1250,8 @@ const patterns$4 = {
1265
1250
  };
1266
1251
  const oList = (config = {}) => {
1267
1252
  const faker = createFaker(config.seed);
1268
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$4));
1269
- const pattern = patterns$4[patternKey];
1253
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$1));
1254
+ const pattern = patterns$1[patternKey];
1270
1255
  const itemsCount = faker.datatype.number({
1271
1256
  min: pattern.minItems,
1272
1257
  max: pattern.maxItems
@@ -1282,7 +1267,11 @@ const oList = (config = {}) => {
1282
1267
 
1283
1268
  const image = (config = {}) => {
1284
1269
  const imageData = getMockImageData({ seed: config.seed });
1285
- const imageField = buildImageField({ seed: config.seed, imageData });
1270
+ const imageField = buildImageFieldImage({
1271
+ seed: config.seed,
1272
+ imageData,
1273
+ state: false
1274
+ });
1286
1275
  return {
1287
1276
  type: prismicT.RichTextNodeType.image,
1288
1277
  alt: imageField.alt,
@@ -1301,7 +1290,7 @@ const embed = (config = {}) => {
1301
1290
  };
1302
1291
  };
1303
1292
 
1304
- const patterns$3 = {
1293
+ const patterns = {
1305
1294
  short: {
1306
1295
  blockCountMin: 1,
1307
1296
  blockCountMax: 2
@@ -1338,8 +1327,8 @@ const richText = (config = {}) => {
1338
1327
  const supportsMultipleBlocks = "multi" in model.config;
1339
1328
  const types = ("multi" in model.config ? model.config.multi : model.config.single).split(",").filter((type) => Object.keys(generators).includes(type));
1340
1329
  if (types.length > 0) {
1341
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$3));
1342
- const pattern = patterns$3[patternKey];
1330
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns));
1331
+ const pattern = patterns[patternKey];
1343
1332
  const blockCount = supportsMultipleBlocks ? faker.datatype.number({
1344
1333
  min: pattern.blockCountMin,
1345
1334
  max: pattern.blockCountMax
@@ -1358,38 +1347,22 @@ const select = (config = {}) => {
1358
1347
  const faker = createFaker(config.seed);
1359
1348
  const model = config.model || select$1({ seed: config.seed });
1360
1349
  const defaultValue = model.config.default_value;
1361
- return typeof defaultValue === "string" && faker.datatype.boolean() ? defaultValue : faker.random.arrayElement(model.config.options);
1362
- };
1363
-
1364
- const patterns$2 = {
1365
- none: {
1366
- minItems: 0,
1367
- maxItems: 0
1368
- },
1369
- short: {
1370
- minItems: 1,
1371
- maxItems: 3
1372
- },
1373
- medium: {
1374
- minItems: 3,
1375
- maxItems: 6
1376
- },
1377
- long: {
1378
- minItems: 6,
1379
- maxItems: 12
1350
+ if (config.state === "empty") {
1351
+ return null;
1352
+ } else {
1353
+ return typeof defaultValue === "string" && faker.datatype.boolean() ? defaultValue : faker.random.arrayElement(model.config.options);
1380
1354
  }
1381
1355
  };
1356
+
1382
1357
  const slice = (config = {}) => {
1383
- var _a;
1358
+ var _a, _b;
1384
1359
  const faker = createFaker(config.seed);
1385
1360
  const model = config.model || slice$1({ seed: config.seed });
1386
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$2));
1387
- const pattern = patterns$2[patternKey];
1388
1361
  const sliceType = (_a = config.type) != null ? _a : generateFieldId({ seed: config.seed });
1389
1362
  const sliceLabel = config.label !== void 0 ? config.label : changeCase.capitalCase(faker.company.bsNoun());
1390
- const itemsCount = Object.keys(model.repeat).length > 0 ? faker.datatype.number({
1391
- min: pattern.minItems,
1392
- max: pattern.maxItems
1363
+ const itemsCount = Object.keys(model.repeat).length > 0 ? (_b = config.itemsCount) != null ? _b : faker.datatype.number({
1364
+ min: 1,
1365
+ max: 6
1393
1366
  }) : 0;
1394
1367
  return {
1395
1368
  slice_type: sliceType,
@@ -1409,39 +1382,18 @@ const slice = (config = {}) => {
1409
1382
  };
1410
1383
  };
1411
1384
 
1412
- const patterns$1 = {
1413
- none: {
1414
- minItems: 0,
1415
- maxItems: 0
1416
- },
1417
- short: {
1418
- minItems: 1,
1419
- maxItems: 3
1420
- },
1421
- medium: {
1422
- minItems: 3,
1423
- maxItems: 6
1424
- },
1425
- long: {
1426
- minItems: 6,
1427
- maxItems: 12
1428
- }
1429
- };
1430
1385
  const sharedSliceVariation = (config = {}) => {
1431
1386
  var _a, _b;
1432
1387
  const faker = createFaker(config.seed);
1433
1388
  const model = config.model || sharedSliceVariation$1({ seed: config.seed });
1434
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$1));
1435
- const pattern = patterns$1[patternKey];
1436
1389
  const sliceType = (_a = config.type) != null ? _a : generateFieldId({ seed: config.seed });
1437
- const sliceLabel = (_b = config.label) != null ? _b : changeCase.capitalCase(faker.company.bsNoun());
1438
- const itemsCount = Object.keys(model.items).length > 0 ? faker.datatype.number({
1439
- min: pattern.minItems,
1440
- max: pattern.maxItems
1390
+ const itemsCount = Object.keys(model.items).length > 0 ? (_b = config.itemsCount) != null ? _b : faker.datatype.number({
1391
+ min: 1,
1392
+ max: 6
1441
1393
  }) : 0;
1442
1394
  return {
1443
1395
  slice_type: sliceType,
1444
- slice_label: sliceLabel,
1396
+ slice_label: null,
1445
1397
  variation: model.id,
1446
1398
  version: faker.git.shortSha(),
1447
1399
  primary: valueForModelMap({
@@ -1466,76 +1418,73 @@ const sharedSlice = (config = {}) => {
1466
1418
  return sharedSliceVariation({
1467
1419
  seed: config.seed,
1468
1420
  model: variationModel,
1469
- pattern: config.pattern,
1421
+ itemsCount: config.itemsCount,
1470
1422
  type: model.id,
1471
1423
  primaryFieldConfigs: config.primaryFieldConfigs,
1472
1424
  itemsFieldConfigs: config.itemsFieldConfigs
1473
1425
  });
1474
1426
  };
1475
1427
 
1476
- const patterns = {
1477
- short: {
1478
- minItems: 1,
1479
- maxItems: 3
1480
- },
1481
- medium: {
1482
- minItems: 3,
1483
- maxItems: 6
1484
- },
1485
- long: {
1486
- minItems: 6,
1487
- maxItems: 12
1488
- }
1489
- };
1490
1428
  const sliceZone = (config = {}) => {
1491
- const faker = createFaker(config.seed);
1492
- const model = config.model || sliceZone$1({ seed: config.seed });
1493
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns));
1494
- const pattern = patterns[patternKey];
1495
- const itemsCount = faker.datatype.number({
1496
- min: pattern.minItems,
1497
- max: pattern.maxItems
1498
- });
1499
- return Array(itemsCount).fill(void 0).map(() => {
1500
- var _a;
1501
- const choices = Object.entries(model.config.choices);
1502
- const [choiceType, choiceModel] = faker.random.arrayElement(choices);
1503
- const choiceLabels = model.config.labels[choiceType] || [];
1504
- const choiceLabel = faker.random.arrayElement(choiceLabels);
1505
- switch (choiceModel.type) {
1506
- case prismicT.CustomTypeModelSliceType.Slice: {
1507
- return slice({
1508
- seed: config.seed,
1509
- model: choiceModel,
1510
- type: choiceType,
1511
- label: choiceLabel ? choiceLabel.name : null,
1512
- primaryFieldConfigs: config.primaryFieldConfigs,
1513
- itemsFieldConfigs: config.itemsFieldConfigs
1514
- });
1515
- }
1516
- case prismicT.CustomTypeModelSliceType.SharedSlice: {
1517
- const sharedSliceModel = (_a = config.sharedSliceModels) == null ? void 0 : _a.find((sharedSliceModel2) => sharedSliceModel2.id === choiceType);
1518
- if (sharedSliceModel) {
1519
- return sharedSlice({
1520
- seed: config.seed,
1521
- model: sharedSliceModel,
1522
- primaryFieldConfigs: config.primaryFieldConfigs,
1523
- itemsFieldConfigs: config.itemsFieldConfigs
1524
- });
1429
+ var _a;
1430
+ if (config.state === "empty") {
1431
+ return [];
1432
+ } else {
1433
+ const faker = createFaker(config.seed);
1434
+ const model = config.model || sliceZone$1({ seed: config.seed });
1435
+ if (Object.keys(model.config.choices).length > 0) {
1436
+ const itemsCount = (_a = config.itemsCount) != null ? _a : faker.datatype.number({
1437
+ min: 1,
1438
+ max: 6
1439
+ });
1440
+ return Array(itemsCount).fill(void 0).map(() => {
1441
+ var _a2;
1442
+ const choices = Object.entries(model.config.choices);
1443
+ const [choiceType, choiceModel] = faker.random.arrayElement(choices);
1444
+ const choiceLabels = model.config.labels[choiceType] || [];
1445
+ const choiceLabel = faker.random.arrayElement(choiceLabels);
1446
+ switch (choiceModel.type) {
1447
+ case prismicT.CustomTypeModelSliceType.Slice: {
1448
+ return slice({
1449
+ seed: config.seed,
1450
+ model: choiceModel,
1451
+ type: choiceType,
1452
+ label: choiceLabel ? choiceLabel.name : null,
1453
+ primaryFieldConfigs: config.primaryFieldConfigs,
1454
+ itemsFieldConfigs: config.itemsFieldConfigs
1455
+ });
1456
+ }
1457
+ case prismicT.CustomTypeModelSliceType.SharedSlice: {
1458
+ const sharedSliceModel = (_a2 = config.sharedSliceModels) == null ? void 0 : _a2.find((sharedSliceModel2) => sharedSliceModel2.id === choiceType);
1459
+ if (sharedSliceModel) {
1460
+ return sharedSlice({
1461
+ seed: config.seed,
1462
+ model: sharedSliceModel,
1463
+ primaryFieldConfigs: config.primaryFieldConfigs,
1464
+ itemsFieldConfigs: config.itemsFieldConfigs
1465
+ });
1466
+ }
1467
+ }
1525
1468
  }
1526
- }
1469
+ }).filter((slice2) => slice2 !== void 0);
1470
+ } else {
1471
+ return [];
1527
1472
  }
1528
- }).filter((slice2) => slice2 !== void 0);
1473
+ }
1529
1474
  };
1530
1475
 
1531
1476
  const title = (config = {}) => {
1532
- return [
1533
- heading({
1534
- seed: config.seed,
1535
- model: config.model,
1536
- pattern: config.pattern
1537
- })
1538
- ];
1477
+ if (config.state === "empty") {
1478
+ return [];
1479
+ } else {
1480
+ return [
1481
+ heading({
1482
+ seed: config.seed,
1483
+ model: config.model,
1484
+ pattern: config.pattern
1485
+ })
1486
+ ];
1487
+ }
1539
1488
  };
1540
1489
 
1541
1490
  const uid = (config = {}) => {
@@ -1657,3 +1606,4 @@ var index = /*#__PURE__*/Object.freeze({
1657
1606
  });
1658
1607
 
1659
1608
  export { index as api, index$2 as model, index$1 as value };
1609
+ //# sourceMappingURL=index.js.map