@prismicio/mock 0.0.4 → 0.0.8
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 +54 -35
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.ts +4 -2
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/{index.mjs → index.js} +116 -63
- package/dist/api/index.js.map +1 -0
- package/dist/index.cjs +365 -417
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +157 -243
- package/dist/{index.mjs → index.js} +359 -409
- package/dist/index.js.map +1 -0
- package/dist/model/index.cjs +164 -204
- package/dist/model/index.cjs.map +1 -0
- package/dist/model/index.d.ts +73 -97
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +462 -0
- package/dist/model/index.js.map +1 -0
- package/dist/value/index.cjs +310 -519
- package/dist/value/index.cjs.map +1 -0
- package/dist/value/index.d.ts +71 -132
- package/dist/value/index.d.ts.map +1 -0
- package/dist/value/{index.mjs → index.js} +474 -629
- package/dist/value/index.js.map +1 -0
- package/package.json +21 -21
- package/src/constants.ts +3 -1
- package/src/lib/buildAlternativeLanguage.ts +18 -0
- package/src/lib/buildContentRelationshipField.ts +12 -5
- package/src/lib/buildEmbedField.ts +1 -1
- package/src/lib/buildImageFieldImage.ts +48 -0
- package/src/lib/createFaker.ts +19 -10
- package/src/lib/valueForModelMap.ts +2 -2
- package/src/model/buildMockGroupFieldMap.ts +65 -0
- package/src/model/contentRelationship.ts +14 -21
- package/src/model/customType.ts +49 -48
- package/src/model/group.ts +8 -15
- package/src/model/image.ts +13 -13
- package/src/model/index.ts +2 -0
- package/src/model/integrationFields.ts +4 -2
- package/src/model/select.ts +11 -16
- package/src/model/sharedSlice.ts +23 -30
- package/src/model/sharedSliceVariation.ts +33 -21
- package/src/model/slice.ts +15 -19
- package/src/model/sliceZone.ts +25 -42
- package/src/types.ts +130 -83
- package/src/value/color.ts +16 -6
- package/src/value/contentRelationship.ts +52 -36
- package/src/value/customType.ts +22 -3
- package/src/value/date.ts +25 -9
- package/src/value/embed.ts +18 -6
- package/src/value/geoPoint.ts +21 -9
- package/src/value/group.ts +35 -44
- package/src/value/image.ts +22 -9
- package/src/value/integrationFields.ts +26 -14
- package/src/value/keyText.ts +18 -6
- package/src/value/link.ts +33 -34
- package/src/value/linkToMedia.ts +15 -20
- package/src/value/number.ts +16 -6
- package/src/value/richText/heading.ts +7 -7
- package/src/value/richText/image.ts +6 -2
- package/src/value/richText/index.ts +1 -1
- package/src/value/select.ts +23 -8
- package/src/value/sharedSlice.ts +2 -2
- package/src/value/sharedSliceVariation.ts +6 -34
- package/src/value/slice.ts +5 -30
- package/src/value/sliceZone.ts +60 -69
- package/src/value/timestamp.ts +19 -6
- package/src/value/title.ts +26 -13
- package/src/value/uid.ts +1 -1
- package/dist/model/index.mjs +0 -448
- package/src/lib/buildImageField.ts +0 -34
- package/src/lib/buildMockGroupFieldMap.ts +0 -84
package/src/types.ts
CHANGED
|
@@ -27,6 +27,8 @@ 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 | number[];
|
|
31
|
+
|
|
30
32
|
export interface MockImageData {
|
|
31
33
|
url: string;
|
|
32
34
|
width: number;
|
|
@@ -43,11 +45,11 @@ export interface MockEmbedData {
|
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
export type MockRestApiConfig = {
|
|
46
|
-
seed?:
|
|
48
|
+
seed?: Seed;
|
|
47
49
|
};
|
|
48
50
|
|
|
49
51
|
export type MockModelConfig = {
|
|
50
|
-
seed?:
|
|
52
|
+
seed?: Seed;
|
|
51
53
|
};
|
|
52
54
|
|
|
53
55
|
// TODO: Add to @prismicio/types
|
|
@@ -58,45 +60,62 @@ export type PrismicModel =
|
|
|
58
60
|
| prismicT.SharedSliceModel
|
|
59
61
|
| prismicT.SharedSliceModelVariation;
|
|
60
62
|
|
|
63
|
+
export type GroupFieldModelMap = Record<
|
|
64
|
+
string,
|
|
65
|
+
prismicT.CustomTypeModelFieldForGroup
|
|
66
|
+
>;
|
|
67
|
+
|
|
61
68
|
export type MockValueConfig<Model extends PrismicModel = PrismicModel> = {
|
|
62
|
-
seed?:
|
|
69
|
+
seed?: Seed;
|
|
63
70
|
model?: Model;
|
|
64
71
|
};
|
|
65
72
|
|
|
66
|
-
export type
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
73
|
+
export type MockValueStateConfig<
|
|
74
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
75
|
+
> = {
|
|
76
|
+
state?: State;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export type MockValueConfigForModel<
|
|
80
|
+
Model extends PrismicModel,
|
|
81
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
82
|
+
> = Model extends prismicT.CustomTypeModelBooleanField
|
|
83
|
+
? value.MockBooleanValueConfig<Model>
|
|
84
|
+
: Model extends prismicT.CustomTypeModelColorField
|
|
85
|
+
? value.MockColorValueConfig<Model, State>
|
|
86
|
+
: Model extends prismicT.CustomTypeModelContentRelationshipField
|
|
87
|
+
? value.MockContentRelationshipValueConfig<Model, State>
|
|
88
|
+
: Model extends prismicT.CustomTypeModelDateField
|
|
89
|
+
? value.MockDateValueConfig<Model, State>
|
|
90
|
+
: Model extends prismicT.CustomTypeModelEmbedField
|
|
91
|
+
? value.MockEmbedValueConfig<Model, State>
|
|
92
|
+
: Model extends prismicT.CustomTypeModelGeoPointField
|
|
93
|
+
? value.MockGeoPointValueConfig<Model, State>
|
|
94
|
+
: Model extends prismicT.CustomTypeModelImageField
|
|
95
|
+
? value.MockImageValueConfig<Model, State>
|
|
96
|
+
: Model extends prismicT.CustomTypeModelKeyTextField
|
|
97
|
+
? value.MockKeyTextValueConfig<Model, State>
|
|
98
|
+
: Model extends prismicT.CustomTypeModelLinkField
|
|
99
|
+
? value.MockLinkValueConfig<
|
|
100
|
+
typeof prismicT.LinkType[keyof typeof prismicT.LinkType],
|
|
101
|
+
Model,
|
|
102
|
+
State
|
|
103
|
+
>
|
|
104
|
+
: Model extends prismicT.CustomTypeModelLinkToMediaField
|
|
105
|
+
? value.MockLinkToMediaValueConfig<Model, State>
|
|
106
|
+
: Model extends prismicT.CustomTypeModelNumberField
|
|
107
|
+
? value.MockNumberValueConfig<Model, State>
|
|
108
|
+
: Model extends prismicT.CustomTypeModelRichTextField
|
|
109
|
+
? value.MockRichTextValueConfig
|
|
110
|
+
: Model extends prismicT.CustomTypeModelSelectField
|
|
111
|
+
? value.MockSelectValueConfig<Model, State>
|
|
112
|
+
: Model extends prismicT.CustomTypeModelTimestampField
|
|
113
|
+
? value.MockTimestampValueConfig<Model, State>
|
|
114
|
+
: Model extends prismicT.CustomTypeModelTitleField
|
|
115
|
+
? value.MockTitleValueConfig<Model, State>
|
|
116
|
+
: Model extends prismicT.CustomTypeModelUIDField
|
|
117
|
+
? value.MockUIDValueConfig<Model>
|
|
118
|
+
: never;
|
|
100
119
|
|
|
101
120
|
type CustomTypeModelStructuredTextField =
|
|
102
121
|
| prismicT.CustomTypeModelRichTextField
|
|
@@ -105,7 +124,7 @@ type CustomTypeModelStructuredTextField =
|
|
|
105
124
|
export type MockRichTextValueConfig<
|
|
106
125
|
Model extends CustomTypeModelStructuredTextField = CustomTypeModelStructuredTextField,
|
|
107
126
|
> = {
|
|
108
|
-
seed?:
|
|
127
|
+
seed?: Seed;
|
|
109
128
|
model?: Model;
|
|
110
129
|
};
|
|
111
130
|
|
|
@@ -115,77 +134,105 @@ export type ModelValueMap<
|
|
|
115
134
|
[P in keyof T]: ModelValue<T[P]>;
|
|
116
135
|
};
|
|
117
136
|
|
|
118
|
-
export type ModelValue<
|
|
119
|
-
T extends
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
export type ModelValue<
|
|
138
|
+
T extends PrismicModel,
|
|
139
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
140
|
+
> = T extends prismicT.CustomTypeModel
|
|
141
|
+
? CustomTypeModelValue<T>
|
|
142
|
+
: T extends prismicT.CustomTypeModelUIDField
|
|
143
|
+
? prismicT.PrismicDocument["uid"]
|
|
144
|
+
: T extends prismicT.CustomTypeModelFieldForGroup
|
|
145
|
+
? CustomTypeModelFieldForGroupValue<T, State>
|
|
146
|
+
: T extends prismicT.CustomTypeModelGroupField
|
|
147
|
+
? CustomTypeModelGroupFieldValue<T, State>
|
|
148
|
+
: T extends prismicT.CustomTypeModelSliceZoneField
|
|
149
|
+
? prismicT.SliceZone<
|
|
150
|
+
ValueOf<{
|
|
151
|
+
[P in keyof T["config"]["choices"] as P extends string
|
|
152
|
+
? P
|
|
153
|
+
: never]: T["config"]["choices"][P] extends prismicT.CustomTypeModelSlice
|
|
154
|
+
? CustomTypeModelSliceValue<
|
|
155
|
+
T["config"]["choices"][P],
|
|
156
|
+
P extends string ? P : string
|
|
157
|
+
>
|
|
158
|
+
: T["config"]["choices"][P] extends prismicT.CustomTypeModelSharedSlice
|
|
159
|
+
? prismicT.SharedSlice<P extends string ? P : string>
|
|
160
|
+
: never;
|
|
161
|
+
}>,
|
|
162
|
+
State
|
|
163
|
+
>
|
|
164
|
+
: T extends prismicT.CustomTypeModelSlice
|
|
165
|
+
? CustomTypeModelSliceValue<T>
|
|
166
|
+
: T extends prismicT.CustomTypeModelSharedSlice
|
|
167
|
+
? // TODO: Allow providing a union of of Shared Slices
|
|
168
|
+
prismicT.SharedSlice
|
|
169
|
+
: T extends prismicT.SharedSliceModel
|
|
170
|
+
? SharedSliceModelValue<T>
|
|
171
|
+
: T extends prismicT.SharedSliceModelVariation
|
|
172
|
+
? SharedSliceModelVariationValue<T>
|
|
173
|
+
: never;
|
|
139
174
|
|
|
140
175
|
type CustomTypeModelValue<T extends prismicT.CustomTypeModel> =
|
|
141
|
-
prismicT.PrismicDocument<
|
|
176
|
+
prismicT.PrismicDocument<
|
|
177
|
+
ModelValueMap<{
|
|
178
|
+
[P in keyof ValueOf<T["json"]> as ValueOf<
|
|
179
|
+
T["json"]
|
|
180
|
+
>[P]["type"] extends typeof prismicT.CustomTypeModelFieldType.UID
|
|
181
|
+
? never
|
|
182
|
+
: P]: ValueOf<T["json"]>[P];
|
|
183
|
+
}>
|
|
184
|
+
>;
|
|
142
185
|
|
|
143
186
|
type CustomTypeModelFieldForGroupValue<
|
|
144
187
|
T extends prismicT.CustomTypeModelFieldForGroup,
|
|
188
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
145
189
|
> = T extends prismicT.CustomTypeModelBooleanField
|
|
146
190
|
? prismicT.BooleanField
|
|
147
191
|
: T extends prismicT.CustomTypeModelColorField
|
|
148
|
-
? prismicT.ColorField
|
|
192
|
+
? prismicT.ColorField<State>
|
|
149
193
|
: T extends prismicT.CustomTypeModelTitleField
|
|
150
|
-
? prismicT.TitleField
|
|
194
|
+
? prismicT.TitleField<State>
|
|
151
195
|
: T extends prismicT.CustomTypeModelRichTextField
|
|
152
|
-
? prismicT.RichTextField
|
|
196
|
+
? prismicT.RichTextField<State>
|
|
153
197
|
: T extends prismicT.CustomTypeModelImageField
|
|
154
|
-
? prismicT.ImageField
|
|
198
|
+
? prismicT.ImageField<string | null, State>
|
|
155
199
|
: T extends prismicT.CustomTypeModelLinkField
|
|
156
|
-
? prismicT.LinkField
|
|
200
|
+
? prismicT.LinkField<string, string, never, State>
|
|
157
201
|
: T extends prismicT.CustomTypeModelLinkToMediaField
|
|
158
|
-
? prismicT.LinkToMediaField
|
|
202
|
+
? prismicT.LinkToMediaField<State>
|
|
159
203
|
: T extends prismicT.CustomTypeModelContentRelationshipField
|
|
160
|
-
? prismicT.RelationField
|
|
204
|
+
? prismicT.RelationField<string, string, never, State>
|
|
161
205
|
: T extends prismicT.CustomTypeModelDateField
|
|
162
|
-
? prismicT.DateField
|
|
206
|
+
? prismicT.DateField<State>
|
|
163
207
|
: T extends prismicT.CustomTypeModelTimestampField
|
|
164
|
-
? prismicT.TimestampField
|
|
208
|
+
? prismicT.TimestampField<State>
|
|
165
209
|
: T extends prismicT.CustomTypeModelNumberField
|
|
166
|
-
? prismicT.NumberField
|
|
210
|
+
? prismicT.NumberField<State>
|
|
167
211
|
: T extends prismicT.CustomTypeModelKeyTextField
|
|
168
|
-
? prismicT.KeyTextField
|
|
212
|
+
? prismicT.KeyTextField<State>
|
|
169
213
|
: T extends prismicT.CustomTypeModelSelectField
|
|
170
|
-
? prismicT.SelectField
|
|
214
|
+
? prismicT.SelectField<string, State>
|
|
171
215
|
: T extends prismicT.CustomTypeModelEmbedField
|
|
172
|
-
? prismicT.EmbedField
|
|
216
|
+
? prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra, State>
|
|
173
217
|
: T extends prismicT.CustomTypeModelGeoPointField
|
|
174
|
-
? prismicT.GeoPointField
|
|
218
|
+
? prismicT.GeoPointField<State>
|
|
175
219
|
: T extends prismicT.CustomTypeModelIntegrationFieldsField
|
|
176
|
-
? prismicT.IntegrationFields
|
|
220
|
+
? prismicT.IntegrationFields<unknown, State>
|
|
177
221
|
: never;
|
|
178
222
|
|
|
179
223
|
type CustomTypeModelGroupFieldValue<
|
|
180
224
|
T extends prismicT.CustomTypeModelGroupField,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
225
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
226
|
+
> = prismicT.GroupField<ModelValueMap<T["config"]["fields"]>, State>;
|
|
227
|
+
|
|
228
|
+
type CustomTypeModelSliceValue<
|
|
229
|
+
T extends prismicT.CustomTypeModelSlice,
|
|
230
|
+
SliceType = string,
|
|
231
|
+
> = prismicT.Slice<
|
|
232
|
+
SliceType,
|
|
233
|
+
ModelValueMap<T["non-repeat"]>,
|
|
234
|
+
ModelValueMap<T["repeat"]>
|
|
235
|
+
>;
|
|
189
236
|
|
|
190
237
|
type SharedSliceModelValue<T extends prismicT.SharedSliceModel> =
|
|
191
238
|
prismicT.SharedSlice<
|
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.internet.color().toUpperCase()
|
|
26
|
+
) as MockColorValue<State>;
|
|
17
27
|
};
|
|
@@ -1,62 +1,77 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
+
import { buildContentRelationshipField } from "../lib/buildContentRelationshipField";
|
|
3
4
|
import { createFaker } from "../lib/createFaker";
|
|
5
|
+
import { generateCustomTypeId } from "../lib/generateCustomTypeId";
|
|
6
|
+
import { generateTags } from "../lib/generateTags";
|
|
4
7
|
|
|
5
|
-
import { MockValueConfig } from "../types";
|
|
8
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
6
9
|
|
|
7
10
|
import * as modelGen from "../model";
|
|
11
|
+
|
|
8
12
|
import { document as documentGen } from "./document";
|
|
9
|
-
import { buildContentRelationshipField } from "../lib/buildContentRelationshipField";
|
|
10
|
-
import { generateCustomTypeId } from "../lib/generateCustomTypeId";
|
|
11
|
-
import { generateTags } from "../lib/generateTags";
|
|
12
13
|
|
|
13
14
|
export type MockContentRelationshipValueConfig<
|
|
14
|
-
IsFilled extends boolean = boolean,
|
|
15
15
|
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
16
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
16
17
|
> = {
|
|
17
|
-
isFilled?: IsFilled;
|
|
18
18
|
/**
|
|
19
19
|
* A list of potential documents to which the field can be linked.
|
|
20
20
|
*/
|
|
21
21
|
linkableDocuments?: prismicT.PrismicDocument[];
|
|
22
|
-
} & MockValueConfig<Model
|
|
22
|
+
} & MockValueConfig<Model> &
|
|
23
|
+
MockValueStateConfig<State>;
|
|
23
24
|
|
|
24
|
-
type MockContentRelationshipValue<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
+
>;
|
|
28
34
|
|
|
29
35
|
export const contentRelationship = <
|
|
30
|
-
IsFilled extends boolean = true,
|
|
31
36
|
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
37
|
+
State extends prismicT.FieldState = "filled",
|
|
32
38
|
>(
|
|
33
|
-
config: MockContentRelationshipValueConfig<
|
|
34
|
-
): MockContentRelationshipValue<
|
|
39
|
+
config: MockContentRelationshipValueConfig<Model, State> = {},
|
|
40
|
+
): MockContentRelationshipValue<Model, State> => {
|
|
35
41
|
const faker = createFaker(config.seed);
|
|
36
42
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
if (config.state === "empty") {
|
|
44
|
+
return {
|
|
45
|
+
link_type: prismicT.LinkType.Document,
|
|
46
|
+
} as MockContentRelationshipValue<Model, State>;
|
|
47
|
+
} else {
|
|
40
48
|
const model =
|
|
41
49
|
config.model || modelGen.contentRelationship({ seed: config.seed });
|
|
42
50
|
|
|
43
51
|
const linkableDocuments = config.linkableDocuments
|
|
44
|
-
? config.linkableDocuments.filter(
|
|
45
|
-
|
|
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;
|
|
46
60
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
61
|
+
if (model.config.customtypes) {
|
|
62
|
+
shouldKeep =
|
|
63
|
+
shouldKeep && model.config.customtypes.includes(document.type);
|
|
64
|
+
}
|
|
51
65
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
66
|
+
if (model.config.tags) {
|
|
67
|
+
shouldKeep =
|
|
68
|
+
shouldKeep &&
|
|
69
|
+
model.config.tags.some((tag) => document.tags.includes(tag));
|
|
70
|
+
}
|
|
57
71
|
|
|
58
|
-
|
|
59
|
-
|
|
72
|
+
return shouldKeep;
|
|
73
|
+
},
|
|
74
|
+
)
|
|
60
75
|
: [
|
|
61
76
|
{
|
|
62
77
|
...documentGen({ seed: config.seed }),
|
|
@@ -66,7 +81,10 @@ export const contentRelationship = <
|
|
|
66
81
|
tags: model.config.tags
|
|
67
82
|
? faker.random.arrayElements(model.config.tags)
|
|
68
83
|
: generateTags({ seed: config.seed }),
|
|
69
|
-
}
|
|
84
|
+
} as prismicT.PrismicDocument<
|
|
85
|
+
never,
|
|
86
|
+
NonNullable<Model["config"]["customtypes"]>[number]
|
|
87
|
+
>,
|
|
70
88
|
];
|
|
71
89
|
|
|
72
90
|
const document = faker.random.arrayElement(linkableDocuments);
|
|
@@ -75,10 +93,8 @@ export const contentRelationship = <
|
|
|
75
93
|
throw new Error("A linkable document could not be found.");
|
|
76
94
|
}
|
|
77
95
|
|
|
78
|
-
return buildContentRelationshipField({
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
link_type: prismicT.LinkType.Document,
|
|
82
|
-
} as MockContentRelationshipValue<IsFilled>;
|
|
96
|
+
return buildContentRelationshipField({
|
|
97
|
+
document,
|
|
98
|
+
}) as unknown as MockContentRelationshipValue<Model, State>;
|
|
83
99
|
}
|
|
84
100
|
};
|
package/src/value/customType.ts
CHANGED
|
@@ -13,12 +13,13 @@ import { MockValueConfig, ModelValue } from "../types";
|
|
|
13
13
|
import * as modelGen from "../model";
|
|
14
14
|
|
|
15
15
|
import { timestamp } from "./timestamp";
|
|
16
|
+
import { buildAlternativeLanguage } from "../lib/buildAlternativeLanguage";
|
|
16
17
|
|
|
17
18
|
export type MockCustomTypeValueConfig<
|
|
18
19
|
Model extends prismicT.CustomTypeModel = prismicT.CustomTypeModel,
|
|
19
20
|
> = {
|
|
20
21
|
withURL?: boolean;
|
|
21
|
-
|
|
22
|
+
alternateLanguages?: prismicT.PrismicDocument[];
|
|
22
23
|
configs?: ValueForModelMapConfigs;
|
|
23
24
|
} & MockValueConfig<Model>;
|
|
24
25
|
|
|
@@ -36,12 +37,30 @@ export const customType = <
|
|
|
36
37
|
...Object.values(model.json),
|
|
37
38
|
) as prismicT.CustomTypeModelTab;
|
|
38
39
|
|
|
40
|
+
const dataFieldModelsMap: prismicT.CustomTypeModelTab = {};
|
|
41
|
+
for (const key in fieldModelsMap) {
|
|
42
|
+
const fieldModel = fieldModelsMap[key];
|
|
43
|
+
|
|
44
|
+
// UID fields must be filtered out since they are not represented in
|
|
45
|
+
// the document's `data` field.
|
|
46
|
+
if (fieldModel.type !== prismicT.CustomTypeModelFieldType.UID) {
|
|
47
|
+
dataFieldModelsMap[key] = fieldModel;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
39
51
|
const hasUID = Object.values(fieldModelsMap).some(
|
|
40
52
|
(fieldModel) => fieldModel.type === prismicT.CustomTypeModelFieldType.UID,
|
|
41
53
|
);
|
|
42
54
|
|
|
43
55
|
const withURL = config.withURL ?? true;
|
|
44
56
|
|
|
57
|
+
const alternateLanguages = (config.alternateLanguages || []).map(
|
|
58
|
+
(alternateLanguageDocument) =>
|
|
59
|
+
buildAlternativeLanguage({
|
|
60
|
+
document: alternateLanguageDocument,
|
|
61
|
+
}),
|
|
62
|
+
);
|
|
63
|
+
|
|
45
64
|
return {
|
|
46
65
|
type: model.id,
|
|
47
66
|
id: faker.git.shortSha(),
|
|
@@ -52,12 +71,12 @@ export const customType = <
|
|
|
52
71
|
tags: generateTags({ seed: config.seed }),
|
|
53
72
|
slugs: [] as prismicT.PrismicDocument["slugs"],
|
|
54
73
|
linked_documents: [] as prismicT.PrismicDocument["linked_documents"],
|
|
55
|
-
alternate_languages:
|
|
74
|
+
alternate_languages: alternateLanguages,
|
|
56
75
|
first_publication_date: timestamp({ seed: config.seed }),
|
|
57
76
|
last_publication_date: timestamp({ seed: config.seed }),
|
|
58
77
|
data: valueForModelMap({
|
|
59
78
|
seed: config.seed,
|
|
60
|
-
map:
|
|
79
|
+
map: dataFieldModelsMap,
|
|
61
80
|
configs: config.configs,
|
|
62
81
|
}),
|
|
63
82
|
} as ModelValue<Model>;
|
package/src/value/date.ts
CHANGED
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
-
import { MockValueConfig } from "../types";
|
|
3
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
4
4
|
|
|
5
5
|
import { MockTimestampValueConfig, timestamp } from "./timestamp";
|
|
6
6
|
|
|
7
7
|
export type MockDateValueConfig<
|
|
8
8
|
Model extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,
|
|
9
|
-
|
|
9
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
10
|
+
> = Pick<MockTimestampValueConfig, "after" | "before"> &
|
|
11
|
+
MockValueConfig<Model> &
|
|
12
|
+
MockValueStateConfig<State>;
|
|
10
13
|
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
export type MockDateValue<
|
|
15
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
16
|
+
> = prismicT.DateField<State>;
|
|
17
|
+
|
|
18
|
+
export const date = <
|
|
19
|
+
Model extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,
|
|
20
|
+
State extends prismicT.FieldState = "filled",
|
|
21
|
+
>(
|
|
22
|
+
config: MockDateValueConfig<Model, State> = {},
|
|
23
|
+
): MockDateValue<State> => {
|
|
24
|
+
return (
|
|
25
|
+
config.state === "empty"
|
|
26
|
+
? null
|
|
27
|
+
: timestamp({
|
|
28
|
+
seed: config.seed,
|
|
29
|
+
after: config.after,
|
|
30
|
+
before: config.before,
|
|
31
|
+
state: "filled",
|
|
32
|
+
}).split("T")[0]
|
|
33
|
+
) as MockDateValue<State>;
|
|
18
34
|
};
|
package/src/value/embed.ts
CHANGED
|
@@ -3,16 +3,28 @@ import * as prismicT from "@prismicio/types";
|
|
|
3
3
|
import { buildEmbedField } from "../lib/buildEmbedField";
|
|
4
4
|
import { getMockEmbedData } from "../lib/getMockEmbedData";
|
|
5
5
|
|
|
6
|
-
import { MockValueConfig } from "../types";
|
|
6
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
7
7
|
|
|
8
8
|
export type MockEmbedValueConfig<
|
|
9
9
|
Model extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,
|
|
10
|
-
|
|
10
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
11
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
11
12
|
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
export type MockEmbedValue<
|
|
14
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
15
|
+
> = prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra, State>;
|
|
16
|
+
|
|
17
|
+
export const embed = <
|
|
18
|
+
Model extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,
|
|
19
|
+
State extends prismicT.FieldState = "filled",
|
|
20
|
+
>(
|
|
21
|
+
config: MockEmbedValueConfig<Model, State> = {},
|
|
22
|
+
): MockEmbedValue<State> => {
|
|
15
23
|
const embedData = getMockEmbedData({ seed: config.seed });
|
|
16
24
|
|
|
17
|
-
return
|
|
25
|
+
return (
|
|
26
|
+
config.state === "empty"
|
|
27
|
+
? {}
|
|
28
|
+
: buildEmbedField({ seed: config.seed, embedData })
|
|
29
|
+
) as MockEmbedValue<State>;
|
|
18
30
|
};
|
package/src/value/geoPoint.ts
CHANGED
|
@@ -2,21 +2,33 @@ 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 MockGeoPointValueConfig<
|
|
8
8
|
Model extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,
|
|
9
|
-
|
|
9
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
10
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
10
11
|
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
export type MockGeoPointValue<
|
|
13
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
14
|
+
> = prismicT.GeoPointField<State>;
|
|
15
|
+
|
|
16
|
+
export const geoPoint = <
|
|
17
|
+
Model extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,
|
|
18
|
+
State extends prismicT.FieldState = "filled",
|
|
19
|
+
>(
|
|
20
|
+
config: MockGeoPointValueConfig<Model, State> = {},
|
|
21
|
+
): MockGeoPointValue<State> => {
|
|
14
22
|
const faker = createFaker(config.seed);
|
|
15
23
|
|
|
16
24
|
const coordinates = faker.address.nearbyGPSCoordinate();
|
|
17
25
|
|
|
18
|
-
return
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
return (
|
|
27
|
+
config.state === "empty"
|
|
28
|
+
? {}
|
|
29
|
+
: {
|
|
30
|
+
longitude: Number.parseFloat(coordinates[0]),
|
|
31
|
+
latitude: Number.parseFloat(coordinates[1]),
|
|
32
|
+
}
|
|
33
|
+
) as MockGeoPointValue<State>;
|
|
22
34
|
};
|