@prismicio/mock 0.0.9 → 0.1.1
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 +153 -149
- package/dist/api/index.cjs.map +1 -1
- package/dist/api/index.d.ts +51 -5
- package/dist/api/index.js +153 -149
- package/dist/api/index.js.map +1 -1
- package/dist/index.cjs +609 -357
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +240 -70
- package/dist/index.js +602 -358
- package/dist/index.js.map +1 -1
- package/dist/model/index.cjs +236 -66
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.ts +113 -27
- package/dist/model/index.js +236 -66
- package/dist/model/index.js.map +1 -1
- package/dist/value/index.cjs +347 -315
- package/dist/value/index.cjs.map +1 -1
- package/dist/value/index.d.ts +90 -38
- package/dist/value/index.js +347 -315
- package/dist/value/index.js.map +1 -1
- package/package.json +14 -15
- package/src/api/createAPIMockFactory.ts +56 -0
- package/src/api/query.ts +2 -2
- package/src/api/ref.ts +3 -3
- package/src/api/repository.ts +7 -9
- package/src/api/tags.ts +5 -2
- package/src/createMockFactory.ts +52 -0
- package/src/index.ts +15 -0
- package/src/lib/buildEmbedField.ts +13 -4
- package/src/lib/buildImageFieldImage.ts +16 -5
- package/src/lib/createFaker.ts +14 -15
- package/src/lib/generateCustomTypeId.ts +12 -4
- package/src/lib/generateFieldId.ts +12 -4
- package/src/lib/generateTags.ts +13 -4
- package/src/lib/getMockEmbedData.ts +12 -4
- package/src/lib/getMockImageData.ts +12 -4
- package/src/lib/valueForModel.ts +47 -30
- package/src/lib/valueForModelMap.ts +24 -4
- package/src/model/boolean.ts +5 -5
- package/src/model/buildMockGroupFieldMap.ts +4 -4
- package/src/model/color.ts +2 -2
- package/src/model/contentRelationship.ts +2 -2
- package/src/model/createModelMockFactory.ts +213 -0
- package/src/model/customType.ts +3 -3
- package/src/model/date.ts +2 -2
- package/src/model/embed.ts +2 -2
- package/src/model/geoPoint.ts +2 -2
- package/src/model/group.ts +6 -6
- package/src/model/image.ts +3 -3
- package/src/model/index.ts +2 -0
- package/src/model/integrationFields.ts +2 -2
- package/src/model/keyText.ts +2 -2
- package/src/model/link.ts +3 -3
- package/src/model/linkToMedia.ts +3 -3
- package/src/model/number.ts +2 -2
- package/src/model/richText.ts +2 -2
- package/src/model/select.ts +3 -3
- package/src/model/sharedSlice.ts +3 -3
- package/src/model/sharedSliceVariation.ts +6 -6
- package/src/model/slice.ts +3 -3
- package/src/model/sliceZone.ts +7 -4
- package/src/model/timestamp.ts +2 -2
- package/src/model/title.ts +2 -2
- package/src/model/uid.ts +2 -2
- package/src/types.ts +67 -25
- package/src/value/boolean.ts +3 -5
- package/src/value/color.ts +2 -2
- package/src/value/contentRelationship.ts +18 -15
- package/src/value/createValueMockFactory.ts +236 -0
- package/src/value/customType.ts +7 -7
- package/src/value/date.ts +6 -2
- package/src/value/embed.ts +6 -3
- package/src/value/geoPoint.ts +2 -2
- package/src/value/group.ts +5 -5
- package/src/value/image.ts +26 -18
- package/src/value/integrationFields.ts +12 -26
- package/src/value/keyText.ts +2 -2
- package/src/value/link.ts +9 -7
- package/src/value/linkToMedia.ts +2 -2
- package/src/value/number.ts +2 -2
- package/src/value/richText/embed.ts +6 -3
- package/src/value/richText/heading.ts +29 -17
- package/src/value/richText/image.ts +6 -3
- package/src/value/richText/index.ts +71 -43
- package/src/value/richText/list.ts +2 -2
- package/src/value/richText/oList.ts +2 -2
- package/src/value/richText/paragraph.ts +2 -2
- package/src/value/richText/preformatted.ts +2 -2
- package/src/value/select.ts +10 -6
- package/src/value/sharedSlice.ts +4 -4
- package/src/value/sharedSliceVariation.ts +9 -10
- package/src/value/slice.ts +9 -9
- package/src/value/sliceZone.ts +10 -8
- package/src/value/timestamp.ts +2 -2
- package/src/value/title.ts +7 -3
- package/src/value/uid.ts +5 -3
package/src/model/image.ts
CHANGED
|
@@ -5,15 +5,15 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockImageModelConfig<ThumbnailNames extends string = string> = {
|
|
8
|
+
export type MockImageModelConfig<ThumbnailNames extends string = string> = {
|
|
9
9
|
withConstraint?: boolean;
|
|
10
10
|
thumbnailNames?: readonly ThumbnailNames[];
|
|
11
11
|
} & MockModelConfig;
|
|
12
12
|
|
|
13
13
|
export const image = <ThumbnailNames extends string = string>(
|
|
14
|
-
config: MockImageModelConfig<ThumbnailNames
|
|
14
|
+
config: MockImageModelConfig<ThumbnailNames>,
|
|
15
15
|
): prismicT.CustomTypeModelImageField<ThumbnailNames> => {
|
|
16
|
-
const faker = createFaker(config.seed);
|
|
16
|
+
const faker = config.faker || createFaker(config.seed);
|
|
17
17
|
|
|
18
18
|
const thumbnails = (config.thumbnailNames || []).map((name) => {
|
|
19
19
|
return {
|
package/src/model/index.ts
CHANGED
|
@@ -10,9 +10,9 @@ export type MockIntegrationFieldsModelConfig = {
|
|
|
10
10
|
} & MockModelConfig;
|
|
11
11
|
|
|
12
12
|
export const integrationFields = (
|
|
13
|
-
config: MockIntegrationFieldsModelConfig
|
|
13
|
+
config: MockIntegrationFieldsModelConfig,
|
|
14
14
|
): prismicT.CustomTypeModelIntegrationFieldsField => {
|
|
15
|
-
const faker = createFaker(config.seed);
|
|
15
|
+
const faker = config.faker || createFaker(config.seed);
|
|
16
16
|
|
|
17
17
|
return {
|
|
18
18
|
type: prismicT.CustomTypeModelFieldType.IntegrationFields,
|
package/src/model/keyText.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockKeyTextModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const keyText = (
|
|
11
|
-
config: MockKeyTextModelConfig
|
|
11
|
+
config: MockKeyTextModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelKeyTextField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Text,
|
package/src/model/link.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockLinkModel<AllowTargetBlank extends boolean = boolean> =
|
|
8
|
+
export type MockLinkModel<AllowTargetBlank extends boolean = boolean> =
|
|
9
9
|
prismicT.CustomTypeModelLinkField & {
|
|
10
10
|
config: AllowTargetBlank extends true
|
|
11
11
|
? {
|
|
@@ -21,9 +21,9 @@ export type MockLinkModelConfig<AllowTargetBlank extends boolean = boolean> = {
|
|
|
21
21
|
} & MockModelConfig;
|
|
22
22
|
|
|
23
23
|
export const link = <AllowTargetBlank extends boolean = boolean>(
|
|
24
|
-
config: MockLinkModelConfig<AllowTargetBlank
|
|
24
|
+
config: MockLinkModelConfig<AllowTargetBlank>,
|
|
25
25
|
): MockLinkModel<AllowTargetBlank> => {
|
|
26
|
-
const faker = createFaker(config.seed);
|
|
26
|
+
const faker = config.faker || createFaker(config.seed);
|
|
27
27
|
|
|
28
28
|
return {
|
|
29
29
|
type: prismicT.CustomTypeModelFieldType.Link,
|
package/src/model/linkToMedia.ts
CHANGED
|
@@ -5,12 +5,12 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
export type
|
|
8
|
+
export type MockLinkToMediaModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const linkToMedia = (
|
|
11
|
-
config:
|
|
11
|
+
config: MockLinkToMediaModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelLinkToMediaField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Link,
|
package/src/model/number.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockNumberModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const number = (
|
|
11
|
-
config: MockNumberModelConfig
|
|
11
|
+
config: MockNumberModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelNumberField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Number,
|
package/src/model/richText.ts
CHANGED
|
@@ -12,11 +12,11 @@ export type MockRichTextModelConfig<
|
|
|
12
12
|
} & MockModelConfig;
|
|
13
13
|
|
|
14
14
|
export const richText = <WithMultipleBlocks extends boolean = boolean>(
|
|
15
|
-
config: MockRichTextModelConfig<WithMultipleBlocks
|
|
15
|
+
config: MockRichTextModelConfig<WithMultipleBlocks>,
|
|
16
16
|
): WithMultipleBlocks extends true
|
|
17
17
|
? prismicT.CustomTypeModelRichTextMultiField
|
|
18
18
|
: prismicT.CustomTypeModelRichTextSingleField => {
|
|
19
|
-
const faker = createFaker(config.seed);
|
|
19
|
+
const faker = config.faker || createFaker(config.seed);
|
|
20
20
|
|
|
21
21
|
const blockTypes = faker
|
|
22
22
|
.randomElements([
|
package/src/model/select.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockSelectModelConfig<
|
|
8
|
+
export type MockSelectModelConfig<
|
|
9
9
|
Option extends string = string,
|
|
10
10
|
DefaultOption extends Option = Option,
|
|
11
11
|
> = {
|
|
@@ -14,9 +14,9 @@ type MockSelectModelConfig<
|
|
|
14
14
|
} & MockModelConfig;
|
|
15
15
|
|
|
16
16
|
export const select = <Option extends string, DefaultOption extends Option>(
|
|
17
|
-
config: MockSelectModelConfig<Option, DefaultOption
|
|
17
|
+
config: MockSelectModelConfig<Option, DefaultOption>,
|
|
18
18
|
): prismicT.CustomTypeModelSelectField<Option, DefaultOption> => {
|
|
19
|
-
const faker = createFaker(config.seed);
|
|
19
|
+
const faker = config.faker || createFaker(config.seed);
|
|
20
20
|
|
|
21
21
|
return {
|
|
22
22
|
type: prismicT.CustomTypeModelFieldType.Select,
|
package/src/model/sharedSlice.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockSharedSliceModelConfig<
|
|
8
|
+
export type MockSharedSliceModelConfig<
|
|
9
9
|
Variation extends prismicT.SharedSliceModelVariation,
|
|
10
10
|
> = {
|
|
11
11
|
id?: string;
|
|
@@ -16,9 +16,9 @@ type MockSharedSliceModelConfig<
|
|
|
16
16
|
export const sharedSlice = <
|
|
17
17
|
Variation extends prismicT.SharedSliceModelVariation,
|
|
18
18
|
>(
|
|
19
|
-
config: MockSharedSliceModelConfig<Variation
|
|
19
|
+
config: MockSharedSliceModelConfig<Variation>,
|
|
20
20
|
): prismicT.SharedSliceModel<string, Variation> => {
|
|
21
|
-
const faker = createFaker(config.seed);
|
|
21
|
+
const faker = config.faker || createFaker(config.seed);
|
|
22
22
|
|
|
23
23
|
let name: string =
|
|
24
24
|
config.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));
|
|
@@ -2,6 +2,7 @@ import * as prismicT from "@prismicio/types";
|
|
|
2
2
|
import * as changeCase from "change-case";
|
|
3
3
|
|
|
4
4
|
import { createFaker } from "../lib/createFaker";
|
|
5
|
+
import { getMockImageData } from "../lib/getMockImageData";
|
|
5
6
|
|
|
6
7
|
import { GroupFieldModelMap, MockModelConfig } from "../types";
|
|
7
8
|
|
|
@@ -21,13 +22,9 @@ export const sharedSliceVariation = <
|
|
|
21
22
|
PrimaryFields extends GroupFieldModelMap,
|
|
22
23
|
ItemsFields extends GroupFieldModelMap,
|
|
23
24
|
>(
|
|
24
|
-
config: MockSharedSliceVariationModelConfig<
|
|
25
|
-
ID,
|
|
26
|
-
PrimaryFields,
|
|
27
|
-
ItemsFields
|
|
28
|
-
> = {},
|
|
25
|
+
config: MockSharedSliceVariationModelConfig<ID, PrimaryFields, ItemsFields>,
|
|
29
26
|
): prismicT.SharedSliceModelVariation<ID, PrimaryFields, ItemsFields> => {
|
|
30
|
-
const faker = createFaker(config.seed);
|
|
27
|
+
const faker = config.faker || createFaker(config.seed);
|
|
31
28
|
|
|
32
29
|
let name: string =
|
|
33
30
|
config.name || changeCase.capitalCase(faker.words(faker.range(1, 2)));
|
|
@@ -39,6 +36,8 @@ export const sharedSliceVariation = <
|
|
|
39
36
|
id = changeCase.snakeCase(config.name) as ID;
|
|
40
37
|
}
|
|
41
38
|
|
|
39
|
+
const imageData = getMockImageData({ faker });
|
|
40
|
+
|
|
42
41
|
return {
|
|
43
42
|
id,
|
|
44
43
|
name,
|
|
@@ -47,5 +46,6 @@ export const sharedSliceVariation = <
|
|
|
47
46
|
version: faker.hash(7),
|
|
48
47
|
primary: config.primaryFields || ({} as PrimaryFields),
|
|
49
48
|
items: config.itemsFields || ({} as ItemsFields),
|
|
49
|
+
imageUrl: imageData.url,
|
|
50
50
|
};
|
|
51
51
|
};
|
package/src/model/slice.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { GroupFieldModelMap, MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockSliceModelConfig<
|
|
8
|
+
export type MockSliceModelConfig<
|
|
9
9
|
NonRepeatFields extends GroupFieldModelMap = GroupFieldModelMap,
|
|
10
10
|
RepeatFields extends GroupFieldModelMap = GroupFieldModelMap,
|
|
11
11
|
> = {
|
|
@@ -17,9 +17,9 @@ export const slice = <
|
|
|
17
17
|
NonRepeatFields extends GroupFieldModelMap,
|
|
18
18
|
RepeatFields extends GroupFieldModelMap,
|
|
19
19
|
>(
|
|
20
|
-
config: MockSliceModelConfig<NonRepeatFields, RepeatFields
|
|
20
|
+
config: MockSliceModelConfig<NonRepeatFields, RepeatFields>,
|
|
21
21
|
): prismicT.CustomTypeModelSlice<NonRepeatFields, RepeatFields> => {
|
|
22
|
-
const faker = createFaker(config.seed);
|
|
22
|
+
const faker = config.faker || createFaker(config.seed);
|
|
23
23
|
|
|
24
24
|
return {
|
|
25
25
|
type: prismicT.CustomTypeModelSliceType.Slice,
|
package/src/model/sliceZone.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as prismicT from "@prismicio/types";
|
|
|
2
2
|
|
|
3
3
|
import { MockModelConfig } from "../types";
|
|
4
4
|
|
|
5
|
-
type MockSliceZoneModelConfig<
|
|
5
|
+
export type MockSliceZoneModelConfig<
|
|
6
6
|
Slices extends Record<
|
|
7
7
|
string,
|
|
8
8
|
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
@@ -20,10 +20,13 @@ export const sliceZone = <
|
|
|
20
20
|
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
21
21
|
>,
|
|
22
22
|
>(
|
|
23
|
-
config: MockSliceZoneModelConfig<Slices
|
|
23
|
+
config: MockSliceZoneModelConfig<Slices>,
|
|
24
24
|
): prismicT.CustomTypeModelSliceZoneField<Slices> => {
|
|
25
|
-
const labels =
|
|
26
|
-
|
|
25
|
+
const labels = {} as NonNullable<
|
|
26
|
+
NonNullable<
|
|
27
|
+
prismicT.CustomTypeModelSliceZoneField<Slices>["config"]
|
|
28
|
+
>["labels"]
|
|
29
|
+
>;
|
|
27
30
|
|
|
28
31
|
for (const choiceId in config.choices) {
|
|
29
32
|
const choice = config.choices[choiceId];
|
package/src/model/timestamp.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockTimestampModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const timestamp = (
|
|
11
|
-
config: MockTimestampModelConfig
|
|
11
|
+
config: MockTimestampModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelTimestampField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Timestamp,
|
package/src/model/title.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockTitleModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const title = (
|
|
11
|
-
config: MockTitleModelConfig
|
|
11
|
+
config: MockTitleModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelTitleField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
const single = faker
|
|
16
16
|
.randomElements([
|
package/src/model/uid.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockUIDModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const uid = (
|
|
11
|
-
config: MockUIDModelConfig
|
|
11
|
+
config: MockUIDModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelUIDField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.UID,
|
package/src/types.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
|
+
import { Faker } from "./lib/createFaker";
|
|
2
3
|
|
|
3
4
|
import * as value from "./value";
|
|
4
5
|
|
|
@@ -29,6 +30,10 @@ export type SetRequired<BaseType, Keys extends keyof BaseType> = Simplify<
|
|
|
29
30
|
|
|
30
31
|
export type Seed = string | number;
|
|
31
32
|
|
|
33
|
+
export type WithoutFakerConfig<T> = {
|
|
34
|
+
[P in keyof T as P extends "seed" | "faker" ? never : P]: T[P];
|
|
35
|
+
};
|
|
36
|
+
|
|
32
37
|
export interface MockImageData {
|
|
33
38
|
url: string;
|
|
34
39
|
width: number;
|
|
@@ -41,13 +46,25 @@ export type MockEmbedData = prismicT.AnyOEmbed &
|
|
|
41
46
|
html: string;
|
|
42
47
|
};
|
|
43
48
|
|
|
44
|
-
export type MockRestApiConfig =
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
export type MockRestApiConfig =
|
|
50
|
+
| {
|
|
51
|
+
seed: Seed;
|
|
52
|
+
faker?: never;
|
|
53
|
+
}
|
|
54
|
+
| {
|
|
55
|
+
faker: Faker;
|
|
56
|
+
seed?: never;
|
|
57
|
+
};
|
|
47
58
|
|
|
48
|
-
export type MockModelConfig =
|
|
49
|
-
|
|
50
|
-
|
|
59
|
+
export type MockModelConfig =
|
|
60
|
+
| {
|
|
61
|
+
seed: Seed;
|
|
62
|
+
faker?: never;
|
|
63
|
+
}
|
|
64
|
+
| {
|
|
65
|
+
faker: Faker;
|
|
66
|
+
seed?: never;
|
|
67
|
+
};
|
|
51
68
|
|
|
52
69
|
// TODO: Add to @prismicio/types
|
|
53
70
|
export type PrismicModel =
|
|
@@ -63,9 +80,17 @@ export type GroupFieldModelMap = Record<
|
|
|
63
80
|
>;
|
|
64
81
|
|
|
65
82
|
export type MockValueConfig<Model extends PrismicModel = PrismicModel> = {
|
|
66
|
-
seed?: Seed;
|
|
67
83
|
model?: Model;
|
|
68
|
-
}
|
|
84
|
+
} & (
|
|
85
|
+
| {
|
|
86
|
+
seed: Seed;
|
|
87
|
+
faker?: never;
|
|
88
|
+
}
|
|
89
|
+
| {
|
|
90
|
+
faker: Faker;
|
|
91
|
+
seed?: never;
|
|
92
|
+
}
|
|
93
|
+
);
|
|
69
94
|
|
|
70
95
|
export type MockValueStateConfig<
|
|
71
96
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
@@ -121,9 +146,17 @@ type CustomTypeModelStructuredTextField =
|
|
|
121
146
|
export type MockRichTextValueConfig<
|
|
122
147
|
Model extends CustomTypeModelStructuredTextField = CustomTypeModelStructuredTextField,
|
|
123
148
|
> = {
|
|
124
|
-
seed?: Seed;
|
|
125
149
|
model?: Model;
|
|
126
|
-
}
|
|
150
|
+
} & (
|
|
151
|
+
| {
|
|
152
|
+
seed: Seed;
|
|
153
|
+
faker?: never;
|
|
154
|
+
}
|
|
155
|
+
| {
|
|
156
|
+
faker: Faker;
|
|
157
|
+
seed?: never;
|
|
158
|
+
}
|
|
159
|
+
);
|
|
127
160
|
|
|
128
161
|
export type ModelValueMap<
|
|
129
162
|
T extends Record<string, prismicT.CustomTypeModelField>,
|
|
@@ -145,14 +178,18 @@ export type ModelValue<
|
|
|
145
178
|
: T extends prismicT.CustomTypeModelSliceZoneField
|
|
146
179
|
? prismicT.SliceZone<
|
|
147
180
|
ValueOf<{
|
|
148
|
-
[P in keyof T["config"]["choices"] as P extends string
|
|
181
|
+
[P in keyof NonNullable<T["config"]>["choices"] as P extends string
|
|
149
182
|
? P
|
|
150
|
-
: never]:
|
|
183
|
+
: never]: NonNullable<
|
|
184
|
+
T["config"]
|
|
185
|
+
>["choices"][P] extends prismicT.CustomTypeModelSlice
|
|
151
186
|
? CustomTypeModelSliceValue<
|
|
152
|
-
T["config"]["choices"][P],
|
|
187
|
+
NonNullable<T["config"]>["choices"][P],
|
|
153
188
|
P extends string ? P : string
|
|
154
189
|
>
|
|
155
|
-
:
|
|
190
|
+
: NonNullable<
|
|
191
|
+
T["config"]
|
|
192
|
+
>["choices"][P] extends prismicT.CustomTypeModelSharedSlice
|
|
156
193
|
? prismicT.SharedSlice<P extends string ? P : string>
|
|
157
194
|
: never;
|
|
158
195
|
}>,
|
|
@@ -187,12 +224,12 @@ type CustomTypeModelFieldForGroupValue<
|
|
|
187
224
|
? prismicT.BooleanField
|
|
188
225
|
: T extends prismicT.CustomTypeModelColorField
|
|
189
226
|
? prismicT.ColorField<State>
|
|
190
|
-
: T extends prismicT.CustomTypeModelTitleField
|
|
191
|
-
? prismicT.TitleField<State>
|
|
192
227
|
: T extends prismicT.CustomTypeModelRichTextField
|
|
193
228
|
? prismicT.RichTextField<State>
|
|
194
|
-
: T extends prismicT.
|
|
195
|
-
? prismicT.
|
|
229
|
+
: T extends prismicT.CustomTypeModelTitleField
|
|
230
|
+
? prismicT.TitleField<State>
|
|
231
|
+
: T extends prismicT.CustomTypeModelImageField<infer TThumbnailNames>
|
|
232
|
+
? prismicT.ImageField<TThumbnailNames, State>
|
|
196
233
|
: T extends prismicT.CustomTypeModelLinkField
|
|
197
234
|
? prismicT.LinkField<string, string, never, State>
|
|
198
235
|
: T extends prismicT.CustomTypeModelLinkToMediaField
|
|
@@ -214,27 +251,32 @@ type CustomTypeModelFieldForGroupValue<
|
|
|
214
251
|
: T extends prismicT.CustomTypeModelGeoPointField
|
|
215
252
|
? prismicT.GeoPointField<State>
|
|
216
253
|
: T extends prismicT.CustomTypeModelIntegrationFieldsField
|
|
217
|
-
? prismicT.IntegrationFields<
|
|
254
|
+
? prismicT.IntegrationFields<Record<string, unknown>, State>
|
|
218
255
|
: never;
|
|
219
256
|
|
|
220
257
|
type CustomTypeModelGroupFieldValue<
|
|
221
258
|
T extends prismicT.CustomTypeModelGroupField,
|
|
222
259
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
223
|
-
> = prismicT.GroupField<
|
|
260
|
+
> = prismicT.GroupField<
|
|
261
|
+
ModelValueMap<NonNullable<NonNullable<T["config"]>["fields"]>>,
|
|
262
|
+
State
|
|
263
|
+
>;
|
|
224
264
|
|
|
225
265
|
type CustomTypeModelSliceValue<
|
|
226
266
|
T extends prismicT.CustomTypeModelSlice,
|
|
227
267
|
SliceType = string,
|
|
228
268
|
> = prismicT.Slice<
|
|
229
269
|
SliceType,
|
|
230
|
-
ModelValueMap<T["non-repeat"]
|
|
231
|
-
ModelValueMap<T["repeat"]
|
|
270
|
+
ModelValueMap<NonNullable<T["non-repeat"]>>,
|
|
271
|
+
ModelValueMap<NonNullable<T["repeat"]>>
|
|
232
272
|
>;
|
|
233
273
|
|
|
234
274
|
type SharedSliceModelValue<T extends prismicT.SharedSliceModel> =
|
|
235
275
|
prismicT.SharedSlice<
|
|
236
276
|
T["id"],
|
|
237
|
-
SharedSliceModelVariationValue<
|
|
277
|
+
SharedSliceModelVariationValue<
|
|
278
|
+
IterableElement<NonNullable<T["variations"]>>
|
|
279
|
+
>
|
|
238
280
|
>;
|
|
239
281
|
|
|
240
282
|
type SharedSliceModelVariationValue<
|
|
@@ -243,7 +285,7 @@ type SharedSliceModelVariationValue<
|
|
|
243
285
|
string,
|
|
244
286
|
prismicT.SharedSliceVariation<
|
|
245
287
|
T["id"],
|
|
246
|
-
ModelValueMap<T["primary"]
|
|
247
|
-
ModelValueMap<T["items"]
|
|
288
|
+
ModelValueMap<NonNullable<T["primary"]>>,
|
|
289
|
+
ModelValueMap<NonNullable<T["items"]>>
|
|
248
290
|
>
|
|
249
291
|
>;
|
package/src/value/boolean.ts
CHANGED
|
@@ -8,12 +8,10 @@ export type MockBooleanValueConfig<
|
|
|
8
8
|
Model extends prismicT.CustomTypeModelBooleanField = prismicT.CustomTypeModelBooleanField,
|
|
9
9
|
> = MockValueConfig<Model>;
|
|
10
10
|
|
|
11
|
-
export const boolean = <
|
|
12
|
-
Model
|
|
13
|
-
>(
|
|
14
|
-
config: MockBooleanValueConfig<Model> = {},
|
|
11
|
+
export const boolean = <Model extends prismicT.CustomTypeModelBooleanField>(
|
|
12
|
+
config: MockBooleanValueConfig<Model>,
|
|
15
13
|
): prismicT.BooleanField => {
|
|
16
|
-
const faker = createFaker(config.seed);
|
|
14
|
+
const faker = config.faker || createFaker(config.seed);
|
|
17
15
|
|
|
18
16
|
return faker.boolean();
|
|
19
17
|
};
|
package/src/value/color.ts
CHANGED
|
@@ -17,9 +17,9 @@ export const color = <
|
|
|
17
17
|
Model extends prismicT.CustomTypeModelColorField = prismicT.CustomTypeModelColorField,
|
|
18
18
|
State extends prismicT.FieldState = "filled",
|
|
19
19
|
>(
|
|
20
|
-
config: MockColorValueConfig<Model, State
|
|
20
|
+
config: MockColorValueConfig<Model, State>,
|
|
21
21
|
): MockColorValue<State> => {
|
|
22
|
-
const faker = createFaker(config.seed);
|
|
22
|
+
const faker = config.faker || createFaker(config.seed);
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
25
|
config.state === "empty" ? null : faker.hexColor().toUpperCase()
|
|
@@ -5,7 +5,11 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
import { generateCustomTypeId } from "../lib/generateCustomTypeId";
|
|
6
6
|
import { generateTags } from "../lib/generateTags";
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
MockValueStateConfig,
|
|
10
|
+
MockValueConfig,
|
|
11
|
+
IterableElement,
|
|
12
|
+
} from "../types";
|
|
9
13
|
|
|
10
14
|
import * as modelGen from "../model";
|
|
11
15
|
|
|
@@ -26,7 +30,7 @@ type MockContentRelationshipValue<
|
|
|
26
30
|
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
27
31
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
28
32
|
> = prismicT.RelationField<
|
|
29
|
-
Model["config"]["customtypes"]
|
|
33
|
+
IterableElement<NonNullable<Model["config"]>["customtypes"]>,
|
|
30
34
|
string,
|
|
31
35
|
never,
|
|
32
36
|
State
|
|
@@ -36,17 +40,16 @@ export const contentRelationship = <
|
|
|
36
40
|
Model extends prismicT.CustomTypeModelContentRelationshipField = prismicT.CustomTypeModelContentRelationshipField,
|
|
37
41
|
State extends prismicT.FieldState = "filled",
|
|
38
42
|
>(
|
|
39
|
-
config: MockContentRelationshipValueConfig<Model, State
|
|
43
|
+
config: MockContentRelationshipValueConfig<Model, State>,
|
|
40
44
|
): MockContentRelationshipValue<Model, State> => {
|
|
41
|
-
const faker = createFaker(config.seed);
|
|
45
|
+
const faker = config.faker || createFaker(config.seed);
|
|
42
46
|
|
|
43
47
|
if (config.state === "empty") {
|
|
44
48
|
return {
|
|
45
49
|
link_type: prismicT.LinkType.Document,
|
|
46
50
|
} as MockContentRelationshipValue<Model, State>;
|
|
47
51
|
} else {
|
|
48
|
-
const model =
|
|
49
|
-
config.model || modelGen.contentRelationship({ seed: config.seed });
|
|
52
|
+
const model = config.model || modelGen.contentRelationship({ faker });
|
|
50
53
|
|
|
51
54
|
const linkableDocuments = config.linkableDocuments
|
|
52
55
|
? config.linkableDocuments.filter(
|
|
@@ -54,16 +57,16 @@ export const contentRelationship = <
|
|
|
54
57
|
document,
|
|
55
58
|
): document is prismicT.PrismicDocument<
|
|
56
59
|
never,
|
|
57
|
-
NonNullable<Model["config"]["customtypes"]>[number]
|
|
60
|
+
NonNullable<NonNullable<Model["config"]>["customtypes"]>[number]
|
|
58
61
|
> => {
|
|
59
62
|
let shouldKeep = true;
|
|
60
63
|
|
|
61
|
-
if (model.config
|
|
64
|
+
if (model.config?.customtypes) {
|
|
62
65
|
shouldKeep =
|
|
63
66
|
shouldKeep && model.config.customtypes.includes(document.type);
|
|
64
67
|
}
|
|
65
68
|
|
|
66
|
-
if (model.config
|
|
69
|
+
if (model.config?.tags) {
|
|
67
70
|
shouldKeep =
|
|
68
71
|
shouldKeep &&
|
|
69
72
|
model.config.tags.some((tag) => document.tags.includes(tag));
|
|
@@ -74,16 +77,16 @@ export const contentRelationship = <
|
|
|
74
77
|
)
|
|
75
78
|
: [
|
|
76
79
|
{
|
|
77
|
-
...documentGen({
|
|
78
|
-
type: model.config
|
|
80
|
+
...documentGen({ faker }),
|
|
81
|
+
type: model.config?.customtypes
|
|
79
82
|
? faker.randomElement(model.config.customtypes)
|
|
80
|
-
: generateCustomTypeId({
|
|
81
|
-
tags: model.config
|
|
83
|
+
: generateCustomTypeId({ faker }),
|
|
84
|
+
tags: model.config?.tags
|
|
82
85
|
? faker.randomElements(model.config.tags)
|
|
83
|
-
: generateTags({
|
|
86
|
+
: generateTags({ faker }),
|
|
84
87
|
} as prismicT.PrismicDocument<
|
|
85
88
|
never,
|
|
86
|
-
NonNullable<Model["config"]["customtypes"]>[number]
|
|
89
|
+
NonNullable<NonNullable<Model["config"]>["customtypes"]>[number]
|
|
87
90
|
>,
|
|
88
91
|
];
|
|
89
92
|
|