@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
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
|
@@ -3,97 +3,88 @@ import * as prismicT from "@prismicio/types";
|
|
|
3
3
|
import { createFaker } from "../lib/createFaker";
|
|
4
4
|
import { ValueForModelMapConfigs } from "../lib/valueForModelMap";
|
|
5
5
|
|
|
6
|
-
import { MockValueConfig, ModelValue } from "../types";
|
|
6
|
+
import { MockValueConfig, MockValueStateConfig, ModelValue } from "../types";
|
|
7
7
|
|
|
8
8
|
import * as modelGen from "../model";
|
|
9
9
|
|
|
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,
|
|
15
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
30
16
|
> = {
|
|
31
17
|
sharedSliceModels?: prismicT.SharedSliceModel[];
|
|
32
|
-
|
|
18
|
+
itemsCount?: State extends "empty" ? 0 : number;
|
|
33
19
|
primaryFieldConfigs?: ValueForModelMapConfigs;
|
|
34
20
|
itemsFieldConfigs?: ValueForModelMapConfigs;
|
|
35
|
-
} & MockValueConfig<Model
|
|
21
|
+
} & MockValueConfig<Model> &
|
|
22
|
+
MockValueStateConfig<State>;
|
|
36
23
|
|
|
37
24
|
export const sliceZone = <
|
|
38
25
|
Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
|
|
26
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
39
27
|
>(
|
|
40
|
-
config: MockSliceZoneValueConfig<Model> = {},
|
|
41
|
-
): ModelValue<Model> => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
28
|
+
config: MockSliceZoneValueConfig<Model, State> = {},
|
|
29
|
+
): ModelValue<Model, State> => {
|
|
30
|
+
if (config.state === "empty") {
|
|
31
|
+
return [] as ModelValue<Model, State>;
|
|
32
|
+
} else {
|
|
33
|
+
const faker = createFaker(config.seed);
|
|
45
34
|
|
|
46
|
-
|
|
47
|
-
config.pattern ||
|
|
48
|
-
faker.random.arrayElement(
|
|
49
|
-
Object.keys(patterns) as (keyof typeof patterns)[],
|
|
50
|
-
);
|
|
51
|
-
const pattern = patterns[patternKey];
|
|
35
|
+
const model = config.model || modelGen.sliceZone({ seed: config.seed });
|
|
52
36
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
37
|
+
if (Object.keys(model.config.choices).length > 0) {
|
|
38
|
+
const itemsCount =
|
|
39
|
+
config.itemsCount ??
|
|
40
|
+
faker.datatype.number({
|
|
41
|
+
min: 1,
|
|
42
|
+
max: 6,
|
|
43
|
+
});
|
|
57
44
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
45
|
+
return Array(itemsCount)
|
|
46
|
+
.fill(undefined)
|
|
47
|
+
.map(() => {
|
|
48
|
+
const choices = Object.entries(model.config.choices);
|
|
49
|
+
const [choiceType, choiceModel] = faker.random.arrayElement(choices);
|
|
63
50
|
|
|
64
|
-
|
|
65
|
-
|
|
51
|
+
const choiceLabels = model.config.labels[choiceType] || [];
|
|
52
|
+
const choiceLabel = faker.random.arrayElement(choiceLabels);
|
|
66
53
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
54
|
+
switch (choiceModel.type) {
|
|
55
|
+
case prismicT.CustomTypeModelSliceType.Slice: {
|
|
56
|
+
return slice({
|
|
57
|
+
seed: config.seed,
|
|
58
|
+
model: choiceModel,
|
|
59
|
+
type: choiceType,
|
|
60
|
+
label: choiceLabel ? choiceLabel.name : null,
|
|
61
|
+
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
62
|
+
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
78
65
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
66
|
+
case prismicT.CustomTypeModelSliceType.SharedSlice: {
|
|
67
|
+
const sharedSliceModel = config.sharedSliceModels?.find(
|
|
68
|
+
(sharedSliceModel) => sharedSliceModel.id === choiceType,
|
|
69
|
+
);
|
|
83
70
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
71
|
+
if (sharedSliceModel) {
|
|
72
|
+
return sharedSlice({
|
|
73
|
+
seed: config.seed,
|
|
74
|
+
model: sharedSliceModel,
|
|
75
|
+
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
76
|
+
itemsFieldConfigs: config.itemsFieldConfigs,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
91
80
|
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
81
|
+
})
|
|
82
|
+
.filter(
|
|
83
|
+
(slice): slice is prismicT.Slice | prismicT.SharedSlice =>
|
|
84
|
+
slice !== undefined,
|
|
85
|
+
) as ModelValue<Model, State>;
|
|
86
|
+
} else {
|
|
87
|
+
return [] as unknown as ModelValue<Model, State>;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
99
90
|
};
|
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
|
@@ -1,24 +1,37 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
-
import { MockValueConfig } from "../types";
|
|
3
|
+
import { MockValueConfig, MockValueStateConfig } from "../types";
|
|
4
4
|
|
|
5
5
|
import { heading, MockRichTextHeadingValueConfig } from "./richText/heading";
|
|
6
6
|
|
|
7
7
|
export type MockTitleValueConfig<
|
|
8
8
|
Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
|
|
9
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
9
10
|
> = {
|
|
10
11
|
pattern?: MockRichTextHeadingValueConfig["pattern"];
|
|
11
|
-
} & MockValueConfig<Model
|
|
12
|
+
} & MockValueConfig<Model> &
|
|
13
|
+
MockValueStateConfig<State>;
|
|
12
14
|
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
export type MockTitleValue<
|
|
16
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
17
|
+
> = prismicT.TitleField<State>;
|
|
18
|
+
|
|
19
|
+
export const title = <
|
|
20
|
+
Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
|
|
21
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
22
|
+
>(
|
|
23
|
+
config: MockTitleValueConfig<Model, State> = {},
|
|
24
|
+
): MockTitleValue<State> => {
|
|
25
|
+
if (config.state === "empty") {
|
|
26
|
+
return [] as MockTitleValue<State>;
|
|
27
|
+
} else {
|
|
28
|
+
return [
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
30
|
+
heading({
|
|
31
|
+
seed: config.seed,
|
|
32
|
+
model: config.model,
|
|
33
|
+
pattern: config.pattern,
|
|
34
|
+
})!,
|
|
35
|
+
] as MockTitleValue<State>;
|
|
36
|
+
}
|
|
24
37
|
};
|
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));
|