@prismicio/mock 0.0.8 → 0.0.9

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 (84) 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 +311 -213
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +9 -5
  9. package/dist/index.js +310 -211
  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 +1 -1
  14. package/dist/model/index.js +168 -74
  15. package/dist/model/index.js.map +1 -1
  16. package/dist/value/index.cjs +280 -182
  17. package/dist/value/index.cjs.map +1 -1
  18. package/dist/value/index.d.ts +8 -4
  19. package/dist/value/index.js +280 -182
  20. package/dist/value/index.js.map +1 -1
  21. package/package.json +19 -16
  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 +2 -2
  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 +7 -10
  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 +1 -6
  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 +4 -10
  83. package/src/value/timestamp.ts +28 -15
  84. package/src/value/uid.ts +1 -1
@@ -70,22 +70,17 @@ export const richText = (
70
70
  if (types.length > 0) {
71
71
  const patternKey =
72
72
  config.pattern ||
73
- faker.random.arrayElement(
74
- Object.keys(patterns) as (keyof typeof patterns)[],
75
- );
73
+ faker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);
76
74
  const pattern = patterns[patternKey];
77
75
 
78
76
  const blockCount = supportsMultipleBlocks
79
- ? faker.datatype.number({
80
- min: pattern.blockCountMin,
81
- max: pattern.blockCountMax,
82
- })
77
+ ? faker.range(pattern.blockCountMin, pattern.blockCountMax)
83
78
  : 1;
84
79
 
85
80
  return Array(blockCount)
86
81
  .fill(undefined)
87
82
  .map(() => {
88
- const type = faker.random.arrayElement(types);
83
+ const type = faker.randomElement(types);
89
84
  const generator = generators[type];
90
85
 
91
86
  return generator({ seed: config.seed, model });
@@ -1,4 +1,5 @@
1
1
  import * as prismicT from "@prismicio/types";
2
+ import * as changeCase from "change-case";
2
3
 
3
4
  import { createFaker } from "../../lib/createFaker";
4
5
 
@@ -30,22 +31,17 @@ export const list = (
30
31
 
31
32
  const patternKey =
32
33
  config.pattern ||
33
- faker.random.arrayElement(
34
- Object.keys(patterns) as (keyof typeof patterns)[],
35
- );
34
+ faker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);
36
35
  const pattern = patterns[patternKey];
37
36
 
38
- const itemsCount = faker.datatype.number({
39
- min: pattern.minItems,
40
- max: pattern.maxItems,
41
- });
37
+ const itemsCount = faker.range(pattern.minItems, pattern.maxItems);
42
38
 
43
39
  return Array(itemsCount)
44
40
  .fill(undefined)
45
41
  .map(() => {
46
42
  return {
47
43
  type: prismicT.RichTextNodeType.listItem,
48
- text: faker.lorem.sentence(),
44
+ text: changeCase.sentenceCase(faker.words(faker.range(5, 15))),
49
45
  spans: [],
50
46
  };
51
47
  });
@@ -1,4 +1,5 @@
1
1
  import * as prismicT from "@prismicio/types";
2
+ import * as changeCase from "change-case";
2
3
 
3
4
  import { createFaker } from "../../lib/createFaker";
4
5
 
@@ -30,22 +31,17 @@ export const oList = (
30
31
 
31
32
  const patternKey =
32
33
  config.pattern ||
33
- faker.random.arrayElement(
34
- Object.keys(patterns) as (keyof typeof patterns)[],
35
- );
34
+ faker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);
36
35
  const pattern = patterns[patternKey];
37
36
 
38
- const itemsCount = faker.datatype.number({
39
- min: pattern.minItems,
40
- max: pattern.maxItems,
41
- });
37
+ const itemsCount = faker.range(pattern.minItems, pattern.maxItems);
42
38
 
43
39
  return Array(itemsCount)
44
40
  .fill(undefined)
45
41
  .map(() => {
46
42
  return {
47
43
  type: prismicT.RichTextNodeType.oListItem,
48
- text: faker.lorem.sentence(),
44
+ text: changeCase.sentenceCase(faker.words(faker.range(5, 15))),
49
45
  spans: [],
50
46
  };
51
47
  });
@@ -1,4 +1,5 @@
1
1
  import * as prismicT from "@prismicio/types";
2
+ import * as changeCase from "change-case";
2
3
 
3
4
  import { createFaker } from "../../lib/createFaker";
4
5
 
@@ -27,14 +28,17 @@ export const paragraph = (
27
28
 
28
29
  const patternKey =
29
30
  config.pattern ||
30
- faker.random.arrayElement(
31
- Object.keys(patterns) as (keyof typeof patterns)[],
32
- );
31
+ faker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);
33
32
  const pattern = patterns[patternKey];
34
33
 
34
+ const text = Array.from(
35
+ { length: pattern.sentenceCount },
36
+ () => changeCase.sentenceCase(faker.words(faker.range(5, 15))) + ".",
37
+ ).join(" ");
38
+
35
39
  return {
36
40
  type: prismicT.RichTextNodeType.paragraph,
37
- text: faker.lorem.paragraph(pattern.sentenceCount),
41
+ text,
38
42
  spans: [],
39
43
  };
40
44
  };
@@ -1,4 +1,5 @@
1
1
  import * as prismicT from "@prismicio/types";
2
+ import * as changeCase from "change-case";
2
3
 
3
4
  import { createFaker } from "../../lib/createFaker";
4
5
 
@@ -27,15 +28,18 @@ export const preformatted = (
27
28
 
28
29
  const patternKey =
29
30
  config.pattern ||
30
- faker.random.arrayElement(
31
- Object.keys(patterns) as (keyof typeof patterns)[],
32
- );
31
+ faker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);
33
32
  const pattern = patterns[patternKey];
34
33
 
34
+ // TODO: Use code, not lorem ipsum.
35
+ const text = Array.from(
36
+ { length: pattern.sentenceCount },
37
+ () => changeCase.sentenceCase(faker.words(faker.range(5, 15))) + ".",
38
+ ).join(" ");
39
+
35
40
  return {
36
41
  type: prismicT.RichTextNodeType.preformatted,
37
- // TODO: Use code, not lorem ipsum.
38
- text: faker.lorem.paragraph(pattern.sentenceCount),
42
+ text,
39
43
  spans: [],
40
44
  };
41
45
  };
@@ -31,9 +31,9 @@ export const select = <
31
31
  return null as MockSelectValue<Model, State>;
32
32
  } else {
33
33
  return (
34
- typeof defaultValue === "string" && faker.datatype.boolean()
34
+ typeof defaultValue === "string" && faker.boolean()
35
35
  ? defaultValue
36
- : faker.random.arrayElement(model.config.options)
36
+ : faker.randomElement(model.config.options)
37
37
  ) as MockSelectValue<Model, State>;
38
38
  }
39
39
  };
@@ -26,7 +26,7 @@ export const sharedSlice = <
26
26
  const faker = createFaker(config.seed);
27
27
 
28
28
  const model = config.model || modelGen.sharedSlice({ seed: config.seed });
29
- const variationModel = faker.random.arrayElement(model.variations);
29
+ const variationModel = faker.randomElement(model.variations);
30
30
 
31
31
  return sharedSliceVariation({
32
32
  seed: config.seed,
@@ -35,18 +35,14 @@ export const sharedSliceVariation = <
35
35
 
36
36
  const itemsCount =
37
37
  Object.keys(model.items).length > 0
38
- ? config.itemsCount ??
39
- faker.datatype.number({
40
- min: 1,
41
- max: 6,
42
- })
38
+ ? config.itemsCount ?? faker.range(1, 6)
43
39
  : 0;
44
40
 
45
41
  return {
46
42
  slice_type: sliceType,
47
43
  slice_label: null,
48
44
  variation: model.id,
49
- version: faker.git.shortSha(),
45
+ version: faker.hash(7),
50
46
  primary: valueForModelMap({
51
47
  seed: config.seed,
52
48
  map: model.primary,
@@ -35,15 +35,11 @@ export const slice = <
35
35
  const sliceLabel =
36
36
  config.label !== undefined
37
37
  ? config.label
38
- : changeCase.capitalCase(faker.company.bsNoun());
38
+ : changeCase.capitalCase(faker.words(faker.range(1, 2)));
39
39
 
40
40
  const itemsCount =
41
41
  Object.keys(model.repeat).length > 0
42
- ? config.itemsCount ??
43
- faker.datatype.number({
44
- min: 1,
45
- max: 6,
46
- })
42
+ ? config.itemsCount ?? faker.range(1, 6)
47
43
  : 0;
48
44
 
49
45
  return {
@@ -35,21 +35,16 @@ export const sliceZone = <
35
35
  const model = config.model || modelGen.sliceZone({ seed: config.seed });
36
36
 
37
37
  if (Object.keys(model.config.choices).length > 0) {
38
- const itemsCount =
39
- config.itemsCount ??
40
- faker.datatype.number({
41
- min: 1,
42
- max: 6,
43
- });
38
+ const itemsCount = config.itemsCount ?? faker.range(1, 6);
44
39
 
45
40
  return Array(itemsCount)
46
41
  .fill(undefined)
47
42
  .map(() => {
48
43
  const choices = Object.entries(model.config.choices);
49
- const [choiceType, choiceModel] = faker.random.arrayElement(choices);
44
+ const [choiceType, choiceModel] = faker.randomElement(choices);
50
45
 
51
46
  const choiceLabels = model.config.labels[choiceType] || [];
52
- const choiceLabel = faker.random.arrayElement(choiceLabels);
47
+ const choiceLabel = faker.randomElement(choiceLabels);
53
48
 
54
49
  switch (choiceModel.type) {
55
50
  case prismicT.CustomTypeModelSliceType.Slice: {
@@ -80,8 +75,7 @@ export const sliceZone = <
80
75
  }
81
76
  })
82
77
  .filter(
83
- (slice): slice is prismicT.Slice | prismicT.SharedSlice =>
84
- slice !== undefined,
78
+ (slice): slice is NonNullable<typeof slice> => slice !== undefined,
85
79
  ) as ModelValue<Model, State>;
86
80
  } else {
87
81
  return [] as unknown as ModelValue<Model, State>;
@@ -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
  };
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
  };