@prismicio/mock 0.0.6 → 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/README.md +4 -1
- package/dist/api/index.cjs +242 -122
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.ts +3 -2
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +669 -0
- package/dist/api/index.js.map +1 -0
- package/dist/index.cjs +581 -571
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +155 -247
- package/dist/{index.mjs → index.js} +574 -561
- package/dist/index.js.map +1 -0
- package/dist/model/index.cjs +294 -257
- package/dist/model/index.cjs.map +1 -0
- package/dist/model/index.d.ts +72 -106
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +556 -0
- package/dist/model/index.js.map +1 -0
- package/dist/value/index.cjs +500 -647
- package/dist/value/index.cjs.map +1 -0
- package/dist/value/index.d.ts +71 -129
- package/dist/value/index.d.ts.map +1 -0
- package/dist/value/index.js +1461 -0
- package/dist/value/index.js.map +1 -0
- package/package.json +30 -27
- package/src/api/query.ts +2 -2
- package/src/api/ref.ts +3 -3
- package/src/api/repository.ts +5 -5
- package/src/lib/buildContentRelationshipField.ts +6 -1
- package/src/lib/buildEmbedField.ts +16 -27
- package/src/lib/buildImageFieldImage.ts +49 -0
- 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 +65 -0
- package/src/model/color.ts +2 -2
- package/src/model/contentRelationship.ts +16 -23
- package/src/model/customType.ts +49 -48
- 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 +9 -16
- package/src/model/image.ts +16 -20
- package/src/model/index.ts +2 -0
- package/src/model/integrationFields.ts +5 -3
- 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 +13 -18
- package/src/model/sharedSlice.ts +15 -42
- package/src/model/sharedSliceVariation.ts +36 -24
- package/src/model/slice.ts +19 -23
- package/src/model/sliceZone.ts +23 -59
- 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 +130 -88
- package/src/value/boolean.ts +1 -1
- package/src/value/color.ts +16 -6
- package/src/value/contentRelationship.ts +54 -39
- package/src/value/customType.ts +5 -5
- package/src/value/date.ts +25 -9
- package/src/value/embed.ts +32 -7
- package/src/value/geoPoint.ts +21 -11
- package/src/value/group.ts +31 -45
- package/src/value/image.ts +22 -9
- package/src/value/integrationFields.ts +26 -14
- package/src/value/keyText.ts +16 -6
- package/src/value/link.ts +36 -37
- package/src/value/linkToMedia.ts +19 -23
- package/src/value/number.ts +16 -6
- package/src/value/richText/embed.ts +2 -2
- package/src/value/richText/heading.ts +10 -17
- package/src/value/richText/image.ts +8 -6
- package/src/value/richText/index.ts +4 -9
- 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 +23 -8
- package/src/value/sharedSlice.ts +3 -3
- package/src/value/sharedSliceVariation.ts +4 -36
- package/src/value/slice.ts +3 -32
- package/src/value/sliceZone.ts +54 -69
- package/src/value/timestamp.ts +42 -16
- package/src/value/title.ts +26 -13
- package/src/value/uid.ts +2 -2
- package/dist/api/index.mjs +0 -515
- package/dist/model/index.mjs +0 -465
- package/dist/value/index.mjs +0 -1554
- package/src/lib/buildImageField.ts +0 -34
- package/src/lib/buildMockGroupFieldMap.ts +0 -84
package/src/model/sliceZone.ts
CHANGED
|
@@ -1,71 +1,35 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
|
-
import * as changeCase from "change-case";
|
|
3
|
-
|
|
4
|
-
import { createFaker } from "../lib/createFaker";
|
|
5
|
-
import { generateFieldId } from "../lib/generateFieldId";
|
|
6
2
|
|
|
7
3
|
import { MockModelConfig } from "../types";
|
|
8
4
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
type MockSliceZoneModelConfig = (
|
|
13
|
-
| {
|
|
14
|
-
choices?: Record<
|
|
15
|
-
string,
|
|
16
|
-
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
17
|
-
>;
|
|
18
|
-
choicesCount?: never;
|
|
19
|
-
withSharedSlices?: never;
|
|
20
|
-
}
|
|
21
|
-
| {
|
|
22
|
-
choices?: never;
|
|
23
|
-
choicesCount?: number;
|
|
24
|
-
withSharedSlices?: boolean;
|
|
25
|
-
}
|
|
26
|
-
) &
|
|
27
|
-
MockModelConfig;
|
|
28
|
-
|
|
29
|
-
export const sliceZone = (
|
|
30
|
-
config: MockSliceZoneModelConfig = {},
|
|
31
|
-
): prismicT.CustomTypeModelSliceZoneField => {
|
|
32
|
-
const faker = createFaker(config.seed);
|
|
33
|
-
|
|
34
|
-
let choices: Record<
|
|
5
|
+
type MockSliceZoneModelConfig<
|
|
6
|
+
Slices extends Record<
|
|
35
7
|
string,
|
|
36
8
|
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
37
|
-
> =
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
for (let i = 0; i < choicesCount; i++) {
|
|
46
|
-
const choiceId = generateFieldId({ seed: config.seed });
|
|
9
|
+
> = Record<
|
|
10
|
+
string,
|
|
11
|
+
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
12
|
+
>,
|
|
13
|
+
> = {
|
|
14
|
+
choices?: Slices;
|
|
15
|
+
} & MockModelConfig;
|
|
47
16
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
17
|
+
export const sliceZone = <
|
|
18
|
+
Slices extends Record<
|
|
19
|
+
string,
|
|
20
|
+
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
21
|
+
>,
|
|
22
|
+
>(
|
|
23
|
+
config: MockSliceZoneModelConfig<Slices> = {},
|
|
24
|
+
): prismicT.CustomTypeModelSliceZoneField<Slices> => {
|
|
25
|
+
const labels =
|
|
26
|
+
{} as prismicT.CustomTypeModelSliceZoneField<Slices>["config"]["labels"];
|
|
53
27
|
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
const choice = choices[choiceId];
|
|
28
|
+
for (const choiceId in config.choices) {
|
|
29
|
+
const choice = config.choices[choiceId];
|
|
57
30
|
|
|
58
31
|
if (choice.type === prismicT.CustomTypeModelSliceType.Slice) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
labels[choiceId] = Array(labelsCount)
|
|
62
|
-
.fill(undefined)
|
|
63
|
-
.map(() => ({
|
|
64
|
-
name: changeCase.capitalCase(faker.company.bsNoun()),
|
|
65
|
-
display: faker.datatype.boolean()
|
|
66
|
-
? prismicT.CustomTypeModelSliceDisplay.Grid
|
|
67
|
-
: prismicT.CustomTypeModelSliceDisplay.List,
|
|
68
|
-
}));
|
|
32
|
+
labels[choiceId as unknown as keyof typeof labels] = [];
|
|
69
33
|
}
|
|
70
34
|
}
|
|
71
35
|
|
|
@@ -74,7 +38,7 @@ export const sliceZone = (
|
|
|
74
38
|
fieldset: "Slice zone",
|
|
75
39
|
config: {
|
|
76
40
|
labels,
|
|
77
|
-
choices,
|
|
41
|
+
choices: config.choices || ({} as Slices),
|
|
78
42
|
},
|
|
79
43
|
};
|
|
80
44
|
};
|
package/src/model/timestamp.ts
CHANGED
|
@@ -15,8 +15,8 @@ export const timestamp = (
|
|
|
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
|
@@ -12,8 +12,8 @@ export const title = (
|
|
|
12
12
|
): prismicT.CustomTypeModelTitleField => {
|
|
13
13
|
const 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
|
@@ -15,8 +15,8 @@ export const uid = (
|
|
|
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
|
@@ -27,7 +27,7 @@ export type SetRequired<BaseType, Keys extends keyof BaseType> = Simplify<
|
|
|
27
27
|
Required<Pick<BaseType, Keys>>
|
|
28
28
|
>;
|
|
29
29
|
|
|
30
|
-
export type Seed = string | number
|
|
30
|
+
export type Seed = string | number;
|
|
31
31
|
|
|
32
32
|
export interface MockImageData {
|
|
33
33
|
url: string;
|
|
@@ -35,14 +35,11 @@ export interface MockImageData {
|
|
|
35
35
|
height: number;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
thumbnail_height: number | null;
|
|
44
|
-
thumbnail_width: number | null;
|
|
45
|
-
}
|
|
38
|
+
export type MockEmbedData = prismicT.AnyOEmbed &
|
|
39
|
+
prismicT.OEmbedExtra & {
|
|
40
|
+
embed_url: string;
|
|
41
|
+
html: string;
|
|
42
|
+
};
|
|
46
43
|
|
|
47
44
|
export type MockRestApiConfig = {
|
|
48
45
|
seed?: Seed;
|
|
@@ -60,45 +57,62 @@ export type PrismicModel =
|
|
|
60
57
|
| prismicT.SharedSliceModel
|
|
61
58
|
| prismicT.SharedSliceModelVariation;
|
|
62
59
|
|
|
60
|
+
export type GroupFieldModelMap = Record<
|
|
61
|
+
string,
|
|
62
|
+
prismicT.CustomTypeModelFieldForGroup
|
|
63
|
+
>;
|
|
64
|
+
|
|
63
65
|
export type MockValueConfig<Model extends PrismicModel = PrismicModel> = {
|
|
64
66
|
seed?: Seed;
|
|
65
67
|
model?: Model;
|
|
66
68
|
};
|
|
67
69
|
|
|
68
|
-
export type
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
70
|
+
export type MockValueStateConfig<
|
|
71
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
72
|
+
> = {
|
|
73
|
+
state?: State;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export type MockValueConfigForModel<
|
|
77
|
+
Model extends PrismicModel,
|
|
78
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
79
|
+
> = Model extends prismicT.CustomTypeModelBooleanField
|
|
80
|
+
? value.MockBooleanValueConfig<Model>
|
|
81
|
+
: Model extends prismicT.CustomTypeModelColorField
|
|
82
|
+
? value.MockColorValueConfig<Model, State>
|
|
83
|
+
: Model extends prismicT.CustomTypeModelContentRelationshipField
|
|
84
|
+
? value.MockContentRelationshipValueConfig<Model, State>
|
|
85
|
+
: Model extends prismicT.CustomTypeModelDateField
|
|
86
|
+
? value.MockDateValueConfig<Model, State>
|
|
87
|
+
: Model extends prismicT.CustomTypeModelEmbedField
|
|
88
|
+
? value.MockEmbedValueConfig<Model, prismicT.AnyOEmbed, State>
|
|
89
|
+
: Model extends prismicT.CustomTypeModelGeoPointField
|
|
90
|
+
? value.MockGeoPointValueConfig<Model, State>
|
|
91
|
+
: Model extends prismicT.CustomTypeModelImageField
|
|
92
|
+
? value.MockImageValueConfig<Model, State>
|
|
93
|
+
: Model extends prismicT.CustomTypeModelKeyTextField
|
|
94
|
+
? value.MockKeyTextValueConfig<Model, State>
|
|
95
|
+
: Model extends prismicT.CustomTypeModelLinkField
|
|
96
|
+
? value.MockLinkValueConfig<
|
|
97
|
+
typeof prismicT.LinkType[keyof typeof prismicT.LinkType],
|
|
98
|
+
Model,
|
|
99
|
+
State
|
|
100
|
+
>
|
|
101
|
+
: Model extends prismicT.CustomTypeModelLinkToMediaField
|
|
102
|
+
? value.MockLinkToMediaValueConfig<Model, State>
|
|
103
|
+
: Model extends prismicT.CustomTypeModelNumberField
|
|
104
|
+
? value.MockNumberValueConfig<Model, State>
|
|
105
|
+
: Model extends prismicT.CustomTypeModelRichTextField
|
|
106
|
+
? value.MockRichTextValueConfig
|
|
107
|
+
: Model extends prismicT.CustomTypeModelSelectField
|
|
108
|
+
? value.MockSelectValueConfig<Model, State>
|
|
109
|
+
: Model extends prismicT.CustomTypeModelTimestampField
|
|
110
|
+
? value.MockTimestampValueConfig<Model, State>
|
|
111
|
+
: Model extends prismicT.CustomTypeModelTitleField
|
|
112
|
+
? value.MockTitleValueConfig<Model, State>
|
|
113
|
+
: Model extends prismicT.CustomTypeModelUIDField
|
|
114
|
+
? value.MockUIDValueConfig<Model>
|
|
115
|
+
: never;
|
|
102
116
|
|
|
103
117
|
type CustomTypeModelStructuredTextField =
|
|
104
118
|
| prismicT.CustomTypeModelRichTextField
|
|
@@ -117,77 +131,105 @@ export type ModelValueMap<
|
|
|
117
131
|
[P in keyof T]: ModelValue<T[P]>;
|
|
118
132
|
};
|
|
119
133
|
|
|
120
|
-
export type ModelValue<
|
|
121
|
-
T extends
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
134
|
+
export type ModelValue<
|
|
135
|
+
T extends PrismicModel,
|
|
136
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
137
|
+
> = T extends prismicT.CustomTypeModel
|
|
138
|
+
? CustomTypeModelValue<T>
|
|
139
|
+
: T extends prismicT.CustomTypeModelUIDField
|
|
140
|
+
? prismicT.PrismicDocument["uid"]
|
|
141
|
+
: T extends prismicT.CustomTypeModelFieldForGroup
|
|
142
|
+
? CustomTypeModelFieldForGroupValue<T, State>
|
|
143
|
+
: T extends prismicT.CustomTypeModelGroupField
|
|
144
|
+
? CustomTypeModelGroupFieldValue<T, State>
|
|
145
|
+
: T extends prismicT.CustomTypeModelSliceZoneField
|
|
146
|
+
? prismicT.SliceZone<
|
|
147
|
+
ValueOf<{
|
|
148
|
+
[P in keyof T["config"]["choices"] as P extends string
|
|
149
|
+
? P
|
|
150
|
+
: never]: T["config"]["choices"][P] extends prismicT.CustomTypeModelSlice
|
|
151
|
+
? CustomTypeModelSliceValue<
|
|
152
|
+
T["config"]["choices"][P],
|
|
153
|
+
P extends string ? P : string
|
|
154
|
+
>
|
|
155
|
+
: T["config"]["choices"][P] extends prismicT.CustomTypeModelSharedSlice
|
|
156
|
+
? prismicT.SharedSlice<P extends string ? P : string>
|
|
157
|
+
: never;
|
|
158
|
+
}>,
|
|
159
|
+
State
|
|
160
|
+
>
|
|
161
|
+
: T extends prismicT.CustomTypeModelSlice
|
|
162
|
+
? CustomTypeModelSliceValue<T>
|
|
163
|
+
: T extends prismicT.CustomTypeModelSharedSlice
|
|
164
|
+
? // TODO: Allow providing a union of of Shared Slices
|
|
165
|
+
prismicT.SharedSlice
|
|
166
|
+
: T extends prismicT.SharedSliceModel
|
|
167
|
+
? SharedSliceModelValue<T>
|
|
168
|
+
: T extends prismicT.SharedSliceModelVariation
|
|
169
|
+
? SharedSliceModelVariationValue<T>
|
|
170
|
+
: never;
|
|
141
171
|
|
|
142
172
|
type CustomTypeModelValue<T extends prismicT.CustomTypeModel> =
|
|
143
|
-
prismicT.PrismicDocument<
|
|
173
|
+
prismicT.PrismicDocument<
|
|
174
|
+
ModelValueMap<{
|
|
175
|
+
[P in keyof ValueOf<T["json"]> as ValueOf<
|
|
176
|
+
T["json"]
|
|
177
|
+
>[P]["type"] extends typeof prismicT.CustomTypeModelFieldType.UID
|
|
178
|
+
? never
|
|
179
|
+
: P]: ValueOf<T["json"]>[P];
|
|
180
|
+
}>
|
|
181
|
+
>;
|
|
144
182
|
|
|
145
183
|
type CustomTypeModelFieldForGroupValue<
|
|
146
184
|
T extends prismicT.CustomTypeModelFieldForGroup,
|
|
185
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
147
186
|
> = T extends prismicT.CustomTypeModelBooleanField
|
|
148
187
|
? prismicT.BooleanField
|
|
149
188
|
: T extends prismicT.CustomTypeModelColorField
|
|
150
|
-
? prismicT.ColorField
|
|
189
|
+
? prismicT.ColorField<State>
|
|
151
190
|
: T extends prismicT.CustomTypeModelTitleField
|
|
152
|
-
? prismicT.TitleField
|
|
191
|
+
? prismicT.TitleField<State>
|
|
153
192
|
: T extends prismicT.CustomTypeModelRichTextField
|
|
154
|
-
? prismicT.RichTextField
|
|
193
|
+
? prismicT.RichTextField<State>
|
|
155
194
|
: T extends prismicT.CustomTypeModelImageField
|
|
156
|
-
? prismicT.ImageField
|
|
195
|
+
? prismicT.ImageField<string | null, State>
|
|
157
196
|
: T extends prismicT.CustomTypeModelLinkField
|
|
158
|
-
? prismicT.LinkField
|
|
197
|
+
? prismicT.LinkField<string, string, never, State>
|
|
159
198
|
: T extends prismicT.CustomTypeModelLinkToMediaField
|
|
160
|
-
? prismicT.LinkToMediaField
|
|
199
|
+
? prismicT.LinkToMediaField<State>
|
|
161
200
|
: T extends prismicT.CustomTypeModelContentRelationshipField
|
|
162
|
-
? prismicT.RelationField
|
|
201
|
+
? prismicT.RelationField<string, string, never, State>
|
|
163
202
|
: T extends prismicT.CustomTypeModelDateField
|
|
164
|
-
? prismicT.DateField
|
|
203
|
+
? prismicT.DateField<State>
|
|
165
204
|
: T extends prismicT.CustomTypeModelTimestampField
|
|
166
|
-
? prismicT.TimestampField
|
|
205
|
+
? prismicT.TimestampField<State>
|
|
167
206
|
: T extends prismicT.CustomTypeModelNumberField
|
|
168
|
-
? prismicT.NumberField
|
|
207
|
+
? prismicT.NumberField<State>
|
|
169
208
|
: T extends prismicT.CustomTypeModelKeyTextField
|
|
170
|
-
? prismicT.KeyTextField
|
|
209
|
+
? prismicT.KeyTextField<State>
|
|
171
210
|
: T extends prismicT.CustomTypeModelSelectField
|
|
172
|
-
? prismicT.SelectField
|
|
211
|
+
? prismicT.SelectField<string, State>
|
|
173
212
|
: T extends prismicT.CustomTypeModelEmbedField
|
|
174
|
-
? prismicT.EmbedField
|
|
213
|
+
? prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra, State>
|
|
175
214
|
: T extends prismicT.CustomTypeModelGeoPointField
|
|
176
|
-
? prismicT.GeoPointField
|
|
215
|
+
? prismicT.GeoPointField<State>
|
|
177
216
|
: T extends prismicT.CustomTypeModelIntegrationFieldsField
|
|
178
|
-
? prismicT.IntegrationFields
|
|
217
|
+
? prismicT.IntegrationFields<unknown, State>
|
|
179
218
|
: never;
|
|
180
219
|
|
|
181
220
|
type CustomTypeModelGroupFieldValue<
|
|
182
221
|
T extends prismicT.CustomTypeModelGroupField,
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
222
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
223
|
+
> = prismicT.GroupField<ModelValueMap<T["config"]["fields"]>, State>;
|
|
224
|
+
|
|
225
|
+
type CustomTypeModelSliceValue<
|
|
226
|
+
T extends prismicT.CustomTypeModelSlice,
|
|
227
|
+
SliceType = string,
|
|
228
|
+
> = prismicT.Slice<
|
|
229
|
+
SliceType,
|
|
230
|
+
ModelValueMap<T["non-repeat"]>,
|
|
231
|
+
ModelValueMap<T["repeat"]>
|
|
232
|
+
>;
|
|
191
233
|
|
|
192
234
|
type SharedSliceModelValue<T extends prismicT.SharedSliceModel> =
|
|
193
235
|
prismicT.SharedSlice<
|
package/src/value/boolean.ts
CHANGED
package/src/value/color.ts
CHANGED
|
@@ -2,16 +2,26 @@ import * as prismicT from "@prismicio/types";
|
|
|
2
2
|
|
|
3
3
|
import { createFaker } from "../lib/createFaker";
|
|
4
4
|
|
|
5
|
-
import { MockValueConfig } from "../types";
|
|
5
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
6
6
|
|
|
7
7
|
export type MockColorValueConfig<
|
|
8
8
|
Model extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,
|
|
9
|
-
|
|
9
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
10
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
10
11
|
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
export type MockColorValue<
|
|
13
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
14
|
+
> = prismicT.ColorField<State>;
|
|
15
|
+
|
|
16
|
+
export const color = <
|
|
17
|
+
Model extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,
|
|
18
|
+
State extends prismicT.FieldState = "filled",
|
|
19
|
+
>(
|
|
20
|
+
config: MockColorValueConfig<Model, State> = {},
|
|
21
|
+
): MockColorValue<State> => {
|
|
14
22
|
const faker = createFaker(config.seed);
|
|
15
23
|
|
|
16
|
-
return
|
|
24
|
+
return (
|
|
25
|
+
config.state === "empty" ? null : faker.hexColor().toUpperCase()
|
|
26
|
+
) as MockColorValue<State>;
|
|
17
27
|
};
|
|
@@ -5,81 +5,96 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
import { generateCustomTypeId } from "../lib/generateCustomTypeId";
|
|
6
6
|
import { generateTags } from "../lib/generateTags";
|
|
7
7
|
|
|
8
|
-
import { MockValueConfig } from "../types";
|
|
8
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
9
9
|
|
|
10
10
|
import * as modelGen from "../model";
|
|
11
11
|
|
|
12
12
|
import { document as documentGen } from "./document";
|
|
13
13
|
|
|
14
14
|
export type MockContentRelationshipValueConfig<
|
|
15
|
-
IsFilled extends boolean = boolean,
|
|
16
15
|
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
16
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
17
17
|
> = {
|
|
18
|
-
isFilled?: IsFilled;
|
|
19
18
|
/**
|
|
20
19
|
* A list of potential documents to which the field can be linked.
|
|
21
20
|
*/
|
|
22
21
|
linkableDocuments?: prismicT.PrismicDocument[];
|
|
23
|
-
} & MockValueConfig<Model
|
|
22
|
+
} & MockValueConfig<Model> &
|
|
23
|
+
MockValueStateConfig<State>;
|
|
24
24
|
|
|
25
|
-
type MockContentRelationshipValue<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
type MockContentRelationshipValue<
|
|
26
|
+
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
27
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
28
|
+
> = prismicT.RelationField<
|
|
29
|
+
Model["config"]["customtypes"],
|
|
30
|
+
string,
|
|
31
|
+
never,
|
|
32
|
+
State
|
|
33
|
+
>;
|
|
29
34
|
|
|
30
35
|
export const contentRelationship = <
|
|
31
|
-
IsFilled extends boolean = true,
|
|
32
36
|
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
37
|
+
State extends prismicT.FieldState = "filled",
|
|
33
38
|
>(
|
|
34
|
-
config: MockContentRelationshipValueConfig<
|
|
35
|
-
): MockContentRelationshipValue<
|
|
39
|
+
config: MockContentRelationshipValueConfig<Model, State> = {},
|
|
40
|
+
): MockContentRelationshipValue<Model, State> => {
|
|
36
41
|
const faker = createFaker(config.seed);
|
|
37
42
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
if (config.state === "empty") {
|
|
44
|
+
return {
|
|
45
|
+
link_type: prismicT.LinkType.Document,
|
|
46
|
+
} as MockContentRelationshipValue<Model, State>;
|
|
47
|
+
} else {
|
|
41
48
|
const model =
|
|
42
49
|
config.model || modelGen.contentRelationship({ seed: config.seed });
|
|
43
50
|
|
|
44
51
|
const linkableDocuments = config.linkableDocuments
|
|
45
|
-
? config.linkableDocuments.filter(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
shouldKeep
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
? config.linkableDocuments.filter(
|
|
53
|
+
(
|
|
54
|
+
document,
|
|
55
|
+
): document is prismicT.PrismicDocument<
|
|
56
|
+
never,
|
|
57
|
+
NonNullable<Model["config"]["customtypes"]>[number]
|
|
58
|
+
> => {
|
|
59
|
+
let shouldKeep = true;
|
|
60
|
+
|
|
61
|
+
if (model.config.customtypes) {
|
|
62
|
+
shouldKeep =
|
|
63
|
+
shouldKeep && model.config.customtypes.includes(document.type);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (model.config.tags) {
|
|
67
|
+
shouldKeep =
|
|
68
|
+
shouldKeep &&
|
|
69
|
+
model.config.tags.some((tag) => document.tags.includes(tag));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return shouldKeep;
|
|
73
|
+
},
|
|
74
|
+
)
|
|
61
75
|
: [
|
|
62
76
|
{
|
|
63
77
|
...documentGen({ seed: config.seed }),
|
|
64
78
|
type: model.config.customtypes
|
|
65
|
-
? faker.
|
|
79
|
+
? faker.randomElement(model.config.customtypes)
|
|
66
80
|
: generateCustomTypeId({ seed: config.seed }),
|
|
67
81
|
tags: model.config.tags
|
|
68
|
-
? faker.
|
|
82
|
+
? faker.randomElements(model.config.tags)
|
|
69
83
|
: generateTags({ seed: config.seed }),
|
|
70
|
-
}
|
|
84
|
+
} as prismicT.PrismicDocument<
|
|
85
|
+
never,
|
|
86
|
+
NonNullable<Model["config"]["customtypes"]>[number]
|
|
87
|
+
>,
|
|
71
88
|
];
|
|
72
89
|
|
|
73
|
-
const document = faker.
|
|
90
|
+
const document = faker.randomElement(linkableDocuments);
|
|
74
91
|
|
|
75
92
|
if (!document) {
|
|
76
93
|
throw new Error("A linkable document could not be found.");
|
|
77
94
|
}
|
|
78
95
|
|
|
79
|
-
return buildContentRelationshipField({
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
link_type: prismicT.LinkType.Document,
|
|
83
|
-
} as MockContentRelationshipValue<IsFilled>;
|
|
96
|
+
return buildContentRelationshipField({
|
|
97
|
+
document,
|
|
98
|
+
}) as unknown as MockContentRelationshipValue<Model, State>;
|
|
84
99
|
}
|
|
85
100
|
};
|
package/src/value/customType.ts
CHANGED
|
@@ -63,11 +63,11 @@ export const customType = <
|
|
|
63
63
|
|
|
64
64
|
return {
|
|
65
65
|
type: model.id,
|
|
66
|
-
id: faker.
|
|
67
|
-
uid: hasUID ? changeCase.snakeCase(faker.
|
|
68
|
-
url: withURL ? faker.
|
|
69
|
-
href: faker.
|
|
70
|
-
lang: faker.
|
|
66
|
+
id: faker.hash(7),
|
|
67
|
+
uid: hasUID ? changeCase.snakeCase(faker.words(faker.range(1, 3))) : null,
|
|
68
|
+
url: withURL ? faker.url() : null,
|
|
69
|
+
href: faker.url(),
|
|
70
|
+
lang: faker.word(),
|
|
71
71
|
tags: generateTags({ seed: config.seed }),
|
|
72
72
|
slugs: [] as prismicT.PrismicDocument["slugs"],
|
|
73
73
|
linked_documents: [] as prismicT.PrismicDocument["linked_documents"],
|