@prismicio/mock 0.0.8 → 0.1.0
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 +348 -236
- package/dist/api/index.cjs.map +1 -1
- package/dist/api/index.d.ts +52 -6
- package/dist/api/index.js +348 -236
- package/dist/api/index.js.map +1 -1
- package/dist/index.cjs +893 -543
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +247 -73
- package/dist/index.js +885 -542
- package/dist/index.js.map +1 -1
- package/dist/model/index.cjs +398 -134
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.ts +114 -28
- package/dist/model/index.js +398 -134
- package/dist/model/index.js.map +1 -1
- package/dist/value/index.cjs +598 -468
- package/dist/value/index.cjs.map +1 -1
- package/dist/value/index.d.ts +96 -40
- package/dist/value/index.js +598 -468
- package/dist/value/index.js.map +1 -1
- package/package.json +22 -20
- package/src/api/createAPIMockFactory.ts +56 -0
- package/src/api/query.ts +4 -4
- package/src/api/ref.ts +6 -6
- package/src/api/repository.ts +12 -14
- package/src/api/tags.ts +5 -2
- package/src/createMockFactory.ts +52 -0
- package/src/index.ts +15 -0
- package/src/lib/buildEmbedField.ts +28 -30
- package/src/lib/buildImageFieldImage.ts +19 -7
- package/src/lib/createFaker.ts +99 -22
- package/src/lib/generateCustomTypeId.ts +13 -5
- package/src/lib/generateFieldId.ts +13 -7
- package/src/lib/generateTags.ts +17 -16
- package/src/lib/getMockEmbedData.ts +45 -16
- package/src/lib/getMockImageData.ts +13 -5
- package/src/lib/lorem.ts +112 -0
- package/src/lib/valueForModel.ts +47 -30
- package/src/lib/valueForModelMap.ts +24 -4
- package/src/model/boolean.ts +6 -6
- package/src/model/buildMockGroupFieldMap.ts +5 -5
- package/src/model/color.ts +4 -4
- package/src/model/contentRelationship.ts +4 -4
- package/src/model/createModelMockFactory.ts +213 -0
- package/src/model/customType.ts +6 -6
- package/src/model/date.ts +4 -4
- package/src/model/embed.ts +4 -4
- package/src/model/geoPoint.ts +3 -3
- package/src/model/group.ts +7 -7
- package/src/model/image.ts +8 -12
- package/src/model/index.ts +2 -0
- package/src/model/integrationFields.ts +4 -4
- package/src/model/keyText.ts +4 -4
- package/src/model/link.ts +6 -6
- package/src/model/linkToMedia.ts +5 -5
- package/src/model/number.ts +4 -4
- package/src/model/richText.ts +8 -8
- package/src/model/select.ts +5 -5
- package/src/model/sharedSlice.ts +5 -5
- package/src/model/sharedSliceVariation.ts +10 -10
- package/src/model/slice.ts +7 -7
- package/src/model/sliceZone.ts +7 -4
- package/src/model/timestamp.ts +4 -4
- package/src/model/title.ts +7 -7
- package/src/model/uid.ts +4 -4
- package/src/types.ts +70 -31
- package/src/value/boolean.ts +4 -6
- package/src/value/color.ts +3 -3
- package/src/value/contentRelationship.ts +21 -18
- package/src/value/createValueMockFactory.ts +236 -0
- package/src/value/customType.ts +12 -12
- package/src/value/date.ts +6 -2
- package/src/value/embed.ts +23 -7
- package/src/value/geoPoint.ts +4 -6
- package/src/value/group.ts +6 -11
- package/src/value/image.ts +26 -18
- package/src/value/integrationFields.ts +12 -26
- package/src/value/keyText.ts +3 -5
- package/src/value/link.ts +11 -9
- package/src/value/linkToMedia.ts +9 -8
- package/src/value/number.ts +3 -3
- package/src/value/richText/embed.ts +6 -3
- package/src/value/richText/heading.ts +32 -27
- package/src/value/richText/image.ts +9 -8
- package/src/value/richText/index.ts +71 -48
- package/src/value/richText/list.ts +6 -10
- package/src/value/richText/oList.ts +6 -10
- package/src/value/richText/paragraph.ts +10 -6
- package/src/value/richText/preformatted.ts +11 -7
- package/src/value/select.ts +11 -7
- package/src/value/sharedSlice.ts +5 -5
- package/src/value/sharedSliceVariation.ts +11 -16
- package/src/value/slice.ts +11 -15
- package/src/value/sliceZone.ts +14 -18
- package/src/value/timestamp.ts +31 -18
- package/src/value/title.ts +7 -3
- package/src/value/uid.ts +6 -4
package/src/value/sliceZone.ts
CHANGED
|
@@ -25,36 +25,33 @@ export const sliceZone = <
|
|
|
25
25
|
Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
|
|
26
26
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
27
27
|
>(
|
|
28
|
-
config: MockSliceZoneValueConfig<Model, State
|
|
28
|
+
config: MockSliceZoneValueConfig<Model, State>,
|
|
29
29
|
): ModelValue<Model, State> => {
|
|
30
30
|
if (config.state === "empty") {
|
|
31
31
|
return [] as ModelValue<Model, State>;
|
|
32
32
|
} else {
|
|
33
|
-
const faker = createFaker(config.seed);
|
|
33
|
+
const faker = config.faker || createFaker(config.seed);
|
|
34
34
|
|
|
35
|
-
const model = config.model || modelGen.sliceZone({
|
|
35
|
+
const model = config.model || modelGen.sliceZone({ faker });
|
|
36
36
|
|
|
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
|
-
});
|
|
37
|
+
if (model.config?.choices && Object.keys(model.config.choices).length > 0) {
|
|
38
|
+
const itemsCount = config.itemsCount ?? faker.range(1, 6);
|
|
44
39
|
|
|
45
40
|
return Array(itemsCount)
|
|
46
41
|
.fill(undefined)
|
|
47
42
|
.map(() => {
|
|
48
|
-
const choices =
|
|
49
|
-
|
|
43
|
+
const choices =
|
|
44
|
+
(model.config?.choices && Object.entries(model.config.choices)) ||
|
|
45
|
+
[];
|
|
46
|
+
const [choiceType, choiceModel] = faker.randomElement(choices);
|
|
50
47
|
|
|
51
|
-
const choiceLabels = model.config
|
|
52
|
-
const choiceLabel = faker.
|
|
48
|
+
const choiceLabels = model.config?.labels?.[choiceType] || [];
|
|
49
|
+
const choiceLabel = faker.randomElement(choiceLabels);
|
|
53
50
|
|
|
54
51
|
switch (choiceModel.type) {
|
|
55
52
|
case prismicT.CustomTypeModelSliceType.Slice: {
|
|
56
53
|
return slice({
|
|
57
|
-
|
|
54
|
+
faker,
|
|
58
55
|
model: choiceModel,
|
|
59
56
|
type: choiceType,
|
|
60
57
|
label: choiceLabel ? choiceLabel.name : null,
|
|
@@ -70,7 +67,7 @@ export const sliceZone = <
|
|
|
70
67
|
|
|
71
68
|
if (sharedSliceModel) {
|
|
72
69
|
return sharedSlice({
|
|
73
|
-
|
|
70
|
+
faker,
|
|
74
71
|
model: sharedSliceModel,
|
|
75
72
|
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
76
73
|
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
@@ -80,8 +77,7 @@ export const sliceZone = <
|
|
|
80
77
|
}
|
|
81
78
|
})
|
|
82
79
|
.filter(
|
|
83
|
-
(slice): slice is
|
|
84
|
-
slice !== undefined,
|
|
80
|
+
(slice): slice is NonNullable<typeof slice> => slice !== undefined,
|
|
85
81
|
) as ModelValue<Model, State>;
|
|
86
82
|
} else {
|
|
87
83
|
return [] as unknown as ModelValue<Model, State>;
|
package/src/value/timestamp.ts
CHANGED
|
@@ -21,23 +21,36 @@ export const timestamp = <
|
|
|
21
21
|
Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
|
|
22
22
|
State extends prismicT.FieldState = "filled",
|
|
23
23
|
>(
|
|
24
|
-
config: MockTimestampValueConfig<Model, State
|
|
24
|
+
config: MockTimestampValueConfig<Model, State>,
|
|
25
25
|
): MockTimestampValue<State> => {
|
|
26
|
-
const faker = createFaker(config.seed);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
const faker = config.faker || createFaker(config.seed);
|
|
27
|
+
|
|
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/title.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
+
import { createFaker } from "../lib/createFaker";
|
|
4
|
+
|
|
3
5
|
import { MockValueConfig, MockValueStateConfig } from "../types";
|
|
4
6
|
|
|
5
7
|
import { heading, MockRichTextHeadingValueConfig } from "./richText/heading";
|
|
@@ -18,17 +20,19 @@ export type MockTitleValue<
|
|
|
18
20
|
|
|
19
21
|
export const title = <
|
|
20
22
|
Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
|
|
21
|
-
State extends prismicT.FieldState =
|
|
23
|
+
State extends prismicT.FieldState = "filled",
|
|
22
24
|
>(
|
|
23
|
-
config: MockTitleValueConfig<Model, State
|
|
25
|
+
config: MockTitleValueConfig<Model, State>,
|
|
24
26
|
): MockTitleValue<State> => {
|
|
27
|
+
const faker = config.faker || createFaker(config.seed);
|
|
28
|
+
|
|
25
29
|
if (config.state === "empty") {
|
|
26
30
|
return [] as MockTitleValue<State>;
|
|
27
31
|
} else {
|
|
28
32
|
return [
|
|
29
33
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
30
34
|
heading({
|
|
31
|
-
|
|
35
|
+
faker,
|
|
32
36
|
model: config.model,
|
|
33
37
|
pattern: config.pattern,
|
|
34
38
|
})!,
|
package/src/value/uid.ts
CHANGED
|
@@ -9,10 +9,12 @@ export type MockUIDValueConfig<
|
|
|
9
9
|
Model extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,
|
|
10
10
|
> = MockValueConfig<Model>;
|
|
11
11
|
|
|
12
|
-
export const uid =
|
|
13
|
-
|
|
12
|
+
export const uid = <
|
|
13
|
+
Model extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,
|
|
14
|
+
>(
|
|
15
|
+
config: MockUIDValueConfig<Model>,
|
|
14
16
|
): NonNullable<prismicT.PrismicDocument["uid"]> => {
|
|
15
|
-
const faker = createFaker(config.seed);
|
|
17
|
+
const faker = config.faker || createFaker(config.seed);
|
|
16
18
|
|
|
17
|
-
return changeCase.snakeCase(faker.
|
|
19
|
+
return changeCase.snakeCase(faker.words(faker.range(1, 3)));
|
|
18
20
|
};
|