@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
@@ -25,19 +25,32 @@ export const timestamp = <
25
25
  ): MockTimestampValue<State> => {
26
26
  const faker = createFaker(config.seed);
27
27
 
28
- // Faker seems to have problems accepting parameters for `faker.date.between`
29
- // if the parameters are too precise. We can get around this by only using
30
- // generated dates, not timestamps.
31
- const after =
32
- config.after ||
33
- faker.date.past(20, new Date("2021-03-07")).toISOString().split("T")[0];
34
- const before =
35
- config.before ||
36
- faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
37
-
38
- return (
39
- config.state === "empty"
40
- ? null
41
- : faker.date.between(after, before).toISOString()
42
- ) as MockTimestampValue<State>;
28
+ if (config.state === "empty") {
29
+ return null as MockTimestampValue<State>;
30
+ } else {
31
+ let date: Date;
32
+
33
+ // Working with Date objects produces non-deterministic values;
34
+ // machines can return different values due to differing
35
+ // timezones and other unknown factors. To get around this, we
36
+ // can can remove time from the given values and only use their dates.
37
+ const after = config.after
38
+ ? new Date(config.after.toISOString().split("T")[0])
39
+ : undefined;
40
+ const before = config.before
41
+ ? new Date(config.before.toISOString().split("T")[0])
42
+ : undefined;
43
+
44
+ if (after && before) {
45
+ date = faker.dateBetween(after, before);
46
+ } else if (after) {
47
+ date = faker.dateAfter(after);
48
+ } else if (before) {
49
+ date = faker.dateBefore(before);
50
+ } else {
51
+ date = faker.date();
52
+ }
53
+
54
+ return date.toISOString() as MockTimestampValue<State>;
55
+ }
43
56
  };
@@ -1,24 +1,37 @@
1
1
  import * as prismicT from "@prismicio/types";
2
2
 
3
- import { MockValueConfig } from "../types";
3
+ import { MockValueConfig, MockValueStateConfig } from "../types";
4
4
 
5
5
  import { heading, MockRichTextHeadingValueConfig } from "./richText/heading";
6
6
 
7
7
  export type MockTitleValueConfig<
8
8
  Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
9
+ State extends prismicT.FieldState = prismicT.FieldState,
9
10
  > = {
10
11
  pattern?: MockRichTextHeadingValueConfig["pattern"];
11
- } & MockValueConfig<Model>;
12
+ } & MockValueConfig<Model> &
13
+ MockValueStateConfig<State>;
12
14
 
13
- export const title = (
14
- config: MockTitleValueConfig = {},
15
- ): prismicT.TitleField => {
16
- return [
17
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
18
- heading({
19
- seed: config.seed,
20
- model: config.model,
21
- pattern: config.pattern,
22
- })!,
23
- ] as prismicT.TitleField;
15
+ export type MockTitleValue<
16
+ State extends prismicT.FieldState = prismicT.FieldState,
17
+ > = prismicT.TitleField<State>;
18
+
19
+ export const title = <
20
+ Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
21
+ State extends prismicT.FieldState = prismicT.FieldState,
22
+ >(
23
+ config: MockTitleValueConfig<Model, State> = {},
24
+ ): MockTitleValue<State> => {
25
+ if (config.state === "empty") {
26
+ return [] as MockTitleValue<State>;
27
+ } else {
28
+ return [
29
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
30
+ heading({
31
+ seed: config.seed,
32
+ model: config.model,
33
+ pattern: config.pattern,
34
+ })!,
35
+ ] as MockTitleValue<State>;
36
+ }
24
37
  };
package/src/value/uid.ts CHANGED
@@ -14,5 +14,5 @@ export const uid = (
14
14
  ): NonNullable<prismicT.PrismicDocument["uid"]> => {
15
15
  const faker = createFaker(config.seed);
16
16
 
17
- return changeCase.snakeCase(faker.lorem.words(2));
17
+ return changeCase.snakeCase(faker.words(faker.range(1, 3)));
18
18
  };