@prismicio/mock 0.0.9 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/api/index.cjs +153 -149
  2. package/dist/api/index.cjs.map +1 -1
  3. package/dist/api/index.d.ts +51 -5
  4. package/dist/api/index.js +153 -149
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/index.cjs +609 -357
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +240 -70
  9. package/dist/index.js +602 -358
  10. package/dist/index.js.map +1 -1
  11. package/dist/model/index.cjs +236 -66
  12. package/dist/model/index.cjs.map +1 -1
  13. package/dist/model/index.d.ts +113 -27
  14. package/dist/model/index.js +236 -66
  15. package/dist/model/index.js.map +1 -1
  16. package/dist/value/index.cjs +347 -315
  17. package/dist/value/index.cjs.map +1 -1
  18. package/dist/value/index.d.ts +90 -38
  19. package/dist/value/index.js +347 -315
  20. package/dist/value/index.js.map +1 -1
  21. package/package.json +14 -15
  22. package/src/api/createAPIMockFactory.ts +56 -0
  23. package/src/api/query.ts +2 -2
  24. package/src/api/ref.ts +3 -3
  25. package/src/api/repository.ts +7 -9
  26. package/src/api/tags.ts +5 -2
  27. package/src/createMockFactory.ts +52 -0
  28. package/src/index.ts +15 -0
  29. package/src/lib/buildEmbedField.ts +13 -4
  30. package/src/lib/buildImageFieldImage.ts +16 -5
  31. package/src/lib/createFaker.ts +14 -15
  32. package/src/lib/generateCustomTypeId.ts +12 -4
  33. package/src/lib/generateFieldId.ts +12 -4
  34. package/src/lib/generateTags.ts +13 -4
  35. package/src/lib/getMockEmbedData.ts +12 -4
  36. package/src/lib/getMockImageData.ts +12 -4
  37. package/src/lib/valueForModel.ts +47 -30
  38. package/src/lib/valueForModelMap.ts +24 -4
  39. package/src/model/boolean.ts +5 -5
  40. package/src/model/buildMockGroupFieldMap.ts +4 -4
  41. package/src/model/color.ts +2 -2
  42. package/src/model/contentRelationship.ts +2 -2
  43. package/src/model/createModelMockFactory.ts +213 -0
  44. package/src/model/customType.ts +3 -3
  45. package/src/model/date.ts +2 -2
  46. package/src/model/embed.ts +2 -2
  47. package/src/model/geoPoint.ts +2 -2
  48. package/src/model/group.ts +6 -6
  49. package/src/model/image.ts +3 -3
  50. package/src/model/index.ts +2 -0
  51. package/src/model/integrationFields.ts +2 -2
  52. package/src/model/keyText.ts +2 -2
  53. package/src/model/link.ts +3 -3
  54. package/src/model/linkToMedia.ts +3 -3
  55. package/src/model/number.ts +2 -2
  56. package/src/model/richText.ts +2 -2
  57. package/src/model/select.ts +3 -3
  58. package/src/model/sharedSlice.ts +3 -3
  59. package/src/model/sharedSliceVariation.ts +6 -6
  60. package/src/model/slice.ts +3 -3
  61. package/src/model/sliceZone.ts +7 -4
  62. package/src/model/timestamp.ts +2 -2
  63. package/src/model/title.ts +2 -2
  64. package/src/model/uid.ts +2 -2
  65. package/src/types.ts +67 -25
  66. package/src/value/boolean.ts +3 -5
  67. package/src/value/color.ts +2 -2
  68. package/src/value/contentRelationship.ts +18 -15
  69. package/src/value/createValueMockFactory.ts +236 -0
  70. package/src/value/customType.ts +7 -7
  71. package/src/value/date.ts +6 -2
  72. package/src/value/embed.ts +6 -3
  73. package/src/value/geoPoint.ts +2 -2
  74. package/src/value/group.ts +5 -5
  75. package/src/value/image.ts +26 -18
  76. package/src/value/integrationFields.ts +12 -26
  77. package/src/value/keyText.ts +2 -2
  78. package/src/value/link.ts +9 -7
  79. package/src/value/linkToMedia.ts +2 -2
  80. package/src/value/number.ts +2 -2
  81. package/src/value/richText/embed.ts +6 -3
  82. package/src/value/richText/heading.ts +29 -17
  83. package/src/value/richText/image.ts +6 -3
  84. package/src/value/richText/index.ts +71 -43
  85. package/src/value/richText/list.ts +2 -2
  86. package/src/value/richText/oList.ts +2 -2
  87. package/src/value/richText/paragraph.ts +2 -2
  88. package/src/value/richText/preformatted.ts +2 -2
  89. package/src/value/select.ts +10 -6
  90. package/src/value/sharedSlice.ts +4 -4
  91. package/src/value/sharedSliceVariation.ts +9 -10
  92. package/src/value/slice.ts +9 -9
  93. package/src/value/sliceZone.ts +10 -8
  94. package/src/value/timestamp.ts +2 -2
  95. package/src/value/title.ts +7 -3
  96. package/src/value/uid.ts +5 -3
@@ -30,8 +30,6 @@ const prismicT__namespace = /*#__PURE__*/_interopNamespace(prismicT);
30
30
  const changeCase__namespace = /*#__PURE__*/_interopNamespace(changeCase);
31
31
  const Rand__default = /*#__PURE__*/_interopDefaultLegacy(Rand);
32
32
 
33
- const FAKER_SEED = 1984;
34
-
35
33
  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";
36
34
  const loremWords = wordsString.split(" ");
37
35
  const lorem = (length, wordOffset = 0) => {
@@ -73,22 +71,16 @@ const lorem = (length, wordOffset = 0) => {
73
71
  };
74
72
  lorem.spaceIndices = [];
75
73
 
76
- const createFaker = (seed = FAKER_SEED) => {
77
- const normalizedSeed = seed.toString();
78
- if (createFaker.cache[normalizedSeed]) {
79
- return createFaker.cache[normalizedSeed];
80
- } else {
81
- const faker = new Faker(normalizedSeed);
82
- return createFaker.cache[normalizedSeed] = faker;
83
- }
74
+ const createFaker = (seed) => {
75
+ return new Faker(seed);
84
76
  };
85
- createFaker.cache = {};
86
77
  const DAY_MS = 1e3 * 60 * 60 * 24;
87
78
  const YEAR_MS = DAY_MS * 365;
88
79
  const YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4);
89
80
  class Faker {
90
81
  constructor(seed) {
91
- this.rand = new Rand__default["default"](seed);
82
+ this.seed = seed;
83
+ this.rand = new Rand__default["default"](seed.toString());
92
84
  }
93
85
  boolean() {
94
86
  return this.random() >= 0.5;
@@ -100,7 +92,8 @@ class Faker {
100
92
  return elements[this.range(0, elements.length)];
101
93
  }
102
94
  randomElements(elements) {
103
- return elements.filter(() => this.boolean());
95
+ const alwaysInclude = this.randomElement(elements);
96
+ return elements.filter((element) => element === alwaysInclude || this.boolean());
104
97
  }
105
98
  range(min, max) {
106
99
  return Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)));
@@ -147,18 +140,18 @@ class Faker {
147
140
  }
148
141
  }
149
142
 
150
- const boolean = (config = {}) => {
151
- const faker = createFaker(config.seed);
143
+ function boolean(config) {
144
+ const faker = config.faker || createFaker(config.seed);
152
145
  return {
153
146
  type: prismicT__namespace.CustomTypeModelFieldType.Boolean,
154
147
  config: {
155
148
  label: changeCase__namespace.capitalCase(faker.word())
156
149
  }
157
150
  };
158
- };
151
+ }
159
152
 
160
- const color = (config = {}) => {
161
- const faker = createFaker(config.seed);
153
+ const color = (config) => {
154
+ const faker = config.faker || createFaker(config.seed);
162
155
  return {
163
156
  type: prismicT__namespace.CustomTypeModelFieldType.Color,
164
157
  config: {
@@ -168,8 +161,8 @@ const color = (config = {}) => {
168
161
  };
169
162
  };
170
163
 
171
- const contentRelationship = (config = {}) => {
172
- const faker = createFaker(config.seed);
164
+ const contentRelationship = (config) => {
165
+ const faker = config.faker || createFaker(config.seed);
173
166
  return {
174
167
  type: prismicT__namespace.CustomTypeModelFieldType.Link,
175
168
  config: {
@@ -182,9 +175,9 @@ const contentRelationship = (config = {}) => {
182
175
  };
183
176
  };
184
177
 
185
- const customType = (config = {}) => {
178
+ const customType = (config) => {
186
179
  var _a, _b;
187
- const faker = createFaker(config.seed);
180
+ const faker = config.faker || createFaker(config.seed);
188
181
  let label = config.label || changeCase__namespace.capitalCase(faker.words(faker.range(1, 2)));
189
182
  let id = config.id || changeCase__namespace.snakeCase(label);
190
183
  if (config.id && !config.label) {
@@ -207,8 +200,8 @@ const customType = (config = {}) => {
207
200
  };
208
201
  };
209
202
 
210
- const date = (config = {}) => {
211
- const faker = createFaker(config.seed);
203
+ const date = (config) => {
204
+ const faker = config.faker || createFaker(config.seed);
212
205
  return {
213
206
  type: prismicT__namespace.CustomTypeModelFieldType.Date,
214
207
  config: {
@@ -218,8 +211,8 @@ const date = (config = {}) => {
218
211
  };
219
212
  };
220
213
 
221
- const embed = (config = {}) => {
222
- const faker = createFaker(config.seed);
214
+ const embed = (config) => {
215
+ const faker = config.faker || createFaker(config.seed);
223
216
  return {
224
217
  type: prismicT__namespace.CustomTypeModelFieldType.Embed,
225
218
  config: {
@@ -229,8 +222,8 @@ const embed = (config = {}) => {
229
222
  };
230
223
  };
231
224
 
232
- const geoPoint = (config = {}) => {
233
- const faker = createFaker(config.seed);
225
+ const geoPoint = (config) => {
226
+ const faker = config.faker || createFaker(config.seed);
234
227
  return {
235
228
  type: prismicT__namespace.CustomTypeModelFieldType.GeoPoint,
236
229
  config: {
@@ -239,8 +232,8 @@ const geoPoint = (config = {}) => {
239
232
  };
240
233
  };
241
234
 
242
- const group = (config = {}) => {
243
- const faker = createFaker(config.seed);
235
+ function group(config) {
236
+ const faker = config.faker || createFaker(config.seed);
244
237
  return {
245
238
  type: prismicT__namespace.CustomTypeModelFieldType.Group,
246
239
  config: {
@@ -248,10 +241,10 @@ const group = (config = {}) => {
248
241
  fields: config.fields || {}
249
242
  }
250
243
  };
251
- };
244
+ }
252
245
 
253
- const image = (config = {}) => {
254
- const faker = createFaker(config.seed);
246
+ const image = (config) => {
247
+ const faker = config.faker || createFaker(config.seed);
255
248
  const thumbnails = (config.thumbnailNames || []).map((name) => {
256
249
  return {
257
250
  name,
@@ -272,8 +265,8 @@ const image = (config = {}) => {
272
265
  };
273
266
  };
274
267
 
275
- const integrationFields = (config = {}) => {
276
- const faker = createFaker(config.seed);
268
+ const integrationFields = (config) => {
269
+ const faker = config.faker || createFaker(config.seed);
277
270
  return {
278
271
  type: prismicT__namespace.CustomTypeModelFieldType.IntegrationFields,
279
272
  config: {
@@ -283,8 +276,8 @@ const integrationFields = (config = {}) => {
283
276
  };
284
277
  };
285
278
 
286
- const keyText = (config = {}) => {
287
- const faker = createFaker(config.seed);
279
+ const keyText = (config) => {
280
+ const faker = config.faker || createFaker(config.seed);
288
281
  return {
289
282
  type: prismicT__namespace.CustomTypeModelFieldType.Text,
290
283
  config: {
@@ -294,8 +287,8 @@ const keyText = (config = {}) => {
294
287
  };
295
288
  };
296
289
 
297
- const link = (config = {}) => {
298
- const faker = createFaker(config.seed);
290
+ const link = (config) => {
291
+ const faker = config.faker || createFaker(config.seed);
299
292
  return {
300
293
  type: prismicT__namespace.CustomTypeModelFieldType.Link,
301
294
  config: {
@@ -307,8 +300,8 @@ const link = (config = {}) => {
307
300
  };
308
301
  };
309
302
 
310
- const linkToMedia = (config = {}) => {
311
- const faker = createFaker(config.seed);
303
+ const linkToMedia = (config) => {
304
+ const faker = config.faker || createFaker(config.seed);
312
305
  return {
313
306
  type: prismicT__namespace.CustomTypeModelFieldType.Link,
314
307
  config: {
@@ -319,8 +312,8 @@ const linkToMedia = (config = {}) => {
319
312
  };
320
313
  };
321
314
 
322
- const number = (config = {}) => {
323
- const faker = createFaker(config.seed);
315
+ const number = (config) => {
316
+ const faker = config.faker || createFaker(config.seed);
324
317
  return {
325
318
  type: prismicT__namespace.CustomTypeModelFieldType.Number,
326
319
  config: {
@@ -330,9 +323,9 @@ const number = (config = {}) => {
330
323
  };
331
324
  };
332
325
 
333
- const richText = (config = {}) => {
326
+ const richText = (config) => {
334
327
  var _a;
335
- const faker = createFaker(config.seed);
328
+ const faker = config.faker || createFaker(config.seed);
336
329
  const blockTypes = faker.randomElements([
337
330
  prismicT__namespace.RichTextNodeType.heading1,
338
331
  prismicT__namespace.RichTextNodeType.heading2,
@@ -362,8 +355,8 @@ const richText = (config = {}) => {
362
355
  };
363
356
  };
364
357
 
365
- const select = (config = {}) => {
366
- const faker = createFaker(config.seed);
358
+ const select = (config) => {
359
+ const faker = config.faker || createFaker(config.seed);
367
360
  return {
368
361
  type: prismicT__namespace.CustomTypeModelFieldType.Select,
369
362
  config: {
@@ -375,8 +368,8 @@ const select = (config = {}) => {
375
368
  };
376
369
  };
377
370
 
378
- const sharedSlice = (config = {}) => {
379
- const faker = createFaker(config.seed);
371
+ const sharedSlice = (config) => {
372
+ const faker = config.faker || createFaker(config.seed);
380
373
  let name = config.name || changeCase__namespace.capitalCase(faker.words(faker.range(1, 2)));
381
374
  let id = config.id || changeCase__namespace.snakeCase(name);
382
375
  if (config.id && !config.name) {
@@ -399,8 +392,95 @@ const sharedSliceChoice = () => {
399
392
  };
400
393
  };
401
394
 
402
- const sharedSliceVariation = (config = {}) => {
403
- const faker = createFaker(config.seed);
395
+ const dataSet = [
396
+ {
397
+ url: "https://images.unsplash.com/photo-1604537529428-15bcbeecfe4d",
398
+ width: 4240,
399
+ height: 2832
400
+ },
401
+ {
402
+ url: "https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05",
403
+ width: 7372,
404
+ height: 4392
405
+ },
406
+ {
407
+ url: "https://images.unsplash.com/photo-1441974231531-c6227db76b6e",
408
+ width: 2560,
409
+ height: 1705
410
+ },
411
+ {
412
+ url: "https://images.unsplash.com/photo-1418065460487-3e41a6c84dc5",
413
+ width: 2200,
414
+ height: 1467
415
+ },
416
+ {
417
+ url: "https://images.unsplash.com/photo-1426604966848-d7adac402bff",
418
+ width: 5616,
419
+ height: 3744
420
+ },
421
+ {
422
+ url: "https://images.unsplash.com/photo-1604537466608-109fa2f16c3b",
423
+ width: 4240,
424
+ height: 2832
425
+ },
426
+ {
427
+ url: "https://images.unsplash.com/photo-1497436072909-60f360e1d4b1",
428
+ width: 2560,
429
+ height: 1440
430
+ },
431
+ {
432
+ url: "https://images.unsplash.com/reserve/HgZuGu3gSD6db21T3lxm_San%20Zenone.jpg",
433
+ width: 6373,
434
+ height: 4253
435
+ },
436
+ {
437
+ url: "https://images.unsplash.com/photo-1504198266287-1659872e6590",
438
+ width: 4272,
439
+ height: 2848
440
+ },
441
+ {
442
+ url: "https://images.unsplash.com/photo-1470770903676-69b98201ea1c",
443
+ width: 4554,
444
+ height: 3036
445
+ },
446
+ {
447
+ url: "https://images.unsplash.com/photo-1587502537745-84b86da1204f",
448
+ width: 6550,
449
+ height: 4367
450
+ },
451
+ {
452
+ url: "https://images.unsplash.com/photo-1431794062232-2a99a5431c6c",
453
+ width: 6e3,
454
+ height: 4e3
455
+ },
456
+ {
457
+ url: "https://images.unsplash.com/photo-1446329813274-7c9036bd9a1f",
458
+ width: 6e3,
459
+ height: 4e3
460
+ },
461
+ {
462
+ url: "https://images.unsplash.com/photo-1504567961542-e24d9439a724",
463
+ width: 4608,
464
+ height: 3456
465
+ },
466
+ {
467
+ url: "https://images.unsplash.com/photo-1444464666168-49d633b86797",
468
+ width: 4844,
469
+ height: 3234
470
+ },
471
+ {
472
+ url: "https://images.unsplash.com/photo-1553531384-397c80973a0b",
473
+ width: 4335,
474
+ height: 6502
475
+ }
476
+ ];
477
+ const getMockImageData = (config) => {
478
+ const faker = config.faker || createFaker(config.seed);
479
+ return faker.randomElement(dataSet);
480
+ };
481
+
482
+ const sharedSliceVariation = (config) => {
483
+ const faker = config.faker || createFaker(config.seed);
404
484
  let name = config.name || changeCase__namespace.capitalCase(faker.words(faker.range(1, 2)));
405
485
  let id = config.id || changeCase__namespace.snakeCase(name);
406
486
  if (config.id && !config.name) {
@@ -408,6 +488,7 @@ const sharedSliceVariation = (config = {}) => {
408
488
  } else if (config.name && !config.name) {
409
489
  id = changeCase__namespace.snakeCase(config.name);
410
490
  }
491
+ const imageData = getMockImageData({ faker });
411
492
  return {
412
493
  id,
413
494
  name,
@@ -415,12 +496,13 @@ const sharedSliceVariation = (config = {}) => {
415
496
  docURL: faker.url(),
416
497
  version: faker.hash(7),
417
498
  primary: config.primaryFields || {},
418
- items: config.itemsFields || {}
499
+ items: config.itemsFields || {},
500
+ imageUrl: imageData.url
419
501
  };
420
502
  };
421
503
 
422
- const slice = (config = {}) => {
423
- const faker = createFaker(config.seed);
504
+ const slice = (config) => {
505
+ const faker = config.faker || createFaker(config.seed);
424
506
  return {
425
507
  type: prismicT__namespace.CustomTypeModelSliceType.Slice,
426
508
  icon: changeCase__namespace.snakeCase(faker.word()),
@@ -432,7 +514,7 @@ const slice = (config = {}) => {
432
514
  };
433
515
  };
434
516
 
435
- const sliceZone = (config = {}) => {
517
+ const sliceZone = (config) => {
436
518
  const labels = {};
437
519
  for (const choiceId in config.choices) {
438
520
  const choice = config.choices[choiceId];
@@ -450,8 +532,8 @@ const sliceZone = (config = {}) => {
450
532
  };
451
533
  };
452
534
 
453
- const timestamp = (config = {}) => {
454
- const faker = createFaker(config.seed);
535
+ const timestamp = (config) => {
536
+ const faker = config.faker || createFaker(config.seed);
455
537
  return {
456
538
  type: prismicT__namespace.CustomTypeModelFieldType.Timestamp,
457
539
  config: {
@@ -461,8 +543,8 @@ const timestamp = (config = {}) => {
461
543
  };
462
544
  };
463
545
 
464
- const title = (config = {}) => {
465
- const faker = createFaker(config.seed);
546
+ const title = (config) => {
547
+ const faker = config.faker || createFaker(config.seed);
466
548
  const single = faker.randomElements([
467
549
  "heading1",
468
550
  "heading2",
@@ -482,8 +564,8 @@ const title = (config = {}) => {
482
564
  };
483
565
  };
484
566
 
485
- const uid = (config = {}) => {
486
- const faker = createFaker(config.seed);
567
+ const uid = (config) => {
568
+ const faker = config.faker || createFaker(config.seed);
487
569
  return {
488
570
  type: prismicT__namespace.CustomTypeModelFieldType.UID,
489
571
  config: {
@@ -494,7 +576,7 @@ const uid = (config = {}) => {
494
576
  };
495
577
 
496
578
  const generateFieldId = (config) => {
497
- const faker = createFaker(config.seed);
579
+ const faker = config.faker || createFaker(config.seed);
498
580
  return changeCase__namespace.snakeCase(faker.words(faker.range(1, 3)));
499
581
  };
500
582
 
@@ -516,22 +598,110 @@ const mockModelFns = {
516
598
  timestamp,
517
599
  title
518
600
  };
519
- const buildMockGroupFieldMap = (config = {}) => {
520
- const faker = createFaker(config.seed);
601
+ const buildMockGroupFieldMap = (config) => {
602
+ const faker = config.faker || createFaker(config.seed);
521
603
  const fields = {};
522
604
  const fieldTypes = faker.randomElements(Object.keys(mockModelFns));
523
605
  for (const fieldType of fieldTypes) {
524
- const fieldId = generateFieldId({ seed: config.seed });
606
+ const fieldId = generateFieldId({ faker });
525
607
  const mockModelFn = mockModelFns[fieldType];
526
- fields[fieldId] = mockModelFn({ seed: config.seed });
608
+ fields[fieldId] = mockModelFn({ faker });
527
609
  }
528
610
  return fields;
529
611
  };
530
612
 
613
+ const createModelMockFactory = (...args) => {
614
+ return new ModelMockFactory(...args);
615
+ };
616
+ class ModelMockFactory {
617
+ constructor(config) {
618
+ this.faker = "faker" in config ? config.faker : createFaker(config.seed);
619
+ }
620
+ get seed() {
621
+ return this.faker.seed;
622
+ }
623
+ buildMockGroupFieldMap(config) {
624
+ return buildMockGroupFieldMap({ ...config, faker: this.faker });
625
+ }
626
+ boolean(config) {
627
+ return boolean({ ...config, faker: this.faker });
628
+ }
629
+ color(config) {
630
+ return color({ ...config, faker: this.faker });
631
+ }
632
+ contentRelationship(config) {
633
+ return contentRelationship({ ...config, faker: this.faker });
634
+ }
635
+ customType(config) {
636
+ return customType({ ...config, faker: this.faker });
637
+ }
638
+ date(config) {
639
+ return date({ ...config, faker: this.faker });
640
+ }
641
+ embed(config) {
642
+ return embed({ ...config, faker: this.faker });
643
+ }
644
+ geoPoint(config) {
645
+ return geoPoint({ ...config, faker: this.faker });
646
+ }
647
+ group(config) {
648
+ return group({ ...config, faker: this.faker });
649
+ }
650
+ image(config) {
651
+ return image({ ...config, faker: this.faker });
652
+ }
653
+ integrationFields(config) {
654
+ return integrationFields({ ...config, faker: this.faker });
655
+ }
656
+ keyText(config) {
657
+ return keyText({ ...config, faker: this.faker });
658
+ }
659
+ link(config) {
660
+ return link({ ...config, faker: this.faker });
661
+ }
662
+ linkToMedia(config) {
663
+ return linkToMedia({ ...config, faker: this.faker });
664
+ }
665
+ number(config) {
666
+ return number({ ...config, faker: this.faker });
667
+ }
668
+ richText(config) {
669
+ return richText({ ...config, faker: this.faker });
670
+ }
671
+ select(config) {
672
+ return select({ ...config, faker: this.faker });
673
+ }
674
+ sharedSlice(config) {
675
+ return sharedSlice({ ...config, faker: this.faker });
676
+ }
677
+ sharedSliceChoice() {
678
+ return sharedSliceChoice();
679
+ }
680
+ sharedSliceVariation(config) {
681
+ return sharedSliceVariation({ ...config, faker: this.faker });
682
+ }
683
+ slice(config) {
684
+ return slice({ ...config, faker: this.faker });
685
+ }
686
+ sliceZone(config) {
687
+ return sliceZone({ ...config, faker: this.faker });
688
+ }
689
+ timestamp(config) {
690
+ return timestamp({ ...config, faker: this.faker });
691
+ }
692
+ title(config) {
693
+ return title({ ...config, faker: this.faker });
694
+ }
695
+ uid(config) {
696
+ return uid({ ...config, faker: this.faker });
697
+ }
698
+ }
699
+
531
700
  exports.boolean = boolean;
532
701
  exports.buildMockGroupFieldMap = buildMockGroupFieldMap;
533
702
  exports.color = color;
534
703
  exports.contentRelationship = contentRelationship;
704
+ exports.createModelFactory = createModelMockFactory;
535
705
  exports.customType = customType;
536
706
  exports.date = date;
537
707
  exports.embed = embed;