@prismicio/mock 0.0.3 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +4 -1
  2. package/dist/api/index.cjs +561 -0
  3. package/dist/api/index.cjs.map +1 -0
  4. package/dist/api/index.d.ts +36 -0
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/index.js +561 -0
  7. package/dist/api/index.js.map +1 -0
  8. package/dist/index.cjs +672 -644
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.ts +228 -262
  11. package/dist/{index.mjs → index.js} +663 -634
  12. package/dist/index.js.map +1 -0
  13. package/dist/model/index.cjs +163 -203
  14. package/dist/model/index.cjs.map +1 -0
  15. package/dist/model/index.d.ts +70 -96
  16. package/dist/model/index.d.ts.map +1 -0
  17. package/dist/model/index.js +462 -0
  18. package/dist/model/index.js.map +1 -0
  19. package/dist/value/index.cjs +284 -499
  20. package/dist/value/index.cjs.map +1 -0
  21. package/dist/value/index.d.ts +60 -120
  22. package/dist/value/index.d.ts.map +1 -0
  23. package/dist/value/{index.mjs → index.js} +447 -608
  24. package/dist/value/index.js.map +1 -0
  25. package/package.json +25 -20
  26. package/src/api/index.ts +11 -0
  27. package/src/api/query.ts +38 -0
  28. package/src/api/ref.ts +41 -0
  29. package/src/api/repository.ts +54 -0
  30. package/src/api/tags.ts +15 -0
  31. package/src/constants.ts +3 -1
  32. package/src/index.ts +1 -0
  33. package/src/lib/buildAlternativeLanguage.ts +18 -0
  34. package/src/lib/buildContentRelationshipField.ts +12 -5
  35. package/src/lib/buildEmbedField.ts +1 -1
  36. package/src/lib/buildImageFieldImage.ts +48 -0
  37. package/src/lib/createFaker.ts +19 -10
  38. package/src/lib/generateTags.ts +10 -2
  39. package/src/lib/valueForModelMap.ts +2 -2
  40. package/src/model/buildMockGroupFieldMap.ts +65 -0
  41. package/src/model/contentRelationship.ts +14 -21
  42. package/src/model/customType.ts +49 -48
  43. package/src/model/group.ts +8 -15
  44. package/src/model/image.ts +13 -13
  45. package/src/model/index.ts +2 -0
  46. package/src/model/select.ts +11 -16
  47. package/src/model/sharedSlice.ts +23 -30
  48. package/src/model/sharedSliceVariation.ts +33 -21
  49. package/src/model/slice.ts +15 -19
  50. package/src/model/sliceZone.ts +25 -42
  51. package/src/types.ts +50 -15
  52. package/src/value/color.ts +16 -6
  53. package/src/value/contentRelationship.ts +52 -36
  54. package/src/value/customType.ts +27 -4
  55. package/src/value/date.ts +25 -9
  56. package/src/value/embed.ts +18 -6
  57. package/src/value/geoPoint.ts +21 -9
  58. package/src/value/group.ts +7 -27
  59. package/src/value/image.ts +22 -9
  60. package/src/value/integrationFields.ts +26 -14
  61. package/src/value/keyText.ts +18 -6
  62. package/src/value/link.ts +33 -34
  63. package/src/value/linkToMedia.ts +15 -20
  64. package/src/value/number.ts +16 -6
  65. package/src/value/richText/heading.ts +7 -7
  66. package/src/value/richText/image.ts +6 -2
  67. package/src/value/richText/index.ts +1 -1
  68. package/src/value/select.ts +23 -8
  69. package/src/value/sharedSlice.ts +2 -2
  70. package/src/value/sharedSliceVariation.ts +6 -34
  71. package/src/value/slice.ts +5 -30
  72. package/src/value/sliceZone.ts +44 -60
  73. package/src/value/timestamp.ts +19 -6
  74. package/src/value/title.ts +1 -1
  75. package/src/value/uid.ts +1 -1
  76. package/dist/model/index.mjs +0 -448
  77. package/src/lib/buildImageField.ts +0 -34
  78. package/src/lib/buildMockGroupFieldMap.ts +0 -84
@@ -1,23 +1,253 @@
1
- import * as prismicT from '@prismicio/types';
2
1
  import * as changeCase from 'change-case';
3
- import * as fakerLocaleEN from 'faker/lib/locales/en';
4
- import Faker from 'faker/lib';
2
+ import * as fakerLocaleEN from 'faker/lib/locales/en/index.js';
3
+ import Faker from 'faker/lib/index.js';
4
+ import * as prismicT from '@prismicio/types';
5
5
 
6
6
  const FAKER_SEED = 1984;
7
7
 
8
8
  const createFaker = (seed = FAKER_SEED) => {
9
- if (createFaker.cache[seed]) {
10
- return createFaker.cache[seed];
9
+ let normalizedSeed;
10
+ if (typeof seed === "string") {
11
+ normalizedSeed = seed.split("").map((char) => char.charCodeAt(0));
12
+ } else {
13
+ normalizedSeed = seed;
14
+ }
15
+ const cacheKey = JSON.stringify(normalizedSeed);
16
+ if (createFaker.cache[cacheKey]) {
17
+ return createFaker.cache[cacheKey];
11
18
  }
12
- const seededFaker = new Faker();
13
- seededFaker.seed(seed);
14
- seededFaker.locales["en"] = fakerLocaleEN;
15
- createFaker.cache[seed] = seededFaker;
16
- return seededFaker;
19
+ const fakerInstance = new Faker();
20
+ fakerInstance.locales["en"] = fakerLocaleEN;
21
+ fakerInstance.seed(normalizedSeed);
22
+ createFaker.cache[cacheKey] = fakerInstance;
23
+ return fakerInstance;
17
24
  };
18
25
  createFaker.cache = {};
19
26
 
27
+ const generateTags = (config) => {
28
+ var _a, _b;
29
+ 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 }))));
34
+ };
35
+
20
36
  const boolean$1 = (config = {}) => {
37
+ const faker = createFaker(config.seed);
38
+ return faker.datatype.boolean();
39
+ };
40
+
41
+ const valueForModel = (config) => {
42
+ const model = config.model;
43
+ switch (model.type) {
44
+ case prismicT.CustomTypeModelFieldType.Boolean: {
45
+ return boolean$1({
46
+ seed: config.seed,
47
+ model,
48
+ ...config.config
49
+ });
50
+ }
51
+ case prismicT.CustomTypeModelFieldType.Color: {
52
+ return color({
53
+ seed: config.seed,
54
+ model,
55
+ ...config.config
56
+ });
57
+ }
58
+ case prismicT.CustomTypeModelFieldType.Link: {
59
+ switch (model.config.select) {
60
+ case prismicT.CustomTypeModelLinkSelectType.Document: {
61
+ return contentRelationship({
62
+ seed: config.seed,
63
+ model,
64
+ ...config.config
65
+ });
66
+ }
67
+ case prismicT.CustomTypeModelLinkSelectType.Media: {
68
+ return linkToMedia({
69
+ seed: config.seed,
70
+ model,
71
+ ...config.config
72
+ });
73
+ }
74
+ default: {
75
+ return link({
76
+ seed: config.seed,
77
+ model,
78
+ ...config.config
79
+ });
80
+ }
81
+ }
82
+ }
83
+ case prismicT.CustomTypeModelFieldType.Date: {
84
+ return date({
85
+ seed: config.seed,
86
+ model,
87
+ ...config.config
88
+ });
89
+ }
90
+ case prismicT.CustomTypeModelFieldType.Embed: {
91
+ return embed$1({
92
+ seed: config.seed,
93
+ model,
94
+ ...config.config
95
+ });
96
+ }
97
+ case prismicT.CustomTypeModelFieldType.GeoPoint: {
98
+ return geoPoint({
99
+ seed: config.seed,
100
+ model,
101
+ ...config.config
102
+ });
103
+ }
104
+ case prismicT.CustomTypeModelFieldType.Image: {
105
+ return image$1({
106
+ seed: config.seed,
107
+ model,
108
+ ...config.config
109
+ });
110
+ }
111
+ case prismicT.CustomTypeModelFieldType.Text: {
112
+ return keyText({
113
+ seed: config.seed,
114
+ model,
115
+ ...config.config
116
+ });
117
+ }
118
+ case prismicT.CustomTypeModelFieldType.Number: {
119
+ return number({
120
+ seed: config.seed,
121
+ model,
122
+ ...config.config
123
+ });
124
+ }
125
+ case prismicT.CustomTypeModelFieldType.Select: {
126
+ return select({
127
+ seed: config.seed,
128
+ model,
129
+ ...config.config
130
+ });
131
+ }
132
+ case prismicT.CustomTypeModelFieldType.Timestamp: {
133
+ return timestamp({
134
+ seed: config.seed,
135
+ model,
136
+ ...config.config
137
+ });
138
+ }
139
+ case prismicT.CustomTypeModelFieldType.StructuredText: {
140
+ if ("single" in model.config && model.config.single.split(",").every((element) => /heading[1-6]/.test(element.trim()))) {
141
+ return title({
142
+ seed: config.seed,
143
+ model,
144
+ ...config.config
145
+ });
146
+ } else {
147
+ return richText({
148
+ seed: config.seed,
149
+ model,
150
+ ...config.config
151
+ });
152
+ }
153
+ }
154
+ case prismicT.CustomTypeModelFieldType.IntegrationFields: {
155
+ return integrationFields({
156
+ seed: config.seed,
157
+ model,
158
+ ...config.config
159
+ });
160
+ }
161
+ case prismicT.CustomTypeModelFieldType.UID: {
162
+ return uid({
163
+ seed: config.seed,
164
+ model,
165
+ ...config.config
166
+ });
167
+ }
168
+ case prismicT.CustomTypeModelFieldType.Group: {
169
+ return group({
170
+ seed: config.seed,
171
+ model,
172
+ ...config.config
173
+ });
174
+ }
175
+ case prismicT.CustomTypeModelFieldType.Slices: {
176
+ return sliceZone({
177
+ seed: config.seed,
178
+ model,
179
+ ...config.config
180
+ });
181
+ }
182
+ }
183
+ };
184
+
185
+ const getValueConfigType = (model) => {
186
+ switch (model.type) {
187
+ case prismicT.CustomTypeModelFieldType.Boolean:
188
+ return "boolean";
189
+ case prismicT.CustomTypeModelFieldType.Color:
190
+ return "color";
191
+ case prismicT.CustomTypeModelFieldType.Date:
192
+ return "date";
193
+ case prismicT.CustomTypeModelFieldType.Embed:
194
+ return "embed";
195
+ case prismicT.CustomTypeModelFieldType.GeoPoint:
196
+ return "geoPoint";
197
+ case prismicT.CustomTypeModelFieldType.Group:
198
+ return "group";
199
+ case prismicT.CustomTypeModelFieldType.Image:
200
+ return "image";
201
+ case prismicT.CustomTypeModelFieldType.Link: {
202
+ switch (model.config.select) {
203
+ case prismicT.CustomTypeModelLinkSelectType.Document:
204
+ return "contentRelationship";
205
+ case prismicT.CustomTypeModelLinkSelectType.Media:
206
+ return "linkToMedia";
207
+ default:
208
+ return "link";
209
+ }
210
+ }
211
+ case prismicT.CustomTypeModelFieldType.Number:
212
+ return "number";
213
+ case prismicT.CustomTypeModelFieldType.Select:
214
+ return "select";
215
+ case prismicT.CustomTypeModelFieldType.StructuredText: {
216
+ if ("single" in model.config && model.config.single.split(",").every((element) => /heading{1,6}/.test(element.trim()))) {
217
+ return "title";
218
+ } else {
219
+ return "richText";
220
+ }
221
+ }
222
+ case prismicT.CustomTypeModelFieldType.Text:
223
+ return "keyText";
224
+ case prismicT.CustomTypeModelFieldType.Timestamp:
225
+ return "timestamp";
226
+ case prismicT.CustomTypeModelFieldType.UID:
227
+ return "uid";
228
+ case prismicT.CustomTypeModelFieldType.IntegrationFields:
229
+ return "integrationFields";
230
+ case prismicT.CustomTypeModelFieldType.Slices:
231
+ return "sliceZone";
232
+ }
233
+ };
234
+ const valueForModelMap = (config) => {
235
+ var _a;
236
+ const result = {};
237
+ for (const fieldId in config.map) {
238
+ const fieldModel = config.map[fieldId];
239
+ const fieldConfigType = getValueConfigType(fieldModel);
240
+ const fieldConfig = (_a = config.configs) == null ? void 0 : _a[fieldConfigType];
241
+ result[fieldId] = valueForModel({
242
+ seed: config.seed,
243
+ model: fieldModel,
244
+ config: fieldConfig
245
+ });
246
+ }
247
+ return result;
248
+ };
249
+
250
+ const boolean = (config = {}) => {
21
251
  const faker = createFaker(config.seed);
22
252
  return {
23
253
  type: prismicT.CustomTypeModelFieldType.Boolean,
@@ -38,11 +268,6 @@ const color$1 = (config = {}) => {
38
268
  };
39
269
  };
40
270
 
41
- const generateCustomTypeId = (config) => {
42
- const faker = createFaker(config.seed);
43
- return changeCase.snakeCase(faker.company.bsNoun());
44
- };
45
-
46
271
  const contentRelationship$1 = (config = {}) => {
47
272
  const faker = createFaker(config.seed);
48
273
  return {
@@ -51,12 +276,37 @@ const contentRelationship$1 = (config = {}) => {
51
276
  label: changeCase.capitalCase(faker.company.bsNoun()),
52
277
  placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
53
278
  select: prismicT.CustomTypeModelLinkSelectType.Document,
54
- customtypes: config.constrainCustomTypes ? Array(faker.datatype.number({ min: 1, max: 3 })).fill(void 0).map(() => generateCustomTypeId({ seed: config.seed })) : void 0,
55
- tags: config.constrainTags ? Array(faker.datatype.number({ min: 1, max: 3 })).fill(void 0).map(() => changeCase.capitalCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 })))) : void 0
279
+ customtypes: config.customTypeIDs,
280
+ tags: config.tags
56
281
  }
57
282
  };
58
283
  };
59
284
 
285
+ const customType$1 = (config = {}) => {
286
+ var _a, _b;
287
+ const faker = createFaker(config.seed);
288
+ let label = config.label || changeCase.capitalCase(faker.company.bsNoun());
289
+ let id = config.id || changeCase.snakeCase(label);
290
+ if (config.id && !config.label) {
291
+ label = changeCase.capitalCase(config.id);
292
+ } else if (config.label && !config.label) {
293
+ id = changeCase.snakeCase(config.label);
294
+ }
295
+ let json = {};
296
+ if ("fields" in config && config.fields) {
297
+ json = { Main: config.fields };
298
+ } else if ("tabs" in config && config.tabs) {
299
+ json = config.tabs;
300
+ }
301
+ return {
302
+ id,
303
+ label,
304
+ status: (_a = config.status) != null ? _a : faker.datatype.boolean(),
305
+ repeatable: (_b = config.repeatable) != null ? _b : faker.datatype.boolean(),
306
+ json
307
+ };
308
+ };
309
+
60
310
  const date$1 = (config = {}) => {
61
311
  const faker = createFaker(config.seed);
62
312
  return {
@@ -89,10 +339,26 @@ const geoPoint$1 = (config = {}) => {
89
339
  };
90
340
  };
91
341
 
342
+ const group$1 = (config = {}) => {
343
+ const faker = createFaker(config.seed);
344
+ return {
345
+ type: prismicT.CustomTypeModelFieldType.Group,
346
+ config: {
347
+ label: changeCase.capitalCase(faker.company.bsNoun()),
348
+ fields: config.fields || {}
349
+ }
350
+ };
351
+ };
352
+
92
353
  const image$2 = (config = {}) => {
93
- var _a;
94
354
  const faker = createFaker(config.seed);
95
- const thumbnailsCount = (_a = config.thumbnailsCount) != null ? _a : faker.datatype.number(3);
355
+ const thumbnails = (config.thumbnailNames || []).map((name) => {
356
+ return {
357
+ name,
358
+ width: faker.datatype.number({ min: 500, max: 2e3 }),
359
+ height: faker.datatype.number({ min: 500, max: 2e3 })
360
+ };
361
+ });
96
362
  return {
97
363
  type: prismicT.CustomTypeModelFieldType.Image,
98
364
  config: {
@@ -101,11 +367,7 @@ const image$2 = (config = {}) => {
101
367
  width: config.withConstraint ? faker.datatype.number({ min: 500, max: 2e3 }) : null,
102
368
  height: config.withConstraint ? faker.datatype.number({ min: 500, max: 2e3 }) : null
103
369
  },
104
- thumbnails: Array(thumbnailsCount).fill(void 0).map(() => ({
105
- name: changeCase.capitalCase(faker.company.bsNoun()),
106
- width: faker.datatype.number({ min: 500, max: 2e3 }),
107
- height: faker.datatype.number({ min: 500, max: 2e3 })
108
- }))
370
+ thumbnails
109
371
  }
110
372
  };
111
373
  };
@@ -201,115 +463,63 @@ const richText$1 = (config = {}) => {
201
463
  };
202
464
 
203
465
  const select$1 = (config = {}) => {
204
- var _a;
205
466
  const faker = createFaker(config.seed);
206
- const optionsCount = (_a = config.optionsCount) != null ? _a : faker.datatype.number({ min: 1, max: 5 });
207
- const options = Array(optionsCount).fill(void 0).map(() => changeCase.capitalCase(faker.company.bsBuzz()));
208
467
  return {
209
468
  type: prismicT.CustomTypeModelFieldType.Select,
210
469
  config: {
211
470
  label: changeCase.capitalCase(faker.company.bsNoun()),
212
471
  placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
213
- options,
214
- default_value: config.withDefaultValue ? faker.random.arrayElement(options) : void 0
472
+ options: config.options || [],
473
+ default_value: config.defaultValue || void 0
215
474
  }
216
475
  };
217
476
  };
218
477
 
219
- const timestamp$1 = (config = {}) => {
478
+ const sharedSlice$1 = (config = {}) => {
220
479
  const faker = createFaker(config.seed);
480
+ let name = config.name || changeCase.capitalCase(faker.company.bsNoun());
481
+ let id = config.id || changeCase.snakeCase(name);
482
+ if (config.id && !config.name) {
483
+ name = changeCase.pascalCase(config.id);
484
+ } else if (config.name && !config.name) {
485
+ id = changeCase.snakeCase(config.name);
486
+ }
221
487
  return {
222
- type: prismicT.CustomTypeModelFieldType.Timestamp,
223
- config: {
224
- label: changeCase.capitalCase(faker.company.bsNoun()),
225
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
226
- }
488
+ type: prismicT.CustomTypeModelSliceType.SharedSlice,
489
+ id,
490
+ name,
491
+ description: faker.lorem.sentence(),
492
+ variations: config.variations || []
227
493
  };
228
494
  };
229
495
 
230
- const title$1 = (config = {}) => {
231
- const faker = createFaker(config.seed);
232
- const single = faker.random.arrayElements([
233
- "heading1",
234
- "heading2",
235
- "heading3",
236
- "heading4",
237
- "heading5",
238
- "heading6"
239
- ]).join(",");
496
+ const sharedSliceChoice = () => {
240
497
  return {
241
- type: prismicT.CustomTypeModelFieldType.StructuredText,
242
- config: {
243
- label: changeCase.capitalCase(faker.company.bsNoun()),
244
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
245
- single,
246
- allowTargetBlank: faker.datatype.boolean() ? true : void 0
247
- }
498
+ type: prismicT.CustomTypeModelSliceType.SharedSlice
248
499
  };
249
500
  };
250
501
 
251
- const generateFieldId = (config) => {
252
- const faker = createFaker(config.seed);
253
- return changeCase.snakeCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 })));
254
- };
255
-
256
- const mockModelFns = {
257
- boolean: boolean$1,
258
- color: color$1,
259
- contentRelationship: contentRelationship$1,
260
- date: date$1,
261
- embed: embed$2,
262
- geoPoint: geoPoint$1,
263
- image: image$2,
264
- integrationFields: integrationFields$1,
265
- keyText: keyText$1,
266
- link: link$1,
267
- linkToMedia: linkToMedia$1,
268
- number: number$1,
269
- richText: richText$1,
270
- select: select$1,
271
- timestamp: timestamp$1,
272
- title: title$1
273
- };
274
- const buildMockGroupFieldMap = (config = {}) => {
275
- var _a;
502
+ const sharedSliceVariation$1 = (config = {}) => {
276
503
  const faker = createFaker(config.seed);
277
- const configs = config.configs || {};
278
- const fields = {};
279
- for (const mockModelType in mockModelFns) {
280
- const mockModelFn = mockModelFns[mockModelType];
281
- const mockModelMapConfig = configs[mockModelType] || {};
282
- const count = (_a = mockModelMapConfig.count) != null ? _a : faker.random.arrayElement([0, 0, 0, 1]);
283
- for (let i = 0; i < count; i++) {
284
- const fieldId = generateFieldId({ seed: config.seed });
285
- fields[fieldId] = mockModelFn({
286
- seed: config.seed,
287
- ...mockModelMapConfig.config
288
- });
289
- }
504
+ let name = config.name || changeCase.capitalCase(faker.company.bsNoun());
505
+ let id = config.id || changeCase.snakeCase(name);
506
+ if (config.id && !config.name) {
507
+ name = changeCase.pascalCase(config.id);
508
+ } else if (config.name && !config.name) {
509
+ id = changeCase.snakeCase(config.name);
290
510
  }
291
- return fields;
292
- };
293
-
294
- const uid$1 = (config = {}) => {
295
- const faker = createFaker(config.seed);
296
- return {
297
- type: prismicT.CustomTypeModelFieldType.UID,
298
- config: {
299
- label: changeCase.capitalCase(faker.company.bsNoun()),
300
- placeholder: changeCase.sentenceCase(faker.lorem.words(3))
301
- }
302
- };
303
- };
304
-
305
- const sharedSliceChoice = () => {
306
511
  return {
307
- type: prismicT.CustomTypeModelSliceType.SharedSlice
512
+ id,
513
+ name,
514
+ description: faker.lorem.sentence(),
515
+ docURL: faker.internet.url(),
516
+ version: faker.git.shortSha(),
517
+ primary: config.primaryFields || {},
518
+ items: config.itemsFields || {}
308
519
  };
309
520
  };
310
521
 
311
522
  const slice$1 = (config = {}) => {
312
- var _a, _b, _c, _d, _e, _f;
313
523
  const faker = createFaker(config.seed);
314
524
  return {
315
525
  type: prismicT.CustomTypeModelSliceType.Slice,
@@ -317,34 +527,17 @@ const slice$1 = (config = {}) => {
317
527
  display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List,
318
528
  fieldset: changeCase.capitalCase(faker.lorem.words()),
319
529
  description: faker.lorem.sentence(),
320
- repeat: buildMockGroupFieldMap({
321
- seed: (_b = (_a = config.repeatFieldConfig) == null ? void 0 : _a.seed) != null ? _b : config.seed,
322
- configs: (_c = config.repeatFieldConfig) == null ? void 0 : _c.configs
323
- }),
324
- "non-repeat": buildMockGroupFieldMap({
325
- seed: (_e = (_d = config.nonRepeatFieldConfig) == null ? void 0 : _d.seed) != null ? _e : config.seed,
326
- configs: (_f = config.nonRepeatFieldConfig) == null ? void 0 : _f.configs
327
- })
530
+ repeat: config.repeatFields || {},
531
+ "non-repeat": config.nonRepeatFields || {}
328
532
  };
329
533
  };
330
534
 
331
535
  const sliceZone$1 = (config = {}) => {
332
- var _a;
333
- const faker = createFaker(config.seed);
334
- const choicesCount = (_a = config.choicesCount) != null ? _a : faker.datatype.number({ min: 2, max: 6 });
335
- const choices = {};
336
- for (let i = 0; i < choicesCount; i++) {
337
- const choiceId = generateFieldId({ seed: config.seed });
338
- choices[choiceId] = config.withSharedSlices ? sharedSliceChoice() : slice$1({ seed: config.seed });
339
- }
340
536
  const labels = {};
341
- if (!config.withSharedSlices) {
342
- for (const choiceId in choices) {
343
- const labelsCount = faker.datatype.number({ min: 0, max: 3 });
344
- labels[choiceId] = Array(labelsCount).fill(void 0).map(() => ({
345
- name: changeCase.capitalCase(faker.company.bsNoun()),
346
- display: faker.datatype.boolean() ? prismicT.CustomTypeModelSliceDisplay.Grid : prismicT.CustomTypeModelSliceDisplay.List
347
- }));
537
+ for (const choiceId in config.choices) {
538
+ const choice = config.choices[choiceId];
539
+ if (choice.type === prismicT.CustomTypeModelSliceType.Slice) {
540
+ labels[choiceId] = [];
348
541
  }
349
542
  }
350
543
  return {
@@ -352,374 +545,167 @@ const sliceZone$1 = (config = {}) => {
352
545
  fieldset: "Slice zone",
353
546
  config: {
354
547
  labels,
355
- choices
356
- }
357
- };
358
- };
359
-
360
- const customType$1 = (config = {}) => {
361
- var _a;
362
- const faker = createFaker(config.seed);
363
- const tabsCount = (_a = config.tabsCount) != null ? _a : faker.datatype.number({ min: 1, max: 3 });
364
- const json = {};
365
- for (let i = 0; i < tabsCount; i++) {
366
- const tabName = changeCase.capitalCase(faker.company.bsNoun());
367
- const tabFields = buildMockGroupFieldMap({
368
- seed: config.seed,
369
- configs: config.configs
370
- });
371
- if (i === 0 && config.withUID) {
372
- const fieldId = generateFieldId({ seed: config.seed });
373
- tabFields[fieldId] = uid$1();
374
- }
375
- if (config.withSliceZones) {
376
- const sliceZoneId = generateFieldId({ seed: config.seed });
377
- tabFields[sliceZoneId] = sliceZone$1({
378
- withSharedSlices: config.withSharedSlices
379
- });
548
+ choices: config.choices || {}
380
549
  }
381
- json[tabName] = tabFields;
382
- }
383
- const id = generateCustomTypeId({ seed: config.seed });
384
- return {
385
- id,
386
- label: changeCase.capitalCase(id),
387
- status: faker.datatype.boolean(),
388
- repeatable: faker.datatype.boolean(),
389
- json
390
550
  };
391
551
  };
392
552
 
393
- const group$1 = (config = {}) => {
553
+ const timestamp$1 = (config = {}) => {
394
554
  const faker = createFaker(config.seed);
395
- const fields = buildMockGroupFieldMap({
396
- seed: config.seed,
397
- configs: config.configs
398
- });
399
555
  return {
400
- type: prismicT.CustomTypeModelFieldType.Group,
556
+ type: prismicT.CustomTypeModelFieldType.Timestamp,
401
557
  config: {
402
558
  label: changeCase.capitalCase(faker.company.bsNoun()),
403
- fields
559
+ placeholder: changeCase.sentenceCase(faker.lorem.words(3))
404
560
  }
405
561
  };
406
562
  };
407
563
 
408
- const sharedSliceVariation$1 = (config = {}) => {
409
- var _a, _b, _c, _d, _e, _f;
564
+ const title$1 = (config = {}) => {
410
565
  const faker = createFaker(config.seed);
411
- const name = changeCase.capitalCase(faker.company.bsNoun());
566
+ const single = faker.random.arrayElements([
567
+ "heading1",
568
+ "heading2",
569
+ "heading3",
570
+ "heading4",
571
+ "heading5",
572
+ "heading6"
573
+ ]).join(",");
412
574
  return {
413
- id: changeCase.snakeCase(name),
414
- name,
415
- description: faker.lorem.sentence(),
416
- docURL: faker.internet.url(),
417
- version: faker.git.shortSha(),
418
- primary: buildMockGroupFieldMap({
419
- seed: (_b = (_a = config.primaryFieldConfig) == null ? void 0 : _a.seed) != null ? _b : config.seed,
420
- configs: (_c = config.primaryFieldConfig) == null ? void 0 : _c.configs
421
- }),
422
- items: buildMockGroupFieldMap({
423
- seed: (_e = (_d = config.itemsFieldConfig) == null ? void 0 : _d.seed) != null ? _e : config.seed,
424
- configs: (_f = config.itemsFieldConfig) == null ? void 0 : _f.configs
425
- })
575
+ type: prismicT.CustomTypeModelFieldType.StructuredText,
576
+ config: {
577
+ label: changeCase.capitalCase(faker.company.bsNoun()),
578
+ placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
579
+ single,
580
+ allowTargetBlank: faker.datatype.boolean() ? true : void 0
581
+ }
426
582
  };
427
583
  };
428
584
 
429
- const sharedSlice$1 = (config = {}) => {
430
- var _a;
585
+ const uid$1 = (config = {}) => {
431
586
  const faker = createFaker(config.seed);
432
- const variationsCount = (_a = config.variationsCount) != null ? _a : faker.datatype.number({ min: 1, max: 3 });
433
- const name = changeCase.capitalCase(faker.company.bsNoun());
434
- const variations = Array(variationsCount).fill(void 0).map(() => sharedSliceVariation$1({
435
- seed: config.seed,
436
- itemsFieldConfig: config.itemsFieldConfig,
437
- primaryFieldConfig: config.primaryFieldConfig
438
- }));
439
587
  return {
440
- type: prismicT.CustomTypeModelSliceType.SharedSlice,
441
- id: changeCase.snakeCase(name),
442
- name,
443
- description: faker.lorem.sentence(),
444
- variations
588
+ type: prismicT.CustomTypeModelFieldType.UID,
589
+ config: {
590
+ label: changeCase.capitalCase(faker.company.bsNoun()),
591
+ placeholder: changeCase.sentenceCase(faker.lorem.words(3))
592
+ }
445
593
  };
446
594
  };
447
595
 
448
- var index$1 = /*#__PURE__*/Object.freeze({
449
- __proto__: null,
450
- boolean: boolean$1,
451
- color: color$1,
452
- contentRelationship: contentRelationship$1,
453
- customType: customType$1,
454
- date: date$1,
455
- embed: embed$2,
456
- geoPoint: geoPoint$1,
457
- group: group$1,
458
- image: image$2,
459
- integrationFields: integrationFields$1,
460
- keyText: keyText$1,
461
- link: link$1,
462
- linkToMedia: linkToMedia$1,
463
- number: number$1,
464
- richText: richText$1,
465
- select: select$1,
466
- sharedSlice: sharedSlice$1,
467
- sharedSliceChoice: sharedSliceChoice,
468
- sharedSliceVariation: sharedSliceVariation$1,
469
- slice: slice$1,
470
- sliceZone: sliceZone$1,
471
- timestamp: timestamp$1,
472
- title: title$1,
473
- uid: uid$1
474
- });
475
-
476
- const boolean = (config = {}) => {
477
- const faker = createFaker(config.seed);
478
- return faker.datatype.boolean();
479
- };
480
-
481
- const generateTags = (config) => {
596
+ const generateFieldId = (config) => {
482
597
  const faker = createFaker(config.seed);
483
- return Array(faker.datatype.number(2)).fill(void 0).map(() => changeCase.capitalCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 }))));
484
- };
485
-
486
- const valueForModel = (config) => {
487
- const model = config.model;
488
- switch (model.type) {
489
- case prismicT.CustomTypeModelFieldType.Boolean: {
490
- return boolean({
491
- seed: config.seed,
492
- model,
493
- ...config.config
494
- });
495
- }
496
- case prismicT.CustomTypeModelFieldType.Color: {
497
- return color({
498
- seed: config.seed,
499
- model,
500
- ...config.config
501
- });
502
- }
503
- case prismicT.CustomTypeModelFieldType.Link: {
504
- switch (model.config.select) {
505
- case prismicT.CustomTypeModelLinkSelectType.Document: {
506
- return contentRelationship({
507
- seed: config.seed,
508
- model,
509
- ...config.config
510
- });
511
- }
512
- case prismicT.CustomTypeModelLinkSelectType.Media: {
513
- return linkToMedia({
514
- seed: config.seed,
515
- model,
516
- ...config.config
517
- });
518
- }
519
- default: {
520
- return link({
521
- seed: config.seed,
522
- model,
523
- ...config.config
524
- });
525
- }
526
- }
527
- }
528
- case prismicT.CustomTypeModelFieldType.Date: {
529
- return date({
530
- seed: config.seed,
531
- model,
532
- ...config.config
533
- });
534
- }
535
- case prismicT.CustomTypeModelFieldType.Embed: {
536
- return embed$1({
537
- seed: config.seed,
538
- model,
539
- ...config.config
540
- });
541
- }
542
- case prismicT.CustomTypeModelFieldType.GeoPoint: {
543
- return geoPoint({
544
- seed: config.seed,
545
- model,
546
- ...config.config
547
- });
548
- }
549
- case prismicT.CustomTypeModelFieldType.Image: {
550
- return image$1({
551
- seed: config.seed,
552
- model,
553
- ...config.config
554
- });
555
- }
556
- case prismicT.CustomTypeModelFieldType.Text: {
557
- return keyText({
558
- seed: config.seed,
559
- model,
560
- ...config.config
561
- });
562
- }
563
- case prismicT.CustomTypeModelFieldType.Number: {
564
- return number({
565
- seed: config.seed,
566
- model,
567
- ...config.config
568
- });
569
- }
570
- case prismicT.CustomTypeModelFieldType.Select: {
571
- return select({
572
- seed: config.seed,
573
- model,
574
- ...config.config
575
- });
576
- }
577
- case prismicT.CustomTypeModelFieldType.Timestamp: {
578
- return timestamp({
579
- seed: config.seed,
580
- model,
581
- ...config.config
582
- });
583
- }
584
- case prismicT.CustomTypeModelFieldType.StructuredText: {
585
- if ("single" in model.config && model.config.single.split(",").every((element) => /heading[1-6]/.test(element.trim()))) {
586
- return title({
587
- seed: config.seed,
588
- model,
589
- ...config.config
590
- });
591
- } else {
592
- return richText({
593
- seed: config.seed,
594
- model,
595
- ...config.config
596
- });
597
- }
598
- }
599
- case prismicT.CustomTypeModelFieldType.IntegrationFields: {
600
- return integrationFields({
601
- seed: config.seed,
602
- model,
603
- ...config.config
604
- });
605
- }
606
- case prismicT.CustomTypeModelFieldType.UID: {
607
- return uid({
608
- seed: config.seed,
609
- model,
610
- ...config.config
611
- });
612
- }
613
- case prismicT.CustomTypeModelFieldType.Group: {
614
- return group({
615
- seed: config.seed,
616
- model,
617
- ...config.config
618
- });
619
- }
620
- case prismicT.CustomTypeModelFieldType.Slices: {
621
- return sliceZone({
622
- seed: config.seed,
623
- model,
624
- ...config.config
625
- });
626
- }
627
- }
598
+ return changeCase.snakeCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 })));
628
599
  };
629
600
 
630
- const getValueConfigType = (model) => {
631
- switch (model.type) {
632
- case prismicT.CustomTypeModelFieldType.Boolean:
633
- return "boolean";
634
- case prismicT.CustomTypeModelFieldType.Color:
635
- return "color";
636
- case prismicT.CustomTypeModelFieldType.Date:
637
- return "date";
638
- case prismicT.CustomTypeModelFieldType.Embed:
639
- return "embed";
640
- case prismicT.CustomTypeModelFieldType.GeoPoint:
641
- return "geoPoint";
642
- case prismicT.CustomTypeModelFieldType.Group:
643
- return "group";
644
- case prismicT.CustomTypeModelFieldType.Image:
645
- return "image";
646
- case prismicT.CustomTypeModelFieldType.Link: {
647
- switch (model.config.select) {
648
- case prismicT.CustomTypeModelLinkSelectType.Document:
649
- return "contentRelationship";
650
- case prismicT.CustomTypeModelLinkSelectType.Media:
651
- return "linkToMedia";
652
- default:
653
- return "link";
654
- }
655
- }
656
- case prismicT.CustomTypeModelFieldType.Number:
657
- return "number";
658
- case prismicT.CustomTypeModelFieldType.Select:
659
- return "select";
660
- case prismicT.CustomTypeModelFieldType.StructuredText: {
661
- if ("single" in model.config && model.config.single.split(",").every((element) => /heading{1,6}/.test(element.trim()))) {
662
- return "title";
663
- } else {
664
- return "richText";
665
- }
666
- }
667
- case prismicT.CustomTypeModelFieldType.Text:
668
- return "keyText";
669
- case prismicT.CustomTypeModelFieldType.Timestamp:
670
- return "timestamp";
671
- case prismicT.CustomTypeModelFieldType.UID:
672
- return "uid";
673
- case prismicT.CustomTypeModelFieldType.IntegrationFields:
674
- return "integrationFields";
675
- case prismicT.CustomTypeModelFieldType.Slices:
676
- return "slices";
677
- }
601
+ const mockModelFns = {
602
+ boolean,
603
+ color: color$1,
604
+ contentRelationship: contentRelationship$1,
605
+ date: date$1,
606
+ embed: embed$2,
607
+ geoPoint: geoPoint$1,
608
+ image: image$2,
609
+ integrationFields: integrationFields$1,
610
+ keyText: keyText$1,
611
+ link: link$1,
612
+ linkToMedia: linkToMedia$1,
613
+ number: number$1,
614
+ richText: richText$1,
615
+ select: select$1,
616
+ timestamp: timestamp$1,
617
+ title: title$1
678
618
  };
679
- const valueForModelMap = (config) => {
680
- var _a;
681
- const result = {};
682
- for (const fieldId in config.map) {
683
- const fieldModel = config.map[fieldId];
684
- const fieldConfigType = getValueConfigType(fieldModel);
685
- const fieldConfig = (_a = config.configs) == null ? void 0 : _a[fieldConfigType];
686
- result[fieldId] = valueForModel({
687
- seed: config.seed,
688
- model: fieldModel,
689
- config: fieldConfig
690
- });
619
+ const buildMockGroupFieldMap = (config = {}) => {
620
+ const faker = createFaker(config.seed);
621
+ const fields = {};
622
+ const fieldTypes = faker.random.arrayElements(Object.keys(mockModelFns));
623
+ for (const fieldType of fieldTypes) {
624
+ const fieldId = generateFieldId({ seed: config.seed });
625
+ const mockModelFn = mockModelFns[fieldType];
626
+ fields[fieldId] = mockModelFn({ seed: config.seed });
691
627
  }
692
- return result;
628
+ return fields;
693
629
  };
694
630
 
631
+ var index$2 = /*#__PURE__*/Object.freeze({
632
+ __proto__: null,
633
+ boolean: boolean,
634
+ color: color$1,
635
+ contentRelationship: contentRelationship$1,
636
+ customType: customType$1,
637
+ date: date$1,
638
+ embed: embed$2,
639
+ geoPoint: geoPoint$1,
640
+ group: group$1,
641
+ image: image$2,
642
+ integrationFields: integrationFields$1,
643
+ keyText: keyText$1,
644
+ link: link$1,
645
+ linkToMedia: linkToMedia$1,
646
+ number: number$1,
647
+ richText: richText$1,
648
+ select: select$1,
649
+ sharedSlice: sharedSlice$1,
650
+ sharedSliceChoice: sharedSliceChoice,
651
+ sharedSliceVariation: sharedSliceVariation$1,
652
+ slice: slice$1,
653
+ sliceZone: sliceZone$1,
654
+ timestamp: timestamp$1,
655
+ title: title$1,
656
+ uid: uid$1,
657
+ buildMockGroupFieldMap: buildMockGroupFieldMap
658
+ });
659
+
695
660
  const timestamp = (config = {}) => {
696
661
  const faker = createFaker(config.seed);
697
662
  const after = config.after || faker.date.past(20, new Date("2021-03-07")).toISOString().split("T")[0];
698
663
  const before = config.before || faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
699
- return faker.date.between(after, before).toISOString();
664
+ return config.state === "empty" ? null : faker.date.between(after, before).toISOString();
665
+ };
666
+
667
+ const buildAlternativeLanguage = (config) => {
668
+ return {
669
+ id: config.document.id,
670
+ type: config.document.type,
671
+ lang: config.document.lang,
672
+ uid: config.document.uid || void 0
673
+ };
700
674
  };
701
675
 
702
676
  const customType = (config = {}) => {
677
+ var _a;
703
678
  const faker = createFaker(config.seed);
704
679
  const model = config.model || customType$1({ seed: config.seed });
705
680
  const fieldModelsMap = Object.assign({}, ...Object.values(model.json));
681
+ const dataFieldModelsMap = {};
682
+ for (const key in fieldModelsMap) {
683
+ const fieldModel = fieldModelsMap[key];
684
+ if (fieldModel.type !== prismicT.CustomTypeModelFieldType.UID) {
685
+ dataFieldModelsMap[key] = fieldModel;
686
+ }
687
+ }
706
688
  const hasUID = Object.values(fieldModelsMap).some((fieldModel) => fieldModel.type === prismicT.CustomTypeModelFieldType.UID);
689
+ const withURL = (_a = config.withURL) != null ? _a : true;
690
+ const alternateLanguages = (config.alternateLanguages || []).map((alternateLanguageDocument) => buildAlternativeLanguage({
691
+ document: alternateLanguageDocument
692
+ }));
707
693
  return {
708
694
  type: model.id,
709
695
  id: faker.git.shortSha(),
710
696
  uid: hasUID ? changeCase.snakeCase(faker.lorem.words(2)) : null,
711
- url: faker.internet.url(),
697
+ url: withURL ? faker.internet.url() : null,
712
698
  href: faker.internet.url(),
713
699
  lang: faker.lorem.word(),
714
700
  tags: generateTags({ seed: config.seed }),
715
701
  slugs: [],
716
702
  linked_documents: [],
717
- alternate_languages: [],
703
+ alternate_languages: alternateLanguages,
718
704
  first_publication_date: timestamp({ seed: config.seed }),
719
705
  last_publication_date: timestamp({ seed: config.seed }),
720
706
  data: valueForModelMap({
721
707
  seed: config.seed,
722
- map: fieldModelsMap,
708
+ map: dataFieldModelsMap,
723
709
  configs: config.configs
724
710
  })
725
711
  };
@@ -727,7 +713,7 @@ const customType = (config = {}) => {
727
713
 
728
714
  const color = (config = {}) => {
729
715
  const faker = createFaker(config.seed);
730
- return faker.internet.color().toUpperCase();
716
+ return config.state === "empty" ? null : faker.internet.color().toUpperCase();
731
717
  };
732
718
 
733
719
  const buildContentRelationshipField = (config) => {
@@ -744,11 +730,18 @@ const buildContentRelationshipField = (config) => {
744
730
  };
745
731
  };
746
732
 
733
+ const generateCustomTypeId = (config) => {
734
+ const faker = createFaker(config.seed);
735
+ return changeCase.snakeCase(faker.company.bsNoun());
736
+ };
737
+
747
738
  const contentRelationship = (config = {}) => {
748
- var _a;
749
739
  const faker = createFaker(config.seed);
750
- const isFilled = (_a = config.isFilled) != null ? _a : true;
751
- if (isFilled) {
740
+ if (config.state === "empty") {
741
+ return {
742
+ link_type: prismicT.LinkType.Document
743
+ };
744
+ } else {
752
745
  const model = config.model || contentRelationship$1({ seed: config.seed });
753
746
  const linkableDocuments = config.linkableDocuments ? config.linkableDocuments.filter((document2) => {
754
747
  let shouldKeep = true;
@@ -770,19 +763,18 @@ const contentRelationship = (config = {}) => {
770
763
  if (!document) {
771
764
  throw new Error("A linkable document could not be found.");
772
765
  }
773
- return buildContentRelationshipField({ document });
774
- } else {
775
- return {
776
- link_type: prismicT.LinkType.Document
777
- };
766
+ return buildContentRelationshipField({
767
+ document
768
+ });
778
769
  }
779
770
  };
780
771
 
781
772
  const date = (config = {}) => {
782
- return timestamp({
773
+ return config.state === "empty" ? null : timestamp({
783
774
  seed: config.seed,
784
775
  after: config.after,
785
- before: config.before
776
+ before: config.before,
777
+ state: "filled"
786
778
  }).split("T")[0];
787
779
  };
788
780
 
@@ -872,40 +864,25 @@ const getMockEmbedData = (config) => {
872
864
 
873
865
  const embed$1 = (config = {}) => {
874
866
  const embedData = getMockEmbedData({ seed: config.seed });
875
- return buildEmbedField({ seed: config.seed, embedData });
867
+ return config.state === "empty" ? {} : buildEmbedField({ seed: config.seed, embedData });
876
868
  };
877
869
 
878
870
  const geoPoint = (config = {}) => {
879
871
  const faker = createFaker(config.seed);
880
872
  const coordinates = faker.address.nearbyGPSCoordinate();
881
- return {
873
+ return config.state === "empty" ? {} : {
882
874
  longitude: Number.parseFloat(coordinates[0]),
883
875
  latitude: Number.parseFloat(coordinates[1])
884
876
  };
885
877
  };
886
878
 
887
- const patterns$9 = {
888
- short: {
889
- minItems: 1,
890
- maxItems: 3
891
- },
892
- medium: {
893
- minItems: 3,
894
- maxItems: 6
895
- },
896
- long: {
897
- minItems: 6,
898
- maxItems: 12
899
- }
900
- };
901
879
  const group = (config = {}) => {
880
+ var _a;
902
881
  const faker = createFaker(config.seed);
903
882
  const model = config.model || group$1({ seed: config.seed });
904
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$9));
905
- const pattern = patterns$9[patternKey];
906
- const itemsCount = faker.datatype.number({
907
- min: pattern.minItems,
908
- max: pattern.maxItems
883
+ const itemsCount = (_a = config.itemsCount) != null ? _a : faker.datatype.number({
884
+ min: 1,
885
+ max: 6
909
886
  });
910
887
  return Array(itemsCount).fill(void 0).map(() => {
911
888
  return valueForModelMap({
@@ -916,23 +893,32 @@ const group = (config = {}) => {
916
893
  });
917
894
  };
918
895
 
919
- const buildImageField = (config) => {
896
+ const buildImageFieldImage = (config) => {
920
897
  var _a, _b, _c, _d;
921
- const faker = createFaker(config.seed);
922
- const url = new URL(config.imageData.url);
923
- const dimensions = {
924
- width: (_b = (_a = config.constraint) == null ? void 0 : _a.width) != null ? _b : config.imageData.width,
925
- height: (_d = (_c = config.constraint) == null ? void 0 : _c.height) != null ? _d : config.imageData.height
926
- };
927
- url.searchParams.set("w", dimensions.width.toString());
928
- url.searchParams.set("h", dimensions.height.toString());
929
- url.searchParams.set("fit", "crop");
930
- return {
931
- url: url.toString(),
932
- dimensions,
933
- alt: faker.lorem.sentence(),
934
- copyright: faker.lorem.sentence()
935
- };
898
+ if (config.state === "empty") {
899
+ return {
900
+ url: null,
901
+ dimensions: null,
902
+ alt: null,
903
+ copyright: null
904
+ };
905
+ } else {
906
+ const faker = createFaker(config.seed);
907
+ const url = new URL(config.imageData.url);
908
+ const dimensions = {
909
+ width: (_b = (_a = config.constraint) == null ? void 0 : _a.width) != null ? _b : config.imageData.width,
910
+ height: (_d = (_c = config.constraint) == null ? void 0 : _c.height) != null ? _d : config.imageData.height
911
+ };
912
+ url.searchParams.set("w", dimensions.width.toString());
913
+ url.searchParams.set("h", dimensions.height.toString());
914
+ url.searchParams.set("fit", "crop");
915
+ return {
916
+ url: url.toString(),
917
+ dimensions,
918
+ alt: faker.lorem.sentence(),
919
+ copyright: faker.lorem.sentence()
920
+ };
921
+ }
936
922
  };
937
923
 
938
924
  const dataSet = [
@@ -1025,19 +1011,21 @@ const getMockImageData = (config) => {
1025
1011
  const image$1 = (config = {}) => {
1026
1012
  const model = config.model || image$2({ seed: config.seed });
1027
1013
  const imageData = getMockImageData({ seed: config.seed });
1028
- const value = buildImageField({
1014
+ const value = buildImageFieldImage({
1029
1015
  seed: config.seed,
1030
1016
  imageData,
1031
- constraint: model.config.constraint
1017
+ constraint: model.config.constraint,
1018
+ state: config.state
1032
1019
  });
1033
1020
  for (const thumbnail of model.config.thumbnails) {
1034
- value[thumbnail.name] = buildImageField({
1021
+ value[thumbnail.name] = buildImageFieldImage({
1035
1022
  seed: config.seed,
1036
1023
  imageData,
1037
1024
  constraint: {
1038
1025
  width: thumbnail.width,
1039
1026
  height: thumbnail.height
1040
- }
1027
+ },
1028
+ state: config.state
1041
1029
  });
1042
1030
  }
1043
1031
  return value;
@@ -1046,7 +1034,7 @@ const image$1 = (config = {}) => {
1046
1034
  const integrationFields = (config = {}) => {
1047
1035
  const faker = createFaker(config.seed);
1048
1036
  const imageData = getMockImageData({ seed: config.seed });
1049
- return {
1037
+ return config.state === "empty" ? null : {
1050
1038
  id: faker.git.shortSha(),
1051
1039
  title: changeCase.capitalCase(faker.lorem.words(3)),
1052
1040
  description: faker.lorem.sentence(),
@@ -1058,14 +1046,16 @@ const integrationFields = (config = {}) => {
1058
1046
 
1059
1047
  const keyText = (config = {}) => {
1060
1048
  const faker = createFaker(config.seed);
1061
- return changeCase.sentenceCase(faker.lorem.words(3));
1049
+ return config.state === "empty" ? null : changeCase.sentenceCase(faker.lorem.words(3));
1062
1050
  };
1063
1051
 
1064
1052
  const linkToMedia = (config = {}) => {
1065
- var _a;
1066
1053
  const faker = createFaker(config.seed);
1067
- const isFilled = (_a = config.isFilled) != null ? _a : true;
1068
- if (isFilled) {
1054
+ if (config.state === "empty") {
1055
+ return {
1056
+ link_type: prismicT.LinkType.Media
1057
+ };
1058
+ } else {
1069
1059
  return {
1070
1060
  link_type: prismicT.LinkType.Media,
1071
1061
  name: faker.system.commonFileName(),
@@ -1075,58 +1065,55 @@ const linkToMedia = (config = {}) => {
1075
1065
  height: faker.datatype.number().toString(),
1076
1066
  width: faker.datatype.number().toString()
1077
1067
  };
1078
- } else {
1079
- return {
1080
- link_type: prismicT.LinkType.Media
1081
- };
1082
1068
  }
1083
1069
  };
1084
1070
 
1085
1071
  const link = (config = {}) => {
1086
- var _a, _b;
1072
+ var _a;
1087
1073
  const faker = createFaker(config.seed);
1088
- const isFilled = (_a = config.isFilled) != null ? _a : true;
1089
1074
  const type = config.type || faker.random.arrayElement([
1090
1075
  prismicT.LinkType.Web,
1091
1076
  prismicT.LinkType.Document,
1092
1077
  prismicT.LinkType.Media
1093
1078
  ]);
1094
- if (isFilled) {
1079
+ if (config.state === "empty") {
1080
+ return {
1081
+ link_type: type
1082
+ };
1083
+ } else {
1095
1084
  switch (type) {
1096
1085
  case prismicT.LinkType.Document: {
1097
1086
  return contentRelationship({
1098
1087
  seed: config.seed,
1099
- isFilled,
1088
+ state: config.state,
1100
1089
  linkableDocuments: config.linkableDocuments
1101
1090
  });
1102
1091
  }
1103
1092
  case prismicT.LinkType.Media: {
1104
1093
  return linkToMedia({
1105
1094
  seed: config.seed,
1106
- isFilled
1095
+ state: config.state
1107
1096
  });
1108
1097
  }
1109
- case prismicT.LinkType.Web: {
1098
+ case prismicT.LinkType.Web:
1099
+ default: {
1110
1100
  const model = config.model || link$1({ seed: config.seed });
1111
1101
  return {
1112
1102
  link_type: prismicT.LinkType.Web,
1113
1103
  url: faker.internet.url(),
1114
- target: ((_b = config.withTargetBlank) != null ? _b : model.config.allowTargetBlank && faker.datatype.boolean()) ? "_blank" : void 0
1104
+ target: ((_a = config.withTargetBlank) != null ? _a : model.config.allowTargetBlank && faker.datatype.boolean()) ? "_blank" : void 0
1115
1105
  };
1116
1106
  }
1117
1107
  }
1118
1108
  }
1119
- return {
1120
- link_type: type
1121
- };
1122
1109
  };
1123
1110
 
1124
1111
  const number = (config = {}) => {
1125
1112
  const faker = createFaker(config.seed);
1126
- return faker.datatype.number();
1113
+ return config.state === "empty" ? null : faker.datatype.number();
1127
1114
  };
1128
1115
 
1129
- const patterns$8 = {
1116
+ const patterns$5 = {
1130
1117
  short: {
1131
1118
  minWords: 1,
1132
1119
  maxWords: 3
@@ -1153,8 +1140,8 @@ const heading = (config = {}) => {
1153
1140
  ].includes(type2));
1154
1141
  const type = faker.random.arrayElement(types);
1155
1142
  if (type) {
1156
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$8));
1157
- const pattern = patterns$8[patternKey];
1143
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$5));
1144
+ const pattern = patterns$5[patternKey];
1158
1145
  return {
1159
1146
  type,
1160
1147
  text: changeCase.capitalCase(faker.lorem.words(faker.datatype.number({
@@ -1168,7 +1155,7 @@ const heading = (config = {}) => {
1168
1155
  }
1169
1156
  };
1170
1157
 
1171
- const patterns$7 = {
1158
+ const patterns$4 = {
1172
1159
  short: {
1173
1160
  sentenceCount: 2
1174
1161
  },
@@ -1181,8 +1168,8 @@ const patterns$7 = {
1181
1168
  };
1182
1169
  const paragraph = (config = {}) => {
1183
1170
  const faker = createFaker(config.seed);
1184
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$7));
1185
- const pattern = patterns$7[patternKey];
1171
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$4));
1172
+ const pattern = patterns$4[patternKey];
1186
1173
  return {
1187
1174
  type: prismicT.RichTextNodeType.paragraph,
1188
1175
  text: faker.lorem.paragraph(pattern.sentenceCount),
@@ -1190,7 +1177,7 @@ const paragraph = (config = {}) => {
1190
1177
  };
1191
1178
  };
1192
1179
 
1193
- const patterns$6 = {
1180
+ const patterns$3 = {
1194
1181
  short: {
1195
1182
  sentenceCount: 2
1196
1183
  },
@@ -1203,8 +1190,8 @@ const patterns$6 = {
1203
1190
  };
1204
1191
  const preformatted = (config = {}) => {
1205
1192
  const faker = createFaker(config.seed);
1206
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$6));
1207
- const pattern = patterns$6[patternKey];
1193
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$3));
1194
+ const pattern = patterns$3[patternKey];
1208
1195
  return {
1209
1196
  type: prismicT.RichTextNodeType.preformatted,
1210
1197
  text: faker.lorem.paragraph(pattern.sentenceCount),
@@ -1212,7 +1199,7 @@ const preformatted = (config = {}) => {
1212
1199
  };
1213
1200
  };
1214
1201
 
1215
- const patterns$5 = {
1202
+ const patterns$2 = {
1216
1203
  short: {
1217
1204
  minItems: 1,
1218
1205
  maxItems: 3
@@ -1228,8 +1215,8 @@ const patterns$5 = {
1228
1215
  };
1229
1216
  const list = (config = {}) => {
1230
1217
  const faker = createFaker(config.seed);
1231
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$5));
1232
- const pattern = patterns$5[patternKey];
1218
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$2));
1219
+ const pattern = patterns$2[patternKey];
1233
1220
  const itemsCount = faker.datatype.number({
1234
1221
  min: pattern.minItems,
1235
1222
  max: pattern.maxItems
@@ -1243,7 +1230,7 @@ const list = (config = {}) => {
1243
1230
  });
1244
1231
  };
1245
1232
 
1246
- const patterns$4 = {
1233
+ const patterns$1 = {
1247
1234
  short: {
1248
1235
  minItems: 1,
1249
1236
  maxItems: 3
@@ -1259,8 +1246,8 @@ const patterns$4 = {
1259
1246
  };
1260
1247
  const oList = (config = {}) => {
1261
1248
  const faker = createFaker(config.seed);
1262
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$4));
1263
- const pattern = patterns$4[patternKey];
1249
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$1));
1250
+ const pattern = patterns$1[patternKey];
1264
1251
  const itemsCount = faker.datatype.number({
1265
1252
  min: pattern.minItems,
1266
1253
  max: pattern.maxItems
@@ -1276,7 +1263,11 @@ const oList = (config = {}) => {
1276
1263
 
1277
1264
  const image = (config = {}) => {
1278
1265
  const imageData = getMockImageData({ seed: config.seed });
1279
- const imageField = buildImageField({ seed: config.seed, imageData });
1266
+ const imageField = buildImageFieldImage({
1267
+ seed: config.seed,
1268
+ imageData,
1269
+ state: false
1270
+ });
1280
1271
  return {
1281
1272
  type: prismicT.RichTextNodeType.image,
1282
1273
  alt: imageField.alt,
@@ -1295,7 +1286,7 @@ const embed = (config = {}) => {
1295
1286
  };
1296
1287
  };
1297
1288
 
1298
- const patterns$3 = {
1289
+ const patterns = {
1299
1290
  short: {
1300
1291
  blockCountMin: 1,
1301
1292
  blockCountMax: 2
@@ -1332,8 +1323,8 @@ const richText = (config = {}) => {
1332
1323
  const supportsMultipleBlocks = "multi" in model.config;
1333
1324
  const types = ("multi" in model.config ? model.config.multi : model.config.single).split(",").filter((type) => Object.keys(generators).includes(type));
1334
1325
  if (types.length > 0) {
1335
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$3));
1336
- const pattern = patterns$3[patternKey];
1326
+ const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns));
1327
+ const pattern = patterns[patternKey];
1337
1328
  const blockCount = supportsMultipleBlocks ? faker.datatype.number({
1338
1329
  min: pattern.blockCountMin,
1339
1330
  max: pattern.blockCountMax
@@ -1352,38 +1343,22 @@ const select = (config = {}) => {
1352
1343
  const faker = createFaker(config.seed);
1353
1344
  const model = config.model || select$1({ seed: config.seed });
1354
1345
  const defaultValue = model.config.default_value;
1355
- return typeof defaultValue === "string" && faker.datatype.boolean() ? defaultValue : faker.random.arrayElement(model.config.options);
1356
- };
1357
-
1358
- const patterns$2 = {
1359
- none: {
1360
- minItems: 0,
1361
- maxItems: 0
1362
- },
1363
- short: {
1364
- minItems: 1,
1365
- maxItems: 3
1366
- },
1367
- medium: {
1368
- minItems: 3,
1369
- maxItems: 6
1370
- },
1371
- long: {
1372
- minItems: 6,
1373
- maxItems: 12
1346
+ if (config.state === "empty") {
1347
+ return null;
1348
+ } else {
1349
+ return typeof defaultValue === "string" && faker.datatype.boolean() ? defaultValue : faker.random.arrayElement(model.config.options);
1374
1350
  }
1375
1351
  };
1352
+
1376
1353
  const slice = (config = {}) => {
1377
- var _a;
1354
+ var _a, _b;
1378
1355
  const faker = createFaker(config.seed);
1379
1356
  const model = config.model || slice$1({ seed: config.seed });
1380
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$2));
1381
- const pattern = patterns$2[patternKey];
1382
1357
  const sliceType = (_a = config.type) != null ? _a : generateFieldId({ seed: config.seed });
1383
1358
  const sliceLabel = config.label !== void 0 ? config.label : changeCase.capitalCase(faker.company.bsNoun());
1384
- const itemsCount = Object.keys(model.repeat).length > 0 ? faker.datatype.number({
1385
- min: pattern.minItems,
1386
- max: pattern.maxItems
1359
+ const itemsCount = Object.keys(model.repeat).length > 0 ? (_b = config.itemsCount) != null ? _b : faker.datatype.number({
1360
+ min: 1,
1361
+ max: 6
1387
1362
  }) : 0;
1388
1363
  return {
1389
1364
  slice_type: sliceType,
@@ -1403,39 +1378,18 @@ const slice = (config = {}) => {
1403
1378
  };
1404
1379
  };
1405
1380
 
1406
- const patterns$1 = {
1407
- none: {
1408
- minItems: 0,
1409
- maxItems: 0
1410
- },
1411
- short: {
1412
- minItems: 1,
1413
- maxItems: 3
1414
- },
1415
- medium: {
1416
- minItems: 3,
1417
- maxItems: 6
1418
- },
1419
- long: {
1420
- minItems: 6,
1421
- maxItems: 12
1422
- }
1423
- };
1424
1381
  const sharedSliceVariation = (config = {}) => {
1425
1382
  var _a, _b;
1426
1383
  const faker = createFaker(config.seed);
1427
1384
  const model = config.model || sharedSliceVariation$1({ seed: config.seed });
1428
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$1));
1429
- const pattern = patterns$1[patternKey];
1430
1385
  const sliceType = (_a = config.type) != null ? _a : generateFieldId({ seed: config.seed });
1431
- const sliceLabel = (_b = config.label) != null ? _b : changeCase.capitalCase(faker.company.bsNoun());
1432
- const itemsCount = Object.keys(model.items).length > 0 ? faker.datatype.number({
1433
- min: pattern.minItems,
1434
- max: pattern.maxItems
1386
+ const itemsCount = Object.keys(model.items).length > 0 ? (_b = config.itemsCount) != null ? _b : faker.datatype.number({
1387
+ min: 1,
1388
+ max: 6
1435
1389
  }) : 0;
1436
1390
  return {
1437
1391
  slice_type: sliceType,
1438
- slice_label: sliceLabel,
1392
+ slice_label: null,
1439
1393
  variation: model.id,
1440
1394
  version: faker.git.shortSha(),
1441
1395
  primary: valueForModelMap({
@@ -1460,66 +1414,55 @@ const sharedSlice = (config = {}) => {
1460
1414
  return sharedSliceVariation({
1461
1415
  seed: config.seed,
1462
1416
  model: variationModel,
1463
- pattern: config.pattern,
1417
+ itemsCount: config.itemsCount,
1464
1418
  type: model.id,
1465
1419
  primaryFieldConfigs: config.primaryFieldConfigs,
1466
1420
  itemsFieldConfigs: config.itemsFieldConfigs
1467
1421
  });
1468
1422
  };
1469
1423
 
1470
- const patterns = {
1471
- short: {
1472
- minItems: 1,
1473
- maxItems: 3
1474
- },
1475
- medium: {
1476
- minItems: 3,
1477
- maxItems: 6
1478
- },
1479
- long: {
1480
- minItems: 6,
1481
- maxItems: 12
1482
- }
1483
- };
1484
1424
  const sliceZone = (config = {}) => {
1425
+ var _a;
1485
1426
  const faker = createFaker(config.seed);
1486
1427
  const model = config.model || sliceZone$1({ seed: config.seed });
1487
- const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns));
1488
- const pattern = patterns[patternKey];
1489
- const itemsCount = faker.datatype.number({
1490
- min: pattern.minItems,
1491
- max: pattern.maxItems
1492
- });
1493
- return Array(itemsCount).fill(void 0).map(() => {
1494
- var _a;
1495
- const choices = Object.entries(model.config.choices);
1496
- const [choiceType, choiceModel] = faker.random.arrayElement(choices);
1497
- const choiceLabels = model.config.labels[choiceType] || [];
1498
- const choiceLabel = faker.random.arrayElement(choiceLabels);
1499
- switch (choiceModel.type) {
1500
- case prismicT.CustomTypeModelSliceType.Slice: {
1501
- return slice({
1502
- seed: config.seed,
1503
- model: choiceModel,
1504
- type: choiceType,
1505
- label: choiceLabel ? choiceLabel.name : null,
1506
- primaryFieldConfigs: config.primaryFieldConfigs,
1507
- itemsFieldConfigs: config.itemsFieldConfigs
1508
- });
1509
- }
1510
- case prismicT.CustomTypeModelSliceType.SharedSlice: {
1511
- const sharedSliceModel = (_a = config.sharedSliceModels) == null ? void 0 : _a.find((sharedSliceModel2) => sharedSliceModel2.id === choiceType);
1512
- if (sharedSliceModel) {
1513
- return sharedSlice({
1428
+ if (Object.keys(model.config.choices).length > 0) {
1429
+ const itemsCount = (_a = config.itemsCount) != null ? _a : faker.datatype.number({
1430
+ min: 1,
1431
+ max: 6
1432
+ });
1433
+ return Array(itemsCount).fill(void 0).map(() => {
1434
+ var _a2;
1435
+ const choices = Object.entries(model.config.choices);
1436
+ const [choiceType, choiceModel] = faker.random.arrayElement(choices);
1437
+ const choiceLabels = model.config.labels[choiceType] || [];
1438
+ const choiceLabel = faker.random.arrayElement(choiceLabels);
1439
+ switch (choiceModel.type) {
1440
+ case prismicT.CustomTypeModelSliceType.Slice: {
1441
+ return slice({
1514
1442
  seed: config.seed,
1515
- model: sharedSliceModel,
1443
+ model: choiceModel,
1444
+ type: choiceType,
1445
+ label: choiceLabel ? choiceLabel.name : null,
1516
1446
  primaryFieldConfigs: config.primaryFieldConfigs,
1517
1447
  itemsFieldConfigs: config.itemsFieldConfigs
1518
1448
  });
1519
1449
  }
1450
+ case prismicT.CustomTypeModelSliceType.SharedSlice: {
1451
+ const sharedSliceModel = (_a2 = config.sharedSliceModels) == null ? void 0 : _a2.find((sharedSliceModel2) => sharedSliceModel2.id === choiceType);
1452
+ if (sharedSliceModel) {
1453
+ return sharedSlice({
1454
+ seed: config.seed,
1455
+ model: sharedSliceModel,
1456
+ primaryFieldConfigs: config.primaryFieldConfigs,
1457
+ itemsFieldConfigs: config.itemsFieldConfigs
1458
+ });
1459
+ }
1460
+ }
1520
1461
  }
1521
- }
1522
- }).filter((slice2) => slice2 !== void 0);
1462
+ }).filter((slice2) => slice2 !== void 0);
1463
+ } else {
1464
+ return [];
1465
+ }
1523
1466
  };
1524
1467
 
1525
1468
  const title = (config = {}) => {
@@ -1537,9 +1480,9 @@ const uid = (config = {}) => {
1537
1480
  return changeCase.snakeCase(faker.lorem.words(2));
1538
1481
  };
1539
1482
 
1540
- var index = /*#__PURE__*/Object.freeze({
1483
+ var index$1 = /*#__PURE__*/Object.freeze({
1541
1484
  __proto__: null,
1542
- boolean: boolean,
1485
+ boolean: boolean$1,
1543
1486
  customType: customType,
1544
1487
  color: color,
1545
1488
  contentRelationship: contentRelationship,
@@ -1565,4 +1508,90 @@ var index = /*#__PURE__*/Object.freeze({
1565
1508
  uid: uid
1566
1509
  });
1567
1510
 
1568
- export { index$1 as model, index as value };
1511
+ const ref = (config = {}) => {
1512
+ var _a;
1513
+ const faker = createFaker(config.seed);
1514
+ const value = {
1515
+ id: faker.git.shortSha(),
1516
+ ref: faker.git.shortSha(),
1517
+ isMasterRef: (_a = config.isMasterRef) != null ? _a : false,
1518
+ label: config.isMasterRef ? "Master" : changeCase.capitalCase(faker.company.bsNoun())
1519
+ };
1520
+ if (config.isScheduled) {
1521
+ value.scheduledAt = timestamp({ seed: config.seed });
1522
+ }
1523
+ return value;
1524
+ };
1525
+
1526
+ const repository = (config = {}) => {
1527
+ const faker = createFaker(config.seed);
1528
+ const types = (config.customTypeModels || []).reduce((acc, model) => {
1529
+ acc[model.id] = model.label;
1530
+ return acc;
1531
+ }, {});
1532
+ return {
1533
+ refs: [
1534
+ ref({ seed: config.seed, isMasterRef: true }),
1535
+ ...config.withReleases ? [ref({ seed: config.seed }), ref({ seed: config.seed })] : []
1536
+ ],
1537
+ integrationFieldsRef: ref({ seed: config.seed }).ref,
1538
+ types,
1539
+ languages: [
1540
+ {
1541
+ id: faker.lorem.word(),
1542
+ name: changeCase.capitalCase(faker.lorem.word())
1543
+ }
1544
+ ],
1545
+ tags: generateTags({
1546
+ seed: config.seed,
1547
+ min: 1,
1548
+ max: 10
1549
+ }),
1550
+ forms: {},
1551
+ license: "All Rights Reserved",
1552
+ version: faker.git.shortSha(),
1553
+ bookmarks: {},
1554
+ experiments: {},
1555
+ oauth_token: faker.internet.url(),
1556
+ oauth_initiate: faker.internet.url()
1557
+ };
1558
+ };
1559
+
1560
+ const query = (config = {}) => {
1561
+ var _a, _b;
1562
+ const faker = createFaker(config.seed);
1563
+ const documents = config.documents || [];
1564
+ const page = Math.max(1, (_a = config.page) != null ? _a : 1);
1565
+ const pageSize = Math.min(100, Math.max(1, (_b = config.pageSize) != null ? _b : 100));
1566
+ const totalPages = Math.ceil(documents.length / pageSize);
1567
+ const results = documents.slice((page - 1) * pageSize, page * pageSize);
1568
+ return {
1569
+ page,
1570
+ next_page: page < totalPages ? faker.internet.url() : null,
1571
+ prev_page: page > 1 ? faker.internet.url() : null,
1572
+ total_pages: totalPages,
1573
+ results_size: results.length,
1574
+ results_per_page: pageSize,
1575
+ total_results_size: documents.length,
1576
+ results
1577
+ };
1578
+ };
1579
+
1580
+ const tags = (config = {}) => {
1581
+ return generateTags({
1582
+ seed: config.seed,
1583
+ min: 1,
1584
+ max: 10
1585
+ });
1586
+ };
1587
+
1588
+ var index = /*#__PURE__*/Object.freeze({
1589
+ __proto__: null,
1590
+ repository: repository,
1591
+ ref: ref,
1592
+ query: query,
1593
+ tags: tags
1594
+ });
1595
+
1596
+ export { index as api, index$2 as model, index$1 as value };
1597
+ //# sourceMappingURL=index.js.map