@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.
- package/dist/api/index.cjs +208 -100
- package/dist/api/index.cjs.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +208 -100
- package/dist/api/index.js.map +1 -1
- package/dist/index.cjs +311 -213
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +9 -5
- package/dist/index.js +310 -211
- package/dist/index.js.map +1 -1
- package/dist/model/index.cjs +168 -74
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.ts +1 -1
- package/dist/model/index.js +168 -74
- package/dist/model/index.js.map +1 -1
- package/dist/value/index.cjs +280 -182
- package/dist/value/index.cjs.map +1 -1
- package/dist/value/index.d.ts +8 -4
- package/dist/value/index.js +280 -182
- package/dist/value/index.js.map +1 -1
- package/package.json +19 -16
- package/src/api/query.ts +2 -2
- package/src/api/ref.ts +3 -3
- package/src/api/repository.ts +5 -5
- package/src/lib/buildEmbedField.ts +16 -27
- package/src/lib/buildImageFieldImage.ts +3 -2
- package/src/lib/createFaker.ts +98 -20
- package/src/lib/generateCustomTypeId.ts +1 -1
- package/src/lib/generateFieldId.ts +1 -3
- package/src/lib/generateTags.ts +4 -12
- package/src/lib/getMockEmbedData.ts +33 -12
- package/src/lib/getMockImageData.ts +1 -1
- package/src/lib/lorem.ts +112 -0
- package/src/model/boolean.ts +1 -1
- package/src/model/buildMockGroupFieldMap.ts +1 -1
- package/src/model/color.ts +2 -2
- package/src/model/contentRelationship.ts +2 -2
- package/src/model/customType.ts +3 -3
- package/src/model/date.ts +2 -2
- package/src/model/embed.ts +2 -2
- package/src/model/geoPoint.ts +1 -1
- package/src/model/group.ts +1 -1
- package/src/model/image.ts +5 -9
- package/src/model/integrationFields.ts +2 -2
- package/src/model/keyText.ts +2 -2
- package/src/model/link.ts +3 -3
- package/src/model/linkToMedia.ts +2 -2
- package/src/model/number.ts +2 -2
- package/src/model/richText.ts +6 -6
- package/src/model/select.ts +2 -2
- package/src/model/sharedSlice.ts +2 -2
- package/src/model/sharedSliceVariation.ts +4 -4
- package/src/model/slice.ts +4 -4
- package/src/model/timestamp.ts +2 -2
- package/src/model/title.ts +5 -5
- package/src/model/uid.ts +2 -2
- package/src/types.ts +7 -10
- package/src/value/boolean.ts +1 -1
- package/src/value/color.ts +1 -1
- package/src/value/contentRelationship.ts +3 -3
- package/src/value/customType.ts +5 -5
- package/src/value/embed.ts +20 -7
- package/src/value/geoPoint.ts +2 -4
- package/src/value/group.ts +1 -6
- package/src/value/integrationFields.ts +4 -4
- package/src/value/keyText.ts +1 -3
- package/src/value/link.ts +3 -3
- package/src/value/linkToMedia.ts +7 -6
- package/src/value/number.ts +1 -1
- package/src/value/richText/embed.ts +2 -2
- package/src/value/richText/heading.ts +3 -10
- package/src/value/richText/image.ts +3 -5
- package/src/value/richText/index.ts +3 -8
- package/src/value/richText/list.ts +4 -8
- package/src/value/richText/oList.ts +4 -8
- package/src/value/richText/paragraph.ts +8 -4
- package/src/value/richText/preformatted.ts +9 -5
- package/src/value/select.ts +2 -2
- package/src/value/sharedSlice.ts +1 -1
- package/src/value/sharedSliceVariation.ts +2 -6
- package/src/value/slice.ts +2 -6
- package/src/value/sliceZone.ts +4 -10
- package/src/value/timestamp.ts +28 -15
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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
|
-
|
|
38
|
-
text: faker.lorem.paragraph(pattern.sentenceCount),
|
|
42
|
+
text,
|
|
39
43
|
spans: [],
|
|
40
44
|
};
|
|
41
45
|
};
|
package/src/value/select.ts
CHANGED
|
@@ -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.
|
|
34
|
+
typeof defaultValue === "string" && faker.boolean()
|
|
35
35
|
? defaultValue
|
|
36
|
-
: faker.
|
|
36
|
+
: faker.randomElement(model.config.options)
|
|
37
37
|
) as MockSelectValue<Model, State>;
|
|
38
38
|
}
|
|
39
39
|
};
|
package/src/value/sharedSlice.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
45
|
+
version: faker.hash(7),
|
|
50
46
|
primary: valueForModelMap({
|
|
51
47
|
seed: config.seed,
|
|
52
48
|
map: model.primary,
|
package/src/value/slice.ts
CHANGED
|
@@ -35,15 +35,11 @@ export const slice = <
|
|
|
35
35
|
const sliceLabel =
|
|
36
36
|
config.label !== undefined
|
|
37
37
|
? config.label
|
|
38
|
-
: changeCase.capitalCase(faker.
|
|
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 {
|
package/src/value/sliceZone.ts
CHANGED
|
@@ -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.
|
|
44
|
+
const [choiceType, choiceModel] = faker.randomElement(choices);
|
|
50
45
|
|
|
51
46
|
const choiceLabels = model.config.labels[choiceType] || [];
|
|
52
|
-
const choiceLabel = faker.
|
|
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
|
|
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>;
|
package/src/value/timestamp.ts
CHANGED
|
@@ -25,19 +25,32 @@ export const timestamp = <
|
|
|
25
25
|
): MockTimestampValue<State> => {
|
|
26
26
|
const faker = createFaker(config.seed);
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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