@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
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import * as prismicT from "@prismicio/types";
|
|
2
|
+
|
|
3
|
+
import { createFaker, Faker } from "../lib/createFaker";
|
|
4
|
+
|
|
5
|
+
import { Seed, WithoutFakerConfig } from "../types";
|
|
6
|
+
|
|
7
|
+
import { boolean, MockBooleanValueConfig } from "./boolean";
|
|
8
|
+
import { color, MockColorValueConfig } from "./color";
|
|
9
|
+
import {
|
|
10
|
+
contentRelationship,
|
|
11
|
+
MockContentRelationshipValueConfig,
|
|
12
|
+
} from "./contentRelationship";
|
|
13
|
+
import { customType, MockCustomTypeValueConfig } from "./customType";
|
|
14
|
+
import { date, MockDateValueConfig } from "./date";
|
|
15
|
+
import { document, MockDocumentValueConfig } from "./document";
|
|
16
|
+
import { embed, MockEmbedValueConfig } from "./embed";
|
|
17
|
+
import { geoPoint, MockGeoPointValueConfig } from "./geoPoint";
|
|
18
|
+
import { group, MockGroupValueConfig } from "./group";
|
|
19
|
+
import { image, MockImageValueConfig } from "./image";
|
|
20
|
+
import {
|
|
21
|
+
integrationFields,
|
|
22
|
+
MockIntegrationFieldsValueConfig,
|
|
23
|
+
} from "./integrationFields";
|
|
24
|
+
import { keyText, MockKeyTextValueConfig } from "./keyText";
|
|
25
|
+
import { link, MockLinkValueConfig } from "./link";
|
|
26
|
+
import { linkToMedia, MockLinkToMediaValueConfig } from "./linkToMedia";
|
|
27
|
+
import { number, MockNumberValueConfig } from "./number";
|
|
28
|
+
import { richText, MockRichTextValueConfig } from "./richText";
|
|
29
|
+
import { select, MockSelectValueConfig } from "./select";
|
|
30
|
+
import { sharedSlice, MockSharedSliceValueConfig } from "./sharedSlice";
|
|
31
|
+
import {
|
|
32
|
+
sharedSliceVariation,
|
|
33
|
+
MockSharedSliceVariationValueConfig,
|
|
34
|
+
} from "./sharedSliceVariation";
|
|
35
|
+
import { slice, MockSliceValueConfig } from "./slice";
|
|
36
|
+
import { sliceZone, MockSliceZoneValueConfig } from "./sliceZone";
|
|
37
|
+
import { timestamp, MockTimestampValueConfig } from "./timestamp";
|
|
38
|
+
import { title, MockTitleValueConfig } from "./title";
|
|
39
|
+
import { uid, MockUIDValueConfig } from "./uid";
|
|
40
|
+
|
|
41
|
+
export const createValueMockFactory = (
|
|
42
|
+
...args: ConstructorParameters<typeof ValueMockFactory>
|
|
43
|
+
): ValueMockFactory => {
|
|
44
|
+
return new ValueMockFactory(...args);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
type ValueMockFactoryConfig =
|
|
48
|
+
| {
|
|
49
|
+
seed: Seed;
|
|
50
|
+
}
|
|
51
|
+
| {
|
|
52
|
+
faker: Faker;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export class ValueMockFactory {
|
|
56
|
+
private faker: Faker;
|
|
57
|
+
|
|
58
|
+
constructor(config: ValueMockFactoryConfig) {
|
|
59
|
+
this.faker = "faker" in config ? config.faker : createFaker(config.seed);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
get seed() {
|
|
63
|
+
return this.faker.seed;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
boolean<Model extends prismicT.CustomTypeModelBooleanField>(
|
|
67
|
+
config?: WithoutFakerConfig<MockBooleanValueConfig<Model>>,
|
|
68
|
+
) {
|
|
69
|
+
return boolean({ ...config, faker: this.faker });
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
color<
|
|
73
|
+
Model extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,
|
|
74
|
+
State extends prismicT.FieldState = "filled",
|
|
75
|
+
>(config?: WithoutFakerConfig<MockColorValueConfig<Model, State>>) {
|
|
76
|
+
return color({ ...config, faker: this.faker });
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
contentRelationship<
|
|
80
|
+
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
81
|
+
State extends prismicT.FieldState = "filled",
|
|
82
|
+
>(
|
|
83
|
+
config?: WithoutFakerConfig<
|
|
84
|
+
MockContentRelationshipValueConfig<Model, State>
|
|
85
|
+
>,
|
|
86
|
+
) {
|
|
87
|
+
return contentRelationship({ ...config, faker: this.faker });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
customType<Model extends prismicT.CustomTypeModel = prismicT.CustomTypeModel>(
|
|
91
|
+
config?: WithoutFakerConfig<MockCustomTypeValueConfig<Model>>,
|
|
92
|
+
) {
|
|
93
|
+
return customType({ ...config, faker: this.faker });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
date<
|
|
97
|
+
Model extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,
|
|
98
|
+
State extends prismicT.FieldState = "filled",
|
|
99
|
+
>(config?: WithoutFakerConfig<MockDateValueConfig<Model, State>>) {
|
|
100
|
+
return date({ ...config, faker: this.faker });
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
document<Model extends prismicT.CustomTypeModel = prismicT.CustomTypeModel>(
|
|
104
|
+
config?: WithoutFakerConfig<MockDocumentValueConfig<Model>>,
|
|
105
|
+
) {
|
|
106
|
+
return document({ ...config, faker: this.faker });
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
embed<
|
|
110
|
+
Model extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,
|
|
111
|
+
Data extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,
|
|
112
|
+
State extends prismicT.FieldState = "filled",
|
|
113
|
+
>(config?: WithoutFakerConfig<MockEmbedValueConfig<Model, Data, State>>) {
|
|
114
|
+
return embed({ ...config, faker: this.faker });
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
geoPoint<
|
|
118
|
+
Model extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,
|
|
119
|
+
State extends prismicT.FieldState = "filled",
|
|
120
|
+
>(config?: WithoutFakerConfig<MockGeoPointValueConfig<Model, State>>) {
|
|
121
|
+
return geoPoint({ ...config, faker: this.faker });
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
group<
|
|
125
|
+
Model extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,
|
|
126
|
+
State extends prismicT.FieldState = "filled",
|
|
127
|
+
>(config?: WithoutFakerConfig<MockGroupValueConfig<Model, State>>) {
|
|
128
|
+
return group({ ...config, faker: this.faker });
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
image<
|
|
132
|
+
Model extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,
|
|
133
|
+
State extends prismicT.FieldState = "filled",
|
|
134
|
+
>(config?: WithoutFakerConfig<MockImageValueConfig<Model, State>>) {
|
|
135
|
+
return image({ ...config, faker: this.faker });
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
integrationFields<
|
|
139
|
+
Model extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,
|
|
140
|
+
Data extends Record<string, unknown> = Record<string, unknown>,
|
|
141
|
+
State extends prismicT.FieldState = "filled",
|
|
142
|
+
>(
|
|
143
|
+
config?: WithoutFakerConfig<
|
|
144
|
+
MockIntegrationFieldsValueConfig<Model, Data, State>
|
|
145
|
+
>,
|
|
146
|
+
) {
|
|
147
|
+
return integrationFields({ ...config, faker: this.faker });
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
keyText<
|
|
151
|
+
Model extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,
|
|
152
|
+
State extends prismicT.FieldState = "filled",
|
|
153
|
+
>(config?: WithoutFakerConfig<MockKeyTextValueConfig<Model, State>>) {
|
|
154
|
+
return keyText({ ...config, faker: this.faker });
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
link<
|
|
158
|
+
LinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],
|
|
159
|
+
Model extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,
|
|
160
|
+
State extends prismicT.FieldState = "filled",
|
|
161
|
+
>(config?: WithoutFakerConfig<MockLinkValueConfig<LinkType, Model, State>>) {
|
|
162
|
+
return link({ ...config, faker: this.faker });
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
linkToMedia<
|
|
166
|
+
Model extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,
|
|
167
|
+
State extends prismicT.FieldState = "filled",
|
|
168
|
+
>(config?: WithoutFakerConfig<MockLinkToMediaValueConfig<Model, State>>) {
|
|
169
|
+
return linkToMedia({ ...config, faker: this.faker });
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
number<
|
|
173
|
+
Model extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,
|
|
174
|
+
State extends prismicT.FieldState = "filled",
|
|
175
|
+
>(config?: WithoutFakerConfig<MockNumberValueConfig<Model, State>>) {
|
|
176
|
+
return number({ ...config, faker: this.faker });
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
select<
|
|
180
|
+
Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
|
|
181
|
+
State extends prismicT.FieldState = "filled",
|
|
182
|
+
>(config?: WithoutFakerConfig<MockSelectValueConfig<Model, State>>) {
|
|
183
|
+
return select({ ...config, faker: this.faker });
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
sharedSlice<
|
|
187
|
+
Model extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,
|
|
188
|
+
>(config?: WithoutFakerConfig<MockSharedSliceValueConfig<Model>>) {
|
|
189
|
+
return sharedSlice({ ...config, faker: this.faker });
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
sharedSliceVariation<
|
|
193
|
+
Model extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,
|
|
194
|
+
>(config?: WithoutFakerConfig<MockSharedSliceVariationValueConfig<Model>>) {
|
|
195
|
+
return sharedSliceVariation({ ...config, faker: this.faker });
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
slice<
|
|
199
|
+
Model extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,
|
|
200
|
+
>(config?: WithoutFakerConfig<MockSliceValueConfig<Model>>) {
|
|
201
|
+
return slice({ ...config, faker: this.faker });
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
sliceZone<
|
|
205
|
+
Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
|
|
206
|
+
State extends prismicT.FieldState = "filled",
|
|
207
|
+
>(config?: WithoutFakerConfig<MockSliceZoneValueConfig<Model, State>>) {
|
|
208
|
+
return sliceZone({ ...config, faker: this.faker });
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
timestamp<
|
|
212
|
+
Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
|
|
213
|
+
State extends prismicT.FieldState = "filled",
|
|
214
|
+
>(config?: WithoutFakerConfig<MockTimestampValueConfig<Model, State>>) {
|
|
215
|
+
return timestamp({ ...config, faker: this.faker });
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
title<
|
|
219
|
+
Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
|
|
220
|
+
State extends prismicT.FieldState = "filled",
|
|
221
|
+
>(config?: WithoutFakerConfig<MockTitleValueConfig<Model, State>>) {
|
|
222
|
+
return title({ ...config, faker: this.faker });
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
uid<
|
|
226
|
+
Model extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,
|
|
227
|
+
>(config?: WithoutFakerConfig<MockUIDValueConfig<Model>>) {
|
|
228
|
+
return uid({ ...config, faker: this.faker });
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
richText<
|
|
232
|
+
Model extends prismicT.CustomTypeModelRichTextField = prismicT.CustomTypeModelRichTextField,
|
|
233
|
+
>(config?: WithoutFakerConfig<MockRichTextValueConfig<Model>>) {
|
|
234
|
+
return richText({ ...config, faker: this.faker });
|
|
235
|
+
}
|
|
236
|
+
}
|
package/src/value/customType.ts
CHANGED
|
@@ -26,11 +26,11 @@ export type MockCustomTypeValueConfig<
|
|
|
26
26
|
export const customType = <
|
|
27
27
|
Model extends prismicT.CustomTypeModel = prismicT.CustomTypeModel,
|
|
28
28
|
>(
|
|
29
|
-
config: MockCustomTypeValueConfig<Model
|
|
29
|
+
config: MockCustomTypeValueConfig<Model>,
|
|
30
30
|
): ModelValue<Model> => {
|
|
31
|
-
const faker = createFaker(config.seed);
|
|
31
|
+
const faker = config.faker || createFaker(config.seed);
|
|
32
32
|
|
|
33
|
-
const model = config.model || modelGen.customType({
|
|
33
|
+
const model = config.model || modelGen.customType({ faker });
|
|
34
34
|
|
|
35
35
|
const fieldModelsMap = Object.assign(
|
|
36
36
|
{},
|
|
@@ -63,19 +63,19 @@ 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.
|
|
71
|
-
tags: generateTags({
|
|
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
|
+
tags: generateTags({ faker }),
|
|
72
72
|
slugs: [] as prismicT.PrismicDocument["slugs"],
|
|
73
73
|
linked_documents: [] as prismicT.PrismicDocument["linked_documents"],
|
|
74
74
|
alternate_languages: alternateLanguages,
|
|
75
|
-
first_publication_date: timestamp({
|
|
76
|
-
last_publication_date: timestamp({
|
|
75
|
+
first_publication_date: timestamp({ faker }),
|
|
76
|
+
last_publication_date: timestamp({ faker }),
|
|
77
77
|
data: valueForModelMap({
|
|
78
|
-
|
|
78
|
+
faker,
|
|
79
79
|
map: dataFieldModelsMap,
|
|
80
80
|
configs: config.configs,
|
|
81
81
|
}),
|
package/src/value/date.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
+
import { createFaker } from "../lib/createFaker";
|
|
4
|
+
|
|
3
5
|
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
4
6
|
|
|
5
7
|
import { MockTimestampValueConfig, timestamp } from "./timestamp";
|
|
@@ -19,13 +21,15 @@ export const date = <
|
|
|
19
21
|
Model extends prismicT.CustomTypeModelDateField = prismicT.CustomTypeModelDateField,
|
|
20
22
|
State extends prismicT.FieldState = "filled",
|
|
21
23
|
>(
|
|
22
|
-
config: MockDateValueConfig<Model, State
|
|
24
|
+
config: MockDateValueConfig<Model, State>,
|
|
23
25
|
): MockDateValue<State> => {
|
|
26
|
+
const faker = config.faker || createFaker(config.seed);
|
|
27
|
+
|
|
24
28
|
return (
|
|
25
29
|
config.state === "empty"
|
|
26
30
|
? null
|
|
27
31
|
: timestamp({
|
|
28
|
-
|
|
32
|
+
faker,
|
|
29
33
|
after: config.after,
|
|
30
34
|
before: config.before,
|
|
31
35
|
state: "filled",
|
package/src/value/embed.ts
CHANGED
|
@@ -1,30 +1,46 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
3
|
import { buildEmbedField } from "../lib/buildEmbedField";
|
|
4
|
+
import { createFaker } from "../lib/createFaker";
|
|
4
5
|
import { getMockEmbedData } from "../lib/getMockEmbedData";
|
|
5
6
|
|
|
6
7
|
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
7
8
|
|
|
8
9
|
export type MockEmbedValueConfig<
|
|
9
10
|
Model extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,
|
|
11
|
+
Data extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,
|
|
10
12
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
11
|
-
> =
|
|
13
|
+
> = {
|
|
14
|
+
url?: string;
|
|
15
|
+
html?: string;
|
|
16
|
+
data?: Data;
|
|
17
|
+
} & MockValueConfig<Model> &
|
|
18
|
+
MockValueStateConfig<State>;
|
|
12
19
|
|
|
13
20
|
export type MockEmbedValue<
|
|
21
|
+
Data extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,
|
|
14
22
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
15
|
-
> = prismicT.EmbedField<
|
|
23
|
+
> = prismicT.EmbedField<Data, State>;
|
|
16
24
|
|
|
17
25
|
export const embed = <
|
|
18
26
|
Model extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,
|
|
27
|
+
Data extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,
|
|
19
28
|
State extends prismicT.FieldState = "filled",
|
|
20
29
|
>(
|
|
21
|
-
config: MockEmbedValueConfig<Model, State
|
|
22
|
-
): MockEmbedValue<State> => {
|
|
23
|
-
const
|
|
30
|
+
config: MockEmbedValueConfig<Model, Data, State>,
|
|
31
|
+
): MockEmbedValue<Data, State> => {
|
|
32
|
+
const faker = config.faker || createFaker(config.seed);
|
|
33
|
+
|
|
34
|
+
const data = config.data ?? getMockEmbedData({ faker });
|
|
24
35
|
|
|
25
36
|
return (
|
|
26
37
|
config.state === "empty"
|
|
27
38
|
? {}
|
|
28
|
-
: buildEmbedField({
|
|
29
|
-
|
|
39
|
+
: buildEmbedField({
|
|
40
|
+
faker,
|
|
41
|
+
url: config.url ?? ("embed_url" in data ? data.embed_url : undefined),
|
|
42
|
+
html: config.html ?? ("html" in data ? data.html : undefined),
|
|
43
|
+
data,
|
|
44
|
+
})
|
|
45
|
+
) as MockEmbedValue<Data, State>;
|
|
30
46
|
};
|
package/src/value/geoPoint.ts
CHANGED
|
@@ -17,18 +17,16 @@ export const geoPoint = <
|
|
|
17
17
|
Model extends prismicT.CustomTypeModelGeoPointField = prismicT.CustomTypeModelGeoPointField,
|
|
18
18
|
State extends prismicT.FieldState = "filled",
|
|
19
19
|
>(
|
|
20
|
-
config: MockGeoPointValueConfig<Model, State
|
|
20
|
+
config: MockGeoPointValueConfig<Model, State>,
|
|
21
21
|
): MockGeoPointValue<State> => {
|
|
22
|
-
const faker = createFaker(config.seed);
|
|
23
|
-
|
|
24
|
-
const coordinates = faker.address.nearbyGPSCoordinate();
|
|
22
|
+
const faker = config.faker || createFaker(config.seed);
|
|
25
23
|
|
|
26
24
|
return (
|
|
27
25
|
config.state === "empty"
|
|
28
26
|
? {}
|
|
29
27
|
: {
|
|
30
|
-
longitude:
|
|
31
|
-
latitude:
|
|
28
|
+
longitude: faker.rangeFloat(-180, 180),
|
|
29
|
+
latitude: faker.rangeFloat(-90, 90),
|
|
32
30
|
}
|
|
33
31
|
) as MockGeoPointValue<State>;
|
|
34
32
|
};
|
package/src/value/group.ts
CHANGED
|
@@ -27,28 +27,23 @@ export const group = <
|
|
|
27
27
|
Model extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,
|
|
28
28
|
State extends prismicT.FieldState = "filled",
|
|
29
29
|
>(
|
|
30
|
-
config: MockGroupValueConfig<Model, State
|
|
30
|
+
config: MockGroupValueConfig<Model, State>,
|
|
31
31
|
): ModelValue<Model, State> => {
|
|
32
32
|
if (config.state === "empty") {
|
|
33
33
|
return [] as ModelValue<Model, State>;
|
|
34
34
|
} else {
|
|
35
|
-
const faker = createFaker(config.seed);
|
|
35
|
+
const faker = config.faker || createFaker(config.seed);
|
|
36
36
|
|
|
37
|
-
const model = config.model || modelGen.group({
|
|
37
|
+
const model = config.model || modelGen.group({ faker });
|
|
38
38
|
|
|
39
|
-
const itemsCount =
|
|
40
|
-
config.itemsCount ??
|
|
41
|
-
faker.datatype.number({
|
|
42
|
-
min: 1,
|
|
43
|
-
max: 6,
|
|
44
|
-
});
|
|
39
|
+
const itemsCount = config.itemsCount ?? faker.range(1, 6);
|
|
45
40
|
|
|
46
41
|
return Array(itemsCount)
|
|
47
42
|
.fill(undefined)
|
|
48
43
|
.map(() => {
|
|
49
44
|
return valueForModelMap({
|
|
50
|
-
|
|
51
|
-
map: model.config
|
|
45
|
+
faker,
|
|
46
|
+
map: model.config?.fields || {},
|
|
52
47
|
configs: config.configs,
|
|
53
48
|
});
|
|
54
49
|
}) as ModelValue<Model, State>;
|
package/src/value/image.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
3
|
import { buildImageFieldImage } from "../lib/buildImageFieldImage";
|
|
4
|
+
import { createFaker } from "../lib/createFaker";
|
|
4
5
|
import { getMockImageData } from "../lib/getMockImageData";
|
|
5
6
|
|
|
6
7
|
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
@@ -15,36 +16,43 @@ export type MockImageValueConfig<
|
|
|
15
16
|
export type MockImageValue<
|
|
16
17
|
Model extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,
|
|
17
18
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
18
|
-
> = prismicT.ImageField<
|
|
19
|
+
> = prismicT.ImageField<
|
|
20
|
+
NonNullable<NonNullable<Model["config"]>["thumbnails"]>[number]["name"],
|
|
21
|
+
State
|
|
22
|
+
>;
|
|
19
23
|
|
|
20
24
|
export const image = <
|
|
21
25
|
Model extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,
|
|
22
26
|
State extends prismicT.FieldState = "filled",
|
|
23
27
|
>(
|
|
24
|
-
config: MockImageValueConfig<Model, State
|
|
28
|
+
config: MockImageValueConfig<Model, State>,
|
|
25
29
|
): MockImageValue<Model, State> => {
|
|
26
|
-
const
|
|
27
|
-
|
|
30
|
+
const faker = config.faker || createFaker(config.seed);
|
|
31
|
+
|
|
32
|
+
const model = config.model || modelGen.image({ faker });
|
|
33
|
+
const imageData = getMockImageData({ faker });
|
|
28
34
|
|
|
29
35
|
const value = buildImageFieldImage({
|
|
30
|
-
|
|
36
|
+
faker,
|
|
31
37
|
imageData,
|
|
32
|
-
constraint: model.config
|
|
38
|
+
constraint: model.config?.constraint,
|
|
33
39
|
state: config.state,
|
|
34
40
|
}) as MockImageValue<Model, State>;
|
|
35
41
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
if (model.config?.thumbnails) {
|
|
43
|
+
for (const thumbnail of model.config.thumbnails) {
|
|
44
|
+
// TODO: Resolve the following type error
|
|
45
|
+
// @ts-expect-error - Unsure how to fix this type mismatch
|
|
46
|
+
value[thumbnail.name as keyof typeof value] = buildImageFieldImage({
|
|
47
|
+
faker,
|
|
48
|
+
imageData,
|
|
49
|
+
constraint: {
|
|
50
|
+
width: thumbnail.width,
|
|
51
|
+
height: thumbnail.height,
|
|
52
|
+
},
|
|
53
|
+
state: config.state,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
return value;
|
|
@@ -1,46 +1,32 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
|
-
import * as changeCase from "change-case";
|
|
3
|
-
|
|
4
|
-
import { createFaker } from "../lib/createFaker";
|
|
5
|
-
import { getMockImageData } from "../lib/getMockImageData";
|
|
6
2
|
|
|
7
3
|
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
8
4
|
|
|
9
5
|
export type MockIntegrationFieldsValueConfig<
|
|
10
6
|
Model extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,
|
|
11
|
-
|
|
7
|
+
Data extends Record<string, unknown> = Record<string, unknown>,
|
|
12
8
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
13
9
|
> = {
|
|
14
|
-
data?:
|
|
10
|
+
data?: Data;
|
|
15
11
|
} & MockValueConfig<Model> &
|
|
16
12
|
MockValueStateConfig<State>;
|
|
17
13
|
|
|
18
14
|
export type MockIntegrationFieldsValue<
|
|
19
|
-
|
|
15
|
+
Data extends Record<string, unknown> = Record<string, unknown>,
|
|
20
16
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
21
|
-
> = prismicT.IntegrationFields<
|
|
17
|
+
> = prismicT.IntegrationFields<Data, State>;
|
|
22
18
|
|
|
23
19
|
export const integrationFields = <
|
|
24
20
|
Model extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,
|
|
25
|
-
|
|
21
|
+
Data extends Record<string, unknown> = Record<string, unknown>,
|
|
26
22
|
State extends prismicT.FieldState = "filled",
|
|
27
23
|
>(
|
|
28
|
-
config: MockIntegrationFieldsValueConfig<Model,
|
|
29
|
-
): MockIntegrationFieldsValue<
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
const imageData = getMockImageData({ seed: config.seed });
|
|
24
|
+
config: MockIntegrationFieldsValueConfig<Model, Data, State>,
|
|
25
|
+
): MockIntegrationFieldsValue<Data, State> => {
|
|
26
|
+
const data = config.data ?? {};
|
|
33
27
|
|
|
34
|
-
return (
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
id: faker.git.shortSha(),
|
|
39
|
-
title: changeCase.capitalCase(faker.lorem.words(3)),
|
|
40
|
-
description: faker.lorem.sentence(),
|
|
41
|
-
image_url: imageData.url,
|
|
42
|
-
last_update: faker.date.past(20, new Date("2021-03-07")).getTime(),
|
|
43
|
-
blob: config.data as Blob,
|
|
44
|
-
}
|
|
45
|
-
) as MockIntegrationFieldsValue<Blob, State>;
|
|
28
|
+
return (config.state === "empty" ? null : data) as MockIntegrationFieldsValue<
|
|
29
|
+
Data,
|
|
30
|
+
State
|
|
31
|
+
>;
|
|
46
32
|
};
|
package/src/value/keyText.ts
CHANGED
|
@@ -18,13 +18,11 @@ export const keyText = <
|
|
|
18
18
|
Model extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,
|
|
19
19
|
State extends prismicT.FieldState = "filled",
|
|
20
20
|
>(
|
|
21
|
-
config: MockKeyTextValueConfig<Model, State
|
|
21
|
+
config: MockKeyTextValueConfig<Model, State>,
|
|
22
22
|
): MockKeyTextValue<State> => {
|
|
23
|
-
const faker = createFaker(config.seed);
|
|
23
|
+
const faker = config.faker || createFaker(config.seed);
|
|
24
24
|
|
|
25
25
|
return (
|
|
26
|
-
config.state === "empty"
|
|
27
|
-
? null
|
|
28
|
-
: changeCase.sentenceCase(faker.lorem.words(3))
|
|
26
|
+
config.state === "empty" ? null : changeCase.sentenceCase(faker.words(3))
|
|
29
27
|
) as MockKeyTextValue<State>;
|
|
30
28
|
};
|
package/src/value/link.ts
CHANGED
|
@@ -15,7 +15,9 @@ export type MockLinkValueConfig<
|
|
|
15
15
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
16
16
|
> = {
|
|
17
17
|
type?: LinkType;
|
|
18
|
-
withTargetBlank?:
|
|
18
|
+
withTargetBlank?: NonNullable<
|
|
19
|
+
Model["config"]
|
|
20
|
+
>["allowTargetBlank"] extends undefined
|
|
19
21
|
? false
|
|
20
22
|
: boolean;
|
|
21
23
|
/**
|
|
@@ -45,13 +47,13 @@ export const link = <
|
|
|
45
47
|
Model extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,
|
|
46
48
|
State extends prismicT.FieldState = "filled",
|
|
47
49
|
>(
|
|
48
|
-
config: MockLinkValueConfig<LinkType, Model, State
|
|
50
|
+
config: MockLinkValueConfig<LinkType, Model, State>,
|
|
49
51
|
): MockLinkValue<LinkType, State> => {
|
|
50
|
-
const faker = createFaker(config.seed);
|
|
52
|
+
const faker = config.faker || createFaker(config.seed);
|
|
51
53
|
|
|
52
54
|
const type =
|
|
53
55
|
config.type ||
|
|
54
|
-
faker.
|
|
56
|
+
faker.randomElement([
|
|
55
57
|
prismicT.LinkType.Web,
|
|
56
58
|
prismicT.LinkType.Document,
|
|
57
59
|
prismicT.LinkType.Media,
|
|
@@ -65,7 +67,7 @@ export const link = <
|
|
|
65
67
|
switch (type) {
|
|
66
68
|
case prismicT.LinkType.Document: {
|
|
67
69
|
return contentRelationship({
|
|
68
|
-
|
|
70
|
+
faker,
|
|
69
71
|
state: config.state,
|
|
70
72
|
linkableDocuments: config.linkableDocuments,
|
|
71
73
|
}) as unknown as MockLinkValue<LinkType, State>;
|
|
@@ -73,21 +75,21 @@ export const link = <
|
|
|
73
75
|
|
|
74
76
|
case prismicT.LinkType.Media: {
|
|
75
77
|
return linkToMedia({
|
|
76
|
-
|
|
78
|
+
faker,
|
|
77
79
|
state: config.state,
|
|
78
80
|
}) as MockLinkValue<LinkType, State>;
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
case prismicT.LinkType.Web:
|
|
82
84
|
default: {
|
|
83
|
-
const model = config.model || modelGen.link({
|
|
85
|
+
const model = config.model || modelGen.link({ faker });
|
|
84
86
|
|
|
85
87
|
return {
|
|
86
88
|
link_type: prismicT.LinkType.Web,
|
|
87
|
-
url: faker.
|
|
89
|
+
url: faker.url(),
|
|
88
90
|
target:
|
|
89
91
|
config.withTargetBlank ??
|
|
90
|
-
(model.config
|
|
92
|
+
(model.config?.allowTargetBlank && faker.boolean())
|
|
91
93
|
? "_blank"
|
|
92
94
|
: undefined,
|
|
93
95
|
} as MockLinkValue<LinkType, State>;
|
package/src/value/linkToMedia.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
|
+
import * as changeCase from "change-case";
|
|
2
3
|
|
|
3
4
|
import { createFaker } from "../lib/createFaker";
|
|
4
5
|
|
|
@@ -17,9 +18,9 @@ export const linkToMedia = <
|
|
|
17
18
|
Model extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,
|
|
18
19
|
State extends prismicT.FieldState = "filled",
|
|
19
20
|
>(
|
|
20
|
-
config: MockLinkToMediaValueConfig<Model, State
|
|
21
|
+
config: MockLinkToMediaValueConfig<Model, State>,
|
|
21
22
|
): MockLinkToMediaValue<State> => {
|
|
22
|
-
const faker = createFaker(config.seed);
|
|
23
|
+
const faker = config.faker || createFaker(config.seed);
|
|
23
24
|
|
|
24
25
|
if (config.state === "empty") {
|
|
25
26
|
return {
|
|
@@ -28,12 +29,12 @@ export const linkToMedia = <
|
|
|
28
29
|
} else {
|
|
29
30
|
return {
|
|
30
31
|
link_type: prismicT.LinkType.Media,
|
|
31
|
-
name: faker.
|
|
32
|
-
kind: faker.
|
|
33
|
-
url: faker.
|
|
34
|
-
size: faker.
|
|
35
|
-
height: faker.
|
|
36
|
-
width: faker.
|
|
32
|
+
name: `${changeCase.snakeCase(faker.words(faker.range(1, 2)))}.example`,
|
|
33
|
+
kind: changeCase.snakeCase(faker.word()),
|
|
34
|
+
url: faker.url(),
|
|
35
|
+
size: faker.range(500, 3000).toString(),
|
|
36
|
+
height: faker.range(500, 3000).toString(),
|
|
37
|
+
width: faker.range(500, 3000).toString(),
|
|
37
38
|
} as MockLinkToMediaValue<State>;
|
|
38
39
|
}
|
|
39
40
|
};
|