Skip to content

Commit bbcd15c

Browse files
committed
fix: type link variants
1 parent c479d7e commit bbcd15c

File tree

6 files changed

+108
-49
lines changed

6 files changed

+108
-49
lines changed

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
"prismic-ts-codegen-v0-1-11": "npm:prismic-ts-codegen@0.1.11",
7878
"size-limit": "^8.2.6",
7979
"standard-version": "^9.5.0",
80-
"typescript": "~5.1.3",
80+
"typescript": "^5.7.3",
8181
"vite": "^4.5.5",
8282
"vite-plugin-sdk": "^0.1.1",
8383
"vitest": "^0.33.0"

src/lib/buildFieldProperties.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,16 @@ function buildFieldProperty(
141141
}
142142

143143
case "Link": {
144+
const variants =
145+
args.field.config &&
146+
"variants" in args.field.config &&
147+
Array.isArray(args.field.config.variants) &&
148+
args.field.config.variants.length > 0
149+
? args.field.config.variants
150+
.map((variant) => `"${variant.replaceAll('"', '\\"')}"`)
151+
.join(" | ")
152+
: "never";
153+
144154
switch (args.field.config?.select) {
145155
case "document": {
146156
if (
@@ -164,14 +174,20 @@ function buildFieldProperty(
164174
}
165175

166176
case "media": {
167-
code = addLine(`${name}: prismic.LinkToMediaField;`, code);
177+
code = addLine(
178+
`${name}: prismic.LinkToMediaField<prismic.FieldState, ${variants}>;`,
179+
code,
180+
);
168181
break;
169182
}
170183

171184
default: {
172-
const type = args.field.config?.repeat
173-
? "prismic.Repeatable<prismic.LinkField>"
174-
: "prismic.LinkField";
185+
let type = `prismic.LinkField<string, string, unknown, prismic.FieldState, ${variants}>`;
186+
187+
if (args.field.config?.repeat) {
188+
type = `prismic.Repeatable<${type}>`;
189+
}
190+
175191
code = addLine(`${name}: ${type};`, code);
176192
break;
177193
}

test/__snapshots__/generateTypes.test.ts.snap

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export interface FeugiatDocumentDataSliceZoneFooSlicePrimary {
153153
* - **API ID Path**: feugiat.sliceZone[].foo.primary.sit_amet
154154
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
155155
*/
156-
sit_amet: prismic.LinkToMediaField;
156+
sit_amet: prismic.LinkToMediaField<prismic.FieldState, never>;
157157
158158
/**
159159
* Nisl field in *Feugiat → Slice zone → Etiam Erat → Primary*
@@ -258,7 +258,7 @@ export interface FeugiatDocumentDataSliceZoneFooSliceItem {
258258
* - **API ID Path**: feugiat.sliceZone[].foo.items.in_ante
259259
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
260260
*/
261-
in_ante: prismic.Repeatable<prismic.LinkField>;
261+
in_ante: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
262262
263263
/**
264264
* Ut field in *Feugiat → Slice zone → Etiam Erat → Items*
@@ -268,7 +268,7 @@ export interface FeugiatDocumentDataSliceZoneFooSliceItem {
268268
* - **API ID Path**: feugiat.sliceZone[].foo.items.sit_amet
269269
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
270270
*/
271-
sit_amet: prismic.LinkToMediaField;
271+
sit_amet: prismic.LinkToMediaField<prismic.FieldState, never>;
272272
273273
/**
274274
* Integer field in *Feugiat → Slice zone → Etiam Erat → Items*
@@ -366,7 +366,7 @@ interface FeugiatDocumentData {
366366
* - **Tab**: Main
367367
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
368368
*/
369-
aliquam_sem: prismic.Repeatable<prismic.LinkField>;
369+
aliquam_sem: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
370370
371371
/**
372372
* Fringilla field in *Feugiat*
@@ -487,7 +487,7 @@ export interface ProinDocumentDataGroupItem {
487487
* - **API ID Path**: proin.group[].mauris_augue
488488
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
489489
*/
490-
mauris_augue: prismic.Repeatable<prismic.LinkField>;
490+
mauris_augue: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
491491
492492
/**
493493
* Lectus field in *Proin → Laoreet*
@@ -562,7 +562,7 @@ export interface ProinDocumentDataSliceZoneFooSlicePrimary {
562562
* - **API ID Path**: proin.sliceZone[].foo.primary.sed
563563
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
564564
*/
565-
sed: prismic.LinkToMediaField;
565+
sed: prismic.LinkToMediaField<prismic.FieldState, never>;
566566
567567
/**
568568
* Et field in *Proin → Slice zone → Mauris A → Primary*
@@ -844,7 +844,7 @@ export interface InDocumentDataGroupItem {
844844
* - **API ID Path**: in.group[].et
845845
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
846846
*/
847-
et: prismic.LinkToMediaField;
847+
et: prismic.LinkToMediaField<prismic.FieldState, never>;
848848
849849
/**
850850
* Eleifend field in *In → Sit*
@@ -929,7 +929,7 @@ export interface InDocumentDataSliceZoneFooSlicePrimary {
929929
* - **API ID Path**: in.sliceZone[].foo.primary.hac_habitasse
930930
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
931931
*/
932-
hac_habitasse: prismic.Repeatable<prismic.LinkField>;
932+
hac_habitasse: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
933933
934934
/**
935935
* Est field in *In → Slice zone → Mattis Enim → Primary*
@@ -939,7 +939,7 @@ export interface InDocumentDataSliceZoneFooSlicePrimary {
939939
* - **API ID Path**: in.sliceZone[].foo.primary.auctor
940940
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
941941
*/
942-
auctor: prismic.LinkToMediaField;
942+
auctor: prismic.LinkToMediaField<prismic.FieldState, never>;
943943
944944
/**
945945
* Eget field in *In → Slice zone → Mattis Enim → Primary*
@@ -1034,7 +1034,7 @@ export interface InDocumentDataSliceZoneFooSliceItem {
10341034
* - **API ID Path**: in.sliceZone[].foo.items.amet
10351035
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
10361036
*/
1037-
amet: prismic.LinkField;
1037+
amet: prismic.LinkField<string, string, unknown, prismic.FieldState, never>;
10381038
10391039
/**
10401040
* Fusce field in *In → Slice zone → Mattis Enim → Items*
@@ -1078,7 +1078,7 @@ interface InDocumentData {
10781078
* - **Tab**: Main
10791079
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
10801080
*/
1081-
at: prismic.Repeatable<prismic.LinkField>;
1081+
at: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
10821082
10831083
/**
10841084
* Sit field in *In*
@@ -1089,7 +1089,7 @@ interface InDocumentData {
10891089
* - **Tab**: Main
10901090
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
10911091
*/
1092-
est: prismic.LinkToMediaField;
1092+
est: prismic.LinkToMediaField<prismic.FieldState, never>;
10931093
10941094
/**
10951095
* Posuere field in *In*
@@ -1253,7 +1253,7 @@ export interface TempusDocumentDataSliceZoneFooSlicePrimary {
12531253
* - **API ID Path**: tempus.sliceZone[].foo.primary.arcu_vitae
12541254
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
12551255
*/
1256-
arcu_vitae: prismic.LinkToMediaField;
1256+
arcu_vitae: prismic.LinkToMediaField<prismic.FieldState, never>;
12571257
12581258
/**
12591259
* Fusce field in *Tempus → Slice zone → At Volutpat → Primary*
@@ -1415,7 +1415,7 @@ interface TempusDocumentData {
14151415
* - **Tab**: Main
14161416
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
14171417
*/
1418-
at: prismic.Repeatable<prismic.LinkField>;
1418+
at: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
14191419
14201420
/**
14211421
* Lectus field in *Tempus*
@@ -1426,7 +1426,7 @@ interface TempusDocumentData {
14261426
* - **Tab**: Main
14271427
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
14281428
*/
1429-
venenatis: prismic.LinkToMediaField;
1429+
venenatis: prismic.LinkToMediaField<prismic.FieldState, never>;
14301430
14311431
/**
14321432
* Pellentesque field in *Tempus*
@@ -1526,7 +1526,7 @@ export interface DuisDocumentDataGroupItem {
15261526
* - **API ID Path**: duis.group[].aenean_pharetra
15271527
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
15281528
*/
1529-
aenean_pharetra: prismic.Repeatable<prismic.LinkField>;
1529+
aenean_pharetra: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
15301530
15311531
/**
15321532
* In field in *Duis → Accumsan*
@@ -1536,7 +1536,7 @@ export interface DuisDocumentDataGroupItem {
15361536
* - **API ID Path**: duis.group[].nulla
15371537
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
15381538
*/
1539-
nulla: prismic.LinkToMediaField;
1539+
nulla: prismic.LinkToMediaField<prismic.FieldState, never>;
15401540
15411541
/**
15421542
* Sapien field in *Duis → Accumsan*
@@ -1621,7 +1621,7 @@ export interface DuisDocumentDataSliceZoneFooSlicePrimary {
16211621
* - **API ID Path**: duis.sliceZone[].foo.primary.ornare
16221622
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
16231623
*/
1624-
ornare: prismic.LinkField;
1624+
ornare: prismic.LinkField<string, string, unknown, prismic.FieldState, never>;
16251625
16261626
/**
16271627
* Aliquet field in *Duis → Slice zone → Tristique Magna → Primary*
@@ -1631,7 +1631,7 @@ export interface DuisDocumentDataSliceZoneFooSlicePrimary {
16311631
* - **API ID Path**: duis.sliceZone[].foo.primary.pulvinar_sapien
16321632
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
16331633
*/
1634-
pulvinar_sapien: prismic.LinkToMediaField;
1634+
pulvinar_sapien: prismic.LinkToMediaField<prismic.FieldState, never>;
16351635
16361636
/**
16371637
* Fusce field in *Duis → Slice zone → Tristique Magna → Primary*
@@ -1696,7 +1696,7 @@ export interface DuisDocumentDataSliceZoneFooSliceItem {
16961696
* - **API ID Path**: duis.sliceZone[].foo.items.amet
16971697
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
16981698
*/
1699-
amet: prismic.LinkField;
1699+
amet: prismic.LinkField<string, string, unknown, prismic.FieldState, never>;
17001700
17011701
/**
17021702
* Senectus field in *Duis → Slice zone → Tristique Magna → Items*
@@ -1706,7 +1706,7 @@ export interface DuisDocumentDataSliceZoneFooSliceItem {
17061706
* - **API ID Path**: duis.sliceZone[].foo.items.ullamcorper
17071707
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
17081708
*/
1709-
ullamcorper: prismic.LinkToMediaField;
1709+
ullamcorper: prismic.LinkToMediaField<prismic.FieldState, never>;
17101710
17111711
/**
17121712
* Mollis field in *Duis → Slice zone → Tristique Magna → Items*
@@ -1780,7 +1780,7 @@ interface DuisDocumentData {
17801780
* - **Tab**: Main
17811781
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
17821782
*/
1783-
congue_nisi: prismic.Repeatable<prismic.LinkField>;
1783+
congue_nisi: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
17841784
17851785
/**
17861786
* At field in *Duis*
@@ -1791,7 +1791,7 @@ interface DuisDocumentData {
17911791
* - **Tab**: Main
17921792
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
17931793
*/
1794-
ornare: prismic.LinkToMediaField;
1794+
ornare: prismic.LinkToMediaField<prismic.FieldState, never>;
17951795
17961796
/**
17971797
* Felis field in *Duis*
@@ -1913,7 +1913,7 @@ export interface DolorSliceVitaePrimary {
19131913
* - **API ID Path**: dolor.vitae.primary.ornare_suspendisse
19141914
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
19151915
*/
1916-
ornare_suspendisse: prismic.Repeatable<prismic.LinkField>;
1916+
ornare_suspendisse: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
19171917
19181918
/**
19191919
* Donec field in *Dolor → Vitae → Primary*
@@ -2028,7 +2028,7 @@ export interface DolorSliceVitaeItem {
20282028
* - **API ID Path**: dolor.items[].id
20292029
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
20302030
*/
2031-
id: prismic.LinkField;
2031+
id: prismic.LinkField<string, string, unknown, prismic.FieldState, never>;
20322032
20332033
/**
20342034
* Ullamcorper field in *Dolor → Items*
@@ -2038,7 +2038,7 @@ export interface DolorSliceVitaeItem {
20382038
* - **API ID Path**: dolor.items[].mattis
20392039
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
20402040
*/
2041-
mattis: prismic.LinkToMediaField;
2041+
mattis: prismic.LinkToMediaField<prismic.FieldState, never>;
20422042
20432043
/**
20442044
* Neque field in *Dolor → Items*
@@ -2136,7 +2136,7 @@ export interface AuctorSliceRisusPrimary {
21362136
* - **API ID Path**: auctor.risus.primary.massa
21372137
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
21382138
*/
2139-
massa: prismic.LinkToMediaField;
2139+
massa: prismic.LinkToMediaField<prismic.FieldState, never>;
21402140
21412141
/**
21422142
* Pellentesque field in *Auctor → Risus → Primary*
@@ -2221,7 +2221,7 @@ export interface AuctorSliceRisusItem {
22212221
* - **API ID Path**: auctor.items[].scelerisque
22222222
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
22232223
*/
2224-
scelerisque: prismic.LinkField;
2224+
scelerisque: prismic.LinkField<string, string, unknown, prismic.FieldState, never>;
22252225
22262226
/**
22272227
* Leo field in *Auctor → Items*
@@ -2231,7 +2231,7 @@ export interface AuctorSliceRisusItem {
22312231
* - **API ID Path**: auctor.items[].libero_volutpat
22322232
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
22332233
*/
2234-
libero_volutpat: prismic.LinkToMediaField;
2234+
libero_volutpat: prismic.LinkToMediaField<prismic.FieldState, never>;
22352235
22362236
/**
22372237
* Tincidunt field in *Auctor → Items*
@@ -2349,7 +2349,7 @@ export interface DolorSliceNislPrimary {
23492349
* - **API ID Path**: dolor.nisl.primary.ac
23502350
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
23512351
*/
2352-
ac: prismic.LinkToMediaField;
2352+
ac: prismic.LinkToMediaField<prismic.FieldState, never>;
23532353
23542354
/**
23552355
* Ac field in *Dolor → Nisl → Primary*
@@ -2434,7 +2434,7 @@ export interface DolorSliceNislItem {
24342434
* - **API ID Path**: dolor.items[].lobortis_elementum
24352435
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
24362436
*/
2437-
lobortis_elementum: prismic.Repeatable<prismic.LinkField>;
2437+
lobortis_elementum: prismic.Repeatable<prismic.LinkField<string, string, unknown, prismic.FieldState, never>>;
24382438
24392439
/**
24402440
* Quis field in *Dolor → Items*
@@ -2444,7 +2444,7 @@ export interface DolorSliceNislItem {
24442444
* - **API ID Path**: dolor.items[].dictumst
24452445
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
24462446
*/
2447-
dictumst: prismic.LinkToMediaField;
2447+
dictumst: prismic.LinkToMediaField<prismic.FieldState, never>;
24482448
24492449
/**
24502450
* Gravida field in *Dolor → Items*
@@ -2572,7 +2572,7 @@ export interface CondimentumSliceMolestiePrimary {
25722572
* - **API ID Path**: condimentum.molestie.primary.suspendisse
25732573
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
25742574
*/
2575-
suspendisse: prismic.LinkToMediaField;
2575+
suspendisse: prismic.LinkToMediaField<prismic.FieldState, never>;
25762576
25772577
/**
25782578
* Viverra field in *Condimentum → Molestie → Primary*
@@ -2830,7 +2830,7 @@ export interface MagnaSliceSedItem {
28302830
* - **API ID Path**: magna.items[].sed_lectus
28312831
* - **Documentation**: https://prismic.io/docs/field#link-content-relationship
28322832
*/
2833-
sed_lectus: prismic.LinkField;
2833+
sed_lectus: prismic.LinkField<string, string, unknown, prismic.FieldState, never>;
28342834
28352835
/**
28362836
* Diam field in *Magna → Items*

0 commit comments

Comments
 (0)