@prismicio/mock 0.0.6 → 0.0.7
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 +39 -27
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.ts +2 -1
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/{index.mjs → index.js} +104 -58
- package/dist/api/index.js.map +1 -0
- package/dist/index.cjs +293 -393
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +132 -230
- package/dist/{index.mjs → index.js} +286 -384
- package/dist/index.js.map +1 -0
- package/dist/model/index.cjs +148 -205
- package/dist/model/index.cjs.map +1 -0
- package/dist/model/index.d.ts +68 -104
- 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 +238 -495
- package/dist/value/index.cjs.map +1 -0
- package/dist/value/index.d.ts +54 -116
- package/dist/value/index.d.ts.map +1 -0
- package/dist/value/{index.mjs → index.js} +407 -610
- package/dist/value/index.js.map +1 -0
- package/package.json +21 -21
- package/src/lib/buildContentRelationshipField.ts +6 -1
- package/src/lib/buildEmbedField.ts +1 -1
- package/src/lib/buildImageFieldImage.ts +48 -0
- 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/select.ts +11 -16
- package/src/model/sharedSlice.ts +14 -41
- package/src/model/sharedSliceVariation.ts +33 -21
- package/src/model/slice.ts +15 -19
- package/src/model/sliceZone.ts +23 -59
- package/src/types.ts +41 -12
- package/src/value/color.ts +16 -6
- package/src/value/contentRelationship.ts +51 -36
- 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 +7 -27
- 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 +44 -60
- package/src/value/timestamp.ts +19 -6
- package/src/value/title.ts +1 -1
- package/src/value/uid.ts +1 -1
- package/dist/model/index.mjs +0 -465
- package/src/lib/buildImageField.ts +0 -34
- package/src/lib/buildMockGroupFieldMap.ts +0 -84
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
|
};
|
|
@@ -5,59 +5,73 @@ 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 }),
|
|
@@ -67,7 +81,10 @@ export const contentRelationship = <
|
|
|
67
81
|
tags: model.config.tags
|
|
68
82
|
? faker.random.arrayElements(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
90
|
const document = faker.random.arrayElement(linkableDocuments);
|
|
@@ -76,10 +93,8 @@ export const contentRelationship = <
|
|
|
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/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
|
};
|
package/src/value/group.ts
CHANGED
|
@@ -10,25 +10,10 @@ import { MockValueConfig, ModelValue } from "../types";
|
|
|
10
10
|
|
|
11
11
|
import * as modelGen from "../model";
|
|
12
12
|
|
|
13
|
-
const patterns = {
|
|
14
|
-
short: {
|
|
15
|
-
minItems: 1,
|
|
16
|
-
maxItems: 3,
|
|
17
|
-
},
|
|
18
|
-
medium: {
|
|
19
|
-
minItems: 3,
|
|
20
|
-
maxItems: 6,
|
|
21
|
-
},
|
|
22
|
-
long: {
|
|
23
|
-
minItems: 6,
|
|
24
|
-
maxItems: 12,
|
|
25
|
-
},
|
|
26
|
-
} as const;
|
|
27
|
-
|
|
28
13
|
export type MockGroupValueConfig<
|
|
29
14
|
Model extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,
|
|
30
15
|
> = {
|
|
31
|
-
|
|
16
|
+
itemsCount?: number;
|
|
32
17
|
configs?: ValueForModelMapConfigs;
|
|
33
18
|
} & MockValueConfig<Model>;
|
|
34
19
|
|
|
@@ -41,17 +26,12 @@ export const group = <
|
|
|
41
26
|
|
|
42
27
|
const model = config.model || modelGen.group({ seed: config.seed });
|
|
43
28
|
|
|
44
|
-
const
|
|
45
|
-
config.
|
|
46
|
-
faker.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const itemsCount = faker.datatype.number({
|
|
52
|
-
min: pattern.minItems,
|
|
53
|
-
max: pattern.maxItems,
|
|
54
|
-
});
|
|
29
|
+
const itemsCount =
|
|
30
|
+
config.itemsCount ??
|
|
31
|
+
faker.datatype.number({
|
|
32
|
+
min: 1,
|
|
33
|
+
max: 6,
|
|
34
|
+
});
|
|
55
35
|
|
|
56
36
|
return Array(itemsCount)
|
|
57
37
|
.fill(undefined)
|
package/src/value/image.ts
CHANGED
|
@@ -1,36 +1,49 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { buildImageFieldImage } from "../lib/buildImageFieldImage";
|
|
4
4
|
import { getMockImageData } from "../lib/getMockImageData";
|
|
5
5
|
|
|
6
|
-
import { MockValueConfig } from "../types";
|
|
6
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
7
7
|
|
|
8
8
|
import * as modelGen from "../model";
|
|
9
9
|
|
|
10
10
|
export type MockImageValueConfig<
|
|
11
11
|
Model extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,
|
|
12
|
-
|
|
12
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
13
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
13
14
|
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
export type MockImageValue<
|
|
16
|
+
Model extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,
|
|
17
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
18
|
+
> = prismicT.ImageField<Model["config"]["thumbnails"][number]["name"], State>;
|
|
19
|
+
|
|
20
|
+
export const image = <
|
|
21
|
+
Model extends prismicT.CustomTypeModelImageField = prismicT.CustomTypeModelImageField,
|
|
22
|
+
State extends prismicT.FieldState = "filled",
|
|
23
|
+
>(
|
|
24
|
+
config: MockImageValueConfig<Model, State> = {},
|
|
25
|
+
): MockImageValue<Model, State> => {
|
|
17
26
|
const model = config.model || modelGen.image({ seed: config.seed });
|
|
18
27
|
const imageData = getMockImageData({ seed: config.seed });
|
|
19
28
|
|
|
20
|
-
const value =
|
|
29
|
+
const value = buildImageFieldImage({
|
|
21
30
|
seed: config.seed,
|
|
22
31
|
imageData,
|
|
23
32
|
constraint: model.config.constraint,
|
|
24
|
-
|
|
33
|
+
state: config.state,
|
|
34
|
+
}) as MockImageValue<Model, State>;
|
|
25
35
|
|
|
26
36
|
for (const thumbnail of model.config.thumbnails) {
|
|
27
|
-
|
|
37
|
+
// TODO: Resolve the following type error
|
|
38
|
+
// @ts-expect-error - Unsure how to fix this type mismatch
|
|
39
|
+
value[thumbnail.name as keyof typeof value] = buildImageFieldImage({
|
|
28
40
|
seed: config.seed,
|
|
29
41
|
imageData,
|
|
30
42
|
constraint: {
|
|
31
43
|
width: thumbnail.width,
|
|
32
44
|
height: thumbnail.height,
|
|
33
45
|
},
|
|
46
|
+
state: config.state,
|
|
34
47
|
});
|
|
35
48
|
}
|
|
36
49
|
|
|
@@ -4,31 +4,43 @@ import * as changeCase from "change-case";
|
|
|
4
4
|
import { createFaker } from "../lib/createFaker";
|
|
5
5
|
import { getMockImageData } from "../lib/getMockImageData";
|
|
6
6
|
|
|
7
|
-
import { MockValueConfig } from "../types";
|
|
7
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
8
8
|
|
|
9
9
|
export type MockIntegrationFieldsValueConfig<
|
|
10
10
|
Model extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,
|
|
11
|
-
Blob
|
|
11
|
+
Blob = unknown,
|
|
12
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
12
13
|
> = {
|
|
13
14
|
data?: Blob;
|
|
14
|
-
} & MockValueConfig<Model
|
|
15
|
+
} & MockValueConfig<Model> &
|
|
16
|
+
MockValueStateConfig<State>;
|
|
17
|
+
|
|
18
|
+
export type MockIntegrationFieldsValue<
|
|
19
|
+
Blob = unknown,
|
|
20
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
21
|
+
> = prismicT.IntegrationFields<Blob, State>;
|
|
15
22
|
|
|
16
23
|
export const integrationFields = <
|
|
17
24
|
Model extends prismicT.CustomTypeModelIntegrationFieldsField = prismicT.CustomTypeModelIntegrationFieldsField,
|
|
18
|
-
Blob
|
|
25
|
+
Blob = unknown,
|
|
26
|
+
State extends prismicT.FieldState = "filled",
|
|
19
27
|
>(
|
|
20
|
-
config: MockIntegrationFieldsValueConfig<Model, Blob> = {},
|
|
21
|
-
):
|
|
28
|
+
config: MockIntegrationFieldsValueConfig<Model, Blob, State> = {},
|
|
29
|
+
): MockIntegrationFieldsValue<Blob, State> => {
|
|
22
30
|
const faker = createFaker(config.seed);
|
|
23
31
|
|
|
24
32
|
const imageData = getMockImageData({ seed: config.seed });
|
|
25
33
|
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
return (
|
|
35
|
+
config.state === "empty"
|
|
36
|
+
? null
|
|
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>;
|
|
34
46
|
};
|
package/src/value/keyText.ts
CHANGED
|
@@ -3,16 +3,28 @@ import * as changeCase from "change-case";
|
|
|
3
3
|
|
|
4
4
|
import { createFaker } from "../lib/createFaker";
|
|
5
5
|
|
|
6
|
-
import { MockValueConfig } from "../types";
|
|
6
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
7
7
|
|
|
8
8
|
export type MockKeyTextValueConfig<
|
|
9
9
|
Model extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,
|
|
10
|
-
|
|
10
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
11
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
11
12
|
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
export type MockKeyTextValue<
|
|
14
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
15
|
+
> = prismicT.KeyTextField<State>;
|
|
16
|
+
|
|
17
|
+
export const keyText = <
|
|
18
|
+
Model extends prismicT.CustomTypeModelKeyTextField = prismicT.CustomTypeModelKeyTextField,
|
|
19
|
+
State extends prismicT.FieldState = "filled",
|
|
20
|
+
>(
|
|
21
|
+
config: MockKeyTextValueConfig<Model, State> = {},
|
|
22
|
+
): MockKeyTextValue<State> => {
|
|
15
23
|
const faker = createFaker(config.seed);
|
|
16
24
|
|
|
17
|
-
return
|
|
25
|
+
return (
|
|
26
|
+
config.state === "empty"
|
|
27
|
+
? null
|
|
28
|
+
: changeCase.sentenceCase(faker.lorem.words(3))
|
|
29
|
+
) as MockKeyTextValue<State>;
|
|
18
30
|
};
|
package/src/value/link.ts
CHANGED
|
@@ -2,7 +2,7 @@ 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
|
import * as modelGen from "../model";
|
|
8
8
|
|
|
@@ -10,47 +10,45 @@ import { contentRelationship } from "./contentRelationship";
|
|
|
10
10
|
import { linkToMedia } from "./linkToMedia";
|
|
11
11
|
|
|
12
12
|
export type MockLinkValueConfig<
|
|
13
|
-
LinkType extends prismicT.LinkType = prismicT.LinkType,
|
|
14
|
-
IsFilled extends boolean = true,
|
|
13
|
+
LinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],
|
|
15
14
|
Model extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,
|
|
15
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
16
16
|
> = {
|
|
17
17
|
type?: LinkType;
|
|
18
|
-
isFilled?: IsFilled;
|
|
19
18
|
withTargetBlank?: Model["config"]["allowTargetBlank"] extends undefined
|
|
20
19
|
? false
|
|
21
20
|
: boolean;
|
|
22
21
|
/**
|
|
23
22
|
* A list of potential documents to which the field can be linked.
|
|
24
23
|
*/
|
|
25
|
-
linkableDocuments?: LinkType extends prismicT.LinkType.Document
|
|
24
|
+
linkableDocuments?: LinkType extends typeof prismicT.LinkType.Document
|
|
26
25
|
? prismicT.PrismicDocument[]
|
|
27
26
|
: never;
|
|
28
|
-
} & MockValueConfig<Model
|
|
27
|
+
} & MockValueConfig<Model> &
|
|
28
|
+
MockValueStateConfig<State>;
|
|
29
29
|
|
|
30
30
|
type MockLinkValue<
|
|
31
|
-
LinkType extends prismicT.LinkType = prismicT.LinkType,
|
|
32
|
-
|
|
33
|
-
> =
|
|
34
|
-
?
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
:
|
|
31
|
+
LinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],
|
|
32
|
+
State extends prismicT.FieldState = "filled",
|
|
33
|
+
> = State extends "empty"
|
|
34
|
+
? prismicT.EmptyLinkField<LinkType>
|
|
35
|
+
: LinkType extends typeof prismicT.LinkType.Web
|
|
36
|
+
? prismicT.FilledLinkToWebField
|
|
37
|
+
: LinkType extends typeof prismicT.LinkType.Media
|
|
38
|
+
? prismicT.FilledLinkToMediaField
|
|
39
|
+
: LinkType extends typeof prismicT.LinkType.Document
|
|
40
|
+
? prismicT.FilledLinkToDocumentField
|
|
41
|
+
: never;
|
|
42
42
|
|
|
43
43
|
export const link = <
|
|
44
|
-
LinkType extends prismicT.LinkType = prismicT.LinkType,
|
|
45
|
-
IsFilled extends boolean = true,
|
|
44
|
+
LinkType extends typeof prismicT.LinkType[keyof typeof prismicT.LinkType] = typeof prismicT.LinkType[keyof typeof prismicT.LinkType],
|
|
46
45
|
Model extends prismicT.CustomTypeModelLinkField = prismicT.CustomTypeModelLinkField,
|
|
46
|
+
State extends prismicT.FieldState = "filled",
|
|
47
47
|
>(
|
|
48
|
-
config: MockLinkValueConfig<LinkType,
|
|
49
|
-
): MockLinkValue<LinkType,
|
|
48
|
+
config: MockLinkValueConfig<LinkType, Model, State> = {},
|
|
49
|
+
): MockLinkValue<LinkType, State> => {
|
|
50
50
|
const faker = createFaker(config.seed);
|
|
51
51
|
|
|
52
|
-
const isFilled = config.isFilled ?? true;
|
|
53
|
-
|
|
54
52
|
const type =
|
|
55
53
|
config.type ||
|
|
56
54
|
faker.random.arrayElement([
|
|
@@ -59,24 +57,29 @@ export const link = <
|
|
|
59
57
|
prismicT.LinkType.Media,
|
|
60
58
|
]);
|
|
61
59
|
|
|
62
|
-
if (
|
|
60
|
+
if (config.state === "empty") {
|
|
61
|
+
return {
|
|
62
|
+
link_type: type,
|
|
63
|
+
} as MockLinkValue<LinkType, State>;
|
|
64
|
+
} else {
|
|
63
65
|
switch (type) {
|
|
64
66
|
case prismicT.LinkType.Document: {
|
|
65
67
|
return contentRelationship({
|
|
66
68
|
seed: config.seed,
|
|
67
|
-
|
|
69
|
+
state: config.state,
|
|
68
70
|
linkableDocuments: config.linkableDocuments,
|
|
69
|
-
}) as MockLinkValue<LinkType,
|
|
71
|
+
}) as unknown as MockLinkValue<LinkType, State>;
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
case prismicT.LinkType.Media: {
|
|
73
75
|
return linkToMedia({
|
|
74
76
|
seed: config.seed,
|
|
75
|
-
|
|
76
|
-
}) as MockLinkValue<LinkType,
|
|
77
|
+
state: config.state,
|
|
78
|
+
}) as MockLinkValue<LinkType, State>;
|
|
77
79
|
}
|
|
78
80
|
|
|
79
|
-
case prismicT.LinkType.Web:
|
|
81
|
+
case prismicT.LinkType.Web:
|
|
82
|
+
default: {
|
|
80
83
|
const model = config.model || modelGen.link({ seed: config.seed });
|
|
81
84
|
|
|
82
85
|
return {
|
|
@@ -87,12 +90,8 @@ export const link = <
|
|
|
87
90
|
(model.config.allowTargetBlank && faker.datatype.boolean())
|
|
88
91
|
? "_blank"
|
|
89
92
|
: undefined,
|
|
90
|
-
} as MockLinkValue<LinkType,
|
|
93
|
+
} as MockLinkValue<LinkType, State>;
|
|
91
94
|
}
|
|
92
95
|
}
|
|
93
96
|
}
|
|
94
|
-
|
|
95
|
-
return {
|
|
96
|
-
link_type: type,
|
|
97
|
-
} as MockLinkValue<LinkType, IsFilled>;
|
|
98
97
|
};
|