@prismicio/mock 0.0.7 → 0.0.10

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 (85) hide show
  1. package/dist/api/index.cjs +208 -100
  2. package/dist/api/index.cjs.map +1 -1
  3. package/dist/api/index.d.ts +1 -1
  4. package/dist/api/index.js +208 -100
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/index.cjs +365 -255
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +36 -30
  9. package/dist/index.js +364 -253
  10. package/dist/index.js.map +1 -1
  11. package/dist/model/index.cjs +168 -74
  12. package/dist/model/index.cjs.map +1 -1
  13. package/dist/model/index.d.ts +4 -2
  14. package/dist/model/index.js +168 -74
  15. package/dist/model/index.js.map +1 -1
  16. package/dist/value/index.cjs +334 -224
  17. package/dist/value/index.cjs.map +1 -1
  18. package/dist/value/index.d.ts +29 -25
  19. package/dist/value/index.js +334 -224
  20. package/dist/value/index.js.map +1 -1
  21. package/package.json +19 -17
  22. package/src/api/query.ts +2 -2
  23. package/src/api/ref.ts +3 -3
  24. package/src/api/repository.ts +5 -5
  25. package/src/lib/buildEmbedField.ts +16 -27
  26. package/src/lib/buildImageFieldImage.ts +3 -2
  27. package/src/lib/createFaker.ts +98 -20
  28. package/src/lib/generateCustomTypeId.ts +1 -1
  29. package/src/lib/generateFieldId.ts +1 -3
  30. package/src/lib/generateTags.ts +4 -12
  31. package/src/lib/getMockEmbedData.ts +33 -12
  32. package/src/lib/getMockImageData.ts +1 -1
  33. package/src/lib/lorem.ts +112 -0
  34. package/src/model/boolean.ts +1 -1
  35. package/src/model/buildMockGroupFieldMap.ts +1 -1
  36. package/src/model/color.ts +2 -2
  37. package/src/model/contentRelationship.ts +2 -2
  38. package/src/model/customType.ts +3 -3
  39. package/src/model/date.ts +2 -2
  40. package/src/model/embed.ts +2 -2
  41. package/src/model/geoPoint.ts +1 -1
  42. package/src/model/group.ts +1 -1
  43. package/src/model/image.ts +5 -9
  44. package/src/model/integrationFields.ts +5 -3
  45. package/src/model/keyText.ts +2 -2
  46. package/src/model/link.ts +3 -3
  47. package/src/model/linkToMedia.ts +2 -2
  48. package/src/model/number.ts +2 -2
  49. package/src/model/richText.ts +6 -6
  50. package/src/model/select.ts +2 -2
  51. package/src/model/sharedSlice.ts +2 -2
  52. package/src/model/sharedSliceVariation.ts +4 -4
  53. package/src/model/slice.ts +4 -4
  54. package/src/model/timestamp.ts +2 -2
  55. package/src/model/title.ts +5 -5
  56. package/src/model/uid.ts +2 -2
  57. package/src/types.ts +105 -92
  58. package/src/value/boolean.ts +1 -1
  59. package/src/value/color.ts +1 -1
  60. package/src/value/contentRelationship.ts +3 -3
  61. package/src/value/customType.ts +5 -5
  62. package/src/value/embed.ts +20 -7
  63. package/src/value/geoPoint.ts +2 -4
  64. package/src/value/group.ts +31 -25
  65. package/src/value/integrationFields.ts +4 -4
  66. package/src/value/keyText.ts +1 -3
  67. package/src/value/link.ts +3 -3
  68. package/src/value/linkToMedia.ts +7 -6
  69. package/src/value/number.ts +1 -1
  70. package/src/value/richText/embed.ts +2 -2
  71. package/src/value/richText/heading.ts +3 -10
  72. package/src/value/richText/image.ts +3 -5
  73. package/src/value/richText/index.ts +3 -8
  74. package/src/value/richText/list.ts +4 -8
  75. package/src/value/richText/oList.ts +4 -8
  76. package/src/value/richText/paragraph.ts +8 -4
  77. package/src/value/richText/preformatted.ts +9 -5
  78. package/src/value/select.ts +2 -2
  79. package/src/value/sharedSlice.ts +1 -1
  80. package/src/value/sharedSliceVariation.ts +2 -6
  81. package/src/value/slice.ts +2 -6
  82. package/src/value/sliceZone.ts +50 -49
  83. package/src/value/timestamp.ts +28 -15
  84. package/src/value/title.ts +26 -13
  85. package/src/value/uid.ts +1 -1
@@ -48,7 +48,7 @@ export const customType = <
48
48
  const faker = createFaker(config.seed);
49
49
 
50
50
  let label: string =
51
- config.label || changeCase.capitalCase(faker.company.bsNoun());
51
+ config.label || changeCase.capitalCase(faker.words(faker.range(1, 2)));
52
52
  let id: string = config.id || changeCase.snakeCase(label);
53
53
 
54
54
  if (config.id && !config.label) {
@@ -68,8 +68,8 @@ export const customType = <
68
68
  return {
69
69
  id,
70
70
  label,
71
- status: config.status ?? faker.datatype.boolean(),
72
- repeatable: config.repeatable ?? faker.datatype.boolean(),
71
+ status: config.status ?? faker.boolean(),
72
+ repeatable: config.repeatable ?? faker.boolean(),
73
73
  json,
74
74
  } as MockCustomTypeModel<Definition>;
75
75
  };
package/src/model/date.ts CHANGED
@@ -15,8 +15,8 @@ export const date = (
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Date,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
@@ -15,8 +15,8 @@ export const embed = (
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Embed,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
@@ -15,7 +15,7 @@ export const geoPoint = (
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.GeoPoint,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
18
+ label: changeCase.capitalCase(faker.word()),
19
19
  },
20
20
  };
21
21
  };
@@ -17,7 +17,7 @@ export const group = <Fields extends GroupFieldModelMap>(
17
17
  return {
18
18
  type: prismicT.CustomTypeModelFieldType.Group,
19
19
  config: {
20
- label: changeCase.capitalCase(faker.company.bsNoun()),
20
+ label: changeCase.capitalCase(faker.word()),
21
21
  fields: config.fields || ({} as Fields),
22
22
  },
23
23
  };
@@ -18,22 +18,18 @@ export const image = <ThumbnailNames extends string = string>(
18
18
  const thumbnails = (config.thumbnailNames || []).map((name) => {
19
19
  return {
20
20
  name,
21
- width: faker.datatype.number({ min: 500, max: 2000 }),
22
- height: faker.datatype.number({ min: 500, max: 2000 }),
21
+ width: faker.range(500, 2000),
22
+ height: faker.range(500, 2000),
23
23
  };
24
24
  });
25
25
 
26
26
  return {
27
27
  type: prismicT.CustomTypeModelFieldType.Image,
28
28
  config: {
29
- label: changeCase.capitalCase(faker.company.bsNoun()),
29
+ label: changeCase.capitalCase(faker.word()),
30
30
  constraint: {
31
- width: config.withConstraint
32
- ? faker.datatype.number({ min: 500, max: 2000 })
33
- : null,
34
- height: config.withConstraint
35
- ? faker.datatype.number({ min: 500, max: 2000 })
36
- : null,
31
+ width: config.withConstraint ? faker.range(500, 2000) : null,
32
+ height: config.withConstraint ? faker.range(500, 2000) : null,
37
33
  },
38
34
  thumbnails,
39
35
  },
@@ -5,7 +5,9 @@ import { createFaker } from "../lib/createFaker";
5
5
 
6
6
  import { MockModelConfig } from "../types";
7
7
 
8
- export type MockIntegrationFieldsModelConfig = MockModelConfig;
8
+ export type MockIntegrationFieldsModelConfig = {
9
+ catalog?: string;
10
+ } & MockModelConfig;
9
11
 
10
12
  export const integrationFields = (
11
13
  config: MockIntegrationFieldsModelConfig = {},
@@ -15,8 +17,8 @@ export const integrationFields = (
15
17
  return {
16
18
  type: prismicT.CustomTypeModelFieldType.IntegrationFields,
17
19
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- catalog: changeCase.snakeCase(faker.lorem.words(4)),
20
+ label: changeCase.capitalCase(faker.word()),
21
+ catalog: config.catalog || changeCase.snakeCase(faker.words(2)),
20
22
  },
21
23
  };
22
24
  };
@@ -15,8 +15,8 @@ export const keyText = (
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Text,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
package/src/model/link.ts CHANGED
@@ -28,13 +28,13 @@ export const link = <AllowTargetBlank extends boolean = boolean>(
28
28
  return {
29
29
  type: prismicT.CustomTypeModelFieldType.Link,
30
30
  config: {
31
- label: changeCase.capitalCase(faker.company.bsNoun()),
32
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
31
+ label: changeCase.capitalCase(faker.word()),
32
+ placeholder: changeCase.sentenceCase(faker.words(3)),
33
33
  select: null,
34
34
  allowTargetBlank:
35
35
  ("allowTargetBlank" in config
36
36
  ? config.allowTargetBlank
37
- : faker.datatype.boolean()) || undefined,
37
+ : faker.boolean()) || undefined,
38
38
  },
39
39
  } as MockLinkModel<AllowTargetBlank>;
40
40
  };
@@ -15,8 +15,8 @@ export const linkToMedia = (
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Link,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  select: prismicT.CustomTypeModelLinkSelectType.Media,
21
21
  },
22
22
  };
@@ -15,8 +15,8 @@ export const number = (
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Number,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
@@ -18,8 +18,8 @@ export const richText = <WithMultipleBlocks extends boolean = boolean>(
18
18
  : prismicT.CustomTypeModelRichTextSingleField => {
19
19
  const faker = createFaker(config.seed);
20
20
 
21
- const blockTypes = faker.random
22
- .arrayElements([
21
+ const blockTypes = faker
22
+ .randomElements([
23
23
  prismicT.RichTextNodeType.heading1,
24
24
  prismicT.RichTextNodeType.heading2,
25
25
  prismicT.RichTextNodeType.heading3,
@@ -39,16 +39,16 @@ export const richText = <WithMultipleBlocks extends boolean = boolean>(
39
39
  .join(",");
40
40
 
41
41
  const blockTypeConfig =
42
- config.withMultipleBlocks ?? faker.datatype.boolean()
42
+ config.withMultipleBlocks ?? faker.boolean()
43
43
  ? { multi: blockTypes }
44
44
  : { single: blockTypes };
45
45
 
46
46
  return {
47
47
  type: prismicT.CustomTypeModelFieldType.StructuredText,
48
48
  config: {
49
- label: changeCase.capitalCase(faker.company.bsNoun()),
50
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
51
- allowTargetBlank: faker.datatype.boolean() ? true : undefined,
49
+ label: changeCase.capitalCase(faker.word()),
50
+ placeholder: changeCase.sentenceCase(faker.words(3)),
51
+ allowTargetBlank: faker.boolean() ? true : undefined,
52
52
  ...blockTypeConfig,
53
53
  },
54
54
  } as WithMultipleBlocks extends true
@@ -21,8 +21,8 @@ export const select = <Option extends string, DefaultOption extends Option>(
21
21
  return {
22
22
  type: prismicT.CustomTypeModelFieldType.Select,
23
23
  config: {
24
- label: changeCase.capitalCase(faker.company.bsNoun()),
25
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
24
+ label: changeCase.capitalCase(faker.word()),
25
+ placeholder: changeCase.sentenceCase(faker.words(3)),
26
26
  options: config.options || [],
27
27
  default_value: config.defaultValue || undefined,
28
28
  },
@@ -21,7 +21,7 @@ export const sharedSlice = <
21
21
  const faker = createFaker(config.seed);
22
22
 
23
23
  let name: string =
24
- config.name || changeCase.capitalCase(faker.company.bsNoun());
24
+ config.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));
25
25
  let id: string = config.id || changeCase.snakeCase(name);
26
26
 
27
27
  if (config.id && !config.name) {
@@ -34,7 +34,7 @@ export const sharedSlice = <
34
34
  type: prismicT.CustomTypeModelSliceType.SharedSlice,
35
35
  id,
36
36
  name,
37
- description: faker.lorem.sentence(),
37
+ description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
38
38
  variations: config.variations || ([] as Variation[]),
39
39
  };
40
40
  };
@@ -30,7 +30,7 @@ export const sharedSliceVariation = <
30
30
  const faker = createFaker(config.seed);
31
31
 
32
32
  let name: string =
33
- config.name || changeCase.capitalCase(faker.company.bsNoun());
33
+ config.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));
34
34
  let id: ID = config.id || (changeCase.snakeCase(name) as ID);
35
35
 
36
36
  if (config.id && !config.name) {
@@ -42,9 +42,9 @@ export const sharedSliceVariation = <
42
42
  return {
43
43
  id,
44
44
  name,
45
- description: faker.lorem.sentence(),
46
- docURL: faker.internet.url(),
47
- version: faker.git.shortSha(),
45
+ description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
46
+ docURL: faker.url(),
47
+ version: faker.hash(7),
48
48
  primary: config.primaryFields || ({} as PrimaryFields),
49
49
  items: config.itemsFields || ({} as ItemsFields),
50
50
  };
@@ -23,12 +23,12 @@ export const slice = <
23
23
 
24
24
  return {
25
25
  type: prismicT.CustomTypeModelSliceType.Slice,
26
- icon: changeCase.snakeCase(faker.company.bsNoun()),
27
- display: faker.datatype.boolean()
26
+ icon: changeCase.snakeCase(faker.word()),
27
+ display: faker.boolean()
28
28
  ? prismicT.CustomTypeModelSliceDisplay.Grid
29
29
  : prismicT.CustomTypeModelSliceDisplay.List,
30
- fieldset: changeCase.capitalCase(faker.lorem.words()),
31
- description: faker.lorem.sentence(),
30
+ fieldset: changeCase.capitalCase(faker.words(2)),
31
+ description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
32
32
  repeat: config.repeatFields || ({} as RepeatFields),
33
33
  "non-repeat": config.nonRepeatFields || ({} as NonRepeatFields),
34
34
  };
@@ -15,8 +15,8 @@ export const timestamp = (
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.Timestamp,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
@@ -12,8 +12,8 @@ export const title = (
12
12
  ): prismicT.CustomTypeModelTitleField => {
13
13
  const faker = createFaker(config.seed);
14
14
 
15
- const single = faker.random
16
- .arrayElements([
15
+ const single = faker
16
+ .randomElements([
17
17
  "heading1",
18
18
  "heading2",
19
19
  "heading3",
@@ -26,10 +26,10 @@ export const title = (
26
26
  return {
27
27
  type: prismicT.CustomTypeModelFieldType.StructuredText,
28
28
  config: {
29
- label: changeCase.capitalCase(faker.company.bsNoun()),
30
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
29
+ label: changeCase.capitalCase(faker.word()),
30
+ placeholder: changeCase.sentenceCase(faker.words(3)),
31
31
  single,
32
- allowTargetBlank: faker.datatype.boolean() ? true : undefined,
32
+ allowTargetBlank: faker.boolean() || undefined,
33
33
  },
34
34
  };
35
35
  };
package/src/model/uid.ts CHANGED
@@ -15,8 +15,8 @@ export const uid = (
15
15
  return {
16
16
  type: prismicT.CustomTypeModelFieldType.UID,
17
17
  config: {
18
- label: changeCase.capitalCase(faker.company.bsNoun()),
19
- placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
18
+ label: changeCase.capitalCase(faker.word()),
19
+ placeholder: changeCase.sentenceCase(faker.words(3)),
20
20
  },
21
21
  };
22
22
  };
package/src/types.ts CHANGED
@@ -10,8 +10,10 @@ export type IterableElement<TargetIterable> = TargetIterable extends Iterable<
10
10
  ? ElementType
11
11
  : never;
12
12
 
13
- export type ValueOf<ObjectType extends Record<string, unknown>> =
14
- ObjectType[string];
13
+ export type ValueOf<
14
+ ObjectType,
15
+ ValueType extends keyof ObjectType = keyof ObjectType,
16
+ > = ObjectType[ValueType];
15
17
 
16
18
  type Simplify<T> = { [KeyType in keyof T]: T[KeyType] };
17
19
  type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<
@@ -25,7 +27,7 @@ export type SetRequired<BaseType, Keys extends keyof BaseType> = Simplify<
25
27
  Required<Pick<BaseType, Keys>>
26
28
  >;
27
29
 
28
- export type Seed = string | number | number[];
30
+ export type Seed = string | number;
29
31
 
30
32
  export interface MockImageData {
31
33
  url: string;
@@ -33,14 +35,11 @@ export interface MockImageData {
33
35
  height: number;
34
36
  }
35
37
 
36
- export interface MockEmbedData {
37
- url: string;
38
- embed_url: string;
39
- html: string;
40
- thumbnail_url: string | null;
41
- thumbnail_height: number | null;
42
- thumbnail_width: number | null;
43
- }
38
+ export type MockEmbedData = prismicT.AnyOEmbed &
39
+ prismicT.OEmbedExtra & {
40
+ embed_url: string;
41
+ html: string;
42
+ };
44
43
 
45
44
  export type MockRestApiConfig = {
46
45
  seed?: Seed;
@@ -74,40 +73,46 @@ export type MockValueStateConfig<
74
73
  state?: State;
75
74
  };
76
75
 
77
- export type MockValueConfigForModel<Model extends PrismicModel> =
78
- Model extends prismicT.CustomTypeModelBooleanField
79
- ? value.MockBooleanValueConfig
80
- : Model extends prismicT.CustomTypeModelColorField
81
- ? value.MockColorValueConfig
82
- : Model extends prismicT.CustomTypeModelContentRelationshipField
83
- ? value.MockContentRelationshipValueConfig
84
- : Model extends prismicT.CustomTypeModelDateField
85
- ? value.MockDateValueConfig
86
- : Model extends prismicT.CustomTypeModelEmbedField
87
- ? value.MockEmbedValueConfig
88
- : Model extends prismicT.CustomTypeModelGeoPointField
89
- ? value.MockGeoPointValueConfig
90
- : Model extends prismicT.CustomTypeModelImageField
91
- ? value.MockImageValueConfig
92
- : Model extends prismicT.CustomTypeModelKeyTextField
93
- ? value.MockKeyTextValueConfig
94
- : Model extends prismicT.CustomTypeModelLinkField
95
- ? value.MockLinkValueConfig
96
- : Model extends prismicT.CustomTypeModelLinkToMediaField
97
- ? value.MockLinkToMediaValueConfig
98
- : Model extends prismicT.CustomTypeModelNumberField
99
- ? value.MockNumberValueConfig
100
- : Model extends prismicT.CustomTypeModelRichTextField
101
- ? value.MockRichTextValueConfig
102
- : Model extends prismicT.CustomTypeModelSelectField
103
- ? value.MockSelectValueConfig
104
- : Model extends prismicT.CustomTypeModelTimestampField
105
- ? value.MockTimestampValueConfig
106
- : Model extends prismicT.CustomTypeModelTitleField
107
- ? value.MockTitleValueConfig
108
- : Model extends prismicT.CustomTypeModelUIDField
109
- ? value.MockUIDValueConfig
110
- : never;
76
+ export type MockValueConfigForModel<
77
+ Model extends PrismicModel,
78
+ State extends prismicT.FieldState = prismicT.FieldState,
79
+ > = Model extends prismicT.CustomTypeModelBooleanField
80
+ ? value.MockBooleanValueConfig<Model>
81
+ : Model extends prismicT.CustomTypeModelColorField
82
+ ? value.MockColorValueConfig<Model, State>
83
+ : Model extends prismicT.CustomTypeModelContentRelationshipField
84
+ ? value.MockContentRelationshipValueConfig<Model, State>
85
+ : Model extends prismicT.CustomTypeModelDateField
86
+ ? value.MockDateValueConfig<Model, State>
87
+ : Model extends prismicT.CustomTypeModelEmbedField
88
+ ? value.MockEmbedValueConfig<Model, prismicT.AnyOEmbed, State>
89
+ : Model extends prismicT.CustomTypeModelGeoPointField
90
+ ? value.MockGeoPointValueConfig<Model, State>
91
+ : Model extends prismicT.CustomTypeModelImageField
92
+ ? value.MockImageValueConfig<Model, State>
93
+ : Model extends prismicT.CustomTypeModelKeyTextField
94
+ ? value.MockKeyTextValueConfig<Model, State>
95
+ : Model extends prismicT.CustomTypeModelLinkField
96
+ ? value.MockLinkValueConfig<
97
+ typeof prismicT.LinkType[keyof typeof prismicT.LinkType],
98
+ Model,
99
+ State
100
+ >
101
+ : Model extends prismicT.CustomTypeModelLinkToMediaField
102
+ ? value.MockLinkToMediaValueConfig<Model, State>
103
+ : Model extends prismicT.CustomTypeModelNumberField
104
+ ? value.MockNumberValueConfig<Model, State>
105
+ : Model extends prismicT.CustomTypeModelRichTextField
106
+ ? value.MockRichTextValueConfig
107
+ : Model extends prismicT.CustomTypeModelSelectField
108
+ ? value.MockSelectValueConfig<Model, State>
109
+ : Model extends prismicT.CustomTypeModelTimestampField
110
+ ? value.MockTimestampValueConfig<Model, State>
111
+ : Model extends prismicT.CustomTypeModelTitleField
112
+ ? value.MockTitleValueConfig<Model, State>
113
+ : Model extends prismicT.CustomTypeModelUIDField
114
+ ? value.MockUIDValueConfig<Model>
115
+ : never;
111
116
 
112
117
  type CustomTypeModelStructuredTextField =
113
118
  | prismicT.CustomTypeModelRichTextField
@@ -126,37 +131,43 @@ export type ModelValueMap<
126
131
  [P in keyof T]: ModelValue<T[P]>;
127
132
  };
128
133
 
129
- export type ModelValue<T extends PrismicModel> =
130
- T extends prismicT.CustomTypeModel
131
- ? CustomTypeModelValue<T>
132
- : T extends prismicT.CustomTypeModelUIDField
133
- ? prismicT.PrismicDocument["uid"]
134
- : T extends prismicT.CustomTypeModelFieldForGroup
135
- ? CustomTypeModelFieldForGroupValue<T>
136
- : T extends prismicT.CustomTypeModelGroupField
137
- ? CustomTypeModelGroupFieldValue<T>
138
- : T extends prismicT.CustomTypeModelSliceZoneField
139
- ? prismicT.SliceZone<
140
- ValueOf<{
141
- [P in keyof T["config"]["choices"] as P extends string
142
- ? P
143
- : never]: T["config"]["choices"][P] extends prismicT.CustomTypeModelSlice
144
- ? CustomTypeModelSliceValue<T["config"]["choices"][P], P>
145
- : T["config"]["choices"][P] extends prismicT.CustomTypeModelSharedSlice
146
- ? prismicT.SharedSlice<P>
147
- : never;
148
- }>
149
- >
150
- : T extends prismicT.CustomTypeModelSlice
151
- ? CustomTypeModelSliceValue<T>
152
- : T extends prismicT.CustomTypeModelSharedSlice
153
- ? // TODO: Allow providing a union of of Shared Slices
154
- prismicT.SharedSlice
155
- : T extends prismicT.SharedSliceModel
156
- ? SharedSliceModelValue<T>
157
- : T extends prismicT.SharedSliceModelVariation
158
- ? SharedSliceModelVariationValue<T>
159
- : never;
134
+ export type ModelValue<
135
+ T extends PrismicModel,
136
+ State extends prismicT.FieldState = prismicT.FieldState,
137
+ > = T extends prismicT.CustomTypeModel
138
+ ? CustomTypeModelValue<T>
139
+ : T extends prismicT.CustomTypeModelUIDField
140
+ ? prismicT.PrismicDocument["uid"]
141
+ : T extends prismicT.CustomTypeModelFieldForGroup
142
+ ? CustomTypeModelFieldForGroupValue<T, State>
143
+ : T extends prismicT.CustomTypeModelGroupField
144
+ ? CustomTypeModelGroupFieldValue<T, State>
145
+ : T extends prismicT.CustomTypeModelSliceZoneField
146
+ ? prismicT.SliceZone<
147
+ ValueOf<{
148
+ [P in keyof T["config"]["choices"] as P extends string
149
+ ? P
150
+ : never]: T["config"]["choices"][P] extends prismicT.CustomTypeModelSlice
151
+ ? CustomTypeModelSliceValue<
152
+ T["config"]["choices"][P],
153
+ P extends string ? P : string
154
+ >
155
+ : T["config"]["choices"][P] extends prismicT.CustomTypeModelSharedSlice
156
+ ? prismicT.SharedSlice<P extends string ? P : string>
157
+ : never;
158
+ }>,
159
+ State
160
+ >
161
+ : T extends prismicT.CustomTypeModelSlice
162
+ ? CustomTypeModelSliceValue<T>
163
+ : T extends prismicT.CustomTypeModelSharedSlice
164
+ ? // TODO: Allow providing a union of of Shared Slices
165
+ prismicT.SharedSlice
166
+ : T extends prismicT.SharedSliceModel
167
+ ? SharedSliceModelValue<T>
168
+ : T extends prismicT.SharedSliceModelVariation
169
+ ? SharedSliceModelVariationValue<T>
170
+ : never;
160
171
 
161
172
  type CustomTypeModelValue<T extends prismicT.CustomTypeModel> =
162
173
  prismicT.PrismicDocument<
@@ -171,43 +182,45 @@ type CustomTypeModelValue<T extends prismicT.CustomTypeModel> =
171
182
 
172
183
  type CustomTypeModelFieldForGroupValue<
173
184
  T extends prismicT.CustomTypeModelFieldForGroup,
185
+ State extends prismicT.FieldState = prismicT.FieldState,
174
186
  > = T extends prismicT.CustomTypeModelBooleanField
175
187
  ? prismicT.BooleanField
176
188
  : T extends prismicT.CustomTypeModelColorField
177
- ? prismicT.ColorField
189
+ ? prismicT.ColorField<State>
178
190
  : T extends prismicT.CustomTypeModelTitleField
179
- ? prismicT.TitleField
191
+ ? prismicT.TitleField<State>
180
192
  : T extends prismicT.CustomTypeModelRichTextField
181
- ? prismicT.RichTextField
193
+ ? prismicT.RichTextField<State>
182
194
  : T extends prismicT.CustomTypeModelImageField
183
- ? prismicT.ImageField
195
+ ? prismicT.ImageField<string | null, State>
184
196
  : T extends prismicT.CustomTypeModelLinkField
185
- ? prismicT.LinkField
197
+ ? prismicT.LinkField<string, string, never, State>
186
198
  : T extends prismicT.CustomTypeModelLinkToMediaField
187
- ? prismicT.LinkToMediaField
199
+ ? prismicT.LinkToMediaField<State>
188
200
  : T extends prismicT.CustomTypeModelContentRelationshipField
189
- ? prismicT.RelationField
201
+ ? prismicT.RelationField<string, string, never, State>
190
202
  : T extends prismicT.CustomTypeModelDateField
191
- ? prismicT.DateField
203
+ ? prismicT.DateField<State>
192
204
  : T extends prismicT.CustomTypeModelTimestampField
193
- ? prismicT.TimestampField
205
+ ? prismicT.TimestampField<State>
194
206
  : T extends prismicT.CustomTypeModelNumberField
195
- ? prismicT.NumberField
207
+ ? prismicT.NumberField<State>
196
208
  : T extends prismicT.CustomTypeModelKeyTextField
197
- ? prismicT.KeyTextField
209
+ ? prismicT.KeyTextField<State>
198
210
  : T extends prismicT.CustomTypeModelSelectField
199
- ? prismicT.SelectField
211
+ ? prismicT.SelectField<string, State>
200
212
  : T extends prismicT.CustomTypeModelEmbedField
201
- ? prismicT.EmbedField
213
+ ? prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra, State>
202
214
  : T extends prismicT.CustomTypeModelGeoPointField
203
- ? prismicT.GeoPointField
215
+ ? prismicT.GeoPointField<State>
204
216
  : T extends prismicT.CustomTypeModelIntegrationFieldsField
205
- ? prismicT.IntegrationFields
217
+ ? prismicT.IntegrationFields<unknown, State>
206
218
  : never;
207
219
 
208
220
  type CustomTypeModelGroupFieldValue<
209
221
  T extends prismicT.CustomTypeModelGroupField,
210
- > = prismicT.GroupField<ModelValueMap<T["config"]["fields"]>>;
222
+ State extends prismicT.FieldState = prismicT.FieldState,
223
+ > = prismicT.GroupField<ModelValueMap<T["config"]["fields"]>, State>;
211
224
 
212
225
  type CustomTypeModelSliceValue<
213
226
  T extends prismicT.CustomTypeModelSlice,
@@ -15,5 +15,5 @@ export const boolean = <
15
15
  ): prismicT.BooleanField => {
16
16
  const faker = createFaker(config.seed);
17
17
 
18
- return faker.datatype.boolean();
18
+ return faker.boolean();
19
19
  };
@@ -22,6 +22,6 @@ export const color = <
22
22
  const faker = createFaker(config.seed);
23
23
 
24
24
  return (
25
- config.state === "empty" ? null : faker.internet.color().toUpperCase()
25
+ config.state === "empty" ? null : faker.hexColor().toUpperCase()
26
26
  ) as MockColorValue<State>;
27
27
  };
@@ -76,10 +76,10 @@ export const contentRelationship = <
76
76
  {
77
77
  ...documentGen({ seed: config.seed }),
78
78
  type: model.config.customtypes
79
- ? faker.random.arrayElement(model.config.customtypes)
79
+ ? faker.randomElement(model.config.customtypes)
80
80
  : generateCustomTypeId({ seed: config.seed }),
81
81
  tags: model.config.tags
82
- ? faker.random.arrayElements(model.config.tags)
82
+ ? faker.randomElements(model.config.tags)
83
83
  : generateTags({ seed: config.seed }),
84
84
  } as prismicT.PrismicDocument<
85
85
  never,
@@ -87,7 +87,7 @@ export const contentRelationship = <
87
87
  >,
88
88
  ];
89
89
 
90
- const document = faker.random.arrayElement(linkableDocuments);
90
+ const document = faker.randomElement(linkableDocuments);
91
91
 
92
92
  if (!document) {
93
93
  throw new Error("A linkable document could not be found.");
@@ -63,11 +63,11 @@ export const customType = <
63
63
 
64
64
  return {
65
65
  type: model.id,
66
- id: faker.git.shortSha(),
67
- uid: hasUID ? changeCase.snakeCase(faker.lorem.words(2)) : null,
68
- url: withURL ? faker.internet.url() : null,
69
- href: faker.internet.url(),
70
- lang: faker.lorem.word(),
66
+ id: faker.hash(7),
67
+ uid: hasUID ? changeCase.snakeCase(faker.words(faker.range(1, 3))) : null,
68
+ url: withURL ? faker.url() : null,
69
+ href: faker.url(),
70
+ lang: faker.word(),
71
71
  tags: generateTags({ seed: config.seed }),
72
72
  slugs: [] as prismicT.PrismicDocument["slugs"],
73
73
  linked_documents: [] as prismicT.PrismicDocument["linked_documents"],