@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/linkToMedia.ts
CHANGED
|
@@ -2,31 +2,30 @@ 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 MockLinkToMediaValueConfig<
|
|
8
|
-
IsFilled extends boolean = true,
|
|
9
8
|
Model extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} & MockValueConfig<Model>;
|
|
9
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
10
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
13
11
|
|
|
14
|
-
type MockLinkToMediaValue<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
: prismicT.EmptyLinkField<prismicT.LinkType.Media>;
|
|
12
|
+
type MockLinkToMediaValue<
|
|
13
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
14
|
+
> = prismicT.LinkToMediaField<State>;
|
|
18
15
|
|
|
19
16
|
export const linkToMedia = <
|
|
20
|
-
IsFilled extends boolean = true,
|
|
21
17
|
Model extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,
|
|
18
|
+
State extends prismicT.FieldState = "filled",
|
|
22
19
|
>(
|
|
23
|
-
config: MockLinkToMediaValueConfig<
|
|
24
|
-
): MockLinkToMediaValue<
|
|
20
|
+
config: MockLinkToMediaValueConfig<Model, State> = {},
|
|
21
|
+
): MockLinkToMediaValue<State> => {
|
|
25
22
|
const faker = createFaker(config.seed);
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
if (config.state === "empty") {
|
|
25
|
+
return {
|
|
26
|
+
link_type: prismicT.LinkType.Media,
|
|
27
|
+
} as MockLinkToMediaValue<State>;
|
|
28
|
+
} else {
|
|
30
29
|
return {
|
|
31
30
|
link_type: prismicT.LinkType.Media,
|
|
32
31
|
name: faker.system.commonFileName(),
|
|
@@ -35,10 +34,6 @@ export const linkToMedia = <
|
|
|
35
34
|
size: faker.datatype.number().toString(),
|
|
36
35
|
height: faker.datatype.number().toString(),
|
|
37
36
|
width: faker.datatype.number().toString(),
|
|
38
|
-
} as
|
|
39
|
-
} else {
|
|
40
|
-
return {
|
|
41
|
-
link_type: prismicT.LinkType.Media,
|
|
42
|
-
} as MockLinkToMediaValue<IsFilled>;
|
|
37
|
+
} as MockLinkToMediaValue<State>;
|
|
43
38
|
}
|
|
44
39
|
};
|
package/src/value/number.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 MockNumberValueConfig<
|
|
8
8
|
Model extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,
|
|
9
|
-
|
|
9
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
10
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
10
11
|
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
export type MockNumberValue<
|
|
13
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
14
|
+
> = prismicT.NumberField<State>;
|
|
15
|
+
|
|
16
|
+
export const number = <
|
|
17
|
+
Model extends prismicT.CustomTypeModelNumberField = prismicT.CustomTypeModelNumberField,
|
|
18
|
+
State extends prismicT.FieldState = "filled",
|
|
19
|
+
>(
|
|
20
|
+
config: MockNumberValueConfig<Model, State> = {},
|
|
21
|
+
): MockNumberValue<State> => {
|
|
14
22
|
const faker = createFaker(config.seed);
|
|
15
23
|
|
|
16
|
-
return
|
|
24
|
+
return (
|
|
25
|
+
config.state === "empty" ? null : faker.datatype.number()
|
|
26
|
+
) as MockNumberValue<State>;
|
|
17
27
|
};
|
|
@@ -8,12 +8,12 @@ import { MockRichTextValueConfig } from "../../types";
|
|
|
8
8
|
import * as modelGen from "../../model";
|
|
9
9
|
|
|
10
10
|
type RichTextNodeTitleType =
|
|
11
|
-
| prismicT.RichTextNodeType.heading1
|
|
12
|
-
| prismicT.RichTextNodeType.heading2
|
|
13
|
-
| prismicT.RichTextNodeType.heading3
|
|
14
|
-
| prismicT.RichTextNodeType.heading4
|
|
15
|
-
| prismicT.RichTextNodeType.heading5
|
|
16
|
-
| prismicT.RichTextNodeType.heading6;
|
|
11
|
+
| typeof prismicT.RichTextNodeType.heading1
|
|
12
|
+
| typeof prismicT.RichTextNodeType.heading2
|
|
13
|
+
| typeof prismicT.RichTextNodeType.heading3
|
|
14
|
+
| typeof prismicT.RichTextNodeType.heading4
|
|
15
|
+
| typeof prismicT.RichTextNodeType.heading5
|
|
16
|
+
| typeof prismicT.RichTextNodeType.heading6;
|
|
17
17
|
|
|
18
18
|
type RTHeadingNode =
|
|
19
19
|
| prismicT.RTHeading1Node
|
|
@@ -61,7 +61,7 @@ export const heading = (
|
|
|
61
61
|
prismicT.RichTextNodeType.heading4,
|
|
62
62
|
prismicT.RichTextNodeType.heading5,
|
|
63
63
|
prismicT.RichTextNodeType.heading6,
|
|
64
|
-
].includes(type as
|
|
64
|
+
].includes(type as RichTextNodeTitleType),
|
|
65
65
|
) as RichTextNodeTitleType[];
|
|
66
66
|
const type = faker.random.arrayElement(types);
|
|
67
67
|
|
|
@@ -1,6 +1,6 @@
|
|
|
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
6
|
import { MockRichTextValueConfig } from "../../types";
|
|
@@ -11,7 +11,11 @@ export const image = (
|
|
|
11
11
|
config: MockRichTextImageValueConfig = {},
|
|
12
12
|
): prismicT.RTImageNode | undefined => {
|
|
13
13
|
const imageData = getMockImageData({ seed: config.seed });
|
|
14
|
-
const imageField =
|
|
14
|
+
const imageField = buildImageFieldImage({
|
|
15
|
+
seed: config.seed,
|
|
16
|
+
imageData,
|
|
17
|
+
state: false,
|
|
18
|
+
});
|
|
15
19
|
|
|
16
20
|
return {
|
|
17
21
|
type: prismicT.RichTextNodeType.image,
|
package/src/value/select.ts
CHANGED
|
@@ -2,23 +2,38 @@ 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
|
|
|
9
9
|
export type MockSelectValueConfig<
|
|
10
10
|
Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
|
|
11
|
-
|
|
11
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
12
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
12
13
|
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
export type MockSelectValue<
|
|
15
|
+
Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
|
|
16
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
17
|
+
> = prismicT.SelectField<Model["config"]["options"][number], State>;
|
|
18
|
+
|
|
19
|
+
export const select = <
|
|
20
|
+
Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
|
|
21
|
+
State extends prismicT.FieldState = "filled",
|
|
22
|
+
>(
|
|
23
|
+
config: MockSelectValueConfig<Model, State> = {},
|
|
24
|
+
): MockSelectValue<Model, State> => {
|
|
16
25
|
const faker = createFaker(config.seed);
|
|
17
26
|
|
|
18
27
|
const model = config.model || modelGen.select({ seed: config.seed });
|
|
19
28
|
const defaultValue = model.config.default_value;
|
|
20
29
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
if (config.state === "empty") {
|
|
31
|
+
return null as MockSelectValue<Model, State>;
|
|
32
|
+
} else {
|
|
33
|
+
return (
|
|
34
|
+
typeof defaultValue === "string" && faker.datatype.boolean()
|
|
35
|
+
? defaultValue
|
|
36
|
+
: faker.random.arrayElement(model.config.options)
|
|
37
|
+
) as MockSelectValue<Model, State>;
|
|
38
|
+
}
|
|
24
39
|
};
|
package/src/value/sharedSlice.ts
CHANGED
|
@@ -14,7 +14,7 @@ export type MockSharedSliceValueConfig<
|
|
|
14
14
|
Model extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,
|
|
15
15
|
> = Pick<
|
|
16
16
|
MockSharedSliceVariationValueConfig,
|
|
17
|
-
"
|
|
17
|
+
"itemsCount" | "primaryFieldConfigs" | "itemsFieldConfigs"
|
|
18
18
|
> &
|
|
19
19
|
MockValueConfig<Model>;
|
|
20
20
|
|
|
@@ -31,7 +31,7 @@ export const sharedSlice = <
|
|
|
31
31
|
return sharedSliceVariation({
|
|
32
32
|
seed: config.seed,
|
|
33
33
|
model: variationModel,
|
|
34
|
-
|
|
34
|
+
itemsCount: config.itemsCount,
|
|
35
35
|
type: model.id,
|
|
36
36
|
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
37
37
|
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
|
-
import * as changeCase from "change-case";
|
|
3
2
|
|
|
4
3
|
import { MockValueConfig, ModelValue } from "../types";
|
|
5
4
|
|
|
@@ -12,31 +11,12 @@ import {
|
|
|
12
11
|
|
|
13
12
|
import * as modelGen from "../model";
|
|
14
13
|
|
|
15
|
-
const patterns = {
|
|
16
|
-
none: {
|
|
17
|
-
minItems: 0,
|
|
18
|
-
maxItems: 0,
|
|
19
|
-
},
|
|
20
|
-
short: {
|
|
21
|
-
minItems: 1,
|
|
22
|
-
maxItems: 3,
|
|
23
|
-
},
|
|
24
|
-
medium: {
|
|
25
|
-
minItems: 3,
|
|
26
|
-
maxItems: 6,
|
|
27
|
-
},
|
|
28
|
-
long: {
|
|
29
|
-
minItems: 6,
|
|
30
|
-
maxItems: 12,
|
|
31
|
-
},
|
|
32
|
-
} as const;
|
|
33
|
-
|
|
34
14
|
export type MockSharedSliceVariationValueConfig<
|
|
35
15
|
Model extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,
|
|
36
16
|
> = {
|
|
37
17
|
type?: string;
|
|
38
18
|
label?: string;
|
|
39
|
-
|
|
19
|
+
itemsCount?: number;
|
|
40
20
|
primaryFieldConfigs?: ValueForModelMapConfigs;
|
|
41
21
|
itemsFieldConfigs?: ValueForModelMapConfigs;
|
|
42
22
|
} & MockValueConfig<Model>;
|
|
@@ -51,28 +31,20 @@ export const sharedSliceVariation = <
|
|
|
51
31
|
const model =
|
|
52
32
|
config.model || modelGen.sharedSliceVariation({ seed: config.seed });
|
|
53
33
|
|
|
54
|
-
const patternKey =
|
|
55
|
-
config.pattern ||
|
|
56
|
-
faker.random.arrayElement(
|
|
57
|
-
Object.keys(patterns) as (keyof typeof patterns)[],
|
|
58
|
-
);
|
|
59
|
-
const pattern = patterns[patternKey];
|
|
60
|
-
|
|
61
34
|
const sliceType = config.type ?? generateFieldId({ seed: config.seed });
|
|
62
|
-
const sliceLabel =
|
|
63
|
-
config.label ?? changeCase.capitalCase(faker.company.bsNoun());
|
|
64
35
|
|
|
65
36
|
const itemsCount =
|
|
66
37
|
Object.keys(model.items).length > 0
|
|
67
|
-
?
|
|
68
|
-
|
|
69
|
-
|
|
38
|
+
? config.itemsCount ??
|
|
39
|
+
faker.datatype.number({
|
|
40
|
+
min: 1,
|
|
41
|
+
max: 6,
|
|
70
42
|
})
|
|
71
43
|
: 0;
|
|
72
44
|
|
|
73
45
|
return {
|
|
74
46
|
slice_type: sliceType,
|
|
75
|
-
slice_label:
|
|
47
|
+
slice_label: null,
|
|
76
48
|
variation: model.id,
|
|
77
49
|
version: faker.git.shortSha(),
|
|
78
50
|
primary: valueForModelMap({
|
package/src/value/slice.ts
CHANGED
|
@@ -12,31 +12,12 @@ import {
|
|
|
12
12
|
|
|
13
13
|
import * as modelGen from "../model";
|
|
14
14
|
|
|
15
|
-
const patterns = {
|
|
16
|
-
none: {
|
|
17
|
-
minItems: 0,
|
|
18
|
-
maxItems: 0,
|
|
19
|
-
},
|
|
20
|
-
short: {
|
|
21
|
-
minItems: 1,
|
|
22
|
-
maxItems: 3,
|
|
23
|
-
},
|
|
24
|
-
medium: {
|
|
25
|
-
minItems: 3,
|
|
26
|
-
maxItems: 6,
|
|
27
|
-
},
|
|
28
|
-
long: {
|
|
29
|
-
minItems: 6,
|
|
30
|
-
maxItems: 12,
|
|
31
|
-
},
|
|
32
|
-
} as const;
|
|
33
|
-
|
|
34
15
|
export type MockSliceValueConfig<
|
|
35
16
|
Model extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,
|
|
36
17
|
> = {
|
|
37
18
|
type?: string;
|
|
38
19
|
label?: string | null;
|
|
39
|
-
|
|
20
|
+
itemsCount?: number;
|
|
40
21
|
primaryFieldConfigs?: ValueForModelMapConfigs;
|
|
41
22
|
itemsFieldConfigs?: ValueForModelMapConfigs;
|
|
42
23
|
} & MockValueConfig<Model>;
|
|
@@ -50,13 +31,6 @@ export const slice = <
|
|
|
50
31
|
|
|
51
32
|
const model = config.model || modelGen.slice({ seed: config.seed });
|
|
52
33
|
|
|
53
|
-
const patternKey =
|
|
54
|
-
config.pattern ||
|
|
55
|
-
faker.random.arrayElement(
|
|
56
|
-
Object.keys(patterns) as (keyof typeof patterns)[],
|
|
57
|
-
);
|
|
58
|
-
const pattern = patterns[patternKey];
|
|
59
|
-
|
|
60
34
|
const sliceType = config.type ?? generateFieldId({ seed: config.seed });
|
|
61
35
|
const sliceLabel =
|
|
62
36
|
config.label !== undefined
|
|
@@ -65,9 +39,10 @@ export const slice = <
|
|
|
65
39
|
|
|
66
40
|
const itemsCount =
|
|
67
41
|
Object.keys(model.repeat).length > 0
|
|
68
|
-
?
|
|
69
|
-
|
|
70
|
-
|
|
42
|
+
? config.itemsCount ??
|
|
43
|
+
faker.datatype.number({
|
|
44
|
+
min: 1,
|
|
45
|
+
max: 6,
|
|
71
46
|
})
|
|
72
47
|
: 0;
|
|
73
48
|
|
package/src/value/sliceZone.ts
CHANGED
|
@@ -10,26 +10,11 @@ import * as modelGen from "../model";
|
|
|
10
10
|
import { slice } from "./slice";
|
|
11
11
|
import { sharedSlice } from "./sharedSlice";
|
|
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 MockSliceZoneValueConfig<
|
|
29
14
|
Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
|
|
30
15
|
> = {
|
|
31
16
|
sharedSliceModels?: prismicT.SharedSliceModel[];
|
|
32
|
-
|
|
17
|
+
itemsCount?: number;
|
|
33
18
|
primaryFieldConfigs?: ValueForModelMapConfigs;
|
|
34
19
|
itemsFieldConfigs?: ValueForModelMapConfigs;
|
|
35
20
|
} & MockValueConfig<Model>;
|
|
@@ -43,57 +28,56 @@ export const sliceZone = <
|
|
|
43
28
|
|
|
44
29
|
const model = config.model || modelGen.sliceZone({ seed: config.seed });
|
|
45
30
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const itemsCount = faker.datatype.number({
|
|
54
|
-
min: pattern.minItems,
|
|
55
|
-
max: pattern.maxItems,
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
return Array(itemsCount)
|
|
59
|
-
.fill(undefined)
|
|
60
|
-
.map(() => {
|
|
61
|
-
const choices = Object.entries(model.config.choices);
|
|
62
|
-
const [choiceType, choiceModel] = faker.random.arrayElement(choices);
|
|
63
|
-
|
|
64
|
-
const choiceLabels = model.config.labels[choiceType] || [];
|
|
65
|
-
const choiceLabel = faker.random.arrayElement(choiceLabels);
|
|
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
|
+
});
|
|
66
38
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
type: choiceType,
|
|
73
|
-
label: choiceLabel ? choiceLabel.name : null,
|
|
74
|
-
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
75
|
-
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
39
|
+
return Array(itemsCount)
|
|
40
|
+
.fill(undefined)
|
|
41
|
+
.map(() => {
|
|
42
|
+
const choices = Object.entries(model.config.choices);
|
|
43
|
+
const [choiceType, choiceModel] = faker.random.arrayElement(choices);
|
|
78
44
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
(sharedSliceModel) => sharedSliceModel.id === choiceType,
|
|
82
|
-
);
|
|
45
|
+
const choiceLabels = model.config.labels[choiceType] || [];
|
|
46
|
+
const choiceLabel = faker.random.arrayElement(choiceLabels);
|
|
83
47
|
|
|
84
|
-
|
|
85
|
-
|
|
48
|
+
switch (choiceModel.type) {
|
|
49
|
+
case prismicT.CustomTypeModelSliceType.Slice: {
|
|
50
|
+
return slice({
|
|
86
51
|
seed: config.seed,
|
|
87
|
-
model:
|
|
52
|
+
model: choiceModel,
|
|
53
|
+
type: choiceType,
|
|
54
|
+
label: choiceLabel ? choiceLabel.name : null,
|
|
88
55
|
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
89
56
|
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
90
57
|
});
|
|
91
58
|
}
|
|
59
|
+
|
|
60
|
+
case prismicT.CustomTypeModelSliceType.SharedSlice: {
|
|
61
|
+
const sharedSliceModel = config.sharedSliceModels?.find(
|
|
62
|
+
(sharedSliceModel) => sharedSliceModel.id === choiceType,
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
if (sharedSliceModel) {
|
|
66
|
+
return sharedSlice({
|
|
67
|
+
seed: config.seed,
|
|
68
|
+
model: sharedSliceModel,
|
|
69
|
+
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
70
|
+
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
92
74
|
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
75
|
+
})
|
|
76
|
+
.filter(
|
|
77
|
+
(slice): slice is prismicT.Slice | prismicT.SharedSlice =>
|
|
78
|
+
slice !== undefined,
|
|
79
|
+
) as ModelValue<Model>;
|
|
80
|
+
} else {
|
|
81
|
+
return [] as unknown as ModelValue<Model>;
|
|
82
|
+
}
|
|
99
83
|
};
|
package/src/value/timestamp.ts
CHANGED
|
@@ -2,18 +2,27 @@ 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 MockTimestampValueConfig<
|
|
8
8
|
Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
|
|
9
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
9
10
|
> = {
|
|
10
11
|
after?: Date;
|
|
11
12
|
before?: Date;
|
|
12
|
-
} & MockValueConfig<Model
|
|
13
|
+
} & MockValueConfig<Model> &
|
|
14
|
+
MockValueStateConfig<State>;
|
|
13
15
|
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
export type MockTimestampValue<
|
|
17
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
18
|
+
> = prismicT.TimestampField<State>;
|
|
19
|
+
|
|
20
|
+
export const timestamp = <
|
|
21
|
+
Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
|
|
22
|
+
State extends prismicT.FieldState = "filled",
|
|
23
|
+
>(
|
|
24
|
+
config: MockTimestampValueConfig<Model, State> = {},
|
|
25
|
+
): MockTimestampValue<State> => {
|
|
17
26
|
const faker = createFaker(config.seed);
|
|
18
27
|
|
|
19
28
|
// Faker seems to have problems accepting parameters for `faker.date.between`
|
|
@@ -26,5 +35,9 @@ export const timestamp = (
|
|
|
26
35
|
config.before ||
|
|
27
36
|
faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
|
|
28
37
|
|
|
29
|
-
return
|
|
38
|
+
return (
|
|
39
|
+
config.state === "empty"
|
|
40
|
+
? null
|
|
41
|
+
: faker.date.between(after, before).toISOString()
|
|
42
|
+
) as MockTimestampValue<State>;
|
|
30
43
|
};
|
package/src/value/title.ts
CHANGED
package/src/value/uid.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type MockUIDValueConfig<
|
|
|
11
11
|
|
|
12
12
|
export const uid = (
|
|
13
13
|
config: MockUIDValueConfig = {},
|
|
14
|
-
): prismicT.PrismicDocument["uid"] => {
|
|
14
|
+
): NonNullable<prismicT.PrismicDocument["uid"]> => {
|
|
15
15
|
const faker = createFaker(config.seed);
|
|
16
16
|
|
|
17
17
|
return changeCase.snakeCase(faker.lorem.words(2));
|