@prismicio/mock 0.0.6 → 0.0.9
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 +242 -122
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.ts +3 -2
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +669 -0
- package/dist/api/index.js.map +1 -0
- package/dist/index.cjs +581 -571
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +155 -247
- package/dist/{index.mjs → index.js} +574 -561
- package/dist/index.js.map +1 -0
- package/dist/model/index.cjs +294 -257
- package/dist/model/index.cjs.map +1 -0
- package/dist/model/index.d.ts +72 -106
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +556 -0
- package/dist/model/index.js.map +1 -0
- package/dist/value/index.cjs +500 -647
- package/dist/value/index.cjs.map +1 -0
- package/dist/value/index.d.ts +71 -129
- package/dist/value/index.d.ts.map +1 -0
- package/dist/value/index.js +1461 -0
- package/dist/value/index.js.map +1 -0
- package/package.json +30 -27
- package/src/api/query.ts +2 -2
- package/src/api/ref.ts +3 -3
- package/src/api/repository.ts +5 -5
- package/src/lib/buildContentRelationshipField.ts +6 -1
- package/src/lib/buildEmbedField.ts +16 -27
- package/src/lib/buildImageFieldImage.ts +49 -0
- package/src/lib/createFaker.ts +98 -20
- package/src/lib/generateCustomTypeId.ts +1 -1
- package/src/lib/generateFieldId.ts +1 -3
- package/src/lib/generateTags.ts +4 -12
- package/src/lib/getMockEmbedData.ts +33 -12
- package/src/lib/getMockImageData.ts +1 -1
- package/src/lib/lorem.ts +112 -0
- package/src/model/boolean.ts +1 -1
- package/src/model/buildMockGroupFieldMap.ts +65 -0
- package/src/model/color.ts +2 -2
- package/src/model/contentRelationship.ts +16 -23
- package/src/model/customType.ts +49 -48
- package/src/model/date.ts +2 -2
- package/src/model/embed.ts +2 -2
- package/src/model/geoPoint.ts +1 -1
- package/src/model/group.ts +9 -16
- package/src/model/image.ts +16 -20
- package/src/model/index.ts +2 -0
- package/src/model/integrationFields.ts +5 -3
- package/src/model/keyText.ts +2 -2
- package/src/model/link.ts +3 -3
- package/src/model/linkToMedia.ts +2 -2
- package/src/model/number.ts +2 -2
- package/src/model/richText.ts +6 -6
- package/src/model/select.ts +13 -18
- package/src/model/sharedSlice.ts +15 -42
- package/src/model/sharedSliceVariation.ts +36 -24
- package/src/model/slice.ts +19 -23
- package/src/model/sliceZone.ts +23 -59
- package/src/model/timestamp.ts +2 -2
- package/src/model/title.ts +5 -5
- package/src/model/uid.ts +2 -2
- package/src/types.ts +130 -88
- package/src/value/boolean.ts +1 -1
- package/src/value/color.ts +16 -6
- package/src/value/contentRelationship.ts +54 -39
- package/src/value/customType.ts +5 -5
- package/src/value/date.ts +25 -9
- package/src/value/embed.ts +32 -7
- package/src/value/geoPoint.ts +21 -11
- package/src/value/group.ts +31 -45
- package/src/value/image.ts +22 -9
- package/src/value/integrationFields.ts +26 -14
- package/src/value/keyText.ts +16 -6
- package/src/value/link.ts +36 -37
- package/src/value/linkToMedia.ts +19 -23
- package/src/value/number.ts +16 -6
- package/src/value/richText/embed.ts +2 -2
- package/src/value/richText/heading.ts +10 -17
- package/src/value/richText/image.ts +8 -6
- package/src/value/richText/index.ts +4 -9
- package/src/value/richText/list.ts +4 -8
- package/src/value/richText/oList.ts +4 -8
- package/src/value/richText/paragraph.ts +8 -4
- package/src/value/richText/preformatted.ts +9 -5
- package/src/value/select.ts +23 -8
- package/src/value/sharedSlice.ts +3 -3
- package/src/value/sharedSliceVariation.ts +4 -36
- package/src/value/slice.ts +3 -32
- package/src/value/sliceZone.ts +54 -69
- package/src/value/timestamp.ts +42 -16
- package/src/value/title.ts +26 -13
- package/src/value/uid.ts +2 -2
- package/dist/api/index.mjs +0 -515
- package/dist/model/index.mjs +0 -465
- package/dist/value/index.mjs +0 -1554
- package/src/lib/buildImageField.ts +0 -34
- package/src/lib/buildMockGroupFieldMap.ts +0 -84
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,41 @@ 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
|
+
Data extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,
|
|
11
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
12
|
+
> = {
|
|
13
|
+
url?: string;
|
|
14
|
+
html?: string;
|
|
15
|
+
data?: Data;
|
|
16
|
+
} & MockValueConfig<Model> &
|
|
17
|
+
MockValueStateConfig<State>;
|
|
11
18
|
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
export type MockEmbedValue<
|
|
20
|
+
Data extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,
|
|
21
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
22
|
+
> = prismicT.EmbedField<Data, State>;
|
|
16
23
|
|
|
17
|
-
|
|
24
|
+
export const embed = <
|
|
25
|
+
Model extends prismicT.CustomTypeModelEmbedField = prismicT.CustomTypeModelEmbedField,
|
|
26
|
+
Data extends prismicT.AnyOEmbed = prismicT.AnyOEmbed,
|
|
27
|
+
State extends prismicT.FieldState = "filled",
|
|
28
|
+
>(
|
|
29
|
+
config: MockEmbedValueConfig<Model, Data, State> = {},
|
|
30
|
+
): MockEmbedValue<Data, State> => {
|
|
31
|
+
const data = config.data ?? getMockEmbedData({ seed: config.seed });
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
config.state === "empty"
|
|
35
|
+
? {}
|
|
36
|
+
: buildEmbedField({
|
|
37
|
+
seed: config.seed,
|
|
38
|
+
url: config.url ?? ("embed_url" in data ? data.embed_url : undefined),
|
|
39
|
+
html: config.html ?? ("html" in data ? data.html : undefined),
|
|
40
|
+
data,
|
|
41
|
+
})
|
|
42
|
+
) as MockEmbedValue<Data, State>;
|
|
18
43
|
};
|
package/src/value/geoPoint.ts
CHANGED
|
@@ -2,21 +2,31 @@ 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
|
-
|
|
14
|
-
const faker = createFaker(config.seed);
|
|
12
|
+
export type MockGeoPointValue<
|
|
13
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
14
|
+
> = prismicT.GeoPointField<State>;
|
|
15
15
|
|
|
16
|
-
|
|
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> => {
|
|
22
|
+
const faker = createFaker(config.seed);
|
|
17
23
|
|
|
18
|
-
return
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
return (
|
|
25
|
+
config.state === "empty"
|
|
26
|
+
? {}
|
|
27
|
+
: {
|
|
28
|
+
longitude: faker.rangeFloat(-180, 180),
|
|
29
|
+
latitude: faker.rangeFloat(-90, 90),
|
|
30
|
+
}
|
|
31
|
+
) as MockGeoPointValue<State>;
|
|
22
32
|
};
|
package/src/value/group.ts
CHANGED
|
@@ -6,60 +6,46 @@ import {
|
|
|
6
6
|
ValueForModelMapConfigs,
|
|
7
7
|
} from "../lib/valueForModelMap";
|
|
8
8
|
|
|
9
|
-
import { MockValueConfig, ModelValue } from "../types";
|
|
9
|
+
import { MockValueConfig, MockValueStateConfig, 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,
|
|
15
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
30
16
|
> = {
|
|
31
|
-
|
|
17
|
+
itemsCount?: State extends "empty" ? 0 : number;
|
|
32
18
|
configs?: ValueForModelMapConfigs;
|
|
33
|
-
} & MockValueConfig<Model
|
|
19
|
+
} & MockValueConfig<Model> &
|
|
20
|
+
MockValueStateConfig<State>;
|
|
21
|
+
|
|
22
|
+
export type MockGroupValue<
|
|
23
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
24
|
+
> = prismicT.DateField<State>;
|
|
34
25
|
|
|
35
26
|
export const group = <
|
|
36
27
|
Model extends prismicT.CustomTypeModelGroupField = prismicT.CustomTypeModelGroupField,
|
|
28
|
+
State extends prismicT.FieldState = "filled",
|
|
37
29
|
>(
|
|
38
|
-
config: MockGroupValueConfig<Model> = {},
|
|
39
|
-
): ModelValue<Model> => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
config.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return valueForModelMap({
|
|
60
|
-
seed: config.seed,
|
|
61
|
-
map: model.config.fields,
|
|
62
|
-
configs: config.configs,
|
|
63
|
-
});
|
|
64
|
-
}) as ModelValue<Model>;
|
|
30
|
+
config: MockGroupValueConfig<Model, State> = {},
|
|
31
|
+
): ModelValue<Model, State> => {
|
|
32
|
+
if (config.state === "empty") {
|
|
33
|
+
return [] as ModelValue<Model, State>;
|
|
34
|
+
} else {
|
|
35
|
+
const faker = createFaker(config.seed);
|
|
36
|
+
|
|
37
|
+
const model = config.model || modelGen.group({ seed: config.seed });
|
|
38
|
+
|
|
39
|
+
const itemsCount = config.itemsCount ?? faker.range(1, 6);
|
|
40
|
+
|
|
41
|
+
return Array(itemsCount)
|
|
42
|
+
.fill(undefined)
|
|
43
|
+
.map(() => {
|
|
44
|
+
return valueForModelMap({
|
|
45
|
+
seed: config.seed,
|
|
46
|
+
map: model.config.fields,
|
|
47
|
+
configs: config.configs,
|
|
48
|
+
});
|
|
49
|
+
}) as ModelValue<Model, State>;
|
|
50
|
+
}
|
|
65
51
|
};
|
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.hash(7),
|
|
39
|
+
title: changeCase.capitalCase(faker.words(faker.range(1, 3))),
|
|
40
|
+
description: changeCase.sentenceCase(faker.words(faker.range(5, 10))),
|
|
41
|
+
image_url: imageData.url,
|
|
42
|
+
last_update: faker.date().getTime(),
|
|
43
|
+
blob: config.data as Blob,
|
|
44
|
+
}
|
|
45
|
+
) as MockIntegrationFieldsValue<Blob, State>;
|
|
34
46
|
};
|
package/src/value/keyText.ts
CHANGED
|
@@ -3,16 +3,26 @@ 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" ? null : changeCase.sentenceCase(faker.words(3))
|
|
27
|
+
) as MockKeyTextValue<State>;
|
|
18
28
|
};
|
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,89 +10,88 @@ 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
|
-
faker.
|
|
54
|
+
faker.randomElement([
|
|
57
55
|
prismicT.LinkType.Web,
|
|
58
56
|
prismicT.LinkType.Document,
|
|
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 {
|
|
83
86
|
link_type: prismicT.LinkType.Web,
|
|
84
|
-
url: faker.
|
|
87
|
+
url: faker.url(),
|
|
85
88
|
target:
|
|
86
89
|
config.withTargetBlank ??
|
|
87
|
-
(model.config.allowTargetBlank && faker.
|
|
90
|
+
(model.config.allowTargetBlank && faker.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
|
};
|
package/src/value/linkToMedia.ts
CHANGED
|
@@ -1,44 +1,40 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
|
+
import * as changeCase from "change-case";
|
|
2
3
|
|
|
3
4
|
import { createFaker } from "../lib/createFaker";
|
|
4
5
|
|
|
5
|
-
import { MockValueConfig } from "../types";
|
|
6
|
+
import { MockValueStateConfig, MockValueConfig } from "../types";
|
|
6
7
|
|
|
7
8
|
export type MockLinkToMediaValueConfig<
|
|
8
|
-
IsFilled extends boolean = true,
|
|
9
9
|
Model extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} & MockValueConfig<Model>;
|
|
10
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
11
|
+
> = MockValueConfig<Model> & MockValueStateConfig<State>;
|
|
13
12
|
|
|
14
|
-
type MockLinkToMediaValue<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
: prismicT.EmptyLinkField<prismicT.LinkType.Media>;
|
|
13
|
+
type MockLinkToMediaValue<
|
|
14
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
15
|
+
> = prismicT.LinkToMediaField<State>;
|
|
18
16
|
|
|
19
17
|
export const linkToMedia = <
|
|
20
|
-
IsFilled extends boolean = true,
|
|
21
18
|
Model extends prismicT.CustomTypeModelLinkToMediaField = prismicT.CustomTypeModelLinkToMediaField,
|
|
19
|
+
State extends prismicT.FieldState = "filled",
|
|
22
20
|
>(
|
|
23
|
-
config: MockLinkToMediaValueConfig<
|
|
24
|
-
): MockLinkToMediaValue<
|
|
21
|
+
config: MockLinkToMediaValueConfig<Model, State> = {},
|
|
22
|
+
): MockLinkToMediaValue<State> => {
|
|
25
23
|
const faker = createFaker(config.seed);
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (isFilled) {
|
|
25
|
+
if (config.state === "empty") {
|
|
30
26
|
return {
|
|
31
27
|
link_type: prismicT.LinkType.Media,
|
|
32
|
-
|
|
33
|
-
kind: faker.system.commonFileType(),
|
|
34
|
-
url: faker.internet.url(),
|
|
35
|
-
size: faker.datatype.number().toString(),
|
|
36
|
-
height: faker.datatype.number().toString(),
|
|
37
|
-
width: faker.datatype.number().toString(),
|
|
38
|
-
} as prismicT.FilledLinkToMediaField;
|
|
28
|
+
} as MockLinkToMediaValue<State>;
|
|
39
29
|
} else {
|
|
40
30
|
return {
|
|
41
31
|
link_type: prismicT.LinkType.Media,
|
|
42
|
-
|
|
32
|
+
name: `${changeCase.snakeCase(faker.words(faker.range(1, 2)))}.example`,
|
|
33
|
+
kind: changeCase.snakeCase(faker.word()),
|
|
34
|
+
url: faker.url(),
|
|
35
|
+
size: faker.range(500, 3000).toString(),
|
|
36
|
+
height: faker.range(500, 3000).toString(),
|
|
37
|
+
width: faker.range(500, 3000).toString(),
|
|
38
|
+
} as MockLinkToMediaValue<State>;
|
|
43
39
|
}
|
|
44
40
|
};
|
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.range(1, 100)
|
|
26
|
+
) as MockNumberValue<State>;
|
|
17
27
|
};
|
|
@@ -10,8 +10,8 @@ type MockRichTextEmbedValueConfig = MockRichTextValueConfig;
|
|
|
10
10
|
export const embed = (
|
|
11
11
|
config: MockRichTextEmbedValueConfig = {},
|
|
12
12
|
): prismicT.RTEmbedNode | undefined => {
|
|
13
|
-
const
|
|
14
|
-
const embedField = buildEmbedField({ seed: config.seed,
|
|
13
|
+
const data = getMockEmbedData({ seed: config.seed });
|
|
14
|
+
const embedField = buildEmbedField({ seed: config.seed, data });
|
|
15
15
|
|
|
16
16
|
return {
|
|
17
17
|
type: prismicT.RichTextNodeType.embed,
|