@prismicio/mock 0.0.6 → 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 (66) hide show
  1. package/README.md +4 -1
  2. package/dist/api/index.cjs +39 -27
  3. package/dist/api/index.cjs.map +1 -0
  4. package/dist/api/index.d.ts +2 -1
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/{index.mjs → index.js} +104 -58
  7. package/dist/api/index.js.map +1 -0
  8. package/dist/index.cjs +293 -393
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.ts +132 -230
  11. package/dist/{index.mjs → index.js} +286 -384
  12. package/dist/index.js.map +1 -0
  13. package/dist/model/index.cjs +148 -205
  14. package/dist/model/index.cjs.map +1 -0
  15. package/dist/model/index.d.ts +68 -104
  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 +238 -495
  20. package/dist/value/index.cjs.map +1 -0
  21. package/dist/value/index.d.ts +54 -116
  22. package/dist/value/index.d.ts.map +1 -0
  23. package/dist/value/{index.mjs → index.js} +407 -610
  24. package/dist/value/index.js.map +1 -0
  25. package/package.json +21 -21
  26. package/src/lib/buildContentRelationshipField.ts +6 -1
  27. package/src/lib/buildEmbedField.ts +1 -1
  28. package/src/lib/buildImageFieldImage.ts +48 -0
  29. package/src/model/buildMockGroupFieldMap.ts +65 -0
  30. package/src/model/contentRelationship.ts +14 -21
  31. package/src/model/customType.ts +49 -48
  32. package/src/model/group.ts +8 -15
  33. package/src/model/image.ts +13 -13
  34. package/src/model/index.ts +2 -0
  35. package/src/model/select.ts +11 -16
  36. package/src/model/sharedSlice.ts +14 -41
  37. package/src/model/sharedSliceVariation.ts +33 -21
  38. package/src/model/slice.ts +15 -19
  39. package/src/model/sliceZone.ts +23 -59
  40. package/src/types.ts +41 -12
  41. package/src/value/color.ts +16 -6
  42. package/src/value/contentRelationship.ts +51 -36
  43. package/src/value/date.ts +25 -9
  44. package/src/value/embed.ts +18 -6
  45. package/src/value/geoPoint.ts +21 -9
  46. package/src/value/group.ts +7 -27
  47. package/src/value/image.ts +22 -9
  48. package/src/value/integrationFields.ts +26 -14
  49. package/src/value/keyText.ts +18 -6
  50. package/src/value/link.ts +33 -34
  51. package/src/value/linkToMedia.ts +15 -20
  52. package/src/value/number.ts +16 -6
  53. package/src/value/richText/heading.ts +7 -7
  54. package/src/value/richText/image.ts +6 -2
  55. package/src/value/richText/index.ts +1 -1
  56. package/src/value/select.ts +23 -8
  57. package/src/value/sharedSlice.ts +2 -2
  58. package/src/value/sharedSliceVariation.ts +6 -34
  59. package/src/value/slice.ts +5 -30
  60. package/src/value/sliceZone.ts +44 -60
  61. package/src/value/timestamp.ts +19 -6
  62. package/src/value/title.ts +1 -1
  63. package/src/value/uid.ts +1 -1
  64. package/dist/model/index.mjs +0 -465
  65. package/src/lib/buildImageField.ts +0 -34
  66. package/src/lib/buildMockGroupFieldMap.ts +0 -84
@@ -2,31 +2,30 @@ import * as prismicT from "@prismicio/types";
2
2
 
3
3
  import { createFaker } from "../lib/createFaker";
4
4
 
5
- import { MockValueConfig } from "../types";
5
+ import { MockValueStateConfig, MockValueConfig } from "../types";
6
6
 
7
7
  export type MockLinkToMediaValueConfig<
8
- IsFilled extends boolean = true,
9
8
  Model extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,
10
- > = {
11
- isFilled?: IsFilled;
12
- } & MockValueConfig<Model>;
9
+ State extends prismicT.FieldState = prismicT.FieldState,
10
+ > = MockValueConfig<Model> & MockValueStateConfig<State>;
13
11
 
14
- type MockLinkToMediaValue<IsFilled extends boolean = true> =
15
- IsFilled extends true
16
- ? prismicT.FilledLinkToMediaField
17
- : prismicT.EmptyLinkField<prismicT.LinkType.Media>;
12
+ type MockLinkToMediaValue<
13
+ State extends prismicT.FieldState = prismicT.FieldState,
14
+ > = prismicT.LinkToMediaField<State>;
18
15
 
19
16
  export const linkToMedia = <
20
- IsFilled extends boolean = true,
21
17
  Model extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,
18
+ State extends prismicT.FieldState = "filled",
22
19
  >(
23
- config: MockLinkToMediaValueConfig<IsFilled, Model> = {},
24
- ): MockLinkToMediaValue<IsFilled> => {
20
+ config: MockLinkToMediaValueConfig<Model, State> = {},
21
+ ): MockLinkToMediaValue<State> => {
25
22
  const faker = createFaker(config.seed);
26
23
 
27
- const isFilled = config.isFilled ?? true;
28
-
29
- if (isFilled) {
24
+ if (config.state === "empty") {
25
+ return {
26
+ link_type: prismicT.LinkType.Media,
27
+ } as MockLinkToMediaValue<State>;
28
+ } else {
30
29
  return {
31
30
  link_type: prismicT.LinkType.Media,
32
31
  name: faker.system.commonFileName(),
@@ -35,10 +34,6 @@ export const linkToMedia = <
35
34
  size: faker.datatype.number().toString(),
36
35
  height: faker.datatype.number().toString(),
37
36
  width: faker.datatype.number().toString(),
38
- } as prismicT.FilledLinkToMediaField;
39
- } else {
40
- return {
41
- link_type: prismicT.LinkType.Media,
42
- } as MockLinkToMediaValue<IsFilled>;
37
+ } as MockLinkToMediaValue<State>;
43
38
  }
44
39
  };
@@ -2,16 +2,26 @@ import * as prismicT from "@prismicio/types";
2
2
 
3
3
  import { createFaker } from "../lib/createFaker";
4
4
 
5
- import { MockValueConfig } from "../types";
5
+ import { MockValueStateConfig, MockValueConfig } from "../types";
6
6
 
7
7
  export type MockNumberValueConfig<
8
8
  Model extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,
9
- > = MockValueConfig<Model>;
9
+ State extends prismicT.FieldState = prismicT.FieldState,
10
+ > = MockValueConfig<Model> & MockValueStateConfig<State>;
10
11
 
11
- export const number = (
12
- config: MockNumberValueConfig = {},
13
- ): prismicT.NumberField => {
12
+ export type MockNumberValue<
13
+ State extends prismicT.FieldState = prismicT.FieldState,
14
+ > = prismicT.NumberField<State>;
15
+
16
+ export const number = <
17
+ Model extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,
18
+ State extends prismicT.FieldState = "filled",
19
+ >(
20
+ config: MockNumberValueConfig<Model, State> = {},
21
+ ): MockNumberValue<State> => {
14
22
  const faker = createFaker(config.seed);
15
23
 
16
- return faker.datatype.number();
24
+ return (
25
+ config.state === "empty" ? null : faker.datatype.number()
26
+ ) as MockNumberValue<State>;
17
27
  };
@@ -8,12 +8,12 @@ import { MockRichTextValueConfig } from "../../types";
8
8
  import * as modelGen from "../../model";
9
9
 
10
10
  type RichTextNodeTitleType =
11
- | prismicT.RichTextNodeType.heading1
12
- | prismicT.RichTextNodeType.heading2
13
- | prismicT.RichTextNodeType.heading3
14
- | prismicT.RichTextNodeType.heading4
15
- | prismicT.RichTextNodeType.heading5
16
- | prismicT.RichTextNodeType.heading6;
11
+ | typeof prismicT.RichTextNodeType.heading1
12
+ | typeof prismicT.RichTextNodeType.heading2
13
+ | typeof prismicT.RichTextNodeType.heading3
14
+ | typeof prismicT.RichTextNodeType.heading4
15
+ | typeof prismicT.RichTextNodeType.heading5
16
+ | typeof prismicT.RichTextNodeType.heading6;
17
17
 
18
18
  type RTHeadingNode =
19
19
  | prismicT.RTHeading1Node
@@ -61,7 +61,7 @@ export const heading = (
61
61
  prismicT.RichTextNodeType.heading4,
62
62
  prismicT.RichTextNodeType.heading5,
63
63
  prismicT.RichTextNodeType.heading6,
64
- ].includes(type as prismicT.RichTextNodeType),
64
+ ].includes(type as RichTextNodeTitleType),
65
65
  ) as RichTextNodeTitleType[];
66
66
  const type = faker.random.arrayElement(types);
67
67
 
@@ -1,6 +1,6 @@
1
1
  import * as prismicT from "@prismicio/types";
2
2
 
3
- import { buildImageField } from "../../lib/buildImageField";
3
+ import { buildImageFieldImage } from "../../lib/buildImageFieldImage";
4
4
  import { getMockImageData } from "../../lib/getMockImageData";
5
5
 
6
6
  import { MockRichTextValueConfig } from "../../types";
@@ -11,7 +11,11 @@ export const image = (
11
11
  config: MockRichTextImageValueConfig = {},
12
12
  ): prismicT.RTImageNode | undefined => {
13
13
  const imageData = getMockImageData({ seed: config.seed });
14
- const imageField = buildImageField({ seed: config.seed, imageData });
14
+ const imageField = buildImageFieldImage({
15
+ seed: config.seed,
16
+ imageData,
17
+ state: false,
18
+ });
15
19
 
16
20
  return {
17
21
  type: prismicT.RichTextNodeType.image,
@@ -92,7 +92,7 @@ export const richText = (
92
92
  })
93
93
  .flat()
94
94
  .filter((block): block is prismicT.RTNode => block !== undefined)
95
- .slice(0, blockCount);
95
+ .slice(0, blockCount) as prismicT.RichTextField;
96
96
  } else {
97
97
  return [];
98
98
  }
@@ -2,23 +2,38 @@ import * as prismicT from "@prismicio/types";
2
2
 
3
3
  import { createFaker } from "../lib/createFaker";
4
4
 
5
- import { MockValueConfig } from "../types";
5
+ import { MockValueStateConfig, MockValueConfig } from "../types";
6
6
 
7
7
  import * as modelGen from "../model";
8
8
 
9
9
  export type MockSelectValueConfig<
10
10
  Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
11
- > = MockValueConfig<Model>;
11
+ State extends prismicT.FieldState = prismicT.FieldState,
12
+ > = MockValueConfig<Model> & MockValueStateConfig<State>;
12
13
 
13
- export const select = (
14
- config: MockSelectValueConfig = {},
15
- ): prismicT.SelectField => {
14
+ export type MockSelectValue<
15
+ Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
16
+ State extends prismicT.FieldState = prismicT.FieldState,
17
+ > = prismicT.SelectField<Model["config"]["options"][number], State>;
18
+
19
+ export const select = <
20
+ Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
21
+ State extends prismicT.FieldState = "filled",
22
+ >(
23
+ config: MockSelectValueConfig<Model, State> = {},
24
+ ): MockSelectValue<Model, State> => {
16
25
  const faker = createFaker(config.seed);
17
26
 
18
27
  const model = config.model || modelGen.select({ seed: config.seed });
19
28
  const defaultValue = model.config.default_value;
20
29
 
21
- return typeof defaultValue === "string" && faker.datatype.boolean()
22
- ? defaultValue
23
- : faker.random.arrayElement(model.config.options);
30
+ if (config.state === "empty") {
31
+ return null as MockSelectValue<Model, State>;
32
+ } else {
33
+ return (
34
+ typeof defaultValue === "string" && faker.datatype.boolean()
35
+ ? defaultValue
36
+ : faker.random.arrayElement(model.config.options)
37
+ ) as MockSelectValue<Model, State>;
38
+ }
24
39
  };
@@ -14,7 +14,7 @@ export type MockSharedSliceValueConfig<
14
14
  Model extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,
15
15
  > = Pick<
16
16
  MockSharedSliceVariationValueConfig,
17
- "pattern" | "primaryFieldConfigs" | "itemsFieldConfigs"
17
+ "itemsCount" | "primaryFieldConfigs" | "itemsFieldConfigs"
18
18
  > &
19
19
  MockValueConfig<Model>;
20
20
 
@@ -31,7 +31,7 @@ export const sharedSlice = <
31
31
  return sharedSliceVariation({
32
32
  seed: config.seed,
33
33
  model: variationModel,
34
- pattern: config.pattern,
34
+ itemsCount: config.itemsCount,
35
35
  type: model.id,
36
36
  primaryFieldConfigs: config.primaryFieldConfigs,
37
37
  itemsFieldConfigs: config.itemsFieldConfigs,
@@ -1,5 +1,4 @@
1
1
  import * as prismicT from "@prismicio/types";
2
- import * as changeCase from "change-case";
3
2
 
4
3
  import { MockValueConfig, ModelValue } from "../types";
5
4
 
@@ -12,31 +11,12 @@ import {
12
11
 
13
12
  import * as modelGen from "../model";
14
13
 
15
- const patterns = {
16
- none: {
17
- minItems: 0,
18
- maxItems: 0,
19
- },
20
- short: {
21
- minItems: 1,
22
- maxItems: 3,
23
- },
24
- medium: {
25
- minItems: 3,
26
- maxItems: 6,
27
- },
28
- long: {
29
- minItems: 6,
30
- maxItems: 12,
31
- },
32
- } as const;
33
-
34
14
  export type MockSharedSliceVariationValueConfig<
35
15
  Model extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,
36
16
  > = {
37
17
  type?: string;
38
18
  label?: string;
39
- pattern?: keyof typeof patterns;
19
+ itemsCount?: number;
40
20
  primaryFieldConfigs?: ValueForModelMapConfigs;
41
21
  itemsFieldConfigs?: ValueForModelMapConfigs;
42
22
  } & MockValueConfig<Model>;
@@ -51,28 +31,20 @@ export const sharedSliceVariation = <
51
31
  const model =
52
32
  config.model || modelGen.sharedSliceVariation({ seed: config.seed });
53
33
 
54
- const patternKey =
55
- config.pattern ||
56
- faker.random.arrayElement(
57
- Object.keys(patterns) as (keyof typeof patterns)[],
58
- );
59
- const pattern = patterns[patternKey];
60
-
61
34
  const sliceType = config.type ?? generateFieldId({ seed: config.seed });
62
- const sliceLabel =
63
- config.label ?? changeCase.capitalCase(faker.company.bsNoun());
64
35
 
65
36
  const itemsCount =
66
37
  Object.keys(model.items).length > 0
67
- ? faker.datatype.number({
68
- min: pattern.minItems,
69
- max: pattern.maxItems,
38
+ ? config.itemsCount ??
39
+ faker.datatype.number({
40
+ min: 1,
41
+ max: 6,
70
42
  })
71
43
  : 0;
72
44
 
73
45
  return {
74
46
  slice_type: sliceType,
75
- slice_label: sliceLabel,
47
+ slice_label: null,
76
48
  variation: model.id,
77
49
  version: faker.git.shortSha(),
78
50
  primary: valueForModelMap({
@@ -12,31 +12,12 @@ import {
12
12
 
13
13
  import * as modelGen from "../model";
14
14
 
15
- const patterns = {
16
- none: {
17
- minItems: 0,
18
- maxItems: 0,
19
- },
20
- short: {
21
- minItems: 1,
22
- maxItems: 3,
23
- },
24
- medium: {
25
- minItems: 3,
26
- maxItems: 6,
27
- },
28
- long: {
29
- minItems: 6,
30
- maxItems: 12,
31
- },
32
- } as const;
33
-
34
15
  export type MockSliceValueConfig<
35
16
  Model extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,
36
17
  > = {
37
18
  type?: string;
38
19
  label?: string | null;
39
- pattern?: keyof typeof patterns;
20
+ itemsCount?: number;
40
21
  primaryFieldConfigs?: ValueForModelMapConfigs;
41
22
  itemsFieldConfigs?: ValueForModelMapConfigs;
42
23
  } & MockValueConfig<Model>;
@@ -50,13 +31,6 @@ export const slice = <
50
31
 
51
32
  const model = config.model || modelGen.slice({ seed: config.seed });
52
33
 
53
- const patternKey =
54
- config.pattern ||
55
- faker.random.arrayElement(
56
- Object.keys(patterns) as (keyof typeof patterns)[],
57
- );
58
- const pattern = patterns[patternKey];
59
-
60
34
  const sliceType = config.type ?? generateFieldId({ seed: config.seed });
61
35
  const sliceLabel =
62
36
  config.label !== undefined
@@ -65,9 +39,10 @@ export const slice = <
65
39
 
66
40
  const itemsCount =
67
41
  Object.keys(model.repeat).length > 0
68
- ? faker.datatype.number({
69
- min: pattern.minItems,
70
- max: pattern.maxItems,
42
+ ? config.itemsCount ??
43
+ faker.datatype.number({
44
+ min: 1,
45
+ max: 6,
71
46
  })
72
47
  : 0;
73
48
 
@@ -10,26 +10,11 @@ import * as modelGen from "../model";
10
10
  import { slice } from "./slice";
11
11
  import { sharedSlice } from "./sharedSlice";
12
12
 
13
- const patterns = {
14
- short: {
15
- minItems: 1,
16
- maxItems: 3,
17
- },
18
- medium: {
19
- minItems: 3,
20
- maxItems: 6,
21
- },
22
- long: {
23
- minItems: 6,
24
- maxItems: 12,
25
- },
26
- } as const;
27
-
28
13
  export type MockSliceZoneValueConfig<
29
14
  Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
30
15
  > = {
31
16
  sharedSliceModels?: prismicT.SharedSliceModel[];
32
- pattern?: keyof typeof patterns;
17
+ itemsCount?: number;
33
18
  primaryFieldConfigs?: ValueForModelMapConfigs;
34
19
  itemsFieldConfigs?: ValueForModelMapConfigs;
35
20
  } & MockValueConfig<Model>;
@@ -43,57 +28,56 @@ export const sliceZone = <
43
28
 
44
29
  const model = config.model || modelGen.sliceZone({ seed: config.seed });
45
30
 
46
- const patternKey =
47
- config.pattern ||
48
- faker.random.arrayElement(
49
- Object.keys(patterns) as (keyof typeof patterns)[],
50
- );
51
- const pattern = patterns[patternKey];
52
-
53
- const itemsCount = faker.datatype.number({
54
- min: pattern.minItems,
55
- max: pattern.maxItems,
56
- });
57
-
58
- return Array(itemsCount)
59
- .fill(undefined)
60
- .map(() => {
61
- const choices = Object.entries(model.config.choices);
62
- const [choiceType, choiceModel] = faker.random.arrayElement(choices);
63
-
64
- const choiceLabels = model.config.labels[choiceType] || [];
65
- const choiceLabel = faker.random.arrayElement(choiceLabels);
31
+ if (Object.keys(model.config.choices).length > 0) {
32
+ const itemsCount =
33
+ config.itemsCount ??
34
+ faker.datatype.number({
35
+ min: 1,
36
+ max: 6,
37
+ });
66
38
 
67
- switch (choiceModel.type) {
68
- case prismicT.CustomTypeModelSliceType.Slice: {
69
- return slice({
70
- seed: config.seed,
71
- model: choiceModel,
72
- type: choiceType,
73
- label: choiceLabel ? choiceLabel.name : null,
74
- primaryFieldConfigs: config.primaryFieldConfigs,
75
- itemsFieldConfigs: config.itemsFieldConfigs,
76
- });
77
- }
39
+ return Array(itemsCount)
40
+ .fill(undefined)
41
+ .map(() => {
42
+ const choices = Object.entries(model.config.choices);
43
+ const [choiceType, choiceModel] = faker.random.arrayElement(choices);
78
44
 
79
- case prismicT.CustomTypeModelSliceType.SharedSlice: {
80
- const sharedSliceModel = config.sharedSliceModels?.find(
81
- (sharedSliceModel) => sharedSliceModel.id === choiceType,
82
- );
45
+ const choiceLabels = model.config.labels[choiceType] || [];
46
+ const choiceLabel = faker.random.arrayElement(choiceLabels);
83
47
 
84
- if (sharedSliceModel) {
85
- return sharedSlice({
48
+ switch (choiceModel.type) {
49
+ case prismicT.CustomTypeModelSliceType.Slice: {
50
+ return slice({
86
51
  seed: config.seed,
87
- model: sharedSliceModel,
52
+ model: choiceModel,
53
+ type: choiceType,
54
+ label: choiceLabel ? choiceLabel.name : null,
88
55
  primaryFieldConfigs: config.primaryFieldConfigs,
89
56
  itemsFieldConfigs: config.itemsFieldConfigs,
90
57
  });
91
58
  }
59
+
60
+ case prismicT.CustomTypeModelSliceType.SharedSlice: {
61
+ const sharedSliceModel = config.sharedSliceModels?.find(
62
+ (sharedSliceModel) => sharedSliceModel.id === choiceType,
63
+ );
64
+
65
+ if (sharedSliceModel) {
66
+ return sharedSlice({
67
+ seed: config.seed,
68
+ model: sharedSliceModel,
69
+ primaryFieldConfigs: config.primaryFieldConfigs,
70
+ itemsFieldConfigs: config.itemsFieldConfigs,
71
+ });
72
+ }
73
+ }
92
74
  }
93
- }
94
- })
95
- .filter(
96
- (slice): slice is prismicT.Slice | prismicT.SharedSlice =>
97
- slice !== undefined,
98
- ) as ModelValue<Model>;
75
+ })
76
+ .filter(
77
+ (slice): slice is prismicT.Slice | prismicT.SharedSlice =>
78
+ slice !== undefined,
79
+ ) as ModelValue<Model>;
80
+ } else {
81
+ return [] as unknown as ModelValue<Model>;
82
+ }
99
83
  };
@@ -2,18 +2,27 @@ import * as prismicT from "@prismicio/types";
2
2
 
3
3
  import { createFaker } from "../lib/createFaker";
4
4
 
5
- import { MockValueConfig } from "../types";
5
+ import { MockValueStateConfig, MockValueConfig } from "../types";
6
6
 
7
7
  export type MockTimestampValueConfig<
8
8
  Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
9
+ State extends prismicT.FieldState = prismicT.FieldState,
9
10
  > = {
10
11
  after?: Date;
11
12
  before?: Date;
12
- } & MockValueConfig<Model>;
13
+ } & MockValueConfig<Model> &
14
+ MockValueStateConfig<State>;
13
15
 
14
- export const timestamp = (
15
- config: MockTimestampValueConfig = {},
16
- ): prismicT.TimestampField => {
16
+ export type MockTimestampValue<
17
+ State extends prismicT.FieldState = prismicT.FieldState,
18
+ > = prismicT.TimestampField<State>;
19
+
20
+ export const timestamp = <
21
+ Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
22
+ State extends prismicT.FieldState = "filled",
23
+ >(
24
+ config: MockTimestampValueConfig<Model, State> = {},
25
+ ): MockTimestampValue<State> => {
17
26
  const faker = createFaker(config.seed);
18
27
 
19
28
  // Faker seems to have problems accepting parameters for `faker.date.between`
@@ -26,5 +35,9 @@ export const timestamp = (
26
35
  config.before ||
27
36
  faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
28
37
 
29
- return faker.date.between(after, before).toISOString();
38
+ return (
39
+ config.state === "empty"
40
+ ? null
41
+ : faker.date.between(after, before).toISOString()
42
+ ) as MockTimestampValue<State>;
30
43
  };
@@ -20,5 +20,5 @@ export const title = (
20
20
  model: config.model,
21
21
  pattern: config.pattern,
22
22
  })!,
23
- ];
23
+ ] as prismicT.TitleField;
24
24
  };
package/src/value/uid.ts CHANGED
@@ -11,7 +11,7 @@ export type MockUIDValueConfig<
11
11
 
12
12
  export const uid = (
13
13
  config: MockUIDValueConfig = {},
14
- ): prismicT.PrismicDocument["uid"] => {
14
+ ): NonNullable<prismicT.PrismicDocument["uid"]> => {
15
15
  const faker = createFaker(config.seed);
16
16
 
17
17
  return changeCase.snakeCase(faker.lorem.words(2));