@prismicio/mock 0.0.6 → 0.0.9

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 (99) hide show
  1. package/README.md +4 -1
  2. package/dist/api/index.cjs +242 -122
  3. package/dist/api/index.cjs.map +1 -0
  4. package/dist/api/index.d.ts +3 -2
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/index.js +669 -0
  7. package/dist/api/index.js.map +1 -0
  8. package/dist/index.cjs +581 -571
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.ts +155 -247
  11. package/dist/{index.mjs → index.js} +574 -561
  12. package/dist/index.js.map +1 -0
  13. package/dist/model/index.cjs +294 -257
  14. package/dist/model/index.cjs.map +1 -0
  15. package/dist/model/index.d.ts +72 -106
  16. package/dist/model/index.d.ts.map +1 -0
  17. package/dist/model/index.js +556 -0
  18. package/dist/model/index.js.map +1 -0
  19. package/dist/value/index.cjs +500 -647
  20. package/dist/value/index.cjs.map +1 -0
  21. package/dist/value/index.d.ts +71 -129
  22. package/dist/value/index.d.ts.map +1 -0
  23. package/dist/value/index.js +1461 -0
  24. package/dist/value/index.js.map +1 -0
  25. package/package.json +30 -27
  26. package/src/api/query.ts +2 -2
  27. package/src/api/ref.ts +3 -3
  28. package/src/api/repository.ts +5 -5
  29. package/src/lib/buildContentRelationshipField.ts +6 -1
  30. package/src/lib/buildEmbedField.ts +16 -27
  31. package/src/lib/buildImageFieldImage.ts +49 -0
  32. package/src/lib/createFaker.ts +98 -20
  33. package/src/lib/generateCustomTypeId.ts +1 -1
  34. package/src/lib/generateFieldId.ts +1 -3
  35. package/src/lib/generateTags.ts +4 -12
  36. package/src/lib/getMockEmbedData.ts +33 -12
  37. package/src/lib/getMockImageData.ts +1 -1
  38. package/src/lib/lorem.ts +112 -0
  39. package/src/model/boolean.ts +1 -1
  40. package/src/model/buildMockGroupFieldMap.ts +65 -0
  41. package/src/model/color.ts +2 -2
  42. package/src/model/contentRelationship.ts +16 -23
  43. package/src/model/customType.ts +49 -48
  44. package/src/model/date.ts +2 -2
  45. package/src/model/embed.ts +2 -2
  46. package/src/model/geoPoint.ts +1 -1
  47. package/src/model/group.ts +9 -16
  48. package/src/model/image.ts +16 -20
  49. package/src/model/index.ts +2 -0
  50. package/src/model/integrationFields.ts +5 -3
  51. package/src/model/keyText.ts +2 -2
  52. package/src/model/link.ts +3 -3
  53. package/src/model/linkToMedia.ts +2 -2
  54. package/src/model/number.ts +2 -2
  55. package/src/model/richText.ts +6 -6
  56. package/src/model/select.ts +13 -18
  57. package/src/model/sharedSlice.ts +15 -42
  58. package/src/model/sharedSliceVariation.ts +36 -24
  59. package/src/model/slice.ts +19 -23
  60. package/src/model/sliceZone.ts +23 -59
  61. package/src/model/timestamp.ts +2 -2
  62. package/src/model/title.ts +5 -5
  63. package/src/model/uid.ts +2 -2
  64. package/src/types.ts +130 -88
  65. package/src/value/boolean.ts +1 -1
  66. package/src/value/color.ts +16 -6
  67. package/src/value/contentRelationship.ts +54 -39
  68. package/src/value/customType.ts +5 -5
  69. package/src/value/date.ts +25 -9
  70. package/src/value/embed.ts +32 -7
  71. package/src/value/geoPoint.ts +21 -11
  72. package/src/value/group.ts +31 -45
  73. package/src/value/image.ts +22 -9
  74. package/src/value/integrationFields.ts +26 -14
  75. package/src/value/keyText.ts +16 -6
  76. package/src/value/link.ts +36 -37
  77. package/src/value/linkToMedia.ts +19 -23
  78. package/src/value/number.ts +16 -6
  79. package/src/value/richText/embed.ts +2 -2
  80. package/src/value/richText/heading.ts +10 -17
  81. package/src/value/richText/image.ts +8 -6
  82. package/src/value/richText/index.ts +4 -9
  83. package/src/value/richText/list.ts +4 -8
  84. package/src/value/richText/oList.ts +4 -8
  85. package/src/value/richText/paragraph.ts +8 -4
  86. package/src/value/richText/preformatted.ts +9 -5
  87. package/src/value/select.ts +23 -8
  88. package/src/value/sharedSlice.ts +3 -3
  89. package/src/value/sharedSliceVariation.ts +4 -36
  90. package/src/value/slice.ts +3 -32
  91. package/src/value/sliceZone.ts +54 -69
  92. package/src/value/timestamp.ts +42 -16
  93. package/src/value/title.ts +26 -13
  94. package/src/value/uid.ts +2 -2
  95. package/dist/api/index.mjs +0 -515
  96. package/dist/model/index.mjs +0 -465
  97. package/dist/value/index.mjs +0 -1554
  98. package/src/lib/buildImageField.ts +0 -34
  99. package/src/lib/buildMockGroupFieldMap.ts +0 -84
@@ -1,41 +1,133 @@
1
1
  import * as changeCase from 'change-case';
2
- import * as fakerLocaleEN from 'faker/lib/locales/en/index.js';
3
- import Faker from 'faker/lib/index.js';
2
+ import Rand from 'rand-seed';
4
3
  import * as prismicT from '@prismicio/types';
5
4
 
6
5
  const FAKER_SEED = 1984;
7
6
 
7
+ const wordsString = "lorem ipsum dolor sit amet, consectetur adipiscing elit ut aliquam, purus sit amet luctus venenatis, lectus magna fringilla urna, porttitor rhoncus dolor purus non enim praesent elementum facilisis leo, vel fringilla est ullamcorper eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis mauris sit amet massa vitae tortor condimentum lacinia quis vel eros donec ac odio tempor orci dapibus ultrices in iaculis nunc sed augue lacus, viverra vitae congue eu, consequat ac felis donec et odio pellentesque diam volutpat commodo sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam malesuada bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim sodales ut eu sem integer vitae justo eget magna fermentum iaculis eu non diam phasellus vestibulum lorem sed risus ultricies tristique nulla aliquet enim tortor, at auctor urna nunc id cursus metus aliquam eleifend mi in nulla posuere sollicitudin aliquam ultrices sagittis orci, a scelerisque purus semper eget duis at tellus at urna condimentum mattis pellentesque id nibh tortor, id aliquet lectus proin nibh nisl, condimentum id venenatis a, condimentum vitae sapien pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas sed tempus, urna et pharetra pharetra, massa massa ultricies mi, quis hendrerit dolor magna eget est lorem ipsum dolor sit amet, consectetur adipiscing elit pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas integer eget aliquet nibh praesent tristique magna sit amet purus gravida quis blandit turpis cursus in hac habitasse platea dictumst quisque sagittis, purus sit amet volutpat consequat, mauris nunc congue nisi, vitae suscipit tellus mauris a diam maecenas sed enim ut sem viverra aliquet eget sit amet tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra, magna ac placerat vestibulum, lectus mauris ultrices eros, in cursus turpis massa tincidunt dui ut ornare lectus sit amet est placerat in egestas erat imperdiet sed euismod nisi porta lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor id eu nisl nunc mi ipsum, faucibus vitae aliquet nec, ullamcorper sit amet risus nullam eget felis eget nunc lobortis mattis aliquam faucibus purus in massa tempor nec feugiat nisl pretium fusce id velit ut tortor pretium viverra suspendisse potenti nullam ac tortor vitae purus faucibus ornare suspendisse sed nisi lacus, sed viverra tellus in hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at augue eget arcu dictum varius duis at consectetur lorem donec massa sapien, faucibus et molestie ac, feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare massa, eget egestas purus viverra accumsan in nisl nisi, scelerisque eu ultrices vitae, auctor eu augue ut lectus arcu, bibendum at varius vel, pharetra vel turpis nunc eget lorem dolor, sed viverra ipsum nunc aliquet bibendum enim, facilisis gravida neque convallis a cras semper auctor neque, vitae tempus quam pellentesque nec nam aliquam sem et tortor consequat id porta nibh venenatis cras sed felis eget velit aliquet sagittis id consectetur purus ut faucibus pulvinar elementum integer enim neque, volutpat ac tincidunt vitae, semper quis lectus nulla at volutpat diam ut venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci porta non pulvinar neque laoreet suspendisse interdum consectetur libero, id faucibus nisl tincidunt eget nullam non nisi est, sit amet facilisis magna etiam tempor, orci eu lobortis elementum, nibh tellus molestie nunc, non blandit massa enim nec dui nunc mattis enim ut tellus elementum sagittis vitae et leo duis ut diam quam nulla porttitor massa id neque aliquam vestibulum morbi blandit cursus risus, at ultrices mi tempus imperdiet nulla malesuada pellentesque elit eget gravida cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc vel risus commodo viverra maecenas accumsan, lacus vel facilisis volutpat, est velit egestas dui, id ornare arcu odio ut sem nulla pharetra diam sit amet nisl suscipit adipiscing bibendum est ultricies integer quis auctor elit sed vulputate mi sit amet mauris commodo quis imperdiet massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin libero nunc, consequat interdum varius sit amet, mattis vulputate enim nulla aliquet porttitor lacus, luctus accumsan tortor posuere ac ut consequat semper viverra nam libero justo, laoreet sit amet cursus sit amet, dictum sit amet justo donec enim diam, vulputate ut pharetra sit amet, aliquam id diam maecenas ultricies mi eget mauris pharetra et ultrices neque ornare aenean euismod elementum nisi, quis eleifend quam adipiscing vitae proin sagittis, nisl rhoncus mattis rhoncus, urna neque viverra justo, nec ultrices dui sapien eget mi proin sed libero enim, sed faucibus turpis in eu mi bibendum neque egestas congue quisque egestas diam in arcu cursus euismod quis viverra nibh cras pulvinar mattis nunc, sed blandit libero volutpat sed cras ornare arcu dui vivamus arcu felis, bibendum ut tristique et, egestas quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim, sit amet venenatis urna cursus eget nunc scelerisque viverra mauris, in aliquam sem fringilla ut morbi tincidunt augue interdum velit euismod in pellentesque massa placerat duis ultricies lacus sed turpis tincidunt id aliquet risus feugiat in ante metus, dictum at tempor commodo, ullamcorper a lacus vestibulum sed arcu non odio euismod lacinia at quis risus sed vulputate odio ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat velit, scelerisque in dictum non, consectetur a erat nam at lectus urna duis convallis convallis tellus, id interdum velit laoreet id donec ultrices tincidunt arcu, non sodales neque sodales ut etiam sit amet nisl purus, in mollis nunc sed id semper risus in hendrerit gravida rutrum quisque non tellus orci, ac auctor augue mauris augue neque, gravida in fermentum et, sollicitudin ac orci phasellus egestas tellus rutrum tellus pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum, odio eu feugiat pretium, nibh ipsum consequat nisl, vel pretium lectus quam id leo in vitae turpis massa sed elementum tempus egestas sed sed risus pretium quam vulputate dignissim suspendisse in est ante in nibh mauris, cursus mattis molestie a, iaculis at erat pellentesque adipiscing commodo elit, at imperdiet dui accumsan sit amet nulla facilisi morbi tempus iaculis urna, id volutpat lacus laoreet non curabitur gravida arcu ac tortor dignissim convallis aenean et tortor at risus viverra adipiscing at in tellus integer feugiat scelerisque varius morbi enim nunc, faucibus a pellentesque sit amet, porttitor eget dolor morbi non arcu risus, quis varius quam quisque id diam vel quam elementum pulvinar etiam non quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit amet, consectetur adipiscing elit duis tristique sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas maecenas pharetra convallis posuere morbi leo urna, molestie at elementum eu, facilisis sed odio morbi quis commodo odio aenean sed adipiscing diam donec adipiscing tristique risus nec feugiat in fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida hendrerit lectus a molestie";
8
+ const loremWords = wordsString.split(" ");
9
+ const lorem = (length, wordOffset = 0) => {
10
+ const count = parseInt(length.substring(0, length.length - 1));
11
+ const countType = length.charAt(length.length - 1);
12
+ if (!isNaN(count) && (countType === "w" || countType === "c")) {
13
+ if (!lorem.spaceIndices.length) {
14
+ let startIndex = -1;
15
+ do {
16
+ const index = wordsString.indexOf(" ", startIndex + 1);
17
+ lorem.spaceIndices.push(index);
18
+ startIndex = index;
19
+ } while (startIndex !== -1);
20
+ }
21
+ if (countType === "c") {
22
+ return wordsString.substring(0, count);
23
+ } else {
24
+ let sentence = "";
25
+ const startSpaceIndex = lorem.spaceIndices[wordOffset % lorem.spaceIndices.length - 1];
26
+ const endSpaceIndex = lorem.spaceIndices[(wordOffset % lorem.spaceIndices.length + count) % lorem.spaceIndices.length - 1];
27
+ if (count + wordOffset % lorem.spaceIndices.length > lorem.spaceIndices.length) {
28
+ sentence += wordsString.substring(startSpaceIndex + 1) + " ";
29
+ const wraparoundCounts = Math.floor(count / lorem.spaceIndices.length) - 1;
30
+ for (let i = 0; i < wraparoundCounts; i++) {
31
+ sentence += wordsString + " ";
32
+ }
33
+ sentence += wordsString.substring(0, endSpaceIndex);
34
+ } else {
35
+ sentence = wordsString.substring(startSpaceIndex + 1, endSpaceIndex);
36
+ }
37
+ if (sentence.charAt(sentence.length - 1) === ",") {
38
+ return sentence.substring(0, sentence.length - 1);
39
+ } else {
40
+ return sentence.substring(0, sentence.length);
41
+ }
42
+ }
43
+ }
44
+ throw new Error("Length must be of the form `${number}w` or `${number}c`");
45
+ };
46
+ lorem.spaceIndices = [];
47
+
8
48
  const createFaker = (seed = FAKER_SEED) => {
9
- let normalizedSeed;
10
- if (typeof seed === "string") {
11
- normalizedSeed = seed.split("").map((char) => char.charCodeAt(0));
49
+ const normalizedSeed = seed.toString();
50
+ if (createFaker.cache[normalizedSeed]) {
51
+ return createFaker.cache[normalizedSeed];
12
52
  } else {
13
- normalizedSeed = seed;
14
- }
15
- const cacheKey = JSON.stringify(normalizedSeed);
16
- if (createFaker.cache[cacheKey]) {
17
- return createFaker.cache[cacheKey];
53
+ const faker = new Faker(normalizedSeed);
54
+ return createFaker.cache[normalizedSeed] = faker;
18
55
  }
19
- const fakerInstance = new Faker();
20
- fakerInstance.locales["en"] = fakerLocaleEN;
21
- fakerInstance.seed(normalizedSeed);
22
- createFaker.cache[cacheKey] = fakerInstance;
23
- return fakerInstance;
24
56
  };
25
57
  createFaker.cache = {};
58
+ const DAY_MS = 1e3 * 60 * 60 * 24;
59
+ const YEAR_MS = DAY_MS * 365;
60
+ const YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4);
61
+ class Faker {
62
+ constructor(seed) {
63
+ this.rand = new Rand(seed);
64
+ }
65
+ boolean() {
66
+ return this.random() >= 0.5;
67
+ }
68
+ random() {
69
+ return this.rand.next();
70
+ }
71
+ randomElement(elements) {
72
+ return elements[this.range(0, elements.length)];
73
+ }
74
+ randomElements(elements) {
75
+ return elements.filter(() => this.boolean());
76
+ }
77
+ range(min, max) {
78
+ return Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)));
79
+ }
80
+ rangeFloat(min, max) {
81
+ return this.random() * (max - min) + min;
82
+ }
83
+ words(length, wordOffset = this.range(0, loremWords.length)) {
84
+ return lorem(`${length}w`, wordOffset);
85
+ }
86
+ word() {
87
+ return this.randomElement(loremWords);
88
+ }
89
+ lorem(length, wordOffset = this.range(0, loremWords.length)) {
90
+ return lorem(length, wordOffset);
91
+ }
92
+ url() {
93
+ return `https://${this.word()}.example`;
94
+ }
95
+ hexColor() {
96
+ return `#${this.hash(6)}`;
97
+ }
98
+ hash(length) {
99
+ let hash = "";
100
+ for (let i = 0; i < length; i++) {
101
+ const chars = this.boolean() ? "abcdef" : "0123456789";
102
+ hash += chars[this.range(0, chars.length)];
103
+ }
104
+ return hash;
105
+ }
106
+ date() {
107
+ return new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3));
108
+ }
109
+ dateAfter(date) {
110
+ const timestamp = date.getTime();
111
+ return new Date(this.range(timestamp, timestamp + YEAR_MS * 3));
112
+ }
113
+ dateBefore(date) {
114
+ const timestamp = date.getTime();
115
+ return new Date(this.range(timestamp - YEAR_MS * 3, timestamp));
116
+ }
117
+ dateBetween(min, max) {
118
+ return new Date(this.range(min.getTime(), max.getTime()));
119
+ }
120
+ }
26
121
 
27
122
  const generateTags = (config) => {
28
123
  var _a, _b;
29
124
  const faker = createFaker(config.seed);
30
- return Array(faker.datatype.number({
31
- min: (_a = config.min) != null ? _a : 0,
32
- max: (_b = config.max) != null ? _b : 2
33
- })).fill(void 0).map(() => changeCase.capitalCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 }))));
125
+ return Array.from({ length: faker.range((_a = config.min) != null ? _a : 0, (_b = config.max) != null ? _b : 2) }, () => changeCase.capitalCase(faker.words(faker.range(1, 3))));
34
126
  };
35
127
 
36
128
  const boolean$1 = (config = {}) => {
37
129
  const faker = createFaker(config.seed);
38
- return faker.datatype.boolean();
130
+ return faker.boolean();
39
131
  };
40
132
 
41
133
  const valueForModel = (config) => {
@@ -252,7 +344,7 @@ const boolean = (config = {}) => {
252
344
  return {
253
345
  type: prismicT.CustomTypeModelFieldType.Boolean,
254
346
  config: {
255
- label: changeCase.capitalCase(faker.company.bsNoun())
347
+ label: changeCase.capitalCase(faker.word())
256
348
  }
257
349
  };
258
350
  };
@@ -262,38 +354,58 @@ const color$1 = (config = {}) => {
262
354
  return {
263
355
  type: prismicT.CustomTypeModelFieldType.Color,
264
356
  config: {
265
- label: changeCase.capitalCase(faker.company.bsNoun()),
266
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
357
+ label: changeCase.capitalCase(faker.word()),
358
+ placeholder: changeCase.sentenceCase(faker.words(3))
267
359
  }
268
360
  };
269
361
  };
270
362
 
271
- const generateCustomTypeId = (config) => {
272
- const faker = createFaker(config.seed);
273
- return changeCase.snakeCase(faker.company.bsNoun());
274
- };
275
-
276
363
  const contentRelationship$1 = (config = {}) => {
277
364
  const faker = createFaker(config.seed);
278
365
  return {
279
366
  type: prismicT.CustomTypeModelFieldType.Link,
280
367
  config: {
281
- label: changeCase.capitalCase(faker.company.bsNoun()),
282
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
368
+ label: changeCase.capitalCase(faker.word()),
369
+ placeholder: changeCase.sentenceCase(faker.words(3)),
283
370
  select: prismicT.CustomTypeModelLinkSelectType.Document,
284
- customtypes: config.constrainCustomTypes ? Array(faker.datatype.number({ min: 1, max: 3 })).fill(void 0).map(() => generateCustomTypeId({ seed: config.seed })) : void 0,
285
- 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
371
+ customtypes: config.customTypeIDs,
372
+ tags: config.tags
286
373
  }
287
374
  };
288
375
  };
289
376
 
377
+ const customType$1 = (config = {}) => {
378
+ var _a, _b;
379
+ const faker = createFaker(config.seed);
380
+ let label = config.label || changeCase.capitalCase(faker.words(faker.range(1, 2)));
381
+ let id = config.id || changeCase.snakeCase(label);
382
+ if (config.id && !config.label) {
383
+ label = changeCase.capitalCase(config.id);
384
+ } else if (config.label && !config.label) {
385
+ id = changeCase.snakeCase(config.label);
386
+ }
387
+ let json = {};
388
+ if ("fields" in config && config.fields) {
389
+ json = { Main: config.fields };
390
+ } else if ("tabs" in config && config.tabs) {
391
+ json = config.tabs;
392
+ }
393
+ return {
394
+ id,
395
+ label,
396
+ status: (_a = config.status) != null ? _a : faker.boolean(),
397
+ repeatable: (_b = config.repeatable) != null ? _b : faker.boolean(),
398
+ json
399
+ };
400
+ };
401
+
290
402
  const date$1 = (config = {}) => {
291
403
  const faker = createFaker(config.seed);
292
404
  return {
293
405
  type: prismicT.CustomTypeModelFieldType.Date,
294
406
  config: {
295
- label: changeCase.capitalCase(faker.company.bsNoun()),
296
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
407
+ label: changeCase.capitalCase(faker.word()),
408
+ placeholder: changeCase.sentenceCase(faker.words(3))
297
409
  }
298
410
  };
299
411
  };
@@ -303,8 +415,8 @@ const embed$2 = (config = {}) => {
303
415
  return {
304
416
  type: prismicT.CustomTypeModelFieldType.Embed,
305
417
  config: {
306
- label: changeCase.capitalCase(faker.company.bsNoun()),
307
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
418
+ label: changeCase.capitalCase(faker.word()),
419
+ placeholder: changeCase.sentenceCase(faker.words(3))
308
420
  }
309
421
  };
310
422
  };
@@ -314,28 +426,40 @@ const geoPoint$1 = (config = {}) => {
314
426
  return {
315
427
  type: prismicT.CustomTypeModelFieldType.GeoPoint,
316
428
  config: {
317
- label: changeCase.capitalCase(faker.company.bsNoun())
429
+ label: changeCase.capitalCase(faker.word())
430
+ }
431
+ };
432
+ };
433
+
434
+ const group$1 = (config = {}) => {
435
+ const faker = createFaker(config.seed);
436
+ return {
437
+ type: prismicT.CustomTypeModelFieldType.Group,
438
+ config: {
439
+ label: changeCase.capitalCase(faker.word()),
440
+ fields: config.fields || {}
318
441
  }
319
442
  };
320
443
  };
321
444
 
322
445
  const image$2 = (config = {}) => {
323
- var _a;
324
446
  const faker = createFaker(config.seed);
325
- const thumbnailsCount = (_a = config.thumbnailsCount) != null ? _a : faker.datatype.number(3);
447
+ const thumbnails = (config.thumbnailNames || []).map((name) => {
448
+ return {
449
+ name,
450
+ width: faker.range(500, 2e3),
451
+ height: faker.range(500, 2e3)
452
+ };
453
+ });
326
454
  return {
327
455
  type: prismicT.CustomTypeModelFieldType.Image,
328
456
  config: {
329
- label: changeCase.capitalCase(faker.company.bsNoun()),
457
+ label: changeCase.capitalCase(faker.word()),
330
458
  constraint: {
331
- width: config.withConstraint ? faker.datatype.number({ min: 500, max: 2e3 }) : null,
332
- height: config.withConstraint ? faker.datatype.number({ min: 500, max: 2e3 }) : null
459
+ width: config.withConstraint ? faker.range(500, 2e3) : null,
460
+ height: config.withConstraint ? faker.range(500, 2e3) : null
333
461
  },
334
- thumbnails: Array(thumbnailsCount).fill(void 0).map(() => ({
335
- name: changeCase.pascalCase(faker.company.bsNoun()),
336
- width: faker.datatype.number({ min: 500, max: 2e3 }),
337
- height: faker.datatype.number({ min: 500, max: 2e3 })
338
- }))
462
+ thumbnails
339
463
  }
340
464
  };
341
465
  };
@@ -345,8 +469,8 @@ const integrationFields$1 = (config = {}) => {
345
469
  return {
346
470
  type: prismicT.CustomTypeModelFieldType.IntegrationFields,
347
471
  config: {
348
- label: changeCase.capitalCase(faker.company.bsNoun()),
349
- catalog: changeCase.snakeCase(faker.lorem.words(4))
472
+ label: changeCase.capitalCase(faker.word()),
473
+ catalog: config.catalog || changeCase.snakeCase(faker.words(2))
350
474
  }
351
475
  };
352
476
  };
@@ -356,8 +480,8 @@ const keyText$1 = (config = {}) => {
356
480
  return {
357
481
  type: prismicT.CustomTypeModelFieldType.Text,
358
482
  config: {
359
- label: changeCase.capitalCase(faker.company.bsNoun()),
360
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
483
+ label: changeCase.capitalCase(faker.word()),
484
+ placeholder: changeCase.sentenceCase(faker.words(3))
361
485
  }
362
486
  };
363
487
  };
@@ -367,10 +491,10 @@ const link$1 = (config = {}) => {
367
491
  return {
368
492
  type: prismicT.CustomTypeModelFieldType.Link,
369
493
  config: {
370
- label: changeCase.capitalCase(faker.company.bsNoun()),
371
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
494
+ label: changeCase.capitalCase(faker.word()),
495
+ placeholder: changeCase.sentenceCase(faker.words(3)),
372
496
  select: null,
373
- allowTargetBlank: ("allowTargetBlank" in config ? config.allowTargetBlank : faker.datatype.boolean()) || void 0
497
+ allowTargetBlank: ("allowTargetBlank" in config ? config.allowTargetBlank : faker.boolean()) || void 0
374
498
  }
375
499
  };
376
500
  };
@@ -380,8 +504,8 @@ const linkToMedia$1 = (config = {}) => {
380
504
  return {
381
505
  type: prismicT.CustomTypeModelFieldType.Link,
382
506
  config: {
383
- label: changeCase.capitalCase(faker.company.bsNoun()),
384
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
507
+ label: changeCase.capitalCase(faker.word()),
508
+ placeholder: changeCase.sentenceCase(faker.words(3)),
385
509
  select: prismicT.CustomTypeModelLinkSelectType.Media
386
510
  }
387
511
  };
@@ -392,8 +516,8 @@ const number$1 = (config = {}) => {
392
516
  return {
393
517
  type: prismicT.CustomTypeModelFieldType.Number,
394
518
  config: {
395
- label: changeCase.capitalCase(faker.company.bsNoun()),
396
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
519
+ label: changeCase.capitalCase(faker.word()),
520
+ placeholder: changeCase.sentenceCase(faker.words(3))
397
521
  }
398
522
  };
399
523
  };
@@ -401,7 +525,7 @@ const number$1 = (config = {}) => {
401
525
  const richText$1 = (config = {}) => {
402
526
  var _a;
403
527
  const faker = createFaker(config.seed);
404
- const blockTypes = faker.random.arrayElements([
528
+ const blockTypes = faker.randomElements([
405
529
  prismicT.RichTextNodeType.heading1,
406
530
  prismicT.RichTextNodeType.heading2,
407
531
  prismicT.RichTextNodeType.heading3,
@@ -418,168 +542,94 @@ const richText$1 = (config = {}) => {
418
542
  prismicT.RichTextNodeType.embed,
419
543
  prismicT.RichTextNodeType.hyperlink
420
544
  ]).join(",");
421
- const blockTypeConfig = ((_a = config.withMultipleBlocks) != null ? _a : faker.datatype.boolean()) ? { multi: blockTypes } : { single: blockTypes };
545
+ const blockTypeConfig = ((_a = config.withMultipleBlocks) != null ? _a : faker.boolean()) ? { multi: blockTypes } : { single: blockTypes };
422
546
  return {
423
547
  type: prismicT.CustomTypeModelFieldType.StructuredText,
424
548
  config: {
425
- label: changeCase.capitalCase(faker.company.bsNoun()),
426
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
427
- allowTargetBlank: faker.datatype.boolean() ? true : void 0,
549
+ label: changeCase.capitalCase(faker.word()),
550
+ placeholder: changeCase.sentenceCase(faker.words(3)),
551
+ allowTargetBlank: faker.boolean() ? true : void 0,
428
552
  ...blockTypeConfig
429
553
  }
430
554
  };
431
555
  };
432
556
 
433
557
  const select$1 = (config = {}) => {
434
- var _a;
435
558
  const faker = createFaker(config.seed);
436
- const optionsCount = (_a = config.optionsCount) != null ? _a : faker.datatype.number({ min: 1, max: 5 });
437
- const options = Array(optionsCount).fill(void 0).map(() => changeCase.capitalCase(faker.company.bsBuzz()));
438
559
  return {
439
560
  type: prismicT.CustomTypeModelFieldType.Select,
440
561
  config: {
441
- label: changeCase.capitalCase(faker.company.bsNoun()),
442
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
443
- options,
444
- default_value: config.withDefaultValue ? faker.random.arrayElement(options) : void 0
562
+ label: changeCase.capitalCase(faker.word()),
563
+ placeholder: changeCase.sentenceCase(faker.words(3)),
564
+ options: config.options || [],
565
+ default_value: config.defaultValue || void 0
445
566
  }
446
567
  };
447
568
  };
448
569
 
449
- const timestamp$1 = (config = {}) => {
570
+ const sharedSlice$1 = (config = {}) => {
450
571
  const faker = createFaker(config.seed);
572
+ let name = config.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));
573
+ let id = config.id || changeCase.snakeCase(name);
574
+ if (config.id && !config.name) {
575
+ name = changeCase.pascalCase(config.id);
576
+ } else if (config.name && !config.name) {
577
+ id = changeCase.snakeCase(config.name);
578
+ }
451
579
  return {
452
- type: prismicT.CustomTypeModelFieldType.Timestamp,
453
- config: {
454
- label: changeCase.capitalCase(faker.company.bsNoun()),
455
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
456
- }
580
+ type: prismicT.CustomTypeModelSliceType.SharedSlice,
581
+ id,
582
+ name,
583
+ description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
584
+ variations: config.variations || []
457
585
  };
458
586
  };
459
587
 
460
- const title$1 = (config = {}) => {
461
- const faker = createFaker(config.seed);
462
- const single = faker.random.arrayElements([
463
- "heading1",
464
- "heading2",
465
- "heading3",
466
- "heading4",
467
- "heading5",
468
- "heading6"
469
- ]).join(",");
588
+ const sharedSliceChoice = () => {
470
589
  return {
471
- type: prismicT.CustomTypeModelFieldType.StructuredText,
472
- config: {
473
- label: changeCase.capitalCase(faker.company.bsNoun()),
474
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
475
- single,
476
- allowTargetBlank: faker.datatype.boolean() ? true : void 0
477
- }
590
+ type: prismicT.CustomTypeModelSliceType.SharedSlice
478
591
  };
479
592
  };
480
593
 
481
- const generateFieldId = (config) => {
482
- const faker = createFaker(config.seed);
483
- return changeCase.snakeCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 })));
484
- };
485
-
486
- const mockModelFns = {
487
- boolean,
488
- color: color$1,
489
- contentRelationship: contentRelationship$1,
490
- date: date$1,
491
- embed: embed$2,
492
- geoPoint: geoPoint$1,
493
- image: image$2,
494
- integrationFields: integrationFields$1,
495
- keyText: keyText$1,
496
- link: link$1,
497
- linkToMedia: linkToMedia$1,
498
- number: number$1,
499
- richText: richText$1,
500
- select: select$1,
501
- timestamp: timestamp$1,
502
- title: title$1
503
- };
504
- const buildMockGroupFieldMap = (config = {}) => {
505
- var _a;
594
+ const sharedSliceVariation$1 = (config = {}) => {
506
595
  const faker = createFaker(config.seed);
507
- const configs = config.configs || {};
508
- const fields = {};
509
- for (const mockModelType in mockModelFns) {
510
- const mockModelFn = mockModelFns[mockModelType];
511
- const mockModelMapConfig = configs[mockModelType] || {};
512
- const count = (_a = mockModelMapConfig.count) != null ? _a : faker.random.arrayElement([0, 0, 0, 1]);
513
- for (let i = 0; i < count; i++) {
514
- const fieldId = generateFieldId({ seed: config.seed });
515
- fields[fieldId] = mockModelFn({
516
- seed: config.seed,
517
- ...mockModelMapConfig.config
518
- });
519
- }
596
+ let name = config.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));
597
+ let id = config.id || changeCase.snakeCase(name);
598
+ if (config.id && !config.name) {
599
+ name = changeCase.pascalCase(config.id);
600
+ } else if (config.name && !config.name) {
601
+ id = changeCase.snakeCase(config.name);
520
602
  }
521
- return fields;
522
- };
523
-
524
- const uid$1 = (config = {}) => {
525
- const faker = createFaker(config.seed);
526
603
  return {
527
- type: prismicT.CustomTypeModelFieldType.UID,
528
- config: {
529
- label: changeCase.capitalCase(faker.company.bsNoun()),
530
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
531
- }
532
- };
533
- };
534
-
535
- const sharedSliceChoice = () => {
536
- return {
537
- type: prismicT.CustomTypeModelSliceType.SharedSlice
604
+ id,
605
+ name,
606
+ description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
607
+ docURL: faker.url(),
608
+ version: faker.hash(7),
609
+ primary: config.primaryFields || {},
610
+ items: config.itemsFields || {}
538
611
  };
539
612
  };
540
613
 
541
614
  const slice$1 = (config = {}) => {
542
- var _a, _b, _c, _d, _e, _f;
543
615
  const faker = createFaker(config.seed);
544
616
  return {
545
617
  type: prismicT.CustomTypeModelSliceType.Slice,
546
- icon: changeCase.snakeCase(faker.company.bsNoun()),
547
- display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List,
548
- fieldset: changeCase.capitalCase(faker.lorem.words()),
549
- description: faker.lorem.sentence(),
550
- repeat: buildMockGroupFieldMap({
551
- seed: (_b = (_a = config.repeatFieldConfig) == null ? void 0 : _a.seed) != null ? _b : config.seed,
552
- configs: (_c = config.repeatFieldConfig) == null ? void 0 : _c.configs
553
- }),
554
- "non-repeat": buildMockGroupFieldMap({
555
- seed: (_e = (_d = config.nonRepeatFieldConfig) == null ? void 0 : _d.seed) != null ? _e : config.seed,
556
- configs: (_f = config.nonRepeatFieldConfig) == null ? void 0 : _f.configs
557
- })
618
+ icon: changeCase.snakeCase(faker.word()),
619
+ display: faker.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List,
620
+ fieldset: changeCase.capitalCase(faker.words(2)),
621
+ description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
622
+ repeat: config.repeatFields || {},
623
+ "non-repeat": config.nonRepeatFields || {}
558
624
  };
559
625
  };
560
626
 
561
627
  const sliceZone$1 = (config = {}) => {
562
- var _a;
563
- const faker = createFaker(config.seed);
564
- let choices = {};
565
- if ("choices" in config) {
566
- choices = config.choices || {};
567
- } else {
568
- const choicesCount = (_a = config.choicesCount) != null ? _a : faker.datatype.number({ min: 2, max: 6 });
569
- for (let i = 0; i < choicesCount; i++) {
570
- const choiceId = generateFieldId({ seed: config.seed });
571
- choices[choiceId] = config.withSharedSlices ? sharedSliceChoice() : slice$1({ seed: config.seed });
572
- }
573
- }
574
628
  const labels = {};
575
- for (const choiceId in choices) {
576
- const choice = choices[choiceId];
629
+ for (const choiceId in config.choices) {
630
+ const choice = config.choices[choiceId];
577
631
  if (choice.type === prismicT.CustomTypeModelSliceType.Slice) {
578
- const labelsCount = faker.datatype.number({ min: 0, max: 3 });
579
- labels[choiceId] = Array(labelsCount).fill(void 0).map(() => ({
580
- name: changeCase.capitalCase(faker.company.bsNoun()),
581
- display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List
582
- }));
632
+ labels[choiceId] = [];
583
633
  }
584
634
  }
585
635
  return {
@@ -587,102 +637,87 @@ const sliceZone$1 = (config = {}) => {
587
637
  fieldset: "Slice zone",
588
638
  config: {
589
639
  labels,
590
- choices
640
+ choices: config.choices || {}
591
641
  }
592
642
  };
593
643
  };
594
644
 
595
- const customType$1 = (config = {}) => {
596
- var _a;
645
+ const timestamp$1 = (config = {}) => {
597
646
  const faker = createFaker(config.seed);
598
- const tabsCount = (_a = config.tabsCount) != null ? _a : faker.datatype.number({ min: 1, max: 3 });
599
- const json = {};
600
- for (let i = 0; i < tabsCount; i++) {
601
- const tabName = changeCase.capitalCase(faker.lorem.word());
602
- const tabFields = buildMockGroupFieldMap({
603
- seed: config.seed,
604
- configs: config.configs
605
- });
606
- if (i === 0 && config.withUID) {
607
- const fieldId = generateFieldId({ seed: config.seed });
608
- tabFields[fieldId] = uid$1();
609
- }
610
- if (config.withSliceZones) {
611
- const sliceZoneId = generateFieldId({ seed: config.seed });
612
- tabFields[sliceZoneId] = sliceZone$1({
613
- withSharedSlices: config.withSharedSlices
614
- });
615
- }
616
- json[tabName] = tabFields;
617
- }
618
- const id = generateCustomTypeId({ seed: config.seed });
619
647
  return {
620
- id,
621
- label: changeCase.capitalCase(id),
622
- status: faker.datatype.boolean(),
623
- repeatable: faker.datatype.boolean(),
624
- json
648
+ type: prismicT.CustomTypeModelFieldType.Timestamp,
649
+ config: {
650
+ label: changeCase.capitalCase(faker.word()),
651
+ placeholder: changeCase.sentenceCase(faker.words(3))
652
+ }
625
653
  };
626
654
  };
627
655
 
628
- const group$1 = (config = {}) => {
656
+ const title$1 = (config = {}) => {
629
657
  const faker = createFaker(config.seed);
630
- const fields = buildMockGroupFieldMap({
631
- seed: config.seed,
632
- configs: config.configs
633
- });
658
+ const single = faker.randomElements([
659
+ "heading1",
660
+ "heading2",
661
+ "heading3",
662
+ "heading4",
663
+ "heading5",
664
+ "heading6"
665
+ ]).join(",");
634
666
  return {
635
- type: prismicT.CustomTypeModelFieldType.Group,
667
+ type: prismicT.CustomTypeModelFieldType.StructuredText,
636
668
  config: {
637
- label: changeCase.capitalCase(faker.company.bsNoun()),
638
- fields
669
+ label: changeCase.capitalCase(faker.word()),
670
+ placeholder: changeCase.sentenceCase(faker.words(3)),
671
+ single,
672
+ allowTargetBlank: faker.boolean() || void 0
639
673
  }
640
674
  };
641
675
  };
642
676
 
643
- const sharedSliceVariation$1 = (config = {}) => {
644
- var _a, _b, _c, _d, _e, _f;
677
+ const uid$1 = (config = {}) => {
645
678
  const faker = createFaker(config.seed);
646
- const name = changeCase.capitalCase(faker.company.bsNoun());
647
679
  return {
648
- id: changeCase.snakeCase(name),
649
- name,
650
- description: faker.lorem.sentence(),
651
- docURL: faker.internet.url(),
652
- version: faker.git.shortSha(),
653
- primary: buildMockGroupFieldMap({
654
- seed: (_b = (_a = config.primaryFieldConfig) == null ? void 0 : _a.seed) != null ? _b : config.seed,
655
- configs: (_c = config.primaryFieldConfig) == null ? void 0 : _c.configs
656
- }),
657
- items: buildMockGroupFieldMap({
658
- seed: (_e = (_d = config.itemsFieldConfig) == null ? void 0 : _d.seed) != null ? _e : config.seed,
659
- configs: (_f = config.itemsFieldConfig) == null ? void 0 : _f.configs
660
- })
680
+ type: prismicT.CustomTypeModelFieldType.UID,
681
+ config: {
682
+ label: changeCase.capitalCase(faker.word()),
683
+ placeholder: changeCase.sentenceCase(faker.words(3))
684
+ }
661
685
  };
662
686
  };
663
687
 
664
- const sharedSlice$1 = (config = {}) => {
665
- var _a;
688
+ const generateFieldId = (config) => {
666
689
  const faker = createFaker(config.seed);
667
- const name = changeCase.capitalCase(faker.company.bsNoun());
668
- let variations = [];
669
- if ("variations" in config) {
670
- variations = config.variations || [];
671
- } else {
672
- const variationsCount = (_a = config.variationsCount) != null ? _a : faker.datatype.number({ min: 1, max: 3 });
673
- variations = Array(variationsCount).fill(void 0).map(() => sharedSliceVariation$1({
674
- seed: config.seed,
675
- itemsFieldConfig: config.itemsFieldConfig,
676
- primaryFieldConfig: config.primaryFieldConfig
677
- }));
690
+ return changeCase.snakeCase(faker.words(faker.range(1, 3)));
691
+ };
692
+
693
+ const mockModelFns = {
694
+ boolean,
695
+ color: color$1,
696
+ contentRelationship: contentRelationship$1,
697
+ date: date$1,
698
+ embed: embed$2,
699
+ geoPoint: geoPoint$1,
700
+ image: image$2,
701
+ integrationFields: integrationFields$1,
702
+ keyText: keyText$1,
703
+ link: link$1,
704
+ linkToMedia: linkToMedia$1,
705
+ number: number$1,
706
+ richText: richText$1,
707
+ select: select$1,
708
+ timestamp: timestamp$1,
709
+ title: title$1
710
+ };
711
+ const buildMockGroupFieldMap = (config = {}) => {
712
+ const faker = createFaker(config.seed);
713
+ const fields = {};
714
+ const fieldTypes = faker.randomElements(Object.keys(mockModelFns));
715
+ for (const fieldType of fieldTypes) {
716
+ const fieldId = generateFieldId({ seed: config.seed });
717
+ const mockModelFn = mockModelFns[fieldType];
718
+ fields[fieldId] = mockModelFn({ seed: config.seed });
678
719
  }
679
- return {
680
- type: prismicT.CustomTypeModelSliceType.SharedSlice,
681
- id: changeCase.snakeCase(name),
682
- name,
683
- description: faker.lorem.sentence(),
684
- variations
685
- };
720
+ return fields;
686
721
  };
687
722
 
688
723
  var index$2 = /*#__PURE__*/Object.freeze({
@@ -710,14 +745,29 @@ var index$2 = /*#__PURE__*/Object.freeze({
710
745
  sliceZone: sliceZone$1,
711
746
  timestamp: timestamp$1,
712
747
  title: title$1,
713
- uid: uid$1
748
+ uid: uid$1,
749
+ buildMockGroupFieldMap: buildMockGroupFieldMap
714
750
  });
715
751
 
716
752
  const timestamp = (config = {}) => {
717
753
  const faker = createFaker(config.seed);
718
- const after = config.after || faker.date.past(20, new Date("2021-03-07")).toISOString().split("T")[0];
719
- const before = config.before || faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
720
- return faker.date.between(after, before).toISOString();
754
+ if (config.state === "empty") {
755
+ return null;
756
+ } else {
757
+ let date;
758
+ const after = config.after ? new Date(config.after.toISOString().split("T")[0]) : void 0;
759
+ const before = config.before ? new Date(config.before.toISOString().split("T")[0]) : void 0;
760
+ if (after && before) {
761
+ date = faker.dateBetween(after, before);
762
+ } else if (after) {
763
+ date = faker.dateAfter(after);
764
+ } else if (before) {
765
+ date = faker.dateBefore(before);
766
+ } else {
767
+ date = faker.date();
768
+ }
769
+ return date.toISOString();
770
+ }
721
771
  };
722
772
 
723
773
  const buildAlternativeLanguage = (config) => {
@@ -748,11 +798,11 @@ const customType = (config = {}) => {
748
798
  }));
749
799
  return {
750
800
  type: model.id,
751
- id: faker.git.shortSha(),
752
- uid: hasUID ? changeCase.snakeCase(faker.lorem.words(2)) : null,
753
- url: withURL ? faker.internet.url() : null,
754
- href: faker.internet.url(),
755
- lang: faker.lorem.word(),
801
+ id: faker.hash(7),
802
+ uid: hasUID ? changeCase.snakeCase(faker.words(faker.range(1, 3))) : null,
803
+ url: withURL ? faker.url() : null,
804
+ href: faker.url(),
805
+ lang: faker.word(),
756
806
  tags: generateTags({ seed: config.seed }),
757
807
  slugs: [],
758
808
  linked_documents: [],
@@ -769,7 +819,7 @@ const customType = (config = {}) => {
769
819
 
770
820
  const color = (config = {}) => {
771
821
  const faker = createFaker(config.seed);
772
- return faker.internet.color().toUpperCase();
822
+ return config.state === "empty" ? null : faker.hexColor().toUpperCase();
773
823
  };
774
824
 
775
825
  const buildContentRelationshipField = (config) => {
@@ -786,11 +836,18 @@ const buildContentRelationshipField = (config) => {
786
836
  };
787
837
  };
788
838
 
839
+ const generateCustomTypeId = (config) => {
840
+ const faker = createFaker(config.seed);
841
+ return changeCase.snakeCase(faker.words(faker.range(1, 3)));
842
+ };
843
+
789
844
  const contentRelationship = (config = {}) => {
790
- var _a;
791
845
  const faker = createFaker(config.seed);
792
- const isFilled = (_a = config.isFilled) != null ? _a : true;
793
- if (isFilled) {
846
+ if (config.state === "empty") {
847
+ return {
848
+ link_type: prismicT.LinkType.Document
849
+ };
850
+ } else {
794
851
  const model = config.model || contentRelationship$1({ seed: config.seed });
795
852
  const linkableDocuments = config.linkableDocuments ? config.linkableDocuments.filter((document2) => {
796
853
  let shouldKeep = true;
@@ -804,177 +861,186 @@ const contentRelationship = (config = {}) => {
804
861
  }) : [
805
862
  {
806
863
  ...customType({ seed: config.seed }),
807
- type: model.config.customtypes ? faker.random.arrayElement(model.config.customtypes) : generateCustomTypeId({ seed: config.seed }),
808
- tags: model.config.tags ? faker.random.arrayElements(model.config.tags) : generateTags({ seed: config.seed })
864
+ type: model.config.customtypes ? faker.randomElement(model.config.customtypes) : generateCustomTypeId({ seed: config.seed }),
865
+ tags: model.config.tags ? faker.randomElements(model.config.tags) : generateTags({ seed: config.seed })
809
866
  }
810
867
  ];
811
- const document = faker.random.arrayElement(linkableDocuments);
868
+ const document = faker.randomElement(linkableDocuments);
812
869
  if (!document) {
813
870
  throw new Error("A linkable document could not be found.");
814
871
  }
815
- return buildContentRelationshipField({ document });
816
- } else {
817
- return {
818
- link_type: prismicT.LinkType.Document
819
- };
872
+ return buildContentRelationshipField({
873
+ document
874
+ });
820
875
  }
821
876
  };
822
877
 
823
878
  const date = (config = {}) => {
824
- return timestamp({
879
+ return config.state === "empty" ? null : timestamp({
825
880
  seed: config.seed,
826
881
  after: config.after,
827
- before: config.before
882
+ before: config.before,
883
+ state: "filled"
828
884
  }).split("T")[0];
829
885
  };
830
886
 
831
887
  const buildEmbedField = (config) => {
888
+ var _a;
832
889
  const faker = createFaker(config.seed);
833
890
  return {
834
- type: faker.datatype.boolean() ? prismicT.EmbedType.Link : prismicT.EmbedType.Rich,
835
- url: config.embedData.url,
836
- html: config.embedData.html,
837
- title: changeCase.capitalCase(faker.lorem.words(3)),
838
- version: faker.datatype.number({ min: 1, max: 3, precision: 10 }).toString(),
839
- cache_age: faker.datatype.number(),
840
- embed_url: config.embedData.embed_url,
841
- author_url: faker.internet.url(),
842
- author_name: faker.company.companyName(),
843
- provider_name: faker.company.companyName(),
844
- thumbnail_width: config.embedData.thumbnail_width,
845
- thumbnail_height: config.embedData.thumbnail_height,
846
- thumbnail_url: config.embedData.thumbnail_url,
847
- width: faker.datatype.number({ min: 200, max: 500 }),
848
- height: faker.datatype.number({ min: 200, max: 500 })
891
+ embed_url: (_a = config.url) != null ? _a : faker.url(),
892
+ html: `<div>embed html</div>`,
893
+ ...config.data
849
894
  };
850
895
  };
851
896
 
852
897
  const dataSet$1 = [
853
898
  {
854
- url: "https://www.youtube.com/watch?v=fiOwHYFkUz0",
899
+ version: "1.0",
900
+ type: "video",
855
901
  embed_url: "https://www.youtube.com/embed/fiOwHYFkUz0",
856
902
  thumbnail_url: "https://i.ytimg.com/vi/fiOwHYFkUz0/hqdefault.jpg",
857
903
  thumbnail_height: 360,
858
904
  thumbnail_width: 480,
859
- html: '<iframe width="200" height="113" src="https://www.youtube.com/embed/fiOwHYFkUz0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'
905
+ html: '<iframe width="200" height="113" src="https://www.youtube.com/embed/fiOwHYFkUz0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
906
+ width: 200,
907
+ height: 113
860
908
  },
861
909
  {
862
- url: "https://www.youtube.com/watch?v=c-ATzcy6VkI",
910
+ version: "1.0",
911
+ type: "video",
863
912
  embed_url: "https://www.youtube.com/embed/c-ATzcy6VkI",
864
913
  thumbnail_url: "https://i.ytimg.com/vi/c-ATzcy6VkI/hqdefault.jpg",
865
914
  thumbnail_height: 360,
866
915
  thumbnail_width: 480,
867
- html: '<iframe width="200" height="113" src="https://www.youtube.com/embed/c-ATzcy6VkI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'
916
+ html: '<iframe width="200" height="113" src="https://www.youtube.com/embed/c-ATzcy6VkI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
917
+ width: 200,
918
+ height: 113
868
919
  },
869
920
  {
870
- url: "https://www.youtube.com/watch?v=iewZXv94XGY",
921
+ version: "1.0",
922
+ type: "video",
871
923
  embed_url: "https://www.youtube.com/watch?v=fiOwHYFkUz0",
872
924
  thumbnail_url: "https://i.ytimg.com/vi/iewZXv94XGY/hqdefault.jpg",
873
925
  thumbnail_height: 360,
874
926
  thumbnail_width: 480,
875
- html: '<iframe width="200" height="113" src="https://www.youtube.com/embed/iewZXv94XGY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'
927
+ html: '<iframe width="200" height="113" src="https://www.youtube.com/embed/iewZXv94XGY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
928
+ width: 200,
929
+ height: 113
876
930
  },
877
931
  {
878
- url: "https://twitter.com/prismicio/status/1356293316158095361",
879
- embed_url: "https://www.youtube.com/watch?v=iewZXv94XGY",
932
+ version: "1.0",
933
+ type: "rich",
934
+ embed_url: "https://twitter.com/prismicio/status/1356293316158095361",
880
935
  thumbnail_url: null,
881
936
  thumbnail_height: null,
882
937
  thumbnail_width: null,
883
- html: '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Gatsby is a popular choice for Prismic users and we work hard on delivering a CMS that plays to its strengths.<br><br>But, what makes <a href="https://twitter.com/GatsbyJS?ref_src=twsrc%5Etfw">@GatsbyJS</a> so popular?<br><br>Here are some of <a href="https://twitter.com/mxstbr?ref_src=twsrc%5Etfw">@mxstbr</a>&#39;s thoughts on Gatsby&#39;s success and how they&#39;re improving developer experience.<a href="https://t.co/ZjCPvsWWUD">https://t.co/ZjCPvsWWUD</a> <a href="https://t.co/EQqzJpeNKl">pic.twitter.com/EQqzJpeNKl</a></p>&mdash; Prismic (@prismicio) <a href="https://twitter.com/prismicio/status/1356293316158095361?ref_src=twsrc%5Etfw">February 1, 2021</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n'
938
+ html: '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Gatsby is a popular choice for Prismic users and we work hard on delivering a CMS that plays to its strengths.<br><br>But, what makes <a href="https://twitter.com/GatsbyJS?ref_src=twsrc%5Etfw">@GatsbyJS</a> so popular?<br><br>Here are some of <a href="https://twitter.com/mxstbr?ref_src=twsrc%5Etfw">@mxstbr</a>&#39;s thoughts on Gatsby&#39;s success and how they&#39;re improving developer experience.<a href="https://t.co/ZjCPvsWWUD">https://t.co/ZjCPvsWWUD</a> <a href="https://t.co/EQqzJpeNKl">pic.twitter.com/EQqzJpeNKl</a></p>&mdash; Prismic (@prismicio) <a href="https://twitter.com/prismicio/status/1356293316158095361?ref_src=twsrc%5Etfw">February 1, 2021</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n',
939
+ width: 200,
940
+ height: 113
884
941
  },
885
942
  {
886
- url: "https://twitter.com/timbenniks/status/1304146886832594944",
943
+ type: "rich",
944
+ version: "1.0",
945
+ embed_url: "https://twitter.com/timbenniks/status/1304146886832594944",
887
946
  thumbnail_url: null,
888
947
  thumbnail_width: null,
889
948
  thumbnail_height: null,
890
- embed_url: "https://twitter.com/timbenniks/status/1304146886832594944",
891
- html: '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I\u2019ve been diving deep on <a href="https://twitter.com/prismicio?ref_src=twsrc%5Etfw">@prismicio</a> <a href="https://twitter.com/hashtag/slicemachine?src=hash&amp;ref_src=twsrc%5Etfw">#slicemachine</a> today. I made all my own components and I used custom slices. It works like a charm with <a href="https://twitter.com/nuxt_js?ref_src=twsrc%5Etfw">@nuxt_js</a>. Also: I\u2019m coding with this view. <a href="https://t.co/F0I8X9gz39">pic.twitter.com/F0I8X9gz39</a></p>&mdash; Tim Benniks (@timbenniks) <a href="https://twitter.com/timbenniks/status/1304146886832594944?ref_src=twsrc%5Etfw">September 10, 2020</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n'
949
+ html: '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I\u2019ve been diving deep on <a href="https://twitter.com/prismicio?ref_src=twsrc%5Etfw">@prismicio</a> <a href="https://twitter.com/hashtag/slicemachine?src=hash&amp;ref_src=twsrc%5Etfw">#slicemachine</a> today. I made all my own components and I used custom slices. It works like a charm with <a href="https://twitter.com/nuxt_js?ref_src=twsrc%5Etfw">@nuxt_js</a>. Also: I\u2019m coding with this view. <a href="https://t.co/F0I8X9gz39">pic.twitter.com/F0I8X9gz39</a></p>&mdash; Tim Benniks (@timbenniks) <a href="https://twitter.com/timbenniks/status/1304146886832594944?ref_src=twsrc%5Etfw">September 10, 2020</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n',
950
+ width: 200,
951
+ height: 113
892
952
  },
893
953
  {
894
- url: "https://twitter.com/prismicio/status/1354112310252630016",
954
+ version: "1.0",
955
+ type: "rich",
956
+ embed_url: "https://twitter.com/prismicio/status/1354112310252630016",
895
957
  thumbnail_url: null,
896
958
  thumbnail_width: null,
897
959
  thumbnail_height: null,
898
- embed_url: "https://twitter.com/prismicio/status/1354112310252630016",
899
- html: '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">We&#39;re launching a new <a href="https://twitter.com/hashtag/SliceContest?src=hash&amp;ref_src=twsrc%5Etfw">#SliceContest</a> tomorrow along with Slice Machine upgrades.<br><br>Want to know more? Join us at tomorrow&#39;s Product Meet-up\u{1F447}<a href="https://t.co/prYSypiAvB">https://t.co/prYSypiAvB</a><br><br>We can&#39;t tell you any further details for now, but here&#39;s a sneak peek at the prizes\u{1F440} <a href="https://t.co/fV1eoGlEBh">pic.twitter.com/fV1eoGlEBh</a></p>&mdash; Prismic (@prismicio) <a href="https://twitter.com/prismicio/status/1354112310252630016?ref_src=twsrc%5Etfw">January 26, 2021</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n'
960
+ html: '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">We&#39;re launching a new <a href="https://twitter.com/hashtag/SliceContest?src=hash&amp;ref_src=twsrc%5Etfw">#SliceContest</a> tomorrow along with Slice Machine upgrades.<br><br>Want to know more? Join us at tomorrow&#39;s Product Meet-up\u{1F447}<a href="https://t.co/prYSypiAvB">https://t.co/prYSypiAvB</a><br><br>We can&#39;t tell you any further details for now, but here&#39;s a sneak peek at the prizes\u{1F440} <a href="https://t.co/fV1eoGlEBh">pic.twitter.com/fV1eoGlEBh</a></p>&mdash; Prismic (@prismicio) <a href="https://twitter.com/prismicio/status/1354112310252630016?ref_src=twsrc%5Etfw">January 26, 2021</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n',
961
+ width: 200,
962
+ height: 113
900
963
  },
901
964
  {
902
- url: "https://twitter.com/prismicio/status/1354835716430319617",
965
+ version: "1.0",
966
+ type: "rich",
967
+ embed_url: "https://twitter.com/prismicio/status/1354835716430319617",
903
968
  thumbnail_url: null,
904
969
  thumbnail_width: null,
905
970
  thumbnail_height: null,
906
- embed_url: "https://twitter.com/prismicio/status/1354835716430319617",
907
- html: '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Does anyone want to create a wildly popular website for discussing &#39;Wall Street Bets&#39; using Prismic?<br><br>It may or may not have to look a lot like <a href="https://twitter.com/hashtag/reddit?src=hash&amp;ref_src=twsrc%5Etfw">#reddit</a> and we won&#39;t make it private.<br><br>Just asking for some friends...</p>&mdash; Prismic (@prismicio) <a href="https://twitter.com/prismicio/status/1354835716430319617?ref_src=twsrc%5Etfw">January 28, 2021</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n'
971
+ html: '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Does anyone want to create a wildly popular website for discussing &#39;Wall Street Bets&#39; using Prismic?<br><br>It may or may not have to look a lot like <a href="https://twitter.com/hashtag/reddit?src=hash&amp;ref_src=twsrc%5Etfw">#reddit</a> and we won&#39;t make it private.<br><br>Just asking for some friends...</p>&mdash; Prismic (@prismicio) <a href="https://twitter.com/prismicio/status/1354835716430319617?ref_src=twsrc%5Etfw">January 28, 2021</a></blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n',
972
+ width: 200,
973
+ height: 113
908
974
  }
909
975
  ];
910
976
  const getMockEmbedData = (config) => {
911
977
  const faker = createFaker(config.seed);
912
- return faker.random.arrayElement(dataSet$1);
978
+ return faker.randomElement(dataSet$1);
913
979
  };
914
980
 
915
981
  const embed$1 = (config = {}) => {
916
- const embedData = getMockEmbedData({ seed: config.seed });
917
- return buildEmbedField({ seed: config.seed, embedData });
982
+ var _a, _b, _c;
983
+ const data = (_a = config.data) != null ? _a : getMockEmbedData({ seed: config.seed });
984
+ return config.state === "empty" ? {} : buildEmbedField({
985
+ seed: config.seed,
986
+ url: (_b = config.url) != null ? _b : "embed_url" in data ? data.embed_url : void 0,
987
+ html: (_c = config.html) != null ? _c : "html" in data ? data.html : void 0,
988
+ data
989
+ });
918
990
  };
919
991
 
920
992
  const geoPoint = (config = {}) => {
921
993
  const faker = createFaker(config.seed);
922
- const coordinates = faker.address.nearbyGPSCoordinate();
923
- return {
924
- longitude: Number.parseFloat(coordinates[0]),
925
- latitude: Number.parseFloat(coordinates[1])
994
+ return config.state === "empty" ? {} : {
995
+ longitude: faker.rangeFloat(-180, 180),
996
+ latitude: faker.rangeFloat(-90, 90)
926
997
  };
927
998
  };
928
999
 
929
- const patterns$9 = {
930
- short: {
931
- minItems: 1,
932
- maxItems: 3
933
- },
934
- medium: {
935
- minItems: 3,
936
- maxItems: 6
937
- },
938
- long: {
939
- minItems: 6,
940
- maxItems: 12
941
- }
942
- };
943
1000
  const group = (config = {}) => {
944
- const faker = createFaker(config.seed);
945
- const model = config.model || group$1({ seed: config.seed });
946
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$9));
947
- const pattern = patterns$9[patternKey];
948
- const itemsCount = faker.datatype.number({
949
- min: pattern.minItems,
950
- max: pattern.maxItems
951
- });
952
- return Array(itemsCount).fill(void 0).map(() => {
953
- return valueForModelMap({
954
- seed: config.seed,
955
- map: model.config.fields,
956
- configs: config.configs
1001
+ var _a;
1002
+ if (config.state === "empty") {
1003
+ return [];
1004
+ } else {
1005
+ const faker = createFaker(config.seed);
1006
+ const model = config.model || group$1({ seed: config.seed });
1007
+ const itemsCount = (_a = config.itemsCount) != null ? _a : faker.range(1, 6);
1008
+ return Array(itemsCount).fill(void 0).map(() => {
1009
+ return valueForModelMap({
1010
+ seed: config.seed,
1011
+ map: model.config.fields,
1012
+ configs: config.configs
1013
+ });
957
1014
  });
958
- });
1015
+ }
959
1016
  };
960
1017
 
961
- const buildImageField = (config) => {
1018
+ const buildImageFieldImage = (config) => {
962
1019
  var _a, _b, _c, _d;
963
- const faker = createFaker(config.seed);
964
- const url = new URL(config.imageData.url);
965
- const dimensions = {
966
- width: (_b = (_a = config.constraint) == null ? void 0 : _a.width) != null ? _b : config.imageData.width,
967
- height: (_d = (_c = config.constraint) == null ? void 0 : _c.height) != null ? _d : config.imageData.height
968
- };
969
- url.searchParams.set("w", dimensions.width.toString());
970
- url.searchParams.set("h", dimensions.height.toString());
971
- url.searchParams.set("fit", "crop");
972
- return {
973
- url: url.toString(),
974
- dimensions,
975
- alt: faker.lorem.sentence(),
976
- copyright: faker.lorem.sentence()
977
- };
1020
+ if (config.state === "empty") {
1021
+ return {
1022
+ url: null,
1023
+ dimensions: null,
1024
+ alt: null,
1025
+ copyright: null
1026
+ };
1027
+ } else {
1028
+ const faker = createFaker(config.seed);
1029
+ const url = new URL(config.imageData.url);
1030
+ const dimensions = {
1031
+ width: (_b = (_a = config.constraint) == null ? void 0 : _a.width) != null ? _b : config.imageData.width,
1032
+ height: (_d = (_c = config.constraint) == null ? void 0 : _c.height) != null ? _d : config.imageData.height
1033
+ };
1034
+ url.searchParams.set("w", dimensions.width.toString());
1035
+ url.searchParams.set("h", dimensions.height.toString());
1036
+ url.searchParams.set("fit", "crop");
1037
+ return {
1038
+ url: url.toString(),
1039
+ dimensions,
1040
+ alt: changeCase.sentenceCase(faker.words(faker.range(5, 15))),
1041
+ copyright: changeCase.sentenceCase(faker.words(faker.range(5, 15)))
1042
+ };
1043
+ }
978
1044
  };
979
1045
 
980
1046
  const dataSet = [
@@ -1061,25 +1127,27 @@ const dataSet = [
1061
1127
  ];
1062
1128
  const getMockImageData = (config) => {
1063
1129
  const faker = createFaker(config.seed);
1064
- return faker.random.arrayElement(dataSet);
1130
+ return faker.randomElement(dataSet);
1065
1131
  };
1066
1132
 
1067
1133
  const image$1 = (config = {}) => {
1068
1134
  const model = config.model || image$2({ seed: config.seed });
1069
1135
  const imageData = getMockImageData({ seed: config.seed });
1070
- const value = buildImageField({
1136
+ const value = buildImageFieldImage({
1071
1137
  seed: config.seed,
1072
1138
  imageData,
1073
- constraint: model.config.constraint
1139
+ constraint: model.config.constraint,
1140
+ state: config.state
1074
1141
  });
1075
1142
  for (const thumbnail of model.config.thumbnails) {
1076
- value[thumbnail.name] = buildImageField({
1143
+ value[thumbnail.name] = buildImageFieldImage({
1077
1144
  seed: config.seed,
1078
1145
  imageData,
1079
1146
  constraint: {
1080
1147
  width: thumbnail.width,
1081
1148
  height: thumbnail.height
1082
- }
1149
+ },
1150
+ state: config.state
1083
1151
  });
1084
1152
  }
1085
1153
  return value;
@@ -1088,87 +1156,86 @@ const image$1 = (config = {}) => {
1088
1156
  const integrationFields = (config = {}) => {
1089
1157
  const faker = createFaker(config.seed);
1090
1158
  const imageData = getMockImageData({ seed: config.seed });
1091
- return {
1092
- id: faker.git.shortSha(),
1093
- title: changeCase.capitalCase(faker.lorem.words(3)),
1094
- description: faker.lorem.sentence(),
1159
+ return config.state === "empty" ? null : {
1160
+ id: faker.hash(7),
1161
+ title: changeCase.capitalCase(faker.words(faker.range(1, 3))),
1162
+ description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
1095
1163
  image_url: imageData.url,
1096
- last_update: faker.date.past(20, new Date("2021-03-07")).getTime(),
1164
+ last_update: faker.date().getTime(),
1097
1165
  blob: config.data
1098
1166
  };
1099
1167
  };
1100
1168
 
1101
1169
  const keyText = (config = {}) => {
1102
1170
  const faker = createFaker(config.seed);
1103
- return changeCase.sentenceCase(faker.lorem.words(3));
1171
+ return config.state === "empty" ? null : changeCase.sentenceCase(faker.words(3));
1104
1172
  };
1105
1173
 
1106
1174
  const linkToMedia = (config = {}) => {
1107
- var _a;
1108
1175
  const faker = createFaker(config.seed);
1109
- const isFilled = (_a = config.isFilled) != null ? _a : true;
1110
- if (isFilled) {
1176
+ if (config.state === "empty") {
1111
1177
  return {
1112
- link_type: prismicT.LinkType.Media,
1113
- name: faker.system.commonFileName(),
1114
- kind: faker.system.commonFileType(),
1115
- url: faker.internet.url(),
1116
- size: faker.datatype.number().toString(),
1117
- height: faker.datatype.number().toString(),
1118
- width: faker.datatype.number().toString()
1178
+ link_type: prismicT.LinkType.Media
1119
1179
  };
1120
1180
  } else {
1121
1181
  return {
1122
- link_type: prismicT.LinkType.Media
1182
+ link_type: prismicT.LinkType.Media,
1183
+ name: `${changeCase.snakeCase(faker.words(faker.range(1, 2)))}.example`,
1184
+ kind: changeCase.snakeCase(faker.word()),
1185
+ url: faker.url(),
1186
+ size: faker.range(500, 3e3).toString(),
1187
+ height: faker.range(500, 3e3).toString(),
1188
+ width: faker.range(500, 3e3).toString()
1123
1189
  };
1124
1190
  }
1125
1191
  };
1126
1192
 
1127
1193
  const link = (config = {}) => {
1128
- var _a, _b;
1194
+ var _a;
1129
1195
  const faker = createFaker(config.seed);
1130
- const isFilled = (_a = config.isFilled) != null ? _a : true;
1131
- const type = config.type || faker.random.arrayElement([
1196
+ const type = config.type || faker.randomElement([
1132
1197
  prismicT.LinkType.Web,
1133
1198
  prismicT.LinkType.Document,
1134
1199
  prismicT.LinkType.Media
1135
1200
  ]);
1136
- if (isFilled) {
1201
+ if (config.state === "empty") {
1202
+ return {
1203
+ link_type: type
1204
+ };
1205
+ } else {
1137
1206
  switch (type) {
1138
1207
  case prismicT.LinkType.Document: {
1139
1208
  return contentRelationship({
1140
1209
  seed: config.seed,
1141
- isFilled,
1210
+ state: config.state,
1142
1211
  linkableDocuments: config.linkableDocuments
1143
1212
  });
1144
1213
  }
1145
1214
  case prismicT.LinkType.Media: {
1146
1215
  return linkToMedia({
1147
1216
  seed: config.seed,
1148
- isFilled
1217
+ state: config.state
1149
1218
  });
1150
1219
  }
1151
- case prismicT.LinkType.Web: {
1220
+ case prismicT.LinkType.Web:
1221
+ default: {
1152
1222
  const model = config.model || link$1({ seed: config.seed });
1153
1223
  return {
1154
1224
  link_type: prismicT.LinkType.Web,
1155
- url: faker.internet.url(),
1156
- target: ((_b = config.withTargetBlank) != null ? _b : model.config.allowTargetBlank && faker.datatype.boolean()) ? "_blank" : void 0
1225
+ url: faker.url(),
1226
+ target: ((_a = config.withTargetBlank) != null ? _a : model.config.allowTargetBlank && faker.boolean()) ? "_blank" : void 0
1157
1227
  };
1158
1228
  }
1159
1229
  }
1160
1230
  }
1161
- return {
1162
- link_type: type
1163
- };
1164
1231
  };
1165
1232
 
1166
1233
  const number = (config = {}) => {
1167
1234
  const faker = createFaker(config.seed);
1168
- return faker.datatype.number();
1235
+ return config.state === "empty" ? null : faker.range(1, 100);
1169
1236
  };
1170
1237
 
1171
- const patterns$8 = {
1238
+ const patterns$5 = {
1172
1239
  short: {
1173
1240
  minWords: 1,
1174
1241
  maxWords: 3
@@ -1193,16 +1260,13 @@ const heading = (config = {}) => {
1193
1260
  prismicT.RichTextNodeType.heading5,
1194
1261
  prismicT.RichTextNodeType.heading6
1195
1262
  ].includes(type2));
1196
- const type = faker.random.arrayElement(types);
1263
+ const type = faker.randomElement(types);
1197
1264
  if (type) {
1198
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$8));
1199
- const pattern = patterns$8[patternKey];
1265
+ const patternKey = config.pattern || faker.randomElement(Object.keys(patterns$5));
1266
+ const pattern = patterns$5[patternKey];
1200
1267
  return {
1201
1268
  type,
1202
- text: changeCase.capitalCase(faker.lorem.words(faker.datatype.number({
1203
- min: pattern.minWords,
1204
- max: pattern.maxWords
1205
- }))),
1269
+ text: changeCase.capitalCase(faker.words(faker.range(pattern.minWords, pattern.maxWords))),
1206
1270
  spans: []
1207
1271
  };
1208
1272
  } else {
@@ -1210,7 +1274,7 @@ const heading = (config = {}) => {
1210
1274
  }
1211
1275
  };
1212
1276
 
1213
- const patterns$7 = {
1277
+ const patterns$4 = {
1214
1278
  short: {
1215
1279
  sentenceCount: 2
1216
1280
  },
@@ -1223,16 +1287,17 @@ const patterns$7 = {
1223
1287
  };
1224
1288
  const paragraph = (config = {}) => {
1225
1289
  const faker = createFaker(config.seed);
1226
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$7));
1227
- const pattern = patterns$7[patternKey];
1290
+ const patternKey = config.pattern || faker.randomElement(Object.keys(patterns$4));
1291
+ const pattern = patterns$4[patternKey];
1292
+ const text = Array.from({ length: pattern.sentenceCount }, () => changeCase.sentenceCase(faker.words(faker.range(5, 15))) + ".").join(" ");
1228
1293
  return {
1229
1294
  type: prismicT.RichTextNodeType.paragraph,
1230
- text: faker.lorem.paragraph(pattern.sentenceCount),
1295
+ text,
1231
1296
  spans: []
1232
1297
  };
1233
1298
  };
1234
1299
 
1235
- const patterns$6 = {
1300
+ const patterns$3 = {
1236
1301
  short: {
1237
1302
  sentenceCount: 2
1238
1303
  },
@@ -1245,16 +1310,17 @@ const patterns$6 = {
1245
1310
  };
1246
1311
  const preformatted = (config = {}) => {
1247
1312
  const faker = createFaker(config.seed);
1248
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$6));
1249
- const pattern = patterns$6[patternKey];
1313
+ const patternKey = config.pattern || faker.randomElement(Object.keys(patterns$3));
1314
+ const pattern = patterns$3[patternKey];
1315
+ const text = Array.from({ length: pattern.sentenceCount }, () => changeCase.sentenceCase(faker.words(faker.range(5, 15))) + ".").join(" ");
1250
1316
  return {
1251
1317
  type: prismicT.RichTextNodeType.preformatted,
1252
- text: faker.lorem.paragraph(pattern.sentenceCount),
1318
+ text,
1253
1319
  spans: []
1254
1320
  };
1255
1321
  };
1256
1322
 
1257
- const patterns$5 = {
1323
+ const patterns$2 = {
1258
1324
  short: {
1259
1325
  minItems: 1,
1260
1326
  maxItems: 3
@@ -1270,22 +1336,19 @@ const patterns$5 = {
1270
1336
  };
1271
1337
  const list = (config = {}) => {
1272
1338
  const faker = createFaker(config.seed);
1273
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$5));
1274
- const pattern = patterns$5[patternKey];
1275
- const itemsCount = faker.datatype.number({
1276
- min: pattern.minItems,
1277
- max: pattern.maxItems
1278
- });
1339
+ const patternKey = config.pattern || faker.randomElement(Object.keys(patterns$2));
1340
+ const pattern = patterns$2[patternKey];
1341
+ const itemsCount = faker.range(pattern.minItems, pattern.maxItems);
1279
1342
  return Array(itemsCount).fill(void 0).map(() => {
1280
1343
  return {
1281
1344
  type: prismicT.RichTextNodeType.listItem,
1282
- text: faker.lorem.sentence(),
1345
+ text: changeCase.sentenceCase(faker.words(faker.range(5, 15))),
1283
1346
  spans: []
1284
1347
  };
1285
1348
  });
1286
1349
  };
1287
1350
 
1288
- const patterns$4 = {
1351
+ const patterns$1 = {
1289
1352
  short: {
1290
1353
  minItems: 1,
1291
1354
  maxItems: 3
@@ -1301,16 +1364,13 @@ const patterns$4 = {
1301
1364
  };
1302
1365
  const oList = (config = {}) => {
1303
1366
  const faker = createFaker(config.seed);
1304
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$4));
1305
- const pattern = patterns$4[patternKey];
1306
- const itemsCount = faker.datatype.number({
1307
- min: pattern.minItems,
1308
- max: pattern.maxItems
1309
- });
1367
+ const patternKey = config.pattern || faker.randomElement(Object.keys(patterns$1));
1368
+ const pattern = patterns$1[patternKey];
1369
+ const itemsCount = faker.range(pattern.minItems, pattern.maxItems);
1310
1370
  return Array(itemsCount).fill(void 0).map(() => {
1311
1371
  return {
1312
1372
  type: prismicT.RichTextNodeType.oListItem,
1313
- text: faker.lorem.sentence(),
1373
+ text: changeCase.sentenceCase(faker.words(faker.range(5, 15))),
1314
1374
  spans: []
1315
1375
  };
1316
1376
  });
@@ -1318,7 +1378,11 @@ const oList = (config = {}) => {
1318
1378
 
1319
1379
  const image = (config = {}) => {
1320
1380
  const imageData = getMockImageData({ seed: config.seed });
1321
- const imageField = buildImageField({ seed: config.seed, imageData });
1381
+ const imageField = buildImageFieldImage({
1382
+ seed: config.seed,
1383
+ imageData,
1384
+ state: "filled"
1385
+ });
1322
1386
  return {
1323
1387
  type: prismicT.RichTextNodeType.image,
1324
1388
  alt: imageField.alt,
@@ -1329,15 +1393,15 @@ const image = (config = {}) => {
1329
1393
  };
1330
1394
 
1331
1395
  const embed = (config = {}) => {
1332
- const embedData = getMockEmbedData({ seed: config.seed });
1333
- const embedField = buildEmbedField({ seed: config.seed, embedData });
1396
+ const data = getMockEmbedData({ seed: config.seed });
1397
+ const embedField = buildEmbedField({ seed: config.seed, data });
1334
1398
  return {
1335
1399
  type: prismicT.RichTextNodeType.embed,
1336
1400
  oembed: embedField
1337
1401
  };
1338
1402
  };
1339
1403
 
1340
- const patterns$3 = {
1404
+ const patterns = {
1341
1405
  short: {
1342
1406
  blockCountMin: 1,
1343
1407
  blockCountMax: 2
@@ -1374,14 +1438,11 @@ const richText = (config = {}) => {
1374
1438
  const supportsMultipleBlocks = "multi" in model.config;
1375
1439
  const types = ("multi" in model.config ? model.config.multi : model.config.single).split(",").filter((type) => Object.keys(generators).includes(type));
1376
1440
  if (types.length > 0) {
1377
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$3));
1378
- const pattern = patterns$3[patternKey];
1379
- const blockCount = supportsMultipleBlocks ? faker.datatype.number({
1380
- min: pattern.blockCountMin,
1381
- max: pattern.blockCountMax
1382
- }) : 1;
1441
+ const patternKey = config.pattern || faker.randomElement(Object.keys(patterns));
1442
+ const pattern = patterns[patternKey];
1443
+ const blockCount = supportsMultipleBlocks ? faker.range(pattern.blockCountMin, pattern.blockCountMax) : 1;
1383
1444
  return Array(blockCount).fill(void 0).map(() => {
1384
- const type = faker.random.arrayElement(types);
1445
+ const type = faker.randomElement(types);
1385
1446
  const generator = generators[type];
1386
1447
  return generator({ seed: config.seed, model });
1387
1448
  }).flat().filter((block) => block !== void 0).slice(0, blockCount);
@@ -1394,39 +1455,20 @@ const select = (config = {}) => {
1394
1455
  const faker = createFaker(config.seed);
1395
1456
  const model = config.model || select$1({ seed: config.seed });
1396
1457
  const defaultValue = model.config.default_value;
1397
- return typeof defaultValue === "string" && faker.datatype.boolean() ? defaultValue : faker.random.arrayElement(model.config.options);
1398
- };
1399
-
1400
- const patterns$2 = {
1401
- none: {
1402
- minItems: 0,
1403
- maxItems: 0
1404
- },
1405
- short: {
1406
- minItems: 1,
1407
- maxItems: 3
1408
- },
1409
- medium: {
1410
- minItems: 3,
1411
- maxItems: 6
1412
- },
1413
- long: {
1414
- minItems: 6,
1415
- maxItems: 12
1458
+ if (config.state === "empty") {
1459
+ return null;
1460
+ } else {
1461
+ return typeof defaultValue === "string" && faker.boolean() ? defaultValue : faker.randomElement(model.config.options);
1416
1462
  }
1417
1463
  };
1464
+
1418
1465
  const slice = (config = {}) => {
1419
- var _a;
1466
+ var _a, _b;
1420
1467
  const faker = createFaker(config.seed);
1421
1468
  const model = config.model || slice$1({ seed: config.seed });
1422
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$2));
1423
- const pattern = patterns$2[patternKey];
1424
1469
  const sliceType = (_a = config.type) != null ? _a : generateFieldId({ seed: config.seed });
1425
- const sliceLabel = config.label !== void 0 ? config.label : changeCase.capitalCase(faker.company.bsNoun());
1426
- const itemsCount = Object.keys(model.repeat).length > 0 ? faker.datatype.number({
1427
- min: pattern.minItems,
1428
- max: pattern.maxItems
1429
- }) : 0;
1470
+ const sliceLabel = config.label !== void 0 ? config.label : changeCase.capitalCase(faker.words(faker.range(1, 2)));
1471
+ const itemsCount = Object.keys(model.repeat).length > 0 ? (_b = config.itemsCount) != null ? _b : faker.range(1, 6) : 0;
1430
1472
  return {
1431
1473
  slice_type: sliceType,
1432
1474
  slice_label: sliceLabel,
@@ -1445,41 +1487,17 @@ const slice = (config = {}) => {
1445
1487
  };
1446
1488
  };
1447
1489
 
1448
- const patterns$1 = {
1449
- none: {
1450
- minItems: 0,
1451
- maxItems: 0
1452
- },
1453
- short: {
1454
- minItems: 1,
1455
- maxItems: 3
1456
- },
1457
- medium: {
1458
- minItems: 3,
1459
- maxItems: 6
1460
- },
1461
- long: {
1462
- minItems: 6,
1463
- maxItems: 12
1464
- }
1465
- };
1466
1490
  const sharedSliceVariation = (config = {}) => {
1467
1491
  var _a, _b;
1468
1492
  const faker = createFaker(config.seed);
1469
1493
  const model = config.model || sharedSliceVariation$1({ seed: config.seed });
1470
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$1));
1471
- const pattern = patterns$1[patternKey];
1472
1494
  const sliceType = (_a = config.type) != null ? _a : generateFieldId({ seed: config.seed });
1473
- const sliceLabel = (_b = config.label) != null ? _b : changeCase.capitalCase(faker.company.bsNoun());
1474
- const itemsCount = Object.keys(model.items).length > 0 ? faker.datatype.number({
1475
- min: pattern.minItems,
1476
- max: pattern.maxItems
1477
- }) : 0;
1495
+ const itemsCount = Object.keys(model.items).length > 0 ? (_b = config.itemsCount) != null ? _b : faker.range(1, 6) : 0;
1478
1496
  return {
1479
1497
  slice_type: sliceType,
1480
- slice_label: sliceLabel,
1498
+ slice_label: null,
1481
1499
  variation: model.id,
1482
- version: faker.git.shortSha(),
1500
+ version: faker.hash(7),
1483
1501
  primary: valueForModelMap({
1484
1502
  seed: config.seed,
1485
1503
  map: model.primary,
@@ -1498,85 +1516,79 @@ const sharedSliceVariation = (config = {}) => {
1498
1516
  const sharedSlice = (config = {}) => {
1499
1517
  const faker = createFaker(config.seed);
1500
1518
  const model = config.model || sharedSlice$1({ seed: config.seed });
1501
- const variationModel = faker.random.arrayElement(model.variations);
1519
+ const variationModel = faker.randomElement(model.variations);
1502
1520
  return sharedSliceVariation({
1503
1521
  seed: config.seed,
1504
1522
  model: variationModel,
1505
- pattern: config.pattern,
1523
+ itemsCount: config.itemsCount,
1506
1524
  type: model.id,
1507
1525
  primaryFieldConfigs: config.primaryFieldConfigs,
1508
1526
  itemsFieldConfigs: config.itemsFieldConfigs
1509
1527
  });
1510
1528
  };
1511
1529
 
1512
- const patterns = {
1513
- short: {
1514
- minItems: 1,
1515
- maxItems: 3
1516
- },
1517
- medium: {
1518
- minItems: 3,
1519
- maxItems: 6
1520
- },
1521
- long: {
1522
- minItems: 6,
1523
- maxItems: 12
1524
- }
1525
- };
1526
1530
  const sliceZone = (config = {}) => {
1527
- const faker = createFaker(config.seed);
1528
- const model = config.model || sliceZone$1({ seed: config.seed });
1529
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns));
1530
- const pattern = patterns[patternKey];
1531
- const itemsCount = faker.datatype.number({
1532
- min: pattern.minItems,
1533
- max: pattern.maxItems
1534
- });
1535
- return Array(itemsCount).fill(void 0).map(() => {
1536
- var _a;
1537
- const choices = Object.entries(model.config.choices);
1538
- const [choiceType, choiceModel] = faker.random.arrayElement(choices);
1539
- const choiceLabels = model.config.labels[choiceType] || [];
1540
- const choiceLabel = faker.random.arrayElement(choiceLabels);
1541
- switch (choiceModel.type) {
1542
- case prismicT.CustomTypeModelSliceType.Slice: {
1543
- return slice({
1544
- seed: config.seed,
1545
- model: choiceModel,
1546
- type: choiceType,
1547
- label: choiceLabel ? choiceLabel.name : null,
1548
- primaryFieldConfigs: config.primaryFieldConfigs,
1549
- itemsFieldConfigs: config.itemsFieldConfigs
1550
- });
1551
- }
1552
- case prismicT.CustomTypeModelSliceType.SharedSlice: {
1553
- const sharedSliceModel = (_a = config.sharedSliceModels) == null ? void 0 : _a.find((sharedSliceModel2) => sharedSliceModel2.id === choiceType);
1554
- if (sharedSliceModel) {
1555
- return sharedSlice({
1556
- seed: config.seed,
1557
- model: sharedSliceModel,
1558
- primaryFieldConfigs: config.primaryFieldConfigs,
1559
- itemsFieldConfigs: config.itemsFieldConfigs
1560
- });
1531
+ var _a;
1532
+ if (config.state === "empty") {
1533
+ return [];
1534
+ } else {
1535
+ const faker = createFaker(config.seed);
1536
+ const model = config.model || sliceZone$1({ seed: config.seed });
1537
+ if (Object.keys(model.config.choices).length > 0) {
1538
+ const itemsCount = (_a = config.itemsCount) != null ? _a : faker.range(1, 6);
1539
+ return Array(itemsCount).fill(void 0).map(() => {
1540
+ var _a2;
1541
+ const choices = Object.entries(model.config.choices);
1542
+ const [choiceType, choiceModel] = faker.randomElement(choices);
1543
+ const choiceLabels = model.config.labels[choiceType] || [];
1544
+ const choiceLabel = faker.randomElement(choiceLabels);
1545
+ switch (choiceModel.type) {
1546
+ case prismicT.CustomTypeModelSliceType.Slice: {
1547
+ return slice({
1548
+ seed: config.seed,
1549
+ model: choiceModel,
1550
+ type: choiceType,
1551
+ label: choiceLabel ? choiceLabel.name : null,
1552
+ primaryFieldConfigs: config.primaryFieldConfigs,
1553
+ itemsFieldConfigs: config.itemsFieldConfigs
1554
+ });
1555
+ }
1556
+ case prismicT.CustomTypeModelSliceType.SharedSlice: {
1557
+ const sharedSliceModel = (_a2 = config.sharedSliceModels) == null ? void 0 : _a2.find((sharedSliceModel2) => sharedSliceModel2.id === choiceType);
1558
+ if (sharedSliceModel) {
1559
+ return sharedSlice({
1560
+ seed: config.seed,
1561
+ model: sharedSliceModel,
1562
+ primaryFieldConfigs: config.primaryFieldConfigs,
1563
+ itemsFieldConfigs: config.itemsFieldConfigs
1564
+ });
1565
+ }
1566
+ }
1561
1567
  }
1562
- }
1568
+ }).filter((slice2) => slice2 !== void 0);
1569
+ } else {
1570
+ return [];
1563
1571
  }
1564
- }).filter((slice2) => slice2 !== void 0);
1572
+ }
1565
1573
  };
1566
1574
 
1567
1575
  const title = (config = {}) => {
1568
- return [
1569
- heading({
1570
- seed: config.seed,
1571
- model: config.model,
1572
- pattern: config.pattern
1573
- })
1574
- ];
1576
+ if (config.state === "empty") {
1577
+ return [];
1578
+ } else {
1579
+ return [
1580
+ heading({
1581
+ seed: config.seed,
1582
+ model: config.model,
1583
+ pattern: config.pattern
1584
+ })
1585
+ ];
1586
+ }
1575
1587
  };
1576
1588
 
1577
1589
  const uid = (config = {}) => {
1578
1590
  const faker = createFaker(config.seed);
1579
- return changeCase.snakeCase(faker.lorem.words(2));
1591
+ return changeCase.snakeCase(faker.words(faker.range(1, 3)));
1580
1592
  };
1581
1593
 
1582
1594
  var index$1 = /*#__PURE__*/Object.freeze({
@@ -1611,10 +1623,10 @@ const ref = (config = {}) => {
1611
1623
  var _a;
1612
1624
  const faker = createFaker(config.seed);
1613
1625
  const value = {
1614
- id: faker.git.shortSha(),
1615
- ref: faker.git.shortSha(),
1626
+ id: faker.hash(16),
1627
+ ref: faker.hash(16),
1616
1628
  isMasterRef: (_a = config.isMasterRef) != null ? _a : false,
1617
- label: config.isMasterRef ? "Master" : changeCase.capitalCase(faker.company.bsNoun())
1629
+ label: config.isMasterRef ? "Master" : changeCase.capitalCase(faker.words(faker.range(1, 3)))
1618
1630
  };
1619
1631
  if (config.isScheduled) {
1620
1632
  value.scheduledAt = timestamp({ seed: config.seed });
@@ -1637,8 +1649,8 @@ const repository = (config = {}) => {
1637
1649
  types,
1638
1650
  languages: [
1639
1651
  {
1640
- id: faker.lorem.word(),
1641
- name: changeCase.capitalCase(faker.lorem.word())
1652
+ id: faker.word(),
1653
+ name: changeCase.capitalCase(faker.word())
1642
1654
  }
1643
1655
  ],
1644
1656
  tags: generateTags({
@@ -1648,11 +1660,11 @@ const repository = (config = {}) => {
1648
1660
  }),
1649
1661
  forms: {},
1650
1662
  license: "All Rights Reserved",
1651
- version: faker.git.shortSha(),
1663
+ version: faker.hash(7),
1652
1664
  bookmarks: {},
1653
1665
  experiments: {},
1654
- oauth_token: faker.internet.url(),
1655
- oauth_initiate: faker.internet.url()
1666
+ oauth_token: faker.url(),
1667
+ oauth_initiate: faker.url()
1656
1668
  };
1657
1669
  };
1658
1670
 
@@ -1666,8 +1678,8 @@ const query = (config = {}) => {
1666
1678
  const results = documents.slice((page - 1) * pageSize, page * pageSize);
1667
1679
  return {
1668
1680
  page,
1669
- next_page: page < totalPages ? faker.internet.url() : null,
1670
- prev_page: page > 1 ? faker.internet.url() : null,
1681
+ next_page: page < totalPages ? faker.url() : null,
1682
+ prev_page: page > 1 ? faker.url() : null,
1671
1683
  total_pages: totalPages,
1672
1684
  results_size: results.length,
1673
1685
  results_per_page: pageSize,
@@ -1693,3 +1705,4 @@ var index = /*#__PURE__*/Object.freeze({
1693
1705
  });
1694
1706
 
1695
1707
  export { index as api, index$2 as model, index$1 as value };
1708
+ //# sourceMappingURL=index.js.map