@prismicio/mock 0.0.4 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dist/api/index.cjs +54 -35
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.ts +4 -2
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/{index.mjs → index.js} +116 -63
- package/dist/api/index.js.map +1 -0
- package/dist/index.cjs +365 -417
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +157 -243
- package/dist/{index.mjs → index.js} +359 -409
- package/dist/index.js.map +1 -0
- package/dist/model/index.cjs +164 -204
- package/dist/model/index.cjs.map +1 -0
- package/dist/model/index.d.ts +73 -97
- 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 +310 -519
- package/dist/value/index.cjs.map +1 -0
- package/dist/value/index.d.ts +71 -132
- package/dist/value/index.d.ts.map +1 -0
- package/dist/value/{index.mjs → index.js} +474 -629
- package/dist/value/index.js.map +1 -0
- package/package.json +21 -21
- package/src/constants.ts +3 -1
- package/src/lib/buildAlternativeLanguage.ts +18 -0
- package/src/lib/buildContentRelationshipField.ts +12 -5
- package/src/lib/buildEmbedField.ts +1 -1
- package/src/lib/buildImageFieldImage.ts +48 -0
- package/src/lib/createFaker.ts +19 -10
- package/src/lib/valueForModelMap.ts +2 -2
- 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/integrationFields.ts +4 -2
- package/src/model/select.ts +11 -16
- package/src/model/sharedSlice.ts +23 -30
- package/src/model/sharedSliceVariation.ts +33 -21
- package/src/model/slice.ts +15 -19
- package/src/model/sliceZone.ts +25 -42
- package/src/types.ts +130 -83
- package/src/value/color.ts +16 -6
- package/src/value/contentRelationship.ts +52 -36
- package/src/value/customType.ts +22 -3
- 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 +35 -44
- 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 +60 -69
- package/src/value/timestamp.ts +19 -6
- package/src/value/title.ts +26 -13
- package/src/value/uid.ts +1 -1
- package/dist/model/index.mjs +0 -448
- package/src/lib/buildImageField.ts +0 -34
- package/src/lib/buildMockGroupFieldMap.ts +0 -84
|
@@ -2,18 +2,23 @@ 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 { generateCustomTypeId } from "../lib/generateCustomTypeId";
|
|
6
5
|
|
|
7
6
|
import { MockModelConfig } from "../types";
|
|
8
7
|
|
|
9
|
-
export type MockContentRelationshipModelConfig
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
export type MockContentRelationshipModelConfig<
|
|
9
|
+
CustomTypeIDs extends string = string,
|
|
10
|
+
Tags extends string = string,
|
|
11
|
+
> = {
|
|
12
|
+
customTypeIDs?: readonly CustomTypeIDs[];
|
|
13
|
+
tags?: readonly Tags[];
|
|
12
14
|
} & MockModelConfig;
|
|
13
15
|
|
|
14
|
-
export const contentRelationship =
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
export const contentRelationship = <
|
|
17
|
+
CustomTypeIDs extends string,
|
|
18
|
+
Tags extends string,
|
|
19
|
+
>(
|
|
20
|
+
config: MockContentRelationshipModelConfig<CustomTypeIDs, Tags> = {},
|
|
21
|
+
): prismicT.CustomTypeModelContentRelationshipField<CustomTypeIDs, Tags> => {
|
|
17
22
|
const faker = createFaker(config.seed);
|
|
18
23
|
|
|
19
24
|
return {
|
|
@@ -22,20 +27,8 @@ export const contentRelationship = (
|
|
|
22
27
|
label: changeCase.capitalCase(faker.company.bsNoun()),
|
|
23
28
|
placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
|
|
24
29
|
select: prismicT.CustomTypeModelLinkSelectType.Document,
|
|
25
|
-
customtypes: config.
|
|
26
|
-
|
|
27
|
-
.fill(undefined)
|
|
28
|
-
.map(() => generateCustomTypeId({ seed: config.seed }))
|
|
29
|
-
: undefined,
|
|
30
|
-
tags: config.constrainTags
|
|
31
|
-
? Array(faker.datatype.number({ min: 1, max: 3 }))
|
|
32
|
-
.fill(undefined)
|
|
33
|
-
.map(() =>
|
|
34
|
-
changeCase.capitalCase(
|
|
35
|
-
faker.lorem.words(faker.datatype.number({ min: 1, max: 3 })),
|
|
36
|
-
),
|
|
37
|
-
)
|
|
38
|
-
: undefined,
|
|
30
|
+
customtypes: config.customTypeIDs,
|
|
31
|
+
tags: config.tags,
|
|
39
32
|
},
|
|
40
33
|
};
|
|
41
34
|
};
|
package/src/model/customType.ts
CHANGED
|
@@ -1,74 +1,75 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
import * as changeCase from "change-case";
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
buildMockGroupFieldMap,
|
|
6
|
-
BuildMockGroupFieldMapConfig,
|
|
7
|
-
} from "../lib/buildMockGroupFieldMap";
|
|
8
4
|
import { createFaker } from "../lib/createFaker";
|
|
9
|
-
import { generateCustomTypeId } from "../lib/generateCustomTypeId";
|
|
10
|
-
import { generateFieldId } from "../lib/generateFieldId";
|
|
11
5
|
|
|
12
6
|
import { MockModelConfig } from "../types";
|
|
13
7
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
type MockCustomTypeModelConfig<
|
|
9
|
+
Definition extends
|
|
10
|
+
| prismicT.CustomTypeModelTab
|
|
11
|
+
| prismicT.CustomTypeModelDefinition =
|
|
12
|
+
| prismicT.CustomTypeModelTab
|
|
13
|
+
| prismicT.CustomTypeModelDefinition,
|
|
14
|
+
> = {
|
|
15
|
+
id?: string;
|
|
16
|
+
label?: string;
|
|
17
|
+
status?: boolean;
|
|
18
|
+
repeatable?: boolean;
|
|
21
19
|
} & (
|
|
22
20
|
| {
|
|
23
|
-
|
|
21
|
+
fields?: Definition;
|
|
22
|
+
tabs?: never;
|
|
24
23
|
}
|
|
25
24
|
| {
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
tabs?: Definition;
|
|
26
|
+
fields?: never;
|
|
28
27
|
}
|
|
29
28
|
) &
|
|
30
29
|
MockModelConfig;
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
for (let i = 0; i < tabsCount; i++) {
|
|
42
|
-
const tabName = changeCase.capitalCase(faker.company.bsNoun());
|
|
43
|
-
const tabFields: prismicT.CustomTypeModelTab = buildMockGroupFieldMap({
|
|
44
|
-
seed: config.seed,
|
|
45
|
-
configs: config.configs,
|
|
46
|
-
});
|
|
31
|
+
type MockCustomTypeModel<
|
|
32
|
+
Definition extends
|
|
33
|
+
| prismicT.CustomTypeModelTab
|
|
34
|
+
| prismicT.CustomTypeModelDefinition,
|
|
35
|
+
> = Definition extends prismicT.CustomTypeModelTab
|
|
36
|
+
? prismicT.CustomTypeModel<string, Record<"Main", Definition>>
|
|
37
|
+
: Definition extends prismicT.CustomTypeModelDefinition
|
|
38
|
+
? prismicT.CustomTypeModel<string, Definition>
|
|
39
|
+
: never;
|
|
47
40
|
|
|
48
|
-
|
|
49
|
-
|
|
41
|
+
export const customType = <
|
|
42
|
+
Definition extends
|
|
43
|
+
| prismicT.CustomTypeModelTab
|
|
44
|
+
| prismicT.CustomTypeModelDefinition,
|
|
45
|
+
>(
|
|
46
|
+
config: MockCustomTypeModelConfig<Definition> = {},
|
|
47
|
+
): MockCustomTypeModel<Definition> => {
|
|
48
|
+
const faker = createFaker(config.seed);
|
|
50
49
|
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
let label: string =
|
|
51
|
+
config.label || changeCase.capitalCase(faker.company.bsNoun());
|
|
52
|
+
let id: string = config.id || changeCase.snakeCase(label);
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
if (config.id && !config.label) {
|
|
55
|
+
label = changeCase.capitalCase(config.id);
|
|
56
|
+
} else if (config.label && !config.label) {
|
|
57
|
+
id = changeCase.snakeCase(config.label);
|
|
58
|
+
}
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
withSharedSlices: config.withSharedSlices,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
60
|
+
let json = {} as MockCustomTypeModel<Definition>["json"];
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
if ("fields" in config && config.fields) {
|
|
63
|
+
json = { Main: config.fields } as typeof json;
|
|
64
|
+
} else if ("tabs" in config && config.tabs) {
|
|
65
|
+
json = config.tabs as typeof json;
|
|
63
66
|
}
|
|
64
67
|
|
|
65
|
-
const id = generateCustomTypeId({ seed: config.seed });
|
|
66
|
-
|
|
67
68
|
return {
|
|
68
69
|
id,
|
|
69
|
-
label
|
|
70
|
-
status: faker.datatype.boolean(),
|
|
71
|
-
repeatable: faker.datatype.boolean(),
|
|
70
|
+
label,
|
|
71
|
+
status: config.status ?? faker.datatype.boolean(),
|
|
72
|
+
repeatable: config.repeatable ?? faker.datatype.boolean(),
|
|
72
73
|
json,
|
|
73
|
-
}
|
|
74
|
+
} as MockCustomTypeModel<Definition>;
|
|
74
75
|
};
|
package/src/model/group.ts
CHANGED
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
import * as changeCase from "change-case";
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
buildMockGroupFieldMap,
|
|
6
|
-
BuildMockGroupFieldMapConfig,
|
|
7
|
-
} from "../lib/buildMockGroupFieldMap";
|
|
8
4
|
import { createFaker } from "../lib/createFaker";
|
|
9
5
|
|
|
10
|
-
import { MockModelConfig } from "../types";
|
|
6
|
+
import { GroupFieldModelMap, MockModelConfig } from "../types";
|
|
11
7
|
|
|
12
|
-
type MockGroupModelConfig
|
|
8
|
+
type MockGroupModelConfig<Fields extends GroupFieldModelMap> = {
|
|
9
|
+
fields?: Fields;
|
|
10
|
+
} & MockModelConfig;
|
|
13
11
|
|
|
14
|
-
export const group = (
|
|
15
|
-
config: MockGroupModelConfig = {},
|
|
16
|
-
): prismicT.CustomTypeModelGroupField => {
|
|
12
|
+
export const group = <Fields extends GroupFieldModelMap>(
|
|
13
|
+
config: MockGroupModelConfig<Fields> = {},
|
|
14
|
+
): prismicT.CustomTypeModelGroupField<Fields> => {
|
|
17
15
|
const faker = createFaker(config.seed);
|
|
18
16
|
|
|
19
|
-
const fields = buildMockGroupFieldMap({
|
|
20
|
-
seed: config.seed,
|
|
21
|
-
configs: config.configs,
|
|
22
|
-
});
|
|
23
|
-
|
|
24
17
|
return {
|
|
25
18
|
type: prismicT.CustomTypeModelFieldType.Group,
|
|
26
19
|
config: {
|
|
27
20
|
label: changeCase.capitalCase(faker.company.bsNoun()),
|
|
28
|
-
fields,
|
|
21
|
+
fields: config.fields || ({} as Fields),
|
|
29
22
|
},
|
|
30
23
|
};
|
|
31
24
|
};
|
package/src/model/image.ts
CHANGED
|
@@ -5,17 +5,23 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockImageModelConfig = {
|
|
8
|
+
type MockImageModelConfig<ThumbnailNames extends string = string> = {
|
|
9
9
|
withConstraint?: boolean;
|
|
10
|
-
|
|
10
|
+
thumbnailNames?: readonly ThumbnailNames[];
|
|
11
11
|
} & MockModelConfig;
|
|
12
12
|
|
|
13
|
-
export const image = (
|
|
14
|
-
config: MockImageModelConfig = {},
|
|
15
|
-
): prismicT.CustomTypeModelImageField => {
|
|
13
|
+
export const image = <ThumbnailNames extends string = string>(
|
|
14
|
+
config: MockImageModelConfig<ThumbnailNames> = {},
|
|
15
|
+
): prismicT.CustomTypeModelImageField<ThumbnailNames> => {
|
|
16
16
|
const faker = createFaker(config.seed);
|
|
17
17
|
|
|
18
|
-
const
|
|
18
|
+
const thumbnails = (config.thumbnailNames || []).map((name) => {
|
|
19
|
+
return {
|
|
20
|
+
name,
|
|
21
|
+
width: faker.datatype.number({ min: 500, max: 2000 }),
|
|
22
|
+
height: faker.datatype.number({ min: 500, max: 2000 }),
|
|
23
|
+
};
|
|
24
|
+
});
|
|
19
25
|
|
|
20
26
|
return {
|
|
21
27
|
type: prismicT.CustomTypeModelFieldType.Image,
|
|
@@ -29,13 +35,7 @@ export const image = (
|
|
|
29
35
|
? faker.datatype.number({ min: 500, max: 2000 })
|
|
30
36
|
: null,
|
|
31
37
|
},
|
|
32
|
-
thumbnails
|
|
33
|
-
.fill(undefined)
|
|
34
|
-
.map(() => ({
|
|
35
|
-
name: changeCase.capitalCase(faker.company.bsNoun()),
|
|
36
|
-
width: faker.datatype.number({ min: 500, max: 2000 }),
|
|
37
|
-
height: faker.datatype.number({ min: 500, max: 2000 }),
|
|
38
|
-
})),
|
|
38
|
+
thumbnails,
|
|
39
39
|
},
|
|
40
40
|
};
|
|
41
41
|
};
|
package/src/model/index.ts
CHANGED
|
@@ -5,7 +5,9 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
export type MockIntegrationFieldsModelConfig =
|
|
8
|
+
export type MockIntegrationFieldsModelConfig = {
|
|
9
|
+
catalog?: string;
|
|
10
|
+
} & MockModelConfig;
|
|
9
11
|
|
|
10
12
|
export const integrationFields = (
|
|
11
13
|
config: MockIntegrationFieldsModelConfig = {},
|
|
@@ -16,7 +18,7 @@ export const integrationFields = (
|
|
|
16
18
|
type: prismicT.CustomTypeModelFieldType.IntegrationFields,
|
|
17
19
|
config: {
|
|
18
20
|
label: changeCase.capitalCase(faker.company.bsNoun()),
|
|
19
|
-
catalog: changeCase.snakeCase(faker.lorem.words(4)),
|
|
21
|
+
catalog: config.catalog || changeCase.snakeCase(faker.lorem.words(4)),
|
|
20
22
|
},
|
|
21
23
|
};
|
|
22
24
|
};
|
package/src/model/select.ts
CHANGED
|
@@ -5,31 +5,26 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockSelectModelConfig
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
type MockSelectModelConfig<
|
|
9
|
+
Option extends string = string,
|
|
10
|
+
DefaultOption extends Option = Option,
|
|
11
|
+
> = {
|
|
12
|
+
options?: Option[];
|
|
13
|
+
defaultValue?: DefaultOption;
|
|
11
14
|
} & MockModelConfig;
|
|
12
15
|
|
|
13
|
-
export const select = (
|
|
14
|
-
config: MockSelectModelConfig = {},
|
|
15
|
-
): prismicT.CustomTypeModelSelectField => {
|
|
16
|
+
export const select = <Option extends string, DefaultOption extends Option>(
|
|
17
|
+
config: MockSelectModelConfig<Option, DefaultOption> = {},
|
|
18
|
+
): prismicT.CustomTypeModelSelectField<Option, DefaultOption> => {
|
|
16
19
|
const faker = createFaker(config.seed);
|
|
17
20
|
|
|
18
|
-
const optionsCount =
|
|
19
|
-
config.optionsCount ?? faker.datatype.number({ min: 1, max: 5 });
|
|
20
|
-
const options = Array(optionsCount)
|
|
21
|
-
.fill(undefined)
|
|
22
|
-
.map(() => changeCase.capitalCase(faker.company.bsBuzz()));
|
|
23
|
-
|
|
24
21
|
return {
|
|
25
22
|
type: prismicT.CustomTypeModelFieldType.Select,
|
|
26
23
|
config: {
|
|
27
24
|
label: changeCase.capitalCase(faker.company.bsNoun()),
|
|
28
25
|
placeholder: changeCase.sentenceCase(faker.lorem.words(3)),
|
|
29
|
-
options,
|
|
30
|
-
default_value: config.
|
|
31
|
-
? faker.random.arrayElement(options)
|
|
32
|
-
: undefined,
|
|
26
|
+
options: config.options || [],
|
|
27
|
+
default_value: config.defaultValue || undefined,
|
|
33
28
|
},
|
|
34
29
|
};
|
|
35
30
|
};
|
package/src/model/sharedSlice.ts
CHANGED
|
@@ -5,43 +5,36 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export const sharedSlice = (
|
|
22
|
-
config: MockSharedSliceModelConfig = {},
|
|
23
|
-
): prismicT.SharedSliceModel => {
|
|
8
|
+
type MockSharedSliceModelConfig<
|
|
9
|
+
Variation extends prismicT.SharedSliceModelVariation,
|
|
10
|
+
> = {
|
|
11
|
+
id?: string;
|
|
12
|
+
name?: string;
|
|
13
|
+
variations?: Variation[];
|
|
14
|
+
} & MockModelConfig;
|
|
15
|
+
|
|
16
|
+
export const sharedSlice = <
|
|
17
|
+
Variation extends prismicT.SharedSliceModelVariation,
|
|
18
|
+
>(
|
|
19
|
+
config: MockSharedSliceModelConfig<Variation> = {},
|
|
20
|
+
): prismicT.SharedSliceModel<string, Variation> => {
|
|
24
21
|
const faker = createFaker(config.seed);
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
config.
|
|
23
|
+
let name: string =
|
|
24
|
+
config.name || changeCase.capitalCase(faker.company.bsNoun());
|
|
25
|
+
let id: string = config.id || changeCase.snakeCase(name);
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
.
|
|
33
|
-
|
|
34
|
-
seed: config.seed,
|
|
35
|
-
itemsFieldConfig: config.itemsFieldConfig,
|
|
36
|
-
primaryFieldConfig: config.primaryFieldConfig,
|
|
37
|
-
}),
|
|
38
|
-
);
|
|
27
|
+
if (config.id && !config.name) {
|
|
28
|
+
name = changeCase.pascalCase(config.id);
|
|
29
|
+
} else if (config.name && !config.name) {
|
|
30
|
+
id = changeCase.snakeCase(config.name);
|
|
31
|
+
}
|
|
39
32
|
|
|
40
33
|
return {
|
|
41
34
|
type: prismicT.CustomTypeModelSliceType.SharedSlice,
|
|
42
|
-
id
|
|
35
|
+
id,
|
|
43
36
|
name,
|
|
44
37
|
description: faker.lorem.sentence(),
|
|
45
|
-
variations,
|
|
38
|
+
variations: config.variations || ([] as Variation[]),
|
|
46
39
|
};
|
|
47
40
|
};
|
|
@@ -2,38 +2,50 @@ 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 {
|
|
6
|
-
buildMockGroupFieldMap,
|
|
7
|
-
BuildMockGroupFieldMapConfig,
|
|
8
|
-
} from "../lib/buildMockGroupFieldMap";
|
|
9
5
|
|
|
10
|
-
import { MockModelConfig } from "../types";
|
|
6
|
+
import { GroupFieldModelMap, MockModelConfig } from "../types";
|
|
11
7
|
|
|
12
|
-
export type MockSharedSliceVariationModelConfig
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
export type MockSharedSliceVariationModelConfig<
|
|
9
|
+
ID extends string = string,
|
|
10
|
+
PrimaryFields extends GroupFieldModelMap = GroupFieldModelMap,
|
|
11
|
+
ItemsFields extends GroupFieldModelMap = GroupFieldModelMap,
|
|
12
|
+
> = {
|
|
13
|
+
id?: ID;
|
|
14
|
+
name?: string;
|
|
15
|
+
primaryFields?: PrimaryFields;
|
|
16
|
+
itemsFields?: ItemsFields;
|
|
15
17
|
} & MockModelConfig;
|
|
16
18
|
|
|
17
|
-
export const sharedSliceVariation =
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
export const sharedSliceVariation = <
|
|
20
|
+
ID extends string,
|
|
21
|
+
PrimaryFields extends GroupFieldModelMap,
|
|
22
|
+
ItemsFields extends GroupFieldModelMap,
|
|
23
|
+
>(
|
|
24
|
+
config: MockSharedSliceVariationModelConfig<
|
|
25
|
+
ID,
|
|
26
|
+
PrimaryFields,
|
|
27
|
+
ItemsFields
|
|
28
|
+
> = {},
|
|
29
|
+
): prismicT.SharedSliceModelVariation<ID, PrimaryFields, ItemsFields> => {
|
|
20
30
|
const faker = createFaker(config.seed);
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
let name: string =
|
|
33
|
+
config.name || changeCase.capitalCase(faker.company.bsNoun());
|
|
34
|
+
let id: ID = config.id || (changeCase.snakeCase(name) as ID);
|
|
35
|
+
|
|
36
|
+
if (config.id && !config.name) {
|
|
37
|
+
name = changeCase.pascalCase(config.id);
|
|
38
|
+
} else if (config.name && !config.name) {
|
|
39
|
+
id = changeCase.snakeCase(config.name) as ID;
|
|
40
|
+
}
|
|
23
41
|
|
|
24
42
|
return {
|
|
25
|
-
id
|
|
43
|
+
id,
|
|
26
44
|
name,
|
|
27
45
|
description: faker.lorem.sentence(),
|
|
28
46
|
docURL: faker.internet.url(),
|
|
29
47
|
version: faker.git.shortSha(),
|
|
30
|
-
primary:
|
|
31
|
-
|
|
32
|
-
configs: config.primaryFieldConfig?.configs,
|
|
33
|
-
}),
|
|
34
|
-
items: buildMockGroupFieldMap({
|
|
35
|
-
seed: config.itemsFieldConfig?.seed ?? config.seed,
|
|
36
|
-
configs: config.itemsFieldConfig?.configs,
|
|
37
|
-
}),
|
|
48
|
+
primary: config.primaryFields || ({} as PrimaryFields),
|
|
49
|
+
items: config.itemsFields || ({} as ItemsFields),
|
|
38
50
|
};
|
|
39
51
|
};
|
package/src/model/slice.ts
CHANGED
|
@@ -2,21 +2,23 @@ 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 {
|
|
6
|
-
buildMockGroupFieldMap,
|
|
7
|
-
BuildMockGroupFieldMapConfig,
|
|
8
|
-
} from "../lib/buildMockGroupFieldMap";
|
|
9
5
|
|
|
10
|
-
import { MockModelConfig } from "../types";
|
|
6
|
+
import { GroupFieldModelMap, MockModelConfig } from "../types";
|
|
11
7
|
|
|
12
|
-
type MockSliceModelConfig
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
type MockSliceModelConfig<
|
|
9
|
+
NonRepeatFields extends GroupFieldModelMap = GroupFieldModelMap,
|
|
10
|
+
RepeatFields extends GroupFieldModelMap = GroupFieldModelMap,
|
|
11
|
+
> = {
|
|
12
|
+
nonRepeatFields?: NonRepeatFields;
|
|
13
|
+
repeatFields?: RepeatFields;
|
|
15
14
|
} & MockModelConfig;
|
|
16
15
|
|
|
17
|
-
export const slice =
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
export const slice = <
|
|
17
|
+
NonRepeatFields extends GroupFieldModelMap,
|
|
18
|
+
RepeatFields extends GroupFieldModelMap,
|
|
19
|
+
>(
|
|
20
|
+
config: MockSliceModelConfig<NonRepeatFields, RepeatFields> = {},
|
|
21
|
+
): prismicT.CustomTypeModelSlice<NonRepeatFields, RepeatFields> => {
|
|
20
22
|
const faker = createFaker(config.seed);
|
|
21
23
|
|
|
22
24
|
return {
|
|
@@ -27,13 +29,7 @@ export const slice = (
|
|
|
27
29
|
: prismicT.CustomTypeModelSliceDisplay.List,
|
|
28
30
|
fieldset: changeCase.capitalCase(faker.lorem.words()),
|
|
29
31
|
description: faker.lorem.sentence(),
|
|
30
|
-
repeat:
|
|
31
|
-
|
|
32
|
-
configs: config.repeatFieldConfig?.configs,
|
|
33
|
-
}),
|
|
34
|
-
"non-repeat": buildMockGroupFieldMap({
|
|
35
|
-
seed: config.nonRepeatFieldConfig?.seed ?? config.seed,
|
|
36
|
-
configs: config.nonRepeatFieldConfig?.configs,
|
|
37
|
-
}),
|
|
32
|
+
repeat: config.repeatFields || ({} as RepeatFields),
|
|
33
|
+
"non-repeat": config.nonRepeatFields || ({} as NonRepeatFields),
|
|
38
34
|
};
|
|
39
35
|
};
|
package/src/model/sliceZone.ts
CHANGED
|
@@ -1,52 +1,35 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
|
-
import * as changeCase from "change-case";
|
|
3
|
-
|
|
4
|
-
import { createFaker } from "../lib/createFaker";
|
|
5
|
-
import { generateFieldId } from "../lib/generateFieldId";
|
|
6
2
|
|
|
7
3
|
import { MockModelConfig } from "../types";
|
|
8
4
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
type MockSliceZoneModelConfig<
|
|
6
|
+
Slices extends Record<
|
|
7
|
+
string,
|
|
8
|
+
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
9
|
+
> = Record<
|
|
10
|
+
string,
|
|
11
|
+
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
12
|
+
>,
|
|
13
|
+
> = {
|
|
14
|
+
choices?: Slices;
|
|
15
15
|
} & MockModelConfig;
|
|
16
16
|
|
|
17
|
-
export const sliceZone =
|
|
18
|
-
|
|
19
|
-
): prismicT.CustomTypeModelSliceZoneField => {
|
|
20
|
-
const faker = createFaker(config.seed);
|
|
21
|
-
|
|
22
|
-
const choicesCount =
|
|
23
|
-
config.choicesCount ?? faker.datatype.number({ min: 2, max: 6 });
|
|
24
|
-
|
|
25
|
-
const choices: Record<
|
|
17
|
+
export const sliceZone = <
|
|
18
|
+
Slices extends Record<
|
|
26
19
|
string,
|
|
27
20
|
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const labelsCount = faker.datatype.number({ min: 0, max: 3 });
|
|
41
|
-
|
|
42
|
-
labels[choiceId] = Array(labelsCount)
|
|
43
|
-
.fill(undefined)
|
|
44
|
-
.map(() => ({
|
|
45
|
-
name: changeCase.capitalCase(faker.company.bsNoun()),
|
|
46
|
-
display: faker.datatype.boolean()
|
|
47
|
-
? prismicT.CustomTypeModelSliceDisplay.Grid
|
|
48
|
-
: prismicT.CustomTypeModelSliceDisplay.List,
|
|
49
|
-
}));
|
|
21
|
+
>,
|
|
22
|
+
>(
|
|
23
|
+
config: MockSliceZoneModelConfig<Slices> = {},
|
|
24
|
+
): prismicT.CustomTypeModelSliceZoneField<Slices> => {
|
|
25
|
+
const labels =
|
|
26
|
+
{} as prismicT.CustomTypeModelSliceZoneField<Slices>["config"]["labels"];
|
|
27
|
+
|
|
28
|
+
for (const choiceId in config.choices) {
|
|
29
|
+
const choice = config.choices[choiceId];
|
|
30
|
+
|
|
31
|
+
if (choice.type === prismicT.CustomTypeModelSliceType.Slice) {
|
|
32
|
+
labels[choiceId as unknown as keyof typeof labels] = [];
|
|
50
33
|
}
|
|
51
34
|
}
|
|
52
35
|
|
|
@@ -55,7 +38,7 @@ export const sliceZone = (
|
|
|
55
38
|
fieldset: "Slice zone",
|
|
56
39
|
config: {
|
|
57
40
|
labels,
|
|
58
|
-
choices,
|
|
41
|
+
choices: config.choices || ({} as Slices),
|
|
59
42
|
},
|
|
60
43
|
};
|
|
61
44
|
};
|