@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/model/sharedSlice.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockSharedSliceModelConfig<
|
|
8
|
+
export type MockSharedSliceModelConfig<
|
|
9
9
|
Variation extends prismicT.SharedSliceModelVariation,
|
|
10
10
|
> = {
|
|
11
11
|
id?: string;
|
|
@@ -16,12 +16,12 @@ type MockSharedSliceModelConfig<
|
|
|
16
16
|
export const sharedSlice = <
|
|
17
17
|
Variation extends prismicT.SharedSliceModelVariation,
|
|
18
18
|
>(
|
|
19
|
-
config: MockSharedSliceModelConfig<Variation
|
|
19
|
+
config: MockSharedSliceModelConfig<Variation>,
|
|
20
20
|
): prismicT.SharedSliceModel<string, Variation> => {
|
|
21
|
-
const faker = createFaker(config.seed);
|
|
21
|
+
const faker = config.faker || createFaker(config.seed);
|
|
22
22
|
|
|
23
23
|
let name: string =
|
|
24
|
-
config.name || changeCase.capitalCase(faker.
|
|
24
|
+
config.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));
|
|
25
25
|
let id: string = config.id || changeCase.snakeCase(name);
|
|
26
26
|
|
|
27
27
|
if (config.id && !config.name) {
|
|
@@ -34,7 +34,7 @@ export const sharedSlice = <
|
|
|
34
34
|
type: prismicT.CustomTypeModelSliceType.SharedSlice,
|
|
35
35
|
id,
|
|
36
36
|
name,
|
|
37
|
-
description: faker.
|
|
37
|
+
description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
|
|
38
38
|
variations: config.variations || ([] as Variation[]),
|
|
39
39
|
};
|
|
40
40
|
};
|
|
@@ -2,6 +2,7 @@ import * as prismicT from "@prismicio/types";
|
|
|
2
2
|
import * as changeCase from "change-case";
|
|
3
3
|
|
|
4
4
|
import { createFaker } from "../lib/createFaker";
|
|
5
|
+
import { getMockImageData } from "../lib/getMockImageData";
|
|
5
6
|
|
|
6
7
|
import { GroupFieldModelMap, MockModelConfig } from "../types";
|
|
7
8
|
|
|
@@ -21,16 +22,12 @@ export const sharedSliceVariation = <
|
|
|
21
22
|
PrimaryFields extends GroupFieldModelMap,
|
|
22
23
|
ItemsFields extends GroupFieldModelMap,
|
|
23
24
|
>(
|
|
24
|
-
config: MockSharedSliceVariationModelConfig<
|
|
25
|
-
ID,
|
|
26
|
-
PrimaryFields,
|
|
27
|
-
ItemsFields
|
|
28
|
-
> = {},
|
|
25
|
+
config: MockSharedSliceVariationModelConfig<ID, PrimaryFields, ItemsFields>,
|
|
29
26
|
): prismicT.SharedSliceModelVariation<ID, PrimaryFields, ItemsFields> => {
|
|
30
|
-
const faker = createFaker(config.seed);
|
|
27
|
+
const faker = config.faker || createFaker(config.seed);
|
|
31
28
|
|
|
32
29
|
let name: string =
|
|
33
|
-
config.name || changeCase.capitalCase(faker.
|
|
30
|
+
config.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));
|
|
34
31
|
let id: ID = config.id || (changeCase.snakeCase(name) as ID);
|
|
35
32
|
|
|
36
33
|
if (config.id && !config.name) {
|
|
@@ -39,13 +36,16 @@ export const sharedSliceVariation = <
|
|
|
39
36
|
id = changeCase.snakeCase(config.name) as ID;
|
|
40
37
|
}
|
|
41
38
|
|
|
39
|
+
const imageData = getMockImageData({ faker });
|
|
40
|
+
|
|
42
41
|
return {
|
|
43
42
|
id,
|
|
44
43
|
name,
|
|
45
|
-
description: faker.
|
|
46
|
-
docURL: faker.
|
|
47
|
-
version: faker.
|
|
44
|
+
description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
|
|
45
|
+
docURL: faker.url(),
|
|
46
|
+
version: faker.hash(7),
|
|
48
47
|
primary: config.primaryFields || ({} as PrimaryFields),
|
|
49
48
|
items: config.itemsFields || ({} as ItemsFields),
|
|
49
|
+
imageUrl: imageData.url,
|
|
50
50
|
};
|
|
51
51
|
};
|
package/src/model/slice.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { GroupFieldModelMap, MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockSliceModelConfig<
|
|
8
|
+
export type MockSliceModelConfig<
|
|
9
9
|
NonRepeatFields extends GroupFieldModelMap = GroupFieldModelMap,
|
|
10
10
|
RepeatFields extends GroupFieldModelMap = GroupFieldModelMap,
|
|
11
11
|
> = {
|
|
@@ -17,18 +17,18 @@ export const slice = <
|
|
|
17
17
|
NonRepeatFields extends GroupFieldModelMap,
|
|
18
18
|
RepeatFields extends GroupFieldModelMap,
|
|
19
19
|
>(
|
|
20
|
-
config: MockSliceModelConfig<NonRepeatFields, RepeatFields
|
|
20
|
+
config: MockSliceModelConfig<NonRepeatFields, RepeatFields>,
|
|
21
21
|
): prismicT.CustomTypeModelSlice<NonRepeatFields, RepeatFields> => {
|
|
22
|
-
const faker = createFaker(config.seed);
|
|
22
|
+
const faker = config.faker || createFaker(config.seed);
|
|
23
23
|
|
|
24
24
|
return {
|
|
25
25
|
type: prismicT.CustomTypeModelSliceType.Slice,
|
|
26
|
-
icon: changeCase.snakeCase(faker.
|
|
27
|
-
display: faker.
|
|
26
|
+
icon: changeCase.snakeCase(faker.word()),
|
|
27
|
+
display: faker.boolean()
|
|
28
28
|
? prismicT.CustomTypeModelSliceDisplay.Grid
|
|
29
29
|
: prismicT.CustomTypeModelSliceDisplay.List,
|
|
30
|
-
fieldset: changeCase.capitalCase(faker.
|
|
31
|
-
description: faker.
|
|
30
|
+
fieldset: changeCase.capitalCase(faker.words(2)),
|
|
31
|
+
description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
|
|
32
32
|
repeat: config.repeatFields || ({} as RepeatFields),
|
|
33
33
|
"non-repeat": config.nonRepeatFields || ({} as NonRepeatFields),
|
|
34
34
|
};
|
package/src/model/sliceZone.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as prismicT from "@prismicio/types";
|
|
|
2
2
|
|
|
3
3
|
import { MockModelConfig } from "../types";
|
|
4
4
|
|
|
5
|
-
type MockSliceZoneModelConfig<
|
|
5
|
+
export type MockSliceZoneModelConfig<
|
|
6
6
|
Slices extends Record<
|
|
7
7
|
string,
|
|
8
8
|
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
@@ -20,10 +20,13 @@ export const sliceZone = <
|
|
|
20
20
|
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
21
21
|
>,
|
|
22
22
|
>(
|
|
23
|
-
config: MockSliceZoneModelConfig<Slices
|
|
23
|
+
config: MockSliceZoneModelConfig<Slices>,
|
|
24
24
|
): prismicT.CustomTypeModelSliceZoneField<Slices> => {
|
|
25
|
-
const labels =
|
|
26
|
-
|
|
25
|
+
const labels = {} as NonNullable<
|
|
26
|
+
NonNullable<
|
|
27
|
+
prismicT.CustomTypeModelSliceZoneField<Slices>["config"]
|
|
28
|
+
>["labels"]
|
|
29
|
+
>;
|
|
27
30
|
|
|
28
31
|
for (const choiceId in config.choices) {
|
|
29
32
|
const choice = config.choices[choiceId];
|
package/src/model/timestamp.ts
CHANGED
|
@@ -8,15 +8,15 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockTimestampModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const timestamp = (
|
|
11
|
-
config: MockTimestampModelConfig
|
|
11
|
+
config: MockTimestampModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelTimestampField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Timestamp,
|
|
17
17
|
config: {
|
|
18
|
-
label: changeCase.capitalCase(faker.
|
|
19
|
-
placeholder: changeCase.sentenceCase(faker.
|
|
18
|
+
label: changeCase.capitalCase(faker.word()),
|
|
19
|
+
placeholder: changeCase.sentenceCase(faker.words(3)),
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
22
|
};
|
package/src/model/title.ts
CHANGED
|
@@ -8,12 +8,12 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockTitleModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const title = (
|
|
11
|
-
config: MockTitleModelConfig
|
|
11
|
+
config: MockTitleModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelTitleField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
|
-
const single = faker
|
|
16
|
-
.
|
|
15
|
+
const single = faker
|
|
16
|
+
.randomElements([
|
|
17
17
|
"heading1",
|
|
18
18
|
"heading2",
|
|
19
19
|
"heading3",
|
|
@@ -26,10 +26,10 @@ export const title = (
|
|
|
26
26
|
return {
|
|
27
27
|
type: prismicT.CustomTypeModelFieldType.StructuredText,
|
|
28
28
|
config: {
|
|
29
|
-
label: changeCase.capitalCase(faker.
|
|
30
|
-
placeholder: changeCase.sentenceCase(faker.
|
|
29
|
+
label: changeCase.capitalCase(faker.word()),
|
|
30
|
+
placeholder: changeCase.sentenceCase(faker.words(3)),
|
|
31
31
|
single,
|
|
32
|
-
allowTargetBlank: faker.
|
|
32
|
+
allowTargetBlank: faker.boolean() || undefined,
|
|
33
33
|
},
|
|
34
34
|
};
|
|
35
35
|
};
|
package/src/model/uid.ts
CHANGED
|
@@ -8,15 +8,15 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockUIDModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const uid = (
|
|
11
|
-
config: MockUIDModelConfig
|
|
11
|
+
config: MockUIDModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelUIDField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.UID,
|
|
17
17
|
config: {
|
|
18
|
-
label: changeCase.capitalCase(faker.
|
|
19
|
-
placeholder: changeCase.sentenceCase(faker.
|
|
18
|
+
label: changeCase.capitalCase(faker.word()),
|
|
19
|
+
placeholder: changeCase.sentenceCase(faker.words(3)),
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
22
|
};
|
package/src/types.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
|
+
import { Faker } from "./lib/createFaker";
|
|
2
3
|
|
|
3
4
|
import * as value from "./value";
|
|
4
5
|
|
|
@@ -27,7 +28,11 @@ export type SetRequired<BaseType, Keys extends keyof BaseType> = Simplify<
|
|
|
27
28
|
Required<Pick<BaseType, Keys>>
|
|
28
29
|
>;
|
|
29
30
|
|
|
30
|
-
export type Seed = string | number
|
|
31
|
+
export type Seed = string | number;
|
|
32
|
+
|
|
33
|
+
export type WithoutFakerConfig<T> = {
|
|
34
|
+
[P in keyof T as P extends "seed" | "faker" ? never : P]: T[P];
|
|
35
|
+
};
|
|
31
36
|
|
|
32
37
|
export interface MockImageData {
|
|
33
38
|
url: string;
|
|
@@ -35,22 +40,31 @@ export interface MockImageData {
|
|
|
35
40
|
height: number;
|
|
36
41
|
}
|
|
37
42
|
|
|
38
|
-
export
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
thumbnail_height: number | null;
|
|
44
|
-
thumbnail_width: number | null;
|
|
45
|
-
}
|
|
43
|
+
export type MockEmbedData = prismicT.AnyOEmbed &
|
|
44
|
+
prismicT.OEmbedExtra & {
|
|
45
|
+
embed_url: string;
|
|
46
|
+
html: string;
|
|
47
|
+
};
|
|
46
48
|
|
|
47
|
-
export type MockRestApiConfig =
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
export type MockRestApiConfig =
|
|
50
|
+
| {
|
|
51
|
+
seed: Seed;
|
|
52
|
+
faker?: never;
|
|
53
|
+
}
|
|
54
|
+
| {
|
|
55
|
+
faker: Faker;
|
|
56
|
+
seed?: never;
|
|
57
|
+
};
|
|
50
58
|
|
|
51
|
-
export type MockModelConfig =
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
export type MockModelConfig =
|
|
60
|
+
| {
|
|
61
|
+
seed: Seed;
|
|
62
|
+
faker?: never;
|
|
63
|
+
}
|
|
64
|
+
| {
|
|
65
|
+
faker: Faker;
|
|
66
|
+
seed?: never;
|
|
67
|
+
};
|
|
54
68
|
|
|
55
69
|
// TODO: Add to @prismicio/types
|
|
56
70
|
export type PrismicModel =
|
|
@@ -66,9 +80,17 @@ export type GroupFieldModelMap = Record<
|
|
|
66
80
|
>;
|
|
67
81
|
|
|
68
82
|
export type MockValueConfig<Model extends PrismicModel = PrismicModel> = {
|
|
69
|
-
seed?: Seed;
|
|
70
83
|
model?: Model;
|
|
71
|
-
}
|
|
84
|
+
} & (
|
|
85
|
+
| {
|
|
86
|
+
seed: Seed;
|
|
87
|
+
faker?: never;
|
|
88
|
+
}
|
|
89
|
+
| {
|
|
90
|
+
faker: Faker;
|
|
91
|
+
seed?: never;
|
|
92
|
+
}
|
|
93
|
+
);
|
|
72
94
|
|
|
73
95
|
export type MockValueStateConfig<
|
|
74
96
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
@@ -88,7 +110,7 @@ export type MockValueConfigForModel<
|
|
|
88
110
|
: Model extends prismicT.CustomTypeModelDateField
|
|
89
111
|
? value.MockDateValueConfig<Model, State>
|
|
90
112
|
: Model extends prismicT.CustomTypeModelEmbedField
|
|
91
|
-
? value.MockEmbedValueConfig<Model, State>
|
|
113
|
+
? value.MockEmbedValueConfig<Model, prismicT.AnyOEmbed, State>
|
|
92
114
|
: Model extends prismicT.CustomTypeModelGeoPointField
|
|
93
115
|
? value.MockGeoPointValueConfig<Model, State>
|
|
94
116
|
: Model extends prismicT.CustomTypeModelImageField
|
|
@@ -124,9 +146,17 @@ type CustomTypeModelStructuredTextField =
|
|
|
124
146
|
export type MockRichTextValueConfig<
|
|
125
147
|
Model extends CustomTypeModelStructuredTextField = CustomTypeModelStructuredTextField,
|
|
126
148
|
> = {
|
|
127
|
-
seed?: Seed;
|
|
128
149
|
model?: Model;
|
|
129
|
-
}
|
|
150
|
+
} & (
|
|
151
|
+
| {
|
|
152
|
+
seed: Seed;
|
|
153
|
+
faker?: never;
|
|
154
|
+
}
|
|
155
|
+
| {
|
|
156
|
+
faker: Faker;
|
|
157
|
+
seed?: never;
|
|
158
|
+
}
|
|
159
|
+
);
|
|
130
160
|
|
|
131
161
|
export type ModelValueMap<
|
|
132
162
|
T extends Record<string, prismicT.CustomTypeModelField>,
|
|
@@ -148,14 +178,18 @@ export type ModelValue<
|
|
|
148
178
|
: T extends prismicT.CustomTypeModelSliceZoneField
|
|
149
179
|
? prismicT.SliceZone<
|
|
150
180
|
ValueOf<{
|
|
151
|
-
[P in keyof T["config"]["choices"] as P extends string
|
|
181
|
+
[P in keyof NonNullable<T["config"]>["choices"] as P extends string
|
|
152
182
|
? P
|
|
153
|
-
: never]:
|
|
183
|
+
: never]: NonNullable<
|
|
184
|
+
T["config"]
|
|
185
|
+
>["choices"][P] extends prismicT.CustomTypeModelSlice
|
|
154
186
|
? CustomTypeModelSliceValue<
|
|
155
|
-
T["config"]["choices"][P],
|
|
187
|
+
NonNullable<T["config"]>["choices"][P],
|
|
156
188
|
P extends string ? P : string
|
|
157
189
|
>
|
|
158
|
-
:
|
|
190
|
+
: NonNullable<
|
|
191
|
+
T["config"]
|
|
192
|
+
>["choices"][P] extends prismicT.CustomTypeModelSharedSlice
|
|
159
193
|
? prismicT.SharedSlice<P extends string ? P : string>
|
|
160
194
|
: never;
|
|
161
195
|
}>,
|
|
@@ -217,27 +251,32 @@ type CustomTypeModelFieldForGroupValue<
|
|
|
217
251
|
: T extends prismicT.CustomTypeModelGeoPointField
|
|
218
252
|
? prismicT.GeoPointField<State>
|
|
219
253
|
: T extends prismicT.CustomTypeModelIntegrationFieldsField
|
|
220
|
-
? prismicT.IntegrationFields<
|
|
254
|
+
? prismicT.IntegrationFields<Record<string, unknown>, State>
|
|
221
255
|
: never;
|
|
222
256
|
|
|
223
257
|
type CustomTypeModelGroupFieldValue<
|
|
224
258
|
T extends prismicT.CustomTypeModelGroupField,
|
|
225
259
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
226
|
-
> = prismicT.GroupField<
|
|
260
|
+
> = prismicT.GroupField<
|
|
261
|
+
ModelValueMap<NonNullable<NonNullable<T["config"]>["fields"]>>,
|
|
262
|
+
State
|
|
263
|
+
>;
|
|
227
264
|
|
|
228
265
|
type CustomTypeModelSliceValue<
|
|
229
266
|
T extends prismicT.CustomTypeModelSlice,
|
|
230
267
|
SliceType = string,
|
|
231
268
|
> = prismicT.Slice<
|
|
232
269
|
SliceType,
|
|
233
|
-
ModelValueMap<T["non-repeat"]
|
|
234
|
-
ModelValueMap<T["repeat"]
|
|
270
|
+
ModelValueMap<NonNullable<T["non-repeat"]>>,
|
|
271
|
+
ModelValueMap<NonNullable<T["repeat"]>>
|
|
235
272
|
>;
|
|
236
273
|
|
|
237
274
|
type SharedSliceModelValue<T extends prismicT.SharedSliceModel> =
|
|
238
275
|
prismicT.SharedSlice<
|
|
239
276
|
T["id"],
|
|
240
|
-
SharedSliceModelVariationValue<
|
|
277
|
+
SharedSliceModelVariationValue<
|
|
278
|
+
IterableElement<NonNullable<T["variations"]>>
|
|
279
|
+
>
|
|
241
280
|
>;
|
|
242
281
|
|
|
243
282
|
type SharedSliceModelVariationValue<
|
|
@@ -246,7 +285,7 @@ type SharedSliceModelVariationValue<
|
|
|
246
285
|
string,
|
|
247
286
|
prismicT.SharedSliceVariation<
|
|
248
287
|
T["id"],
|
|
249
|
-
ModelValueMap<T["primary"]
|
|
250
|
-
ModelValueMap<T["items"]
|
|
288
|
+
ModelValueMap<NonNullable<T["primary"]>>,
|
|
289
|
+
ModelValueMap<NonNullable<T["items"]>>
|
|
251
290
|
>
|
|
252
291
|
>;
|
package/src/value/boolean.ts
CHANGED
|
@@ -8,12 +8,10 @@ export type MockBooleanValueConfig<
|
|
|
8
8
|
Model extends prismicT.CustomTypeModelBooleanField = prismicT.CustomTypeModelBooleanField,
|
|
9
9
|
> = MockValueConfig<Model>;
|
|
10
10
|
|
|
11
|
-
export const boolean = <
|
|
12
|
-
Model
|
|
13
|
-
>(
|
|
14
|
-
config: MockBooleanValueConfig<Model> = {},
|
|
11
|
+
export const boolean = <Model extends prismicT.CustomTypeModelBooleanField>(
|
|
12
|
+
config: MockBooleanValueConfig<Model>,
|
|
15
13
|
): prismicT.BooleanField => {
|
|
16
|
-
const faker = createFaker(config.seed);
|
|
14
|
+
const faker = config.faker || createFaker(config.seed);
|
|
17
15
|
|
|
18
|
-
return faker.
|
|
16
|
+
return faker.boolean();
|
|
19
17
|
};
|
package/src/value/color.ts
CHANGED
|
@@ -17,11 +17,11 @@ export const color = <
|
|
|
17
17
|
Model extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,
|
|
18
18
|
State extends prismicT.FieldState = "filled",
|
|
19
19
|
>(
|
|
20
|
-
config: MockColorValueConfig<Model, State
|
|
20
|
+
config: MockColorValueConfig<Model, State>,
|
|
21
21
|
): MockColorValue<State> => {
|
|
22
|
-
const faker = createFaker(config.seed);
|
|
22
|
+
const faker = config.faker || createFaker(config.seed);
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
|
-
config.state === "empty" ? null : faker.
|
|
25
|
+
config.state === "empty" ? null : faker.hexColor().toUpperCase()
|
|
26
26
|
) as MockColorValue<State>;
|
|
27
27
|
};
|
|
@@ -5,7 +5,11 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
import { generateCustomTypeId } from "../lib/generateCustomTypeId";
|
|
6
6
|
import { generateTags } from "../lib/generateTags";
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
MockValueStateConfig,
|
|
10
|
+
MockValueConfig,
|
|
11
|
+
IterableElement,
|
|
12
|
+
} from "../types";
|
|
9
13
|
|
|
10
14
|
import * as modelGen from "../model";
|
|
11
15
|
|
|
@@ -26,7 +30,7 @@ type MockContentRelationshipValue<
|
|
|
26
30
|
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
27
31
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
28
32
|
> = prismicT.RelationField<
|
|
29
|
-
Model["config"]["customtypes"]
|
|
33
|
+
IterableElement<NonNullable<Model["config"]>["customtypes"]>,
|
|
30
34
|
string,
|
|
31
35
|
never,
|
|
32
36
|
State
|
|
@@ -36,17 +40,16 @@ export const contentRelationship = <
|
|
|
36
40
|
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
37
41
|
State extends prismicT.FieldState = "filled",
|
|
38
42
|
>(
|
|
39
|
-
config: MockContentRelationshipValueConfig<Model, State
|
|
43
|
+
config: MockContentRelationshipValueConfig<Model, State>,
|
|
40
44
|
): MockContentRelationshipValue<Model, State> => {
|
|
41
|
-
const faker = createFaker(config.seed);
|
|
45
|
+
const faker = config.faker || createFaker(config.seed);
|
|
42
46
|
|
|
43
47
|
if (config.state === "empty") {
|
|
44
48
|
return {
|
|
45
49
|
link_type: prismicT.LinkType.Document,
|
|
46
50
|
} as MockContentRelationshipValue<Model, State>;
|
|
47
51
|
} else {
|
|
48
|
-
const model =
|
|
49
|
-
config.model || modelGen.contentRelationship({ seed: config.seed });
|
|
52
|
+
const model = config.model || modelGen.contentRelationship({ faker });
|
|
50
53
|
|
|
51
54
|
const linkableDocuments = config.linkableDocuments
|
|
52
55
|
? config.linkableDocuments.filter(
|
|
@@ -54,16 +57,16 @@ export const contentRelationship = <
|
|
|
54
57
|
document,
|
|
55
58
|
): document is prismicT.PrismicDocument<
|
|
56
59
|
never,
|
|
57
|
-
NonNullable<Model["config"]["customtypes"]>[number]
|
|
60
|
+
NonNullable<NonNullable<Model["config"]>["customtypes"]>[number]
|
|
58
61
|
> => {
|
|
59
62
|
let shouldKeep = true;
|
|
60
63
|
|
|
61
|
-
if (model.config
|
|
64
|
+
if (model.config?.customtypes) {
|
|
62
65
|
shouldKeep =
|
|
63
66
|
shouldKeep && model.config.customtypes.includes(document.type);
|
|
64
67
|
}
|
|
65
68
|
|
|
66
|
-
if (model.config
|
|
69
|
+
if (model.config?.tags) {
|
|
67
70
|
shouldKeep =
|
|
68
71
|
shouldKeep &&
|
|
69
72
|
model.config.tags.some((tag) => document.tags.includes(tag));
|
|
@@ -74,20 +77,20 @@ export const contentRelationship = <
|
|
|
74
77
|
)
|
|
75
78
|
: [
|
|
76
79
|
{
|
|
77
|
-
...documentGen({
|
|
78
|
-
type: model.config
|
|
79
|
-
? faker.
|
|
80
|
-
: generateCustomTypeId({
|
|
81
|
-
tags: model.config
|
|
82
|
-
? faker.
|
|
83
|
-
: generateTags({
|
|
80
|
+
...documentGen({ faker }),
|
|
81
|
+
type: model.config?.customtypes
|
|
82
|
+
? faker.randomElement(model.config.customtypes)
|
|
83
|
+
: generateCustomTypeId({ faker }),
|
|
84
|
+
tags: model.config?.tags
|
|
85
|
+
? faker.randomElements(model.config.tags)
|
|
86
|
+
: generateTags({ faker }),
|
|
84
87
|
} as prismicT.PrismicDocument<
|
|
85
88
|
never,
|
|
86
|
-
NonNullable<Model["config"]["customtypes"]>[number]
|
|
89
|
+
NonNullable<NonNullable<Model["config"]>["customtypes"]>[number]
|
|
87
90
|
>,
|
|
88
91
|
];
|
|
89
92
|
|
|
90
|
-
const document = faker.
|
|
93
|
+
const document = faker.randomElement(linkableDocuments);
|
|
91
94
|
|
|
92
95
|
if (!document) {
|
|
93
96
|
throw new Error("A linkable document could not be found.");
|