@prismicio/mock 0.0.7 → 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/dist/index.cjs +65 -53
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +27 -25
- package/dist/index.js +65 -53
- package/dist/index.js.map +1 -1
- package/dist/model/index.cjs +1 -1
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.ts +3 -1
- package/dist/model/index.js +1 -1
- package/dist/model/index.js.map +1 -1
- package/dist/value/index.cjs +64 -52
- package/dist/value/index.cjs.map +1 -1
- package/dist/value/index.d.ts +21 -21
- package/dist/value/index.js +64 -52
- package/dist/value/index.js.map +1 -1
- package/package.json +1 -1
- package/src/model/integrationFields.ts +4 -2
- package/src/types.ts +99 -83
- package/src/value/group.ts +35 -24
- package/src/value/sliceZone.ts +56 -49
- package/src/value/title.ts +26 -13
|
@@ -5,7 +5,9 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
export type MockIntegrationFieldsModelConfig =
|
|
8
|
+
export type MockIntegrationFieldsModelConfig = {
|
|
9
|
+
catalog?: string;
|
|
10
|
+
} & MockModelConfig;
|
|
9
11
|
|
|
10
12
|
export const integrationFields = (
|
|
11
13
|
config: MockIntegrationFieldsModelConfig = {},
|
|
@@ -16,7 +18,7 @@ export const integrationFields = (
|
|
|
16
18
|
type: prismicT.CustomTypeModelFieldType.IntegrationFields,
|
|
17
19
|
config: {
|
|
18
20
|
label: changeCase.capitalCase(faker.company.bsNoun()),
|
|
19
|
-
catalog: changeCase.snakeCase(faker.lorem.words(4)),
|
|
21
|
+
catalog: config.catalog || changeCase.snakeCase(faker.lorem.words(4)),
|
|
20
22
|
},
|
|
21
23
|
};
|
|
22
24
|
};
|
package/src/types.ts
CHANGED
|
@@ -10,8 +10,10 @@ export type IterableElement<TargetIterable> = TargetIterable extends Iterable<
|
|
|
10
10
|
? ElementType
|
|
11
11
|
: never;
|
|
12
12
|
|
|
13
|
-
export type ValueOf<
|
|
14
|
-
ObjectType
|
|
13
|
+
export type ValueOf<
|
|
14
|
+
ObjectType,
|
|
15
|
+
ValueType extends keyof ObjectType = keyof ObjectType,
|
|
16
|
+
> = ObjectType[ValueType];
|
|
15
17
|
|
|
16
18
|
type Simplify<T> = { [KeyType in keyof T]: T[KeyType] };
|
|
17
19
|
type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<
|
|
@@ -74,40 +76,46 @@ export type MockValueStateConfig<
|
|
|
74
76
|
state?: State;
|
|
75
77
|
};
|
|
76
78
|
|
|
77
|
-
export type MockValueConfigForModel<
|
|
78
|
-
Model extends
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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;
|
|
111
119
|
|
|
112
120
|
type CustomTypeModelStructuredTextField =
|
|
113
121
|
| prismicT.CustomTypeModelRichTextField
|
|
@@ -126,37 +134,43 @@ export type ModelValueMap<
|
|
|
126
134
|
[P in keyof T]: ModelValue<T[P]>;
|
|
127
135
|
};
|
|
128
136
|
|
|
129
|
-
export type ModelValue<
|
|
130
|
-
T extends
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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;
|
|
160
174
|
|
|
161
175
|
type CustomTypeModelValue<T extends prismicT.CustomTypeModel> =
|
|
162
176
|
prismicT.PrismicDocument<
|
|
@@ -171,43 +185,45 @@ type CustomTypeModelValue<T extends prismicT.CustomTypeModel> =
|
|
|
171
185
|
|
|
172
186
|
type CustomTypeModelFieldForGroupValue<
|
|
173
187
|
T extends prismicT.CustomTypeModelFieldForGroup,
|
|
188
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
174
189
|
> = T extends prismicT.CustomTypeModelBooleanField
|
|
175
190
|
? prismicT.BooleanField
|
|
176
191
|
: T extends prismicT.CustomTypeModelColorField
|
|
177
|
-
? prismicT.ColorField
|
|
192
|
+
? prismicT.ColorField<State>
|
|
178
193
|
: T extends prismicT.CustomTypeModelTitleField
|
|
179
|
-
? prismicT.TitleField
|
|
194
|
+
? prismicT.TitleField<State>
|
|
180
195
|
: T extends prismicT.CustomTypeModelRichTextField
|
|
181
|
-
? prismicT.RichTextField
|
|
196
|
+
? prismicT.RichTextField<State>
|
|
182
197
|
: T extends prismicT.CustomTypeModelImageField
|
|
183
|
-
? prismicT.ImageField
|
|
198
|
+
? prismicT.ImageField<string | null, State>
|
|
184
199
|
: T extends prismicT.CustomTypeModelLinkField
|
|
185
|
-
? prismicT.LinkField
|
|
200
|
+
? prismicT.LinkField<string, string, never, State>
|
|
186
201
|
: T extends prismicT.CustomTypeModelLinkToMediaField
|
|
187
|
-
? prismicT.LinkToMediaField
|
|
202
|
+
? prismicT.LinkToMediaField<State>
|
|
188
203
|
: T extends prismicT.CustomTypeModelContentRelationshipField
|
|
189
|
-
? prismicT.RelationField
|
|
204
|
+
? prismicT.RelationField<string, string, never, State>
|
|
190
205
|
: T extends prismicT.CustomTypeModelDateField
|
|
191
|
-
? prismicT.DateField
|
|
206
|
+
? prismicT.DateField<State>
|
|
192
207
|
: T extends prismicT.CustomTypeModelTimestampField
|
|
193
|
-
? prismicT.TimestampField
|
|
208
|
+
? prismicT.TimestampField<State>
|
|
194
209
|
: T extends prismicT.CustomTypeModelNumberField
|
|
195
|
-
? prismicT.NumberField
|
|
210
|
+
? prismicT.NumberField<State>
|
|
196
211
|
: T extends prismicT.CustomTypeModelKeyTextField
|
|
197
|
-
? prismicT.KeyTextField
|
|
212
|
+
? prismicT.KeyTextField<State>
|
|
198
213
|
: T extends prismicT.CustomTypeModelSelectField
|
|
199
|
-
? prismicT.SelectField
|
|
214
|
+
? prismicT.SelectField<string, State>
|
|
200
215
|
: T extends prismicT.CustomTypeModelEmbedField
|
|
201
|
-
? prismicT.EmbedField
|
|
216
|
+
? prismicT.EmbedField<prismicT.AnyOEmbed & prismicT.OEmbedExtra, State>
|
|
202
217
|
: T extends prismicT.CustomTypeModelGeoPointField
|
|
203
|
-
? prismicT.GeoPointField
|
|
218
|
+
? prismicT.GeoPointField<State>
|
|
204
219
|
: T extends prismicT.CustomTypeModelIntegrationFieldsField
|
|
205
|
-
? prismicT.IntegrationFields
|
|
220
|
+
? prismicT.IntegrationFields<unknown, State>
|
|
206
221
|
: never;
|
|
207
222
|
|
|
208
223
|
type CustomTypeModelGroupFieldValue<
|
|
209
224
|
T extends prismicT.CustomTypeModelGroupField,
|
|
210
|
-
|
|
225
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
226
|
+
> = prismicT.GroupField<ModelValueMap<T["config"]["fields"]>, State>;
|
|
211
227
|
|
|
212
228
|
type CustomTypeModelSliceValue<
|
|
213
229
|
T extends prismicT.CustomTypeModelSlice,
|
package/src/value/group.ts
CHANGED
|
@@ -6,40 +6,51 @@ import {
|
|
|
6
6
|
ValueForModelMapConfigs,
|
|
7
7
|
} from "../lib/valueForModelMap";
|
|
8
8
|
|
|
9
|
-
import { MockValueConfig, ModelValue } from "../types";
|
|
9
|
+
import { MockValueConfig, MockValueStateConfig, ModelValue } from "../types";
|
|
10
10
|
|
|
11
11
|
import * as modelGen from "../model";
|
|
12
12
|
|
|
13
13
|
export type MockGroupValueConfig<
|
|
14
14
|
Model extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,
|
|
15
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
15
16
|
> = {
|
|
16
|
-
itemsCount?: number;
|
|
17
|
+
itemsCount?: State extends "empty" ? 0 : number;
|
|
17
18
|
configs?: ValueForModelMapConfigs;
|
|
18
|
-
} & MockValueConfig<Model
|
|
19
|
+
} & MockValueConfig<Model> &
|
|
20
|
+
MockValueStateConfig<State>;
|
|
21
|
+
|
|
22
|
+
export type MockGroupValue<
|
|
23
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
24
|
+
> = prismicT.DateField<State>;
|
|
19
25
|
|
|
20
26
|
export const group = <
|
|
21
27
|
Model extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,
|
|
28
|
+
State extends prismicT.FieldState = "filled",
|
|
22
29
|
>(
|
|
23
|
-
config: MockGroupValueConfig<Model> = {},
|
|
24
|
-
): ModelValue<Model> => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
config.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
.fill(undefined)
|
|
38
|
-
.map(() => {
|
|
39
|
-
return valueForModelMap({
|
|
40
|
-
seed: config.seed,
|
|
41
|
-
map: model.config.fields,
|
|
42
|
-
configs: config.configs,
|
|
30
|
+
config: MockGroupValueConfig<Model, State> = {},
|
|
31
|
+
): ModelValue<Model, State> => {
|
|
32
|
+
if (config.state === "empty") {
|
|
33
|
+
return [] as ModelValue<Model, State>;
|
|
34
|
+
} else {
|
|
35
|
+
const faker = createFaker(config.seed);
|
|
36
|
+
|
|
37
|
+
const model = config.model || modelGen.group({ seed: config.seed });
|
|
38
|
+
|
|
39
|
+
const itemsCount =
|
|
40
|
+
config.itemsCount ??
|
|
41
|
+
faker.datatype.number({
|
|
42
|
+
min: 1,
|
|
43
|
+
max: 6,
|
|
43
44
|
});
|
|
44
|
-
|
|
45
|
+
|
|
46
|
+
return Array(itemsCount)
|
|
47
|
+
.fill(undefined)
|
|
48
|
+
.map(() => {
|
|
49
|
+
return valueForModelMap({
|
|
50
|
+
seed: config.seed,
|
|
51
|
+
map: model.config.fields,
|
|
52
|
+
configs: config.configs,
|
|
53
|
+
});
|
|
54
|
+
}) as ModelValue<Model, State>;
|
|
55
|
+
}
|
|
45
56
|
};
|
package/src/value/sliceZone.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as prismicT from "@prismicio/types";
|
|
|
3
3
|
import { createFaker } from "../lib/createFaker";
|
|
4
4
|
import { ValueForModelMapConfigs } from "../lib/valueForModelMap";
|
|
5
5
|
|
|
6
|
-
import { MockValueConfig, ModelValue } from "../types";
|
|
6
|
+
import { MockValueConfig, MockValueStateConfig, ModelValue } from "../types";
|
|
7
7
|
|
|
8
8
|
import * as modelGen from "../model";
|
|
9
9
|
|
|
@@ -12,72 +12,79 @@ import { sharedSlice } from "./sharedSlice";
|
|
|
12
12
|
|
|
13
13
|
export type MockSliceZoneValueConfig<
|
|
14
14
|
Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
|
|
15
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
15
16
|
> = {
|
|
16
17
|
sharedSliceModels?: prismicT.SharedSliceModel[];
|
|
17
|
-
itemsCount?: number;
|
|
18
|
+
itemsCount?: State extends "empty" ? 0 : number;
|
|
18
19
|
primaryFieldConfigs?: ValueForModelMapConfigs;
|
|
19
20
|
itemsFieldConfigs?: ValueForModelMapConfigs;
|
|
20
|
-
} & MockValueConfig<Model
|
|
21
|
+
} & MockValueConfig<Model> &
|
|
22
|
+
MockValueStateConfig<State>;
|
|
21
23
|
|
|
22
24
|
export const sliceZone = <
|
|
23
25
|
Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
|
|
26
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
24
27
|
>(
|
|
25
|
-
config: MockSliceZoneValueConfig<Model> = {},
|
|
26
|
-
): ModelValue<Model> => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (Object.keys(model.config.choices).length > 0) {
|
|
32
|
-
const itemsCount =
|
|
33
|
-
config.itemsCount ??
|
|
34
|
-
faker.datatype.number({
|
|
35
|
-
min: 1,
|
|
36
|
-
max: 6,
|
|
37
|
-
});
|
|
28
|
+
config: MockSliceZoneValueConfig<Model, State> = {},
|
|
29
|
+
): ModelValue<Model, State> => {
|
|
30
|
+
if (config.state === "empty") {
|
|
31
|
+
return [] as ModelValue<Model, State>;
|
|
32
|
+
} else {
|
|
33
|
+
const faker = createFaker(config.seed);
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
.fill(undefined)
|
|
41
|
-
.map(() => {
|
|
42
|
-
const choices = Object.entries(model.config.choices);
|
|
43
|
-
const [choiceType, choiceModel] = faker.random.arrayElement(choices);
|
|
35
|
+
const model = config.model || modelGen.sliceZone({ seed: config.seed });
|
|
44
36
|
|
|
45
|
-
|
|
46
|
-
|
|
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
|
+
});
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
type: choiceType,
|
|
54
|
-
label: choiceLabel ? choiceLabel.name : null,
|
|
55
|
-
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
56
|
-
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
45
|
+
return Array(itemsCount)
|
|
46
|
+
.fill(undefined)
|
|
47
|
+
.map(() => {
|
|
48
|
+
const choices = Object.entries(model.config.choices);
|
|
49
|
+
const [choiceType, choiceModel] = faker.random.arrayElement(choices);
|
|
59
50
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
(sharedSliceModel) => sharedSliceModel.id === choiceType,
|
|
63
|
-
);
|
|
51
|
+
const choiceLabels = model.config.labels[choiceType] || [];
|
|
52
|
+
const choiceLabel = faker.random.arrayElement(choiceLabels);
|
|
64
53
|
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
switch (choiceModel.type) {
|
|
55
|
+
case prismicT.CustomTypeModelSliceType.Slice: {
|
|
56
|
+
return slice({
|
|
67
57
|
seed: config.seed,
|
|
68
|
-
model:
|
|
58
|
+
model: choiceModel,
|
|
59
|
+
type: choiceType,
|
|
60
|
+
label: choiceLabel ? choiceLabel.name : null,
|
|
69
61
|
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
70
62
|
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
71
63
|
});
|
|
72
64
|
}
|
|
65
|
+
|
|
66
|
+
case prismicT.CustomTypeModelSliceType.SharedSlice: {
|
|
67
|
+
const sharedSliceModel = config.sharedSliceModels?.find(
|
|
68
|
+
(sharedSliceModel) => sharedSliceModel.id === choiceType,
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
if (sharedSliceModel) {
|
|
72
|
+
return sharedSlice({
|
|
73
|
+
seed: config.seed,
|
|
74
|
+
model: sharedSliceModel,
|
|
75
|
+
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
76
|
+
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
73
80
|
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
})
|
|
82
|
+
.filter(
|
|
83
|
+
(slice): slice is prismicT.Slice | prismicT.SharedSlice =>
|
|
84
|
+
slice !== undefined,
|
|
85
|
+
) as ModelValue<Model, State>;
|
|
86
|
+
} else {
|
|
87
|
+
return [] as unknown as ModelValue<Model, State>;
|
|
88
|
+
}
|
|
82
89
|
}
|
|
83
90
|
};
|
package/src/value/title.ts
CHANGED
|
@@ -1,24 +1,37 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
-
import { MockValueConfig } from "../types";
|
|
3
|
+
import { MockValueConfig, MockValueStateConfig } from "../types";
|
|
4
4
|
|
|
5
5
|
import { heading, MockRichTextHeadingValueConfig } from "./richText/heading";
|
|
6
6
|
|
|
7
7
|
export type MockTitleValueConfig<
|
|
8
8
|
Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
|
|
9
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
9
10
|
> = {
|
|
10
11
|
pattern?: MockRichTextHeadingValueConfig["pattern"];
|
|
11
|
-
} & MockValueConfig<Model
|
|
12
|
+
} & MockValueConfig<Model> &
|
|
13
|
+
MockValueStateConfig<State>;
|
|
12
14
|
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
export type MockTitleValue<
|
|
16
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
17
|
+
> = prismicT.TitleField<State>;
|
|
18
|
+
|
|
19
|
+
export const title = <
|
|
20
|
+
Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
|
|
21
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
22
|
+
>(
|
|
23
|
+
config: MockTitleValueConfig<Model, State> = {},
|
|
24
|
+
): MockTitleValue<State> => {
|
|
25
|
+
if (config.state === "empty") {
|
|
26
|
+
return [] as MockTitleValue<State>;
|
|
27
|
+
} else {
|
|
28
|
+
return [
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
30
|
+
heading({
|
|
31
|
+
seed: config.seed,
|
|
32
|
+
model: config.model,
|
|
33
|
+
pattern: config.pattern,
|
|
34
|
+
})!,
|
|
35
|
+
] as MockTitleValue<State>;
|
|
36
|
+
}
|
|
24
37
|
};
|