@financial-times/content-curation-client 2.2.0 → 2.4.0
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/_tsup-dts-rollup.d.cts +127 -28
- package/dist/_tsup-dts-rollup.d.ts +127 -28
- package/dist/financial-times-content-curation-client-2.4.0.tgz +0 -0
- package/dist/index.cjs +11 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/financial-times-content-curation-client-2.2.0.tgz +0 -0
|
@@ -1771,22 +1771,42 @@ declare const HomepageStructureInputSchema: z.ZodObject<{
|
|
|
1771
1771
|
properties: z.ZodObject<{
|
|
1772
1772
|
title: z.ZodString;
|
|
1773
1773
|
pageId: z.ZodString;
|
|
1774
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
1775
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
1776
|
+
pageTheme: z.ZodOptional<z.ZodString>;
|
|
1777
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
1778
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
1774
1779
|
} & {
|
|
1775
1780
|
homepageListId: z.ZodString;
|
|
1776
1781
|
}, "strip", z.ZodTypeAny, {
|
|
1777
1782
|
title: string;
|
|
1778
1783
|
pageId: string;
|
|
1779
1784
|
homepageListId: string;
|
|
1785
|
+
conceptId?: string | undefined;
|
|
1786
|
+
metaDescription?: string | undefined;
|
|
1787
|
+
pageTheme?: string | undefined;
|
|
1788
|
+
sponsorText?: string | undefined;
|
|
1789
|
+
sponsorImage?: string | undefined;
|
|
1780
1790
|
}, {
|
|
1781
1791
|
title: string;
|
|
1782
1792
|
pageId: string;
|
|
1783
1793
|
homepageListId: string;
|
|
1794
|
+
conceptId?: string | undefined;
|
|
1795
|
+
metaDescription?: string | undefined;
|
|
1796
|
+
pageTheme?: string | undefined;
|
|
1797
|
+
sponsorText?: string | undefined;
|
|
1798
|
+
sponsorImage?: string | undefined;
|
|
1784
1799
|
}>;
|
|
1785
1800
|
}, "strip", z.ZodTypeAny, {
|
|
1786
1801
|
properties: {
|
|
1787
1802
|
title: string;
|
|
1788
1803
|
pageId: string;
|
|
1789
1804
|
homepageListId: string;
|
|
1805
|
+
conceptId?: string | undefined;
|
|
1806
|
+
metaDescription?: string | undefined;
|
|
1807
|
+
pageTheme?: string | undefined;
|
|
1808
|
+
sponsorText?: string | undefined;
|
|
1809
|
+
sponsorImage?: string | undefined;
|
|
1790
1810
|
};
|
|
1791
1811
|
children: ({
|
|
1792
1812
|
type: "HomepageSlice";
|
|
@@ -1918,6 +1938,11 @@ declare const HomepageStructureInputSchema: z.ZodObject<{
|
|
|
1918
1938
|
title: string;
|
|
1919
1939
|
pageId: string;
|
|
1920
1940
|
homepageListId: string;
|
|
1941
|
+
conceptId?: string | undefined;
|
|
1942
|
+
metaDescription?: string | undefined;
|
|
1943
|
+
pageTheme?: string | undefined;
|
|
1944
|
+
sponsorText?: string | undefined;
|
|
1945
|
+
sponsorImage?: string | undefined;
|
|
1921
1946
|
};
|
|
1922
1947
|
children: ({
|
|
1923
1948
|
type: "HomepageSlice";
|
|
@@ -2916,16 +2941,31 @@ declare const HomepageStructureOutputSchema: z.ZodObject<{
|
|
|
2916
2941
|
properties: z.ZodObject<{
|
|
2917
2942
|
title: z.ZodString;
|
|
2918
2943
|
pageId: z.ZodString;
|
|
2944
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
2945
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
2946
|
+
pageTheme: z.ZodOptional<z.ZodString>;
|
|
2947
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
2948
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
2919
2949
|
} & {
|
|
2920
2950
|
homepageListId: z.ZodString;
|
|
2921
2951
|
}, "strip", z.ZodTypeAny, {
|
|
2922
2952
|
title: string;
|
|
2923
2953
|
pageId: string;
|
|
2924
2954
|
homepageListId: string;
|
|
2955
|
+
conceptId?: string | undefined;
|
|
2956
|
+
metaDescription?: string | undefined;
|
|
2957
|
+
pageTheme?: string | undefined;
|
|
2958
|
+
sponsorText?: string | undefined;
|
|
2959
|
+
sponsorImage?: string | undefined;
|
|
2925
2960
|
}, {
|
|
2926
2961
|
title: string;
|
|
2927
2962
|
pageId: string;
|
|
2928
2963
|
homepageListId: string;
|
|
2964
|
+
conceptId?: string | undefined;
|
|
2965
|
+
metaDescription?: string | undefined;
|
|
2966
|
+
pageTheme?: string | undefined;
|
|
2967
|
+
sponsorText?: string | undefined;
|
|
2968
|
+
sponsorImage?: string | undefined;
|
|
2929
2969
|
}>;
|
|
2930
2970
|
}, "strip", z.ZodTypeAny, {
|
|
2931
2971
|
type: "Homepage";
|
|
@@ -2933,6 +2973,11 @@ declare const HomepageStructureOutputSchema: z.ZodObject<{
|
|
|
2933
2973
|
title: string;
|
|
2934
2974
|
pageId: string;
|
|
2935
2975
|
homepageListId: string;
|
|
2976
|
+
conceptId?: string | undefined;
|
|
2977
|
+
metaDescription?: string | undefined;
|
|
2978
|
+
pageTheme?: string | undefined;
|
|
2979
|
+
sponsorText?: string | undefined;
|
|
2980
|
+
sponsorImage?: string | undefined;
|
|
2936
2981
|
};
|
|
2937
2982
|
children: ({
|
|
2938
2983
|
type: "HomepageSlice";
|
|
@@ -3066,6 +3111,11 @@ declare const HomepageStructureOutputSchema: z.ZodObject<{
|
|
|
3066
3111
|
title: string;
|
|
3067
3112
|
pageId: string;
|
|
3068
3113
|
homepageListId: string;
|
|
3114
|
+
conceptId?: string | undefined;
|
|
3115
|
+
metaDescription?: string | undefined;
|
|
3116
|
+
pageTheme?: string | undefined;
|
|
3117
|
+
sponsorText?: string | undefined;
|
|
3118
|
+
sponsorImage?: string | undefined;
|
|
3069
3119
|
};
|
|
3070
3120
|
children: ({
|
|
3071
3121
|
type: "HomepageSlice";
|
|
@@ -3211,34 +3261,35 @@ export { LegacyBlock as LegacyBlock_alias_1 }
|
|
|
3211
3261
|
|
|
3212
3262
|
declare const LegacyBlockSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
3213
3263
|
type: z.ZodLiteral<"topper-basic">;
|
|
3214
|
-
children: z.ZodTuple<[], null>;
|
|
3215
3264
|
properties: z.ZodObject<{
|
|
3216
3265
|
title: z.ZodString;
|
|
3217
|
-
sponsorText: z.
|
|
3266
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
3267
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
3218
3268
|
}, "strip", z.ZodTypeAny, {
|
|
3219
3269
|
title: string;
|
|
3220
|
-
sponsorText
|
|
3270
|
+
sponsorText?: string | undefined;
|
|
3271
|
+
sponsorImage?: string | undefined;
|
|
3221
3272
|
}, {
|
|
3222
3273
|
title: string;
|
|
3223
3274
|
sponsorText?: string | undefined;
|
|
3275
|
+
sponsorImage?: string | undefined;
|
|
3224
3276
|
}>;
|
|
3225
3277
|
}, "strip", z.ZodTypeAny, {
|
|
3226
3278
|
type: "topper-basic";
|
|
3227
3279
|
properties: {
|
|
3228
3280
|
title: string;
|
|
3229
|
-
sponsorText
|
|
3281
|
+
sponsorText?: string | undefined;
|
|
3282
|
+
sponsorImage?: string | undefined;
|
|
3230
3283
|
};
|
|
3231
|
-
children: [];
|
|
3232
3284
|
}, {
|
|
3233
3285
|
type: "topper-basic";
|
|
3234
3286
|
properties: {
|
|
3235
3287
|
title: string;
|
|
3236
3288
|
sponsorText?: string | undefined;
|
|
3289
|
+
sponsorImage?: string | undefined;
|
|
3237
3290
|
};
|
|
3238
|
-
children: [];
|
|
3239
3291
|
}>, z.ZodObject<{
|
|
3240
3292
|
type: z.ZodLiteral<"info-box">;
|
|
3241
|
-
children: z.ZodTuple<[], null>;
|
|
3242
3293
|
properties: z.ZodObject<{
|
|
3243
3294
|
bodyHTML: z.ZodString;
|
|
3244
3295
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -3251,13 +3302,11 @@ declare const LegacyBlockSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
|
3251
3302
|
properties: {
|
|
3252
3303
|
bodyHTML: string;
|
|
3253
3304
|
};
|
|
3254
|
-
children: [];
|
|
3255
3305
|
}, {
|
|
3256
3306
|
type: "info-box";
|
|
3257
3307
|
properties: {
|
|
3258
3308
|
bodyHTML: string;
|
|
3259
3309
|
};
|
|
3260
|
-
children: [];
|
|
3261
3310
|
}>, z.ZodObject<{
|
|
3262
3311
|
type: z.ZodLiteral<"container">;
|
|
3263
3312
|
children: z.ZodArray<z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
|
|
@@ -3420,36 +3469,41 @@ export { LegacyPageStructureOutput }
|
|
|
3420
3469
|
export { LegacyPageStructureOutput as LegacyPageStructureOutput_alias_1 }
|
|
3421
3470
|
|
|
3422
3471
|
declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
3472
|
+
uuid: z.ZodString;
|
|
3473
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
3474
|
+
themeName: z.ZodOptional<z.ZodString>;
|
|
3475
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
3423
3476
|
blocks: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
3424
3477
|
type: z.ZodLiteral<"topper-basic">;
|
|
3425
|
-
children: z.ZodTuple<[], null>;
|
|
3426
3478
|
properties: z.ZodObject<{
|
|
3427
3479
|
title: z.ZodString;
|
|
3428
|
-
sponsorText: z.
|
|
3480
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
3481
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
3429
3482
|
}, "strip", z.ZodTypeAny, {
|
|
3430
3483
|
title: string;
|
|
3431
|
-
sponsorText
|
|
3484
|
+
sponsorText?: string | undefined;
|
|
3485
|
+
sponsorImage?: string | undefined;
|
|
3432
3486
|
}, {
|
|
3433
3487
|
title: string;
|
|
3434
3488
|
sponsorText?: string | undefined;
|
|
3489
|
+
sponsorImage?: string | undefined;
|
|
3435
3490
|
}>;
|
|
3436
3491
|
}, "strip", z.ZodTypeAny, {
|
|
3437
3492
|
type: "topper-basic";
|
|
3438
3493
|
properties: {
|
|
3439
3494
|
title: string;
|
|
3440
|
-
sponsorText
|
|
3495
|
+
sponsorText?: string | undefined;
|
|
3496
|
+
sponsorImage?: string | undefined;
|
|
3441
3497
|
};
|
|
3442
|
-
children: [];
|
|
3443
3498
|
}, {
|
|
3444
3499
|
type: "topper-basic";
|
|
3445
3500
|
properties: {
|
|
3446
3501
|
title: string;
|
|
3447
3502
|
sponsorText?: string | undefined;
|
|
3503
|
+
sponsorImage?: string | undefined;
|
|
3448
3504
|
};
|
|
3449
|
-
children: [];
|
|
3450
3505
|
}>, z.ZodObject<{
|
|
3451
3506
|
type: z.ZodLiteral<"info-box">;
|
|
3452
|
-
children: z.ZodTuple<[], null>;
|
|
3453
3507
|
properties: z.ZodObject<{
|
|
3454
3508
|
bodyHTML: z.ZodString;
|
|
3455
3509
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -3462,13 +3516,11 @@ declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
|
3462
3516
|
properties: {
|
|
3463
3517
|
bodyHTML: string;
|
|
3464
3518
|
};
|
|
3465
|
-
children: [];
|
|
3466
3519
|
}, {
|
|
3467
3520
|
type: "info-box";
|
|
3468
3521
|
properties: {
|
|
3469
3522
|
bodyHTML: string;
|
|
3470
3523
|
};
|
|
3471
|
-
children: [];
|
|
3472
3524
|
}>, z.ZodObject<{
|
|
3473
3525
|
type: z.ZodLiteral<"container">;
|
|
3474
3526
|
children: z.ZodArray<z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
|
|
@@ -3625,23 +3677,20 @@ declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
|
3625
3677
|
};
|
|
3626
3678
|
children: [];
|
|
3627
3679
|
}>]>, "many">;
|
|
3628
|
-
conceptId: z.ZodOptional<z.ZodString>;
|
|
3629
|
-
themeName: z.ZodOptional<z.ZodString>;
|
|
3630
|
-
uuid: z.ZodString;
|
|
3631
3680
|
}, "strip", z.ZodTypeAny, {
|
|
3681
|
+
uuid: string;
|
|
3632
3682
|
blocks: ({
|
|
3633
3683
|
type: "topper-basic";
|
|
3634
3684
|
properties: {
|
|
3635
3685
|
title: string;
|
|
3636
|
-
sponsorText
|
|
3686
|
+
sponsorText?: string | undefined;
|
|
3687
|
+
sponsorImage?: string | undefined;
|
|
3637
3688
|
};
|
|
3638
|
-
children: [];
|
|
3639
3689
|
} | {
|
|
3640
3690
|
type: "info-box";
|
|
3641
3691
|
properties: {
|
|
3642
3692
|
bodyHTML: string;
|
|
3643
3693
|
};
|
|
3644
|
-
children: [];
|
|
3645
3694
|
} | {
|
|
3646
3695
|
type: "container";
|
|
3647
3696
|
properties: {
|
|
@@ -3674,23 +3723,23 @@ declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
|
3674
3723
|
};
|
|
3675
3724
|
children: [];
|
|
3676
3725
|
})[];
|
|
3677
|
-
uuid: string;
|
|
3678
3726
|
conceptId?: string | undefined;
|
|
3727
|
+
metaDescription?: string | undefined;
|
|
3679
3728
|
themeName?: string | undefined;
|
|
3680
3729
|
}, {
|
|
3730
|
+
uuid: string;
|
|
3681
3731
|
blocks: ({
|
|
3682
3732
|
type: "topper-basic";
|
|
3683
3733
|
properties: {
|
|
3684
3734
|
title: string;
|
|
3685
3735
|
sponsorText?: string | undefined;
|
|
3736
|
+
sponsorImage?: string | undefined;
|
|
3686
3737
|
};
|
|
3687
|
-
children: [];
|
|
3688
3738
|
} | {
|
|
3689
3739
|
type: "info-box";
|
|
3690
3740
|
properties: {
|
|
3691
3741
|
bodyHTML: string;
|
|
3692
3742
|
};
|
|
3693
|
-
children: [];
|
|
3694
3743
|
} | {
|
|
3695
3744
|
type: "container";
|
|
3696
3745
|
properties: {
|
|
@@ -3723,8 +3772,8 @@ declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
|
3723
3772
|
};
|
|
3724
3773
|
children: [];
|
|
3725
3774
|
})[];
|
|
3726
|
-
uuid: string;
|
|
3727
3775
|
conceptId?: string | undefined;
|
|
3776
|
+
metaDescription?: string | undefined;
|
|
3728
3777
|
themeName?: string | undefined;
|
|
3729
3778
|
}>;
|
|
3730
3779
|
export { LegacyPageStructureOutputSchema }
|
|
@@ -3755,12 +3804,27 @@ declare const PageStructureInputSchema: z.ZodObject<{
|
|
|
3755
3804
|
properties: z.ZodObject<{
|
|
3756
3805
|
title: z.ZodString;
|
|
3757
3806
|
pageId: z.ZodString;
|
|
3807
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
3808
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
3809
|
+
pageTheme: z.ZodOptional<z.ZodString>;
|
|
3810
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
3811
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
3758
3812
|
}, "strip", z.ZodTypeAny, {
|
|
3759
3813
|
title: string;
|
|
3760
3814
|
pageId: string;
|
|
3815
|
+
conceptId?: string | undefined;
|
|
3816
|
+
metaDescription?: string | undefined;
|
|
3817
|
+
pageTheme?: string | undefined;
|
|
3818
|
+
sponsorText?: string | undefined;
|
|
3819
|
+
sponsorImage?: string | undefined;
|
|
3761
3820
|
}, {
|
|
3762
3821
|
title: string;
|
|
3763
3822
|
pageId: string;
|
|
3823
|
+
conceptId?: string | undefined;
|
|
3824
|
+
metaDescription?: string | undefined;
|
|
3825
|
+
pageTheme?: string | undefined;
|
|
3826
|
+
sponsorText?: string | undefined;
|
|
3827
|
+
sponsorImage?: string | undefined;
|
|
3764
3828
|
}>;
|
|
3765
3829
|
children: z.ZodArray<z.ZodDiscriminatedUnion<"type", readonly [z.ZodObject<{
|
|
3766
3830
|
type: z.ZodLiteral<"HomepageSlice">;
|
|
@@ -4622,6 +4686,11 @@ declare const PageStructureInputSchema: z.ZodObject<{
|
|
|
4622
4686
|
properties: {
|
|
4623
4687
|
title: string;
|
|
4624
4688
|
pageId: string;
|
|
4689
|
+
conceptId?: string | undefined;
|
|
4690
|
+
metaDescription?: string | undefined;
|
|
4691
|
+
pageTheme?: string | undefined;
|
|
4692
|
+
sponsorText?: string | undefined;
|
|
4693
|
+
sponsorImage?: string | undefined;
|
|
4625
4694
|
};
|
|
4626
4695
|
children: ({
|
|
4627
4696
|
type: "HomepageSlice";
|
|
@@ -4752,6 +4821,11 @@ declare const PageStructureInputSchema: z.ZodObject<{
|
|
|
4752
4821
|
properties: {
|
|
4753
4822
|
title: string;
|
|
4754
4823
|
pageId: string;
|
|
4824
|
+
conceptId?: string | undefined;
|
|
4825
|
+
metaDescription?: string | undefined;
|
|
4826
|
+
pageTheme?: string | undefined;
|
|
4827
|
+
sponsorText?: string | undefined;
|
|
4828
|
+
sponsorImage?: string | undefined;
|
|
4755
4829
|
};
|
|
4756
4830
|
children: ({
|
|
4757
4831
|
type: "HomepageSlice";
|
|
@@ -4896,12 +4970,27 @@ declare const PageStructureOutputSchema: z.ZodObject<{
|
|
|
4896
4970
|
properties: z.ZodObject<{
|
|
4897
4971
|
title: z.ZodString;
|
|
4898
4972
|
pageId: z.ZodString;
|
|
4973
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
4974
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
4975
|
+
pageTheme: z.ZodOptional<z.ZodString>;
|
|
4976
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
4977
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
4899
4978
|
}, "strip", z.ZodTypeAny, {
|
|
4900
4979
|
title: string;
|
|
4901
4980
|
pageId: string;
|
|
4981
|
+
conceptId?: string | undefined;
|
|
4982
|
+
metaDescription?: string | undefined;
|
|
4983
|
+
pageTheme?: string | undefined;
|
|
4984
|
+
sponsorText?: string | undefined;
|
|
4985
|
+
sponsorImage?: string | undefined;
|
|
4902
4986
|
}, {
|
|
4903
4987
|
title: string;
|
|
4904
4988
|
pageId: string;
|
|
4989
|
+
conceptId?: string | undefined;
|
|
4990
|
+
metaDescription?: string | undefined;
|
|
4991
|
+
pageTheme?: string | undefined;
|
|
4992
|
+
sponsorText?: string | undefined;
|
|
4993
|
+
sponsorImage?: string | undefined;
|
|
4905
4994
|
}>;
|
|
4906
4995
|
children: z.ZodArray<z.ZodDiscriminatedUnion<"type", readonly [z.ZodObject<{
|
|
4907
4996
|
type: z.ZodLiteral<"HomepageSlice">;
|
|
@@ -5764,6 +5853,11 @@ declare const PageStructureOutputSchema: z.ZodObject<{
|
|
|
5764
5853
|
properties: {
|
|
5765
5854
|
title: string;
|
|
5766
5855
|
pageId: string;
|
|
5856
|
+
conceptId?: string | undefined;
|
|
5857
|
+
metaDescription?: string | undefined;
|
|
5858
|
+
pageTheme?: string | undefined;
|
|
5859
|
+
sponsorText?: string | undefined;
|
|
5860
|
+
sponsorImage?: string | undefined;
|
|
5767
5861
|
};
|
|
5768
5862
|
children: ({
|
|
5769
5863
|
type: "HomepageSlice";
|
|
@@ -5896,6 +5990,11 @@ declare const PageStructureOutputSchema: z.ZodObject<{
|
|
|
5896
5990
|
properties: {
|
|
5897
5991
|
title: string;
|
|
5898
5992
|
pageId: string;
|
|
5993
|
+
conceptId?: string | undefined;
|
|
5994
|
+
metaDescription?: string | undefined;
|
|
5995
|
+
pageTheme?: string | undefined;
|
|
5996
|
+
sponsorText?: string | undefined;
|
|
5997
|
+
sponsorImage?: string | undefined;
|
|
5899
5998
|
};
|
|
5900
5999
|
children: ({
|
|
5901
6000
|
type: "HomepageSlice";
|
|
@@ -1771,22 +1771,42 @@ declare const HomepageStructureInputSchema: z.ZodObject<{
|
|
|
1771
1771
|
properties: z.ZodObject<{
|
|
1772
1772
|
title: z.ZodString;
|
|
1773
1773
|
pageId: z.ZodString;
|
|
1774
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
1775
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
1776
|
+
pageTheme: z.ZodOptional<z.ZodString>;
|
|
1777
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
1778
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
1774
1779
|
} & {
|
|
1775
1780
|
homepageListId: z.ZodString;
|
|
1776
1781
|
}, "strip", z.ZodTypeAny, {
|
|
1777
1782
|
title: string;
|
|
1778
1783
|
pageId: string;
|
|
1779
1784
|
homepageListId: string;
|
|
1785
|
+
conceptId?: string | undefined;
|
|
1786
|
+
metaDescription?: string | undefined;
|
|
1787
|
+
pageTheme?: string | undefined;
|
|
1788
|
+
sponsorText?: string | undefined;
|
|
1789
|
+
sponsorImage?: string | undefined;
|
|
1780
1790
|
}, {
|
|
1781
1791
|
title: string;
|
|
1782
1792
|
pageId: string;
|
|
1783
1793
|
homepageListId: string;
|
|
1794
|
+
conceptId?: string | undefined;
|
|
1795
|
+
metaDescription?: string | undefined;
|
|
1796
|
+
pageTheme?: string | undefined;
|
|
1797
|
+
sponsorText?: string | undefined;
|
|
1798
|
+
sponsorImage?: string | undefined;
|
|
1784
1799
|
}>;
|
|
1785
1800
|
}, "strip", z.ZodTypeAny, {
|
|
1786
1801
|
properties: {
|
|
1787
1802
|
title: string;
|
|
1788
1803
|
pageId: string;
|
|
1789
1804
|
homepageListId: string;
|
|
1805
|
+
conceptId?: string | undefined;
|
|
1806
|
+
metaDescription?: string | undefined;
|
|
1807
|
+
pageTheme?: string | undefined;
|
|
1808
|
+
sponsorText?: string | undefined;
|
|
1809
|
+
sponsorImage?: string | undefined;
|
|
1790
1810
|
};
|
|
1791
1811
|
children: ({
|
|
1792
1812
|
type: "HomepageSlice";
|
|
@@ -1918,6 +1938,11 @@ declare const HomepageStructureInputSchema: z.ZodObject<{
|
|
|
1918
1938
|
title: string;
|
|
1919
1939
|
pageId: string;
|
|
1920
1940
|
homepageListId: string;
|
|
1941
|
+
conceptId?: string | undefined;
|
|
1942
|
+
metaDescription?: string | undefined;
|
|
1943
|
+
pageTheme?: string | undefined;
|
|
1944
|
+
sponsorText?: string | undefined;
|
|
1945
|
+
sponsorImage?: string | undefined;
|
|
1921
1946
|
};
|
|
1922
1947
|
children: ({
|
|
1923
1948
|
type: "HomepageSlice";
|
|
@@ -2916,16 +2941,31 @@ declare const HomepageStructureOutputSchema: z.ZodObject<{
|
|
|
2916
2941
|
properties: z.ZodObject<{
|
|
2917
2942
|
title: z.ZodString;
|
|
2918
2943
|
pageId: z.ZodString;
|
|
2944
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
2945
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
2946
|
+
pageTheme: z.ZodOptional<z.ZodString>;
|
|
2947
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
2948
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
2919
2949
|
} & {
|
|
2920
2950
|
homepageListId: z.ZodString;
|
|
2921
2951
|
}, "strip", z.ZodTypeAny, {
|
|
2922
2952
|
title: string;
|
|
2923
2953
|
pageId: string;
|
|
2924
2954
|
homepageListId: string;
|
|
2955
|
+
conceptId?: string | undefined;
|
|
2956
|
+
metaDescription?: string | undefined;
|
|
2957
|
+
pageTheme?: string | undefined;
|
|
2958
|
+
sponsorText?: string | undefined;
|
|
2959
|
+
sponsorImage?: string | undefined;
|
|
2925
2960
|
}, {
|
|
2926
2961
|
title: string;
|
|
2927
2962
|
pageId: string;
|
|
2928
2963
|
homepageListId: string;
|
|
2964
|
+
conceptId?: string | undefined;
|
|
2965
|
+
metaDescription?: string | undefined;
|
|
2966
|
+
pageTheme?: string | undefined;
|
|
2967
|
+
sponsorText?: string | undefined;
|
|
2968
|
+
sponsorImage?: string | undefined;
|
|
2929
2969
|
}>;
|
|
2930
2970
|
}, "strip", z.ZodTypeAny, {
|
|
2931
2971
|
type: "Homepage";
|
|
@@ -2933,6 +2973,11 @@ declare const HomepageStructureOutputSchema: z.ZodObject<{
|
|
|
2933
2973
|
title: string;
|
|
2934
2974
|
pageId: string;
|
|
2935
2975
|
homepageListId: string;
|
|
2976
|
+
conceptId?: string | undefined;
|
|
2977
|
+
metaDescription?: string | undefined;
|
|
2978
|
+
pageTheme?: string | undefined;
|
|
2979
|
+
sponsorText?: string | undefined;
|
|
2980
|
+
sponsorImage?: string | undefined;
|
|
2936
2981
|
};
|
|
2937
2982
|
children: ({
|
|
2938
2983
|
type: "HomepageSlice";
|
|
@@ -3066,6 +3111,11 @@ declare const HomepageStructureOutputSchema: z.ZodObject<{
|
|
|
3066
3111
|
title: string;
|
|
3067
3112
|
pageId: string;
|
|
3068
3113
|
homepageListId: string;
|
|
3114
|
+
conceptId?: string | undefined;
|
|
3115
|
+
metaDescription?: string | undefined;
|
|
3116
|
+
pageTheme?: string | undefined;
|
|
3117
|
+
sponsorText?: string | undefined;
|
|
3118
|
+
sponsorImage?: string | undefined;
|
|
3069
3119
|
};
|
|
3070
3120
|
children: ({
|
|
3071
3121
|
type: "HomepageSlice";
|
|
@@ -3211,34 +3261,35 @@ export { LegacyBlock as LegacyBlock_alias_1 }
|
|
|
3211
3261
|
|
|
3212
3262
|
declare const LegacyBlockSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
3213
3263
|
type: z.ZodLiteral<"topper-basic">;
|
|
3214
|
-
children: z.ZodTuple<[], null>;
|
|
3215
3264
|
properties: z.ZodObject<{
|
|
3216
3265
|
title: z.ZodString;
|
|
3217
|
-
sponsorText: z.
|
|
3266
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
3267
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
3218
3268
|
}, "strip", z.ZodTypeAny, {
|
|
3219
3269
|
title: string;
|
|
3220
|
-
sponsorText
|
|
3270
|
+
sponsorText?: string | undefined;
|
|
3271
|
+
sponsorImage?: string | undefined;
|
|
3221
3272
|
}, {
|
|
3222
3273
|
title: string;
|
|
3223
3274
|
sponsorText?: string | undefined;
|
|
3275
|
+
sponsorImage?: string | undefined;
|
|
3224
3276
|
}>;
|
|
3225
3277
|
}, "strip", z.ZodTypeAny, {
|
|
3226
3278
|
type: "topper-basic";
|
|
3227
3279
|
properties: {
|
|
3228
3280
|
title: string;
|
|
3229
|
-
sponsorText
|
|
3281
|
+
sponsorText?: string | undefined;
|
|
3282
|
+
sponsorImage?: string | undefined;
|
|
3230
3283
|
};
|
|
3231
|
-
children: [];
|
|
3232
3284
|
}, {
|
|
3233
3285
|
type: "topper-basic";
|
|
3234
3286
|
properties: {
|
|
3235
3287
|
title: string;
|
|
3236
3288
|
sponsorText?: string | undefined;
|
|
3289
|
+
sponsorImage?: string | undefined;
|
|
3237
3290
|
};
|
|
3238
|
-
children: [];
|
|
3239
3291
|
}>, z.ZodObject<{
|
|
3240
3292
|
type: z.ZodLiteral<"info-box">;
|
|
3241
|
-
children: z.ZodTuple<[], null>;
|
|
3242
3293
|
properties: z.ZodObject<{
|
|
3243
3294
|
bodyHTML: z.ZodString;
|
|
3244
3295
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -3251,13 +3302,11 @@ declare const LegacyBlockSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
|
3251
3302
|
properties: {
|
|
3252
3303
|
bodyHTML: string;
|
|
3253
3304
|
};
|
|
3254
|
-
children: [];
|
|
3255
3305
|
}, {
|
|
3256
3306
|
type: "info-box";
|
|
3257
3307
|
properties: {
|
|
3258
3308
|
bodyHTML: string;
|
|
3259
3309
|
};
|
|
3260
|
-
children: [];
|
|
3261
3310
|
}>, z.ZodObject<{
|
|
3262
3311
|
type: z.ZodLiteral<"container">;
|
|
3263
3312
|
children: z.ZodArray<z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
|
|
@@ -3420,36 +3469,41 @@ export { LegacyPageStructureOutput }
|
|
|
3420
3469
|
export { LegacyPageStructureOutput as LegacyPageStructureOutput_alias_1 }
|
|
3421
3470
|
|
|
3422
3471
|
declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
3472
|
+
uuid: z.ZodString;
|
|
3473
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
3474
|
+
themeName: z.ZodOptional<z.ZodString>;
|
|
3475
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
3423
3476
|
blocks: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
3424
3477
|
type: z.ZodLiteral<"topper-basic">;
|
|
3425
|
-
children: z.ZodTuple<[], null>;
|
|
3426
3478
|
properties: z.ZodObject<{
|
|
3427
3479
|
title: z.ZodString;
|
|
3428
|
-
sponsorText: z.
|
|
3480
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
3481
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
3429
3482
|
}, "strip", z.ZodTypeAny, {
|
|
3430
3483
|
title: string;
|
|
3431
|
-
sponsorText
|
|
3484
|
+
sponsorText?: string | undefined;
|
|
3485
|
+
sponsorImage?: string | undefined;
|
|
3432
3486
|
}, {
|
|
3433
3487
|
title: string;
|
|
3434
3488
|
sponsorText?: string | undefined;
|
|
3489
|
+
sponsorImage?: string | undefined;
|
|
3435
3490
|
}>;
|
|
3436
3491
|
}, "strip", z.ZodTypeAny, {
|
|
3437
3492
|
type: "topper-basic";
|
|
3438
3493
|
properties: {
|
|
3439
3494
|
title: string;
|
|
3440
|
-
sponsorText
|
|
3495
|
+
sponsorText?: string | undefined;
|
|
3496
|
+
sponsorImage?: string | undefined;
|
|
3441
3497
|
};
|
|
3442
|
-
children: [];
|
|
3443
3498
|
}, {
|
|
3444
3499
|
type: "topper-basic";
|
|
3445
3500
|
properties: {
|
|
3446
3501
|
title: string;
|
|
3447
3502
|
sponsorText?: string | undefined;
|
|
3503
|
+
sponsorImage?: string | undefined;
|
|
3448
3504
|
};
|
|
3449
|
-
children: [];
|
|
3450
3505
|
}>, z.ZodObject<{
|
|
3451
3506
|
type: z.ZodLiteral<"info-box">;
|
|
3452
|
-
children: z.ZodTuple<[], null>;
|
|
3453
3507
|
properties: z.ZodObject<{
|
|
3454
3508
|
bodyHTML: z.ZodString;
|
|
3455
3509
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -3462,13 +3516,11 @@ declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
|
3462
3516
|
properties: {
|
|
3463
3517
|
bodyHTML: string;
|
|
3464
3518
|
};
|
|
3465
|
-
children: [];
|
|
3466
3519
|
}, {
|
|
3467
3520
|
type: "info-box";
|
|
3468
3521
|
properties: {
|
|
3469
3522
|
bodyHTML: string;
|
|
3470
3523
|
};
|
|
3471
|
-
children: [];
|
|
3472
3524
|
}>, z.ZodObject<{
|
|
3473
3525
|
type: z.ZodLiteral<"container">;
|
|
3474
3526
|
children: z.ZodArray<z.ZodDiscriminatedUnion<"source", [z.ZodObject<{
|
|
@@ -3625,23 +3677,20 @@ declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
|
3625
3677
|
};
|
|
3626
3678
|
children: [];
|
|
3627
3679
|
}>]>, "many">;
|
|
3628
|
-
conceptId: z.ZodOptional<z.ZodString>;
|
|
3629
|
-
themeName: z.ZodOptional<z.ZodString>;
|
|
3630
|
-
uuid: z.ZodString;
|
|
3631
3680
|
}, "strip", z.ZodTypeAny, {
|
|
3681
|
+
uuid: string;
|
|
3632
3682
|
blocks: ({
|
|
3633
3683
|
type: "topper-basic";
|
|
3634
3684
|
properties: {
|
|
3635
3685
|
title: string;
|
|
3636
|
-
sponsorText
|
|
3686
|
+
sponsorText?: string | undefined;
|
|
3687
|
+
sponsorImage?: string | undefined;
|
|
3637
3688
|
};
|
|
3638
|
-
children: [];
|
|
3639
3689
|
} | {
|
|
3640
3690
|
type: "info-box";
|
|
3641
3691
|
properties: {
|
|
3642
3692
|
bodyHTML: string;
|
|
3643
3693
|
};
|
|
3644
|
-
children: [];
|
|
3645
3694
|
} | {
|
|
3646
3695
|
type: "container";
|
|
3647
3696
|
properties: {
|
|
@@ -3674,23 +3723,23 @@ declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
|
3674
3723
|
};
|
|
3675
3724
|
children: [];
|
|
3676
3725
|
})[];
|
|
3677
|
-
uuid: string;
|
|
3678
3726
|
conceptId?: string | undefined;
|
|
3727
|
+
metaDescription?: string | undefined;
|
|
3679
3728
|
themeName?: string | undefined;
|
|
3680
3729
|
}, {
|
|
3730
|
+
uuid: string;
|
|
3681
3731
|
blocks: ({
|
|
3682
3732
|
type: "topper-basic";
|
|
3683
3733
|
properties: {
|
|
3684
3734
|
title: string;
|
|
3685
3735
|
sponsorText?: string | undefined;
|
|
3736
|
+
sponsorImage?: string | undefined;
|
|
3686
3737
|
};
|
|
3687
|
-
children: [];
|
|
3688
3738
|
} | {
|
|
3689
3739
|
type: "info-box";
|
|
3690
3740
|
properties: {
|
|
3691
3741
|
bodyHTML: string;
|
|
3692
3742
|
};
|
|
3693
|
-
children: [];
|
|
3694
3743
|
} | {
|
|
3695
3744
|
type: "container";
|
|
3696
3745
|
properties: {
|
|
@@ -3723,8 +3772,8 @@ declare const LegacyPageStructureOutputSchema: z.ZodObject<{
|
|
|
3723
3772
|
};
|
|
3724
3773
|
children: [];
|
|
3725
3774
|
})[];
|
|
3726
|
-
uuid: string;
|
|
3727
3775
|
conceptId?: string | undefined;
|
|
3776
|
+
metaDescription?: string | undefined;
|
|
3728
3777
|
themeName?: string | undefined;
|
|
3729
3778
|
}>;
|
|
3730
3779
|
export { LegacyPageStructureOutputSchema }
|
|
@@ -3755,12 +3804,27 @@ declare const PageStructureInputSchema: z.ZodObject<{
|
|
|
3755
3804
|
properties: z.ZodObject<{
|
|
3756
3805
|
title: z.ZodString;
|
|
3757
3806
|
pageId: z.ZodString;
|
|
3807
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
3808
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
3809
|
+
pageTheme: z.ZodOptional<z.ZodString>;
|
|
3810
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
3811
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
3758
3812
|
}, "strip", z.ZodTypeAny, {
|
|
3759
3813
|
title: string;
|
|
3760
3814
|
pageId: string;
|
|
3815
|
+
conceptId?: string | undefined;
|
|
3816
|
+
metaDescription?: string | undefined;
|
|
3817
|
+
pageTheme?: string | undefined;
|
|
3818
|
+
sponsorText?: string | undefined;
|
|
3819
|
+
sponsorImage?: string | undefined;
|
|
3761
3820
|
}, {
|
|
3762
3821
|
title: string;
|
|
3763
3822
|
pageId: string;
|
|
3823
|
+
conceptId?: string | undefined;
|
|
3824
|
+
metaDescription?: string | undefined;
|
|
3825
|
+
pageTheme?: string | undefined;
|
|
3826
|
+
sponsorText?: string | undefined;
|
|
3827
|
+
sponsorImage?: string | undefined;
|
|
3764
3828
|
}>;
|
|
3765
3829
|
children: z.ZodArray<z.ZodDiscriminatedUnion<"type", readonly [z.ZodObject<{
|
|
3766
3830
|
type: z.ZodLiteral<"HomepageSlice">;
|
|
@@ -4622,6 +4686,11 @@ declare const PageStructureInputSchema: z.ZodObject<{
|
|
|
4622
4686
|
properties: {
|
|
4623
4687
|
title: string;
|
|
4624
4688
|
pageId: string;
|
|
4689
|
+
conceptId?: string | undefined;
|
|
4690
|
+
metaDescription?: string | undefined;
|
|
4691
|
+
pageTheme?: string | undefined;
|
|
4692
|
+
sponsorText?: string | undefined;
|
|
4693
|
+
sponsorImage?: string | undefined;
|
|
4625
4694
|
};
|
|
4626
4695
|
children: ({
|
|
4627
4696
|
type: "HomepageSlice";
|
|
@@ -4752,6 +4821,11 @@ declare const PageStructureInputSchema: z.ZodObject<{
|
|
|
4752
4821
|
properties: {
|
|
4753
4822
|
title: string;
|
|
4754
4823
|
pageId: string;
|
|
4824
|
+
conceptId?: string | undefined;
|
|
4825
|
+
metaDescription?: string | undefined;
|
|
4826
|
+
pageTheme?: string | undefined;
|
|
4827
|
+
sponsorText?: string | undefined;
|
|
4828
|
+
sponsorImage?: string | undefined;
|
|
4755
4829
|
};
|
|
4756
4830
|
children: ({
|
|
4757
4831
|
type: "HomepageSlice";
|
|
@@ -4896,12 +4970,27 @@ declare const PageStructureOutputSchema: z.ZodObject<{
|
|
|
4896
4970
|
properties: z.ZodObject<{
|
|
4897
4971
|
title: z.ZodString;
|
|
4898
4972
|
pageId: z.ZodString;
|
|
4973
|
+
conceptId: z.ZodOptional<z.ZodString>;
|
|
4974
|
+
metaDescription: z.ZodOptional<z.ZodString>;
|
|
4975
|
+
pageTheme: z.ZodOptional<z.ZodString>;
|
|
4976
|
+
sponsorText: z.ZodOptional<z.ZodString>;
|
|
4977
|
+
sponsorImage: z.ZodOptional<z.ZodString>;
|
|
4899
4978
|
}, "strip", z.ZodTypeAny, {
|
|
4900
4979
|
title: string;
|
|
4901
4980
|
pageId: string;
|
|
4981
|
+
conceptId?: string | undefined;
|
|
4982
|
+
metaDescription?: string | undefined;
|
|
4983
|
+
pageTheme?: string | undefined;
|
|
4984
|
+
sponsorText?: string | undefined;
|
|
4985
|
+
sponsorImage?: string | undefined;
|
|
4902
4986
|
}, {
|
|
4903
4987
|
title: string;
|
|
4904
4988
|
pageId: string;
|
|
4989
|
+
conceptId?: string | undefined;
|
|
4990
|
+
metaDescription?: string | undefined;
|
|
4991
|
+
pageTheme?: string | undefined;
|
|
4992
|
+
sponsorText?: string | undefined;
|
|
4993
|
+
sponsorImage?: string | undefined;
|
|
4905
4994
|
}>;
|
|
4906
4995
|
children: z.ZodArray<z.ZodDiscriminatedUnion<"type", readonly [z.ZodObject<{
|
|
4907
4996
|
type: z.ZodLiteral<"HomepageSlice">;
|
|
@@ -5764,6 +5853,11 @@ declare const PageStructureOutputSchema: z.ZodObject<{
|
|
|
5764
5853
|
properties: {
|
|
5765
5854
|
title: string;
|
|
5766
5855
|
pageId: string;
|
|
5856
|
+
conceptId?: string | undefined;
|
|
5857
|
+
metaDescription?: string | undefined;
|
|
5858
|
+
pageTheme?: string | undefined;
|
|
5859
|
+
sponsorText?: string | undefined;
|
|
5860
|
+
sponsorImage?: string | undefined;
|
|
5767
5861
|
};
|
|
5768
5862
|
children: ({
|
|
5769
5863
|
type: "HomepageSlice";
|
|
@@ -5896,6 +5990,11 @@ declare const PageStructureOutputSchema: z.ZodObject<{
|
|
|
5896
5990
|
properties: {
|
|
5897
5991
|
title: string;
|
|
5898
5992
|
pageId: string;
|
|
5993
|
+
conceptId?: string | undefined;
|
|
5994
|
+
metaDescription?: string | undefined;
|
|
5995
|
+
pageTheme?: string | undefined;
|
|
5996
|
+
sponsorText?: string | undefined;
|
|
5997
|
+
sponsorImage?: string | undefined;
|
|
5899
5998
|
};
|
|
5900
5999
|
children: ({
|
|
5901
6000
|
type: "HomepageSlice";
|
|
Binary file
|
package/dist/index.cjs
CHANGED
|
@@ -255,7 +255,12 @@ var SliceApiOutputSchema = _zod.z.discriminatedUnion("type", [
|
|
|
255
255
|
]);
|
|
256
256
|
var BasePagePropertiesSchema = _zod.z.object({
|
|
257
257
|
title: _zod.z.string(),
|
|
258
|
-
pageId: _zod.z.string().uuid()
|
|
258
|
+
pageId: _zod.z.string().uuid(),
|
|
259
|
+
conceptId: _zod.z.string().optional(),
|
|
260
|
+
metaDescription: _zod.z.string().optional(),
|
|
261
|
+
pageTheme: _zod.z.string().optional(),
|
|
262
|
+
sponsorText: _zod.z.string().optional(),
|
|
263
|
+
sponsorImage: _zod.z.string().url().optional()
|
|
259
264
|
});
|
|
260
265
|
var PageStructureInputSchema = _zod.z.object({
|
|
261
266
|
properties: BasePagePropertiesSchema,
|
|
@@ -323,15 +328,14 @@ var LegacyContainerChildSchema = _zod.z.discriminatedUnion("source", [
|
|
|
323
328
|
]);
|
|
324
329
|
var LegacyTopperSchema = _zod.z.object({
|
|
325
330
|
type: _zod.z.literal("topper-basic"),
|
|
326
|
-
children: _zod.z.tuple([]),
|
|
327
331
|
properties: _zod.z.object({
|
|
328
332
|
title: _zod.z.string(),
|
|
329
|
-
sponsorText: _zod.z.string().
|
|
333
|
+
sponsorText: _zod.z.string().optional(),
|
|
334
|
+
sponsorImage: _zod.z.string().url().optional()
|
|
330
335
|
})
|
|
331
336
|
});
|
|
332
337
|
var LegacyInfoBoxSchema = _zod.z.object({
|
|
333
338
|
type: _zod.z.literal("info-box"),
|
|
334
|
-
children: _zod.z.tuple([]),
|
|
335
339
|
properties: _zod.z.object({
|
|
336
340
|
bodyHTML: _zod.z.string()
|
|
337
341
|
})
|
|
@@ -367,10 +371,11 @@ var LegacyBlockSchema = _zod.z.discriminatedUnion("type", [
|
|
|
367
371
|
LegacyExperimentSchema
|
|
368
372
|
]);
|
|
369
373
|
var LegacyPageStructureOutputSchema = _zod.z.object({
|
|
370
|
-
|
|
374
|
+
uuid: _zod.z.string().uuid(),
|
|
371
375
|
conceptId: _zod.z.string().uuid().optional(),
|
|
372
376
|
themeName: _zod.z.string().optional(),
|
|
373
|
-
|
|
377
|
+
metaDescription: _zod.z.string().optional(),
|
|
378
|
+
blocks: _zod.z.array(LegacyBlockSchema)
|
|
374
379
|
});
|
|
375
380
|
|
|
376
381
|
// src/page.ts
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/circleci/repo/packages/content-curation-client/dist/index.cjs","../src/schemas/response.ts","../src/base.ts","../src/schemas/ftpink/page/index.ts","../src/schemas/prosemirror.ts","../src/homepage.ts","../src/schemas/ftpink/legacyHubPage/index.ts","../src/page.ts","../src/client.ts"],"names":[],"mappings":"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","file":"/home/circleci/repo/packages/content-curation-client/dist/index.cjs","sourcesContent":[null,"import { z, type ZodTypeAny } from \"zod\";\n\n/**\n * Strongly‐typed enum for all possible API error codes.\n */\nexport const ApiErrorCode = z.enum([\n\t\"UNAUTHORIZED\",\n\t\"NOT_FOUND\",\n\t\"INTERNAL_SERVER_ERROR\",\n\t\"INVALID_INPUT_DATA\",\n]);\n\n/**\n * Fields shared by both success and error envelopes (but not the discriminant).\n */\nconst BaseEnvelopeFields = z.object({\n\tstatusCode: z.number(),\n\trequestId: z.string(),\n});\n\n/**\n * Specific details carried in an error payload.\n */\nexport const ApiErrorPayloadSchema = z\n\t.object({\n\t\tcode: ApiErrorCode,\n\t\tmessage: z.string(),\n\t\tdetails: z.string().optional(),\n\t\tpath: z.string().optional(),\n\t\ttimestamp: z.string().optional(),\n\t})\n\t.strict();\n\nexport type ApiErrorPayload = z.infer<typeof ApiErrorPayloadSchema>;\n\n/**\n * Full “envelope” when the API has failed.\n */\nexport const ApiErrorResponseSchema = BaseEnvelopeFields.extend({\n\tstatus: z.literal(\"error\"),\n\terror: ApiErrorPayloadSchema,\n}).strict();\n\nexport type ApiErrorResponse = z.infer<typeof ApiErrorResponseSchema>;\n\n/**\n * Schema for a successful API response, given some data schema T.\n */\nexport function ApiSuccessResponseSchema<T extends ZodTypeAny>(dataSchema: T) {\n\treturn BaseEnvelopeFields.extend({\n\t\tstatus: z.literal(\"success\"),\n\t\tdata: dataSchema,\n\t}).strict();\n}\n\n/**\n * Union of success or error envelopes, discriminated on `status`.\n */\nexport function ApiResponseSchema<T extends ZodTypeAny>(dataSchema: T) {\n\tconst successSchema = ApiSuccessResponseSchema(dataSchema);\n\tconst errorSchema = ApiErrorResponseSchema;\n\treturn z.discriminatedUnion(\"status\", [successSchema, errorSchema]);\n}\n","import type { z, ZodTypeAny } from \"zod\";\nimport type { ApiErrorPayloadSchema } from \"./schemas/response\";\nimport { ApiResponseSchema } from \"./schemas/response\";\n\n/**\n * API-level error thrown when { status: 'error' } is returned\n */\nexport class ApiClientError extends Error {\n\tpublic code: string;\n\tpublic details?: string;\n\tpublic path?: string;\n\tpublic timestamp?: string;\n\n\tconstructor(\n\t\tpublic payload: z.infer<typeof ApiErrorPayloadSchema>,\n\t\tpublic statusCode: number,\n\t\tpublic requestId?: string,\n\t) {\n\t\tsuper(payload.message);\n\t\tthis.name = \"ApiError\";\n\t\tthis.code = payload.code;\n\t\tthis.details = payload.details;\n\t\tthis.path = payload.path;\n\t\tthis.timestamp = payload.timestamp;\n\t}\n}\n\n/**\n * Configuration options for the API client\n */\nexport type ApiClientConfig =\n\t| {\n\t\t\t// Standard configuration.\n\t\t\t// Intended for external clients using an API key issued via API Gateway.\n\t\t\tbaseUrl: string;\n\t\t\tapiKey: string;\n\t\t\tapiToken?: never;\n\t\t\tfetch?: typeof fetch;\n\t }\n\t| {\n\t\t\t// Alternative configuration.\n\t\t\t// Reserved for client with access to a bearer token (e.g. The e2e tests).\n\t\t\tbaseUrl: string;\n\t\t\tapiKey?: never;\n\t\t\tapiToken: string;\n\t\t\tfetch?: typeof fetch;\n\t };\n\nexport class BaseApiClient {\n\tprotected config: ApiClientConfig;\n\n\tconstructor(config: ApiClientConfig) {\n\t\tthis.config = {\n\t\t\t...config,\n\t\t\tfetch: config.fetch || fetch,\n\t\t};\n\t\tthis.config.baseUrl = this.config.baseUrl.replace(/\\/+$/, \"\"); // strip trailing slashes\n\t}\n\n\t/**\n\t * Generic HTTP request to a JSON API\n\t */\n\tprotected async request<\n\t\tReqSchema extends ZodTypeAny | undefined,\n\t\tResponseDataSchema extends ZodTypeAny,\n\t>(\n\t\tmethod: \"GET\" | \"PUT\" | \"POST\" | \"DELETE\",\n\t\tpath: string,\n\t\topts: {\n\t\t\trequestSchema?: ReqSchema;\n\t\t\tbody?: ReqSchema extends ZodTypeAny ? z.infer<ReqSchema> : unknown;\n\t\t\tresponseDataSchema: ResponseDataSchema;\n\t\t},\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\t// Validate request body if provided\n\t\tlet bodyPayload = opts.body;\n\t\tif (opts.requestSchema && opts.body !== undefined) {\n\t\t\tbodyPayload = opts.requestSchema.parse(opts.body);\n\t\t}\n\n\t\t// Build URL + query string\n\t\tconst url = new URL(this.config.baseUrl + path);\n\n\t\t// Perform fetch\n\t\tconst response = await this.config.fetch!(url.toString(), {\n\t\t\tmethod,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t...(this.config.apiKey\n\t\t\t\t\t? { \"x-api-key\": this.config.apiKey }\n\t\t\t\t\t: { Authorization: `Bearer ${this.config.apiToken}` }),\n\t\t\t},\n\t\t\tbody: bodyPayload ? JSON.stringify(bodyPayload) : undefined,\n\t\t});\n\n\t\tconst json = await response.json();\n\t\tconst parsedJson = ApiResponseSchema(opts.responseDataSchema).parse(json);\n\n\t\tif (\"error\" in parsedJson) {\n\t\t\tthrow new ApiClientError(parsedJson.error, parsedJson.statusCode, parsedJson.requestId);\n\t\t} else if (!(\"data\" in parsedJson)) {\n\t\t\tthrow new ApiClientError(\n\t\t\t\t{\n\t\t\t\t\tcode: \"INTERNAL_SERVER_ERROR\",\n\t\t\t\t\tmessage: \"Unexpected API response format\",\n\t\t\t\t\tdetails: 'Response did not contain expected \"data\" field',\n\t\t\t\t},\n\t\t\t\t500,\n\t\t\t\tparsedJson.requestId,\n\t\t\t);\n\t\t}\n\n\t\treturn parsedJson.data;\n\t}\n\n\t/**\n\t * GET convenience method inferring response type from schema\n\t */\n\tprotected get<ResponseDataSchema extends ZodTypeAny>(\n\t\tpath: string,\n\t\tresponseDataSchema: ResponseDataSchema,\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\treturn this.request(\"GET\", path, { responseDataSchema });\n\t}\n\n\t/**\n\t * PUT convenience method inferring both request and response types\n\t */\n\tprotected put<ReqSchema extends ZodTypeAny, ResponseDataSchema extends ZodTypeAny>(\n\t\tpath: string,\n\t\tbody: z.infer<ReqSchema>,\n\t\trequestSchema: ReqSchema,\n\t\tresponseDataSchema: ResponseDataSchema,\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\treturn this.request(\"PUT\", path, { body, requestSchema, responseDataSchema });\n\t}\n}\n","import { z } from \"zod\";\nimport { ProseMirrorDocSchema } from \"../../prosemirror\";\n\n//\n// 1) REUSABLE SCHEMAS FOR COMMON STRUCTURES\n//\n\n/**\n * A generic schema representing a heading used across various slices.\n * - `text`: The display text of the heading.\n * - `href`: An optional URL that the heading links to.\n */\nconst HeadingSchema = z.object({\n\ttext: z.string(),\n\thref: z.string().url().optional(),\n});\n\n/**\n * Base “properties” common to most page slices.\n * - `heading`: An optional heading object for slices that can display a title.\n */\nconst BasePageItemProps = z.object({\n\theading: HeadingSchema.optional(),\n});\n\n/**\n * Extended properties for any “graphics”-type slice.\n * In addition to base properties, these slices must specify how the graphic is displayed.\n * - `displayBehaviour`: Determines if the graphic stands alone or is associated with other content.\n */\nconst BaseGraphicsItemProps = BasePageItemProps.extend({\n\tdisplayBehaviour: z.enum([\"standalone\", \"associated\"]),\n});\n\n/**\n * A schema to validate that a string is valid JSON.\n */\nconst ValidJSONStringSchema = z.string().refine(\n\t(val) => {\n\t\ttry {\n\t\t\tJSON.parse(val);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n\t{ message: \"Invalid JSON string\" },\n);\n\n//\n// 2) GENERIC HELPER TO DEFINE “SLICE” INPUT/OUTPUT SCHEMAS\n//\n\n/**\n * A union type to represent either a Zod object schema or an optional Zod object schema.\n */\ntype OptionalOrRequiredZodObject = z.AnyZodObject | z.ZodOptional<z.AnyZodObject>;\n\n/**\n * Helper function that, given:\n * - `typeName`: A string literal identifying the slice type.\n * - `propsShape`: A Zod schema describing the slice’s `properties`.\n *\n * Returns an object containing two schemas:\n * - `InputSchema`: For client-side input; `sliceId` is optional.\n * - `OutputSchema`: For server-side/output; `sliceId` is required.\n *\n * This is useful because when defining slices we often want to allow -\n * clients to submit slices without an ID (e.g., when creating new slices),\n */\nfunction defineSliceSchema<T extends string, P extends OptionalOrRequiredZodObject>(options: {\n\ttypeName: T;\n\tpropsShape: P;\n}) {\n\tconst { typeName, propsShape } = options;\n\n\t// Base schema shared by both input and output:\n\t// - `type`: Literal string identifying which slice this is.\n\t// - `hidden`: Optional flag to mark the slice as hidden.\n\t// - `properties`: The detailed properties shape for the slice.\n\tconst BaseSchema = z.object({\n\t\ttype: z.literal(typeName),\n\t\thidden: z.boolean().optional(),\n\t\tproperties: propsShape,\n\t});\n\n\t/**\n\t * Input schema: For client submissions.\n\t * - `sliceId` is optional because the client might not specify it yet.\n\t */\n\tconst InputSchema = BaseSchema.extend({\n\t\tsliceId: z.string().uuid().optional(),\n\t});\n\n\t/**\n\t * Output schema: For persisted or server-returned data.\n\t * - `sliceId` is required (each saved slice must have an ID).\n\t */\n\tconst OutputSchema = BaseSchema.extend({\n\t\tsliceId: z.string().uuid(),\n\t});\n\n\treturn { InputSchema, OutputSchema };\n}\n\n//\n// 3) DEFINE INDIVIDUAL SLICE TYPES (INPUT & OUTPUT) USING THE HELPER\n//\n\n// 3.A “HomepageSlice”\n// - A generic homepage slice that may include an optional heading.\n// - Input: Clients can pass `properties` or omit entirely.\n// - Output: Always includes a `properties` object (may be empty) and a required `sliceId`.\nconst HomepageSlice = defineSliceSchema({\n\ttypeName: \"HomepageSlice\",\n\tpropsShape: BasePageItemProps.optional(),\n});\n\n// 3.B “FlourishGraphicSlice”\n// - A slice to embed or reference a Flourish graphic by its ID.\n// - Extends graphic base properties with `flourishId`.\nconst FlourishGraphicSlice = defineSliceSchema({\n\ttypeName: \"FlourishGraphic\",\n\tpropsShape: BaseGraphicsItemProps.extend({\n\t\tflourishDescription: z.string().optional(), // Optional description for the Flourish graphic\n\t\tflourishId: z.string().nonempty(),\n\t}),\n});\n\n// 3.C “CustomIframeSlice”\n// - A slice that renders a custom iframe.\n// - Extends graphic base properties with `iframeSrc`.\nconst CustomIframeSlice = defineSliceSchema({\n\ttypeName: \"CustomIframe\",\n\tpropsShape: BaseGraphicsItemProps.extend({\n\t\tiframeSrc: z.string().url().nonempty(),\n\t}),\n});\n\n// 3.D “ExperimentSlice”\n// - A slice for embedding experimental content.\n// - Requires an `experimentId`, `experimentName`, and a JSON string (`contentJson`).\nconst ExperimentSlice = defineSliceSchema({\n\ttypeName: \"Experiment\",\n\tpropsShape: BasePageItemProps.extend({\n\t\texperimentId: z.string().nonempty(), // Unique ID for the experiment\n\t\texperimentName: z.string().nonempty(), // Human-readable name of the experiment\n\t\tcontentJson: ValidJSONStringSchema, // The experiment’s JSON payload as a valid JSON string\n\t}),\n});\n\n// 3.E \"Strip\"\n// - A slice that displays a strip of content.\nconst StripSlice = defineSliceSchema({\n\ttypeName: \"Strip\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tlistId: z.string().uuid(), // The ID of the strip to display\n\t\tmaxStories: z.number().int().min(1), // Maximum number of stories to display in the strip\n\t}),\n});\n\n// 3.F \"TopperSlice\"\n// - A slice that displays a topper section with description and optional strapline.\nconst TopperSlice = defineSliceSchema({\n\ttypeName: \"Topper\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tdescription: ProseMirrorDocSchema,\n\t\tstrapline: z.string().optional(),\n\t}),\n});\n\n// 3.F \"Hero\"\n// - A slice that represents a Hero on the page. It references a Spark List.\nconst HeroSlice = defineSliceSchema({\n\ttypeName: \"Hero\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tlistId: z.string().uuid(), // The ID of the spark list to display\n\t\tmaxStories: z.number().int().min(1), // Maximum number of stories to display in the strip\n\t}),\n});\n\n//\n// 4) COMPOSE DISCRIMINATED UNIONS FOR “SLICE API” INPUT & OUTPUT\n//\n\n/**\n * All possible slice inputs for the Page API.\n * This discriminated union allows Zod to pick the correct schema based on the `type` field.\n */\nexport const SliceApiInputSchema = z.discriminatedUnion(\"type\", [\n\tHomepageSlice.InputSchema,\n\tFlourishGraphicSlice.InputSchema,\n\tCustomIframeSlice.InputSchema,\n\tExperimentSlice.InputSchema,\n\tStripSlice.InputSchema,\n\tTopperSlice.InputSchema,\n\tHeroSlice.InputSchema,\n] as const);\n\n/**\n * All possible slice outputs for the Page API.\n * The same discriminated union but with each slice requiring `sliceId`.\n */\nexport const SliceApiOutputSchema = z.discriminatedUnion(\"type\", [\n\tHomepageSlice.OutputSchema,\n\tFlourishGraphicSlice.OutputSchema,\n\tCustomIframeSlice.OutputSchema,\n\tExperimentSlice.OutputSchema,\n\tStripSlice.OutputSchema,\n\tTopperSlice.OutputSchema,\n\tHeroSlice.OutputSchema,\n] as const);\n\n//\n// 5) WRAPPER SCHEMAS FOR THE ENTIRE PAGE STRUCTURE\n//\n\nconst BasePagePropertiesSchema = z.object({\n\ttitle: z.string(),\n\tpageId: z.string().uuid(),\n});\n\n/**\n * Page structure as submitted by clients.\n * - `properties`: Metadata about the page\n * - `children`: Array of slice inputs (each with an optional `sliceId`).\n */\nexport const PageStructureInputSchema = z.object({\n\tproperties: BasePagePropertiesSchema,\n\tchildren: z.array(SliceApiInputSchema),\n});\n\n/**\n * Page structure as submitted by clients.\n * - `properties`: Metadata about the page (title, list ID, page ID).\n * - `children`: Array of slice inputs (each with an optional `sliceId`).\n */\nexport const HomepageStructureInputSchema = PageStructureInputSchema.extend({\n\tproperties: BasePagePropertiesSchema.extend({\n\t\t// This is optional for the input. If clients don't send it, we generate a uuid.\n\t\thomepageListId: z.string().uuid(),\n\t}),\n});\n\n/**\n * Page structure as stored or returned by the server.\n */\nexport const PageStructureOutputSchema = z.object({\n\ttype: z.literal(\"Page\"),\n\tschemaVersion: z.number(),\n\tproperties: BasePagePropertiesSchema,\n\tchildren: z.array(SliceApiOutputSchema),\n});\n\nexport const HomepageStructureOutputSchema = PageStructureOutputSchema.extend({\n\ttype: z.literal(\"Homepage\"),\n\tproperties: BasePagePropertiesSchema.extend({\n\t\thomepageListId: z.string().uuid(),\n\t}),\n});\n\n//\n// 6) EXPORT TYPES FOR CONSUMPTION IN CODE\n//\n\n/** Client-side type for page structure input */\nexport type PageStructureInput = z.infer<typeof PageStructureInputSchema>;\n\n/** Server-side type for page structure output */\nexport type PageStructureOutput = z.infer<typeof PageStructureOutputSchema>;\n\n/** Client-side type for homepage structure input */\nexport type HomepageStructureInput = z.infer<typeof HomepageStructureInputSchema>;\n\n/** Server-side type for homepage structure output */\nexport type HomepageStructureOutput = z.infer<typeof HomepageStructureOutputSchema>;\n\n/** Union of all possible slice outputs for type-checking convenience */\nexport type Slice = z.infer<typeof SliceApiOutputSchema>;\n\n/** Individual slice output types */\nexport type HomepageSliceType = z.infer<typeof HomepageSlice.OutputSchema>;\nexport type FlourishGraphicSliceType = z.infer<typeof FlourishGraphicSlice.OutputSchema>;\nexport type CustomIframeSliceType = z.infer<typeof CustomIframeSlice.OutputSchema>;\nexport type ExperimentSliceType = z.infer<typeof ExperimentSlice.OutputSchema>;\nexport type StripSliceType = z.infer<typeof StripSlice.OutputSchema>;\nexport type TopperSliceType = z.infer<typeof TopperSlice.OutputSchema>;\nexport type HeroSliceType = z.infer<typeof HeroSlice.OutputSchema>;\n\n/**\n * Union type for interactive slices (i.e., the ones rendering visual components).\n * Useful for code that cares specifically about slices with visual/interactive content.\n */\nexport type InteractiveSlice = FlourishGraphicSliceType | CustomIframeSliceType;\n","import { z } from \"zod\";\n\n/** Accept http(s) and mailto: (matches your editor config) */\nconst HrefSchema = z.string().refine((v) => /^(https?:\\/\\/|mailto:).+/.test(v), {\n\tmessage: \"Expected http(s):// or mailto: URL\",\n});\n\n/** Link mark. */\nconst ProseMirrorLinkMark = z.object({\n\ttype: z.literal(\"link\"),\n\tattrs: z.object({\n\t\thref: HrefSchema,\n\t}),\n});\n\n/** Supported text marks */\nconst ProseMirrorMark = z.discriminatedUnion(\"type\", [\n\tProseMirrorLinkMark,\n\tz.object({ type: z.literal(\"bold\") }),\n\tz.object({ type: z.literal(\"italic\") }),\n\tz.object({ type: z.literal(\"underline\") }),\n\tz.object({ type: z.literal(\"strike\") }),\n]);\n\n/** Text node */\nconst ProseMirrorTextNode = z.object({\n\ttype: z.literal(\"text\"),\n\ttext: z.string(),\n\tmarks: z.array(ProseMirrorMark).optional(),\n});\n\n/** Paragraph node — content can be empty/omitted */\nconst ProseMirrorParagraphNode = z.object({\n\ttype: z.literal(\"paragraph\"),\n\tcontent: z.array(ProseMirrorTextNode),\n});\n\n/** ProseMirror Node Union. */\nconst ProseMirrorNode = z.union([ProseMirrorParagraphNode, ProseMirrorTextNode]);\n\n/** Root node of a ProseMirror document - enforcing at least 1 paragraph */\nexport const ProseMirrorDocSchema = z.object({\n\ttype: z.literal(\"doc\"),\n\tcontent: z\n\t\t.array(ProseMirrorNode)\n\t\t.min(1, { message: \"Document must contain at least one paragraph\" }),\n});\n\n/** Rich text editor TS type. */\nexport type RichTextEditorType = z.infer<typeof ProseMirrorDocSchema>;\n\nexport {};\n","import { BaseApiClient } from \"./base\";\nimport {\n\tHomepageStructureInputSchema,\n\tHomepageStructureOutputSchema,\n\ttype HomepageStructureInput,\n\ttype HomepageStructureOutput,\n} from \"./schemas/ftpink/page\";\n\n/**\n * Client for Homepage structure endpoints\n */\nexport class HomepageClient extends BaseApiClient {\n\tasync getStructure(pageId: string): Promise<HomepageStructureOutput> {\n\t\treturn this.get(`/v1/homepage/${pageId}/structure`, HomepageStructureOutputSchema);\n\t}\n\n\tasync getStructuresByHomepageListId(homepageListId: string): Promise<HomepageStructureOutput[]> {\n\t\treturn this.get(\n\t\t\t`/v1/homepage/list/${homepageListId}/structures`,\n\t\t\tHomepageStructureOutputSchema.array(),\n\t\t);\n\t}\n\n\tasync upsertStructure(\n\t\tpageId: string,\n\t\tdata: Omit<HomepageStructureInput, \"type\">,\n\t): Promise<HomepageStructureOutput> {\n\t\treturn this.put(\n\t\t\t`/v1/homepage/${pageId}/structure`,\n\t\t\tdata,\n\t\t\tHomepageStructureInputSchema,\n\t\t\tHomepageStructureOutputSchema,\n\t\t);\n\t}\n}\n","import { z } from \"zod\";\n\n/**\n * -----------------------------------------\n * Legacy API Schemas & Types\n *\n * These schemas map to expected types for Hub Pages rendered by dotcom-pages.\n * -----------------------------------------\n */\n\nconst LegacyFlourishChildSchema = z.object({\n\tsource: z.literal(\"flourish\"),\n\tproperties: z.object({\n\t\tid: z.string().min(1), // e.g. \"visualisation/21901162\"\n\t}),\n});\n\nconst LegacyListChildSchema = z.object({\n\tsource: z.literal(\"list\"),\n\tproperties: z.object({\n\t\tid: z.string().uuid(),\n\t\tmaxItems: z.number().optional(),\n\t}),\n});\n\nconst LegacyContainerChildSchema = z.discriminatedUnion(\"source\", [\n\tLegacyFlourishChildSchema,\n\tLegacyListChildSchema,\n]);\n\nconst LegacyTopperSchema = z.object({\n\ttype: z.literal(\"topper-basic\"),\n\tchildren: z.tuple([]),\n\tproperties: z.object({\n\t\ttitle: z.string(),\n\t\tsponsorText: z.string().default(\"\"),\n\t}),\n});\n\nconst LegacyInfoBoxSchema = z.object({\n\ttype: z.literal(\"info-box\"),\n\tchildren: z.tuple([]),\n\tproperties: z.object({\n\t\tbodyHTML: z.string(),\n\t}),\n});\n\nconst LegacyContainerSchema = z.object({\n\ttype: z.literal(\"container\"),\n\tchildren: z.array(LegacyContainerChildSchema).min(1),\n\tproperties: z.object({\n\t\ttitle: z.string().optional(),\n\t\tdesign: z.enum([\"chart\", \"four-story\", \"freeform\", \"hero-lead\"]).default(\"freeform\"),\n\t\tbackgroundColor: z.string().optional(),\n\t}),\n});\n\nconst LegacyExperimentSchema = z.object({\n\ttype: z.literal(\"experiment\"),\n\tchildren: z.tuple([]),\n\tproperties: z.object({\n\t\texperimentName: z.string(),\n\t\tid: z.string(),\n\t\ttitle: z.string().optional(),\n\t\tconfig: z\n\t\t\t.object({\n\t\t\t\tvalue: z.unknown().optional(),\n\t\t\t\t// Hub pages support experiments with HTML and Text.\n\t\t\t\t// For now we just support JSON. As we migrate pages, this may change.\n\t\t\t\tformat: z.enum([\"json\"]).default(\"json\"),\n\t\t\t})\n\t\t\t.partial()\n\t\t\t.optional(),\n\t}),\n});\n\nconst LegacyBlockSchema = z.discriminatedUnion(\"type\", [\n\tLegacyTopperSchema,\n\tLegacyInfoBoxSchema,\n\tLegacyContainerSchema,\n\tLegacyExperimentSchema,\n]);\n\nexport const LegacyPageStructureOutputSchema = z.object({\n\tblocks: z.array(LegacyBlockSchema),\n\tconceptId: z.string().uuid().optional(),\n\tthemeName: z.string().optional(),\n\tuuid: z.string().uuid(),\n});\n\nexport type LegacyPageStructureOutput = z.infer<typeof LegacyPageStructureOutputSchema>;\nexport type LegacyBlock = z.infer<typeof LegacyBlockSchema>;\n","import { BaseApiClient } from \"./base\";\nimport type { LegacyPageStructureOutput } from \"./schemas/ftpink/legacyHubPage\";\nimport { LegacyPageStructureOutputSchema } from \"./schemas/ftpink/legacyHubPage\";\nimport {\n\tPageStructureInputSchema,\n\tPageStructureOutputSchema,\n\ttype PageStructureInput,\n\ttype PageStructureOutput,\n} from \"./schemas/ftpink/page\";\n\n/**\n * Client for Page structure endpoints\n */\nexport class PageClient extends BaseApiClient {\n\tasync getStructure(pageId: string): Promise<PageStructureOutput> {\n\t\treturn this.get(`/v1/page/${pageId}/structure`, PageStructureOutputSchema);\n\t}\n\n\tasync getLegacyHubPageStructure(pageId: string): Promise<LegacyPageStructureOutput> {\n\t\treturn this.get(`/v1/page/${pageId}/legacyHubPageStructure`, LegacyPageStructureOutputSchema);\n\t}\n\n\tasync upsertStructure(\n\t\tpageId: string,\n\t\tdata: Omit<PageStructureInput, \"type\">,\n\t): Promise<PageStructureOutput> {\n\t\treturn this.put(\n\t\t\t`/v1/page/${pageId}/structure`,\n\t\t\tdata,\n\t\t\tPageStructureInputSchema,\n\t\t\tPageStructureOutputSchema,\n\t\t);\n\t}\n}\n","import type { ApiClientConfig } from \"./base\";\nimport { BaseApiClient } from \"./base\";\nimport { HomepageClient } from \"./homepage\";\nimport { PageClient } from \"./page\";\n\n/**\n * Main API client that provides access to all API endpoints\n */\nexport class ApiClient extends BaseApiClient {\n\t/**\n\t * Homepage API endpoints\n\t */\n\thomepage: HomepageClient;\n\tpage: PageClient;\n\n\tconstructor(config: ApiClientConfig) {\n\t\tsuper(config);\n\n\t\t// Initialize sub-clients\n\t\tthis.homepage = new HomepageClient(config);\n\t\tthis.page = new PageClient(config);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/circleci/repo/packages/content-curation-client/dist/index.cjs","../src/schemas/response.ts","../src/base.ts","../src/schemas/ftpink/page/index.ts","../src/schemas/prosemirror.ts","../src/homepage.ts","../src/schemas/ftpink/legacyHubPage/index.ts","../src/page.ts","../src/client.ts"],"names":[],"mappings":"AAAA;ACAA,0BAAmC;AAK5B,IAAM,aAAA,EAAe,MAAA,CAAE,IAAA,CAAK;AAAA,EAClC,cAAA;AAAA,EACA,WAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACD,CAAC,CAAA;AAKD,IAAM,mBAAA,EAAqB,MAAA,CAAE,MAAA,CAAO;AAAA,EACnC,UAAA,EAAY,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EACrB,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO;AACrB,CAAC,CAAA;AAKM,IAAM,sBAAA,EAAwB,MAAA,CACnC,MAAA,CAAO;AAAA,EACP,IAAA,EAAM,YAAA;AAAA,EACN,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EAClB,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EAC7B,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EAC1B,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS;AAChC,CAAC,CAAA,CACA,MAAA,CAAO,CAAA;AAOF,IAAM,uBAAA,EAAyB,kBAAA,CAAmB,MAAA,CAAO;AAAA,EAC/D,MAAA,EAAQ,MAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACzB,KAAA,EAAO;AACR,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA;AAOH,SAAS,wBAAA,CAA+C,UAAA,EAAe;AAC7E,EAAA,OAAO,kBAAA,CAAmB,MAAA,CAAO;AAAA,IAChC,MAAA,EAAQ,MAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,IAC3B,IAAA,EAAM;AAAA,EACP,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA;AACX;AAKO,SAAS,iBAAA,CAAwC,UAAA,EAAe;AACtE,EAAA,MAAM,cAAA,EAAgB,wBAAA,CAAyB,UAAU,CAAA;AACzD,EAAA,MAAM,YAAA,EAAc,sBAAA;AACpB,EAAA,OAAO,MAAA,CAAE,kBAAA,CAAmB,QAAA,EAAU,CAAC,aAAA,EAAe,WAAW,CAAC,CAAA;AACnE;AD5BA;AACA;AE5BO,IAAM,eAAA,EAAN,MAAA,QAA6B,MAAM;AAAA,EAMzC,WAAA,CACQ,OAAA,EACA,UAAA,EACA,SAAA,EACN;AACD,IAAA,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA;AAJd,IAAA,IAAA,CAAA,QAAA,EAAA,OAAA;AACA,IAAA,IAAA,CAAA,WAAA,EAAA,UAAA;AACA,IAAA,IAAA,CAAA,UAAA,EAAA,SAAA;AAGP,IAAA,IAAA,CAAK,KAAA,EAAO,UAAA;AACZ,IAAA,IAAA,CAAK,KAAA,EAAO,OAAA,CAAQ,IAAA;AACpB,IAAA,IAAA,CAAK,QAAA,EAAU,OAAA,CAAQ,OAAA;AACvB,IAAA,IAAA,CAAK,KAAA,EAAO,OAAA,CAAQ,IAAA;AACpB,IAAA,IAAA,CAAK,UAAA,EAAY,OAAA,CAAQ,SAAA;AAAA,EAC1B;AAAA,EAhBO;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAcR,CAAA;AAuBO,IAAM,cAAA,EAAN,MAAoB;AAAA,EAChB;AAAA,EAEV,WAAA,CAAY,MAAA,EAAyB;AACpC,IAAA,IAAA,CAAK,OAAA,EAAS;AAAA,MACb,GAAG,MAAA;AAAA,MACH,KAAA,EAAO,MAAA,CAAO,MAAA,GAAS;AAAA,IACxB,CAAA;AACA,IAAA,IAAA,CAAK,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,OAAA,CAIf,MAAA,EACA,IAAA,EACA,IAAA,EAKuC;AAEvC,IAAA,IAAI,YAAA,EAAc,IAAA,CAAK,IAAA;AACvB,IAAA,GAAA,CAAI,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,KAAA,IAAS,KAAA,CAAA,EAAW;AAClD,MAAA,YAAA,EAAc,IAAA,CAAK,aAAA,CAAc,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAAA,IACjD;AAGA,IAAA,MAAM,IAAA,EAAM,IAAI,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,QAAA,EAAU,IAAI,CAAA;AAG9C,IAAA,MAAM,SAAA,EAAW,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAO,GAAA,CAAI,QAAA,CAAS,CAAA,EAAG;AAAA,MACzD,MAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACR,cAAA,EAAgB,kBAAA;AAAA,QAChB,GAAI,IAAA,CAAK,MAAA,CAAO,OAAA,EACb,EAAE,WAAA,EAAa,IAAA,CAAK,MAAA,CAAO,OAAO,EAAA,EAClC,EAAE,aAAA,EAAe,CAAA,OAAA,EAAU,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA,EAAA;AACnD,MAAA;AACkD,MAAA;AAClD,IAAA;AAEgC,IAAA;AACuC,IAAA;AAE7C,IAAA;AAC4D,MAAA;AACnD,IAAA;AACzB,MAAA;AACT,QAAA;AACO,UAAA;AACG,UAAA;AACA,UAAA;AACV,QAAA;AACA,QAAA;AACW,QAAA;AACZ,MAAA;AACD,IAAA;AAEkB,IAAA;AACnB,EAAA;AAAA;AAAA;AAAA;AAQwC,EAAA;AACgB,IAAA;AACxD,EAAA;AAAA;AAAA;AAAA;AAUwC,EAAA;AACqC,IAAA;AAC7E,EAAA;AACD;AF3BsH;AACA;AG9GpG;AHgHoG;AACA;AIjHpG;AAG8D;AACtE,EAAA;AACT;AAGoC;AACd,EAAA;AACN,EAAA;AACT,IAAA;AACN,EAAA;AACD;AAGoD;AACpD,EAAA;AACoC,EAAA;AACE,EAAA;AACG,EAAA;AACH,EAAA;AACtC;AAGoC;AACd,EAAA;AACP,EAAA;AAC0B,EAAA;AACzC;AAGyC;AACd,EAAA;AACS,EAAA;AACpC;AAG8E;AAGlC;AACvB,EAAA;AAG+C,EAAA;AACpE;AJmGqH;AACA;AGtIvF;AACf,EAAA;AACiB,EAAA;AAChC;AAMkC;AACF,EAAA;AAChC;AAOsD;AACD,EAAA;AACrD;AAKwC;AAC/B,EAAA;AACJ,IAAA;AACW,MAAA;AACP,MAAA;AACA,IAAA;AACA,MAAA;AACR,IAAA;AACD,EAAA;AACiC,EAAA;AAClC;AA0BG;AAC+B,EAAA;AAML,EAAA;AACH,IAAA;AACK,IAAA;AACjB,IAAA;AACZ,EAAA;AAMqC,EAAA;AACD,IAAA;AACpC,EAAA;AAMsC,EAAA;AACb,IAAA;AACzB,EAAA;AAEkC,EAAA;AACpC;AAUwC;AAC7B,EAAA;AAC6B,EAAA;AACvC;AAK8C;AACpC,EAAA;AAC+B,EAAA;AACC,IAAA;AAAA;AACT,IAAA;AAChC,EAAA;AACD;AAK2C;AACjC,EAAA;AAC+B,EAAA;AACH,IAAA;AACrC,EAAA;AACD;AAKyC;AAC/B,EAAA;AAC2B,EAAA;AACF,IAAA;AAAA;AACE,IAAA;AAAA;AACvB,IAAA;AAAA;AACb,EAAA;AACD;AAIoC;AAC1B,EAAA;AAC2B,EAAA;AACZ,IAAA;AAAA;AACU,IAAA;AAAA;AAClC,EAAA;AACD;AAIqC;AAC3B,EAAA;AAC2B,EAAA;AACvB,IAAA;AACkB,IAAA;AAC/B,EAAA;AACD;AAImC;AACzB,EAAA;AAC2B,EAAA;AACZ,IAAA;AAAA;AACU,IAAA;AAAA;AAClC,EAAA;AACD;AAU+D;AACjD,EAAA;AACO,EAAA;AACH,EAAA;AACF,EAAA;AACL,EAAA;AACC,EAAA;AACF,EAAA;AACD;AAMuD;AAClD,EAAA;AACO,EAAA;AACH,EAAA;AACF,EAAA;AACL,EAAA;AACC,EAAA;AACF,EAAA;AACD;AAMgC;AACzB,EAAA;AACQ,EAAA;AACO,EAAA;AACM,EAAA;AACN,EAAA;AACE,EAAA;AACO,EAAA;AACxC;AAOgD;AACpC,EAAA;AACyB,EAAA;AACrC;AAO2E;AAC/B,EAAA;AAAA;AAEX,IAAA;AAChC,EAAA;AACD;AAKiD;AAC3B,EAAA;AACE,EAAA;AACZ,EAAA;AAC0B,EAAA;AACtC;AAE6E;AACnD,EAAA;AACkB,EAAA;AACX,IAAA;AAChC,EAAA;AACD;AHsBqH;AACA;AKpRpE;AACoB,EAAA;AACa,IAAA;AAClF,EAAA;AAEgG,EAAA;AACnF,IAAA;AACwB,MAAA;AACC,MAAA;AACrC,IAAA;AACD,EAAA;AAKoC,EAAA;AACvB,IAAA;AACW,MAAA;AACtB,MAAA;AACA,MAAA;AACA,MAAA;AACD,IAAA;AACD,EAAA;AACD;ALiRsH;AACA;AMpTpG;AAUyB;AACd,EAAA;AACP,EAAA;AACA,IAAA;AAAA;AACpB,EAAA;AACD;AAEsC;AACd,EAAA;AACH,EAAA;AACA,IAAA;AACU,IAAA;AAC9B,EAAA;AACD;AAEiE;AACjE,EAAA;AACA,EAAA;AACA;AAEmC;AACL,EAAA;AACT,EAAA;AACJ,IAAA;AACiB,IAAA;AACO,IAAA;AACxC,EAAA;AACD;AAEoC;AACV,EAAA;AACL,EAAA;AACD,IAAA;AACnB,EAAA;AACD;AAEsC;AACX,EAAA;AACwB,EAAA;AAC9B,EAAA;AACO,IAAA;AACwD,IAAA;AAC9C,IAAA;AACrC,EAAA;AACD;AAEuC;AACX,EAAA;AACR,EAAA;AACC,EAAA;AACK,IAAA;AACZ,IAAA;AACc,IAAA;AAElB,IAAA;AACqB,MAAA;AAAA;AAAA;AAGW,MAAA;AAG9B,IAAA;AACX,EAAA;AACD;AAEsD;AACtD,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AAEuD;AACjC,EAAA;AACgB,EAAA;AACP,EAAA;AACM,EAAA;AACJ,EAAA;AACjC;ANmSqH;AACA;AO/WxE;AACoB,EAAA;AACS,IAAA;AAC1E,EAAA;AAEoF,EAAA;AACS,IAAA;AAC7F,EAAA;AAKgC,EAAA;AACnB,IAAA;AACO,MAAA;AAClB,MAAA;AACA,MAAA;AACA,MAAA;AACD,IAAA;AACD,EAAA;AACD;AP4WsH;AACA;AQtYzE;AAAA;AAAA;AAAA;AAI5C,EAAA;AACA,EAAA;AAEqC,EAAA;AACxB,IAAA;AAG6B,IAAA;AACR,IAAA;AAClC,EAAA;AACD;ARqYsH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/circleci/repo/packages/content-curation-client/dist/index.cjs","sourcesContent":[null,"import { z, type ZodTypeAny } from \"zod\";\n\n/**\n * Strongly‐typed enum for all possible API error codes.\n */\nexport const ApiErrorCode = z.enum([\n\t\"UNAUTHORIZED\",\n\t\"NOT_FOUND\",\n\t\"INTERNAL_SERVER_ERROR\",\n\t\"INVALID_INPUT_DATA\",\n]);\n\n/**\n * Fields shared by both success and error envelopes (but not the discriminant).\n */\nconst BaseEnvelopeFields = z.object({\n\tstatusCode: z.number(),\n\trequestId: z.string(),\n});\n\n/**\n * Specific details carried in an error payload.\n */\nexport const ApiErrorPayloadSchema = z\n\t.object({\n\t\tcode: ApiErrorCode,\n\t\tmessage: z.string(),\n\t\tdetails: z.string().optional(),\n\t\tpath: z.string().optional(),\n\t\ttimestamp: z.string().optional(),\n\t})\n\t.strict();\n\nexport type ApiErrorPayload = z.infer<typeof ApiErrorPayloadSchema>;\n\n/**\n * Full “envelope” when the API has failed.\n */\nexport const ApiErrorResponseSchema = BaseEnvelopeFields.extend({\n\tstatus: z.literal(\"error\"),\n\terror: ApiErrorPayloadSchema,\n}).strict();\n\nexport type ApiErrorResponse = z.infer<typeof ApiErrorResponseSchema>;\n\n/**\n * Schema for a successful API response, given some data schema T.\n */\nexport function ApiSuccessResponseSchema<T extends ZodTypeAny>(dataSchema: T) {\n\treturn BaseEnvelopeFields.extend({\n\t\tstatus: z.literal(\"success\"),\n\t\tdata: dataSchema,\n\t}).strict();\n}\n\n/**\n * Union of success or error envelopes, discriminated on `status`.\n */\nexport function ApiResponseSchema<T extends ZodTypeAny>(dataSchema: T) {\n\tconst successSchema = ApiSuccessResponseSchema(dataSchema);\n\tconst errorSchema = ApiErrorResponseSchema;\n\treturn z.discriminatedUnion(\"status\", [successSchema, errorSchema]);\n}\n","import type { z, ZodTypeAny } from \"zod\";\nimport type { ApiErrorPayloadSchema } from \"./schemas/response\";\nimport { ApiResponseSchema } from \"./schemas/response\";\n\n/**\n * API-level error thrown when { status: 'error' } is returned\n */\nexport class ApiClientError extends Error {\n\tpublic code: string;\n\tpublic details?: string;\n\tpublic path?: string;\n\tpublic timestamp?: string;\n\n\tconstructor(\n\t\tpublic payload: z.infer<typeof ApiErrorPayloadSchema>,\n\t\tpublic statusCode: number,\n\t\tpublic requestId?: string,\n\t) {\n\t\tsuper(payload.message);\n\t\tthis.name = \"ApiError\";\n\t\tthis.code = payload.code;\n\t\tthis.details = payload.details;\n\t\tthis.path = payload.path;\n\t\tthis.timestamp = payload.timestamp;\n\t}\n}\n\n/**\n * Configuration options for the API client\n */\nexport type ApiClientConfig =\n\t| {\n\t\t\t// Standard configuration.\n\t\t\t// Intended for external clients using an API key issued via API Gateway.\n\t\t\tbaseUrl: string;\n\t\t\tapiKey: string;\n\t\t\tapiToken?: never;\n\t\t\tfetch?: typeof fetch;\n\t }\n\t| {\n\t\t\t// Alternative configuration.\n\t\t\t// Reserved for client with access to a bearer token (e.g. The e2e tests).\n\t\t\tbaseUrl: string;\n\t\t\tapiKey?: never;\n\t\t\tapiToken: string;\n\t\t\tfetch?: typeof fetch;\n\t };\n\nexport class BaseApiClient {\n\tprotected config: ApiClientConfig;\n\n\tconstructor(config: ApiClientConfig) {\n\t\tthis.config = {\n\t\t\t...config,\n\t\t\tfetch: config.fetch || fetch,\n\t\t};\n\t\tthis.config.baseUrl = this.config.baseUrl.replace(/\\/+$/, \"\"); // strip trailing slashes\n\t}\n\n\t/**\n\t * Generic HTTP request to a JSON API\n\t */\n\tprotected async request<\n\t\tReqSchema extends ZodTypeAny | undefined,\n\t\tResponseDataSchema extends ZodTypeAny,\n\t>(\n\t\tmethod: \"GET\" | \"PUT\" | \"POST\" | \"DELETE\",\n\t\tpath: string,\n\t\topts: {\n\t\t\trequestSchema?: ReqSchema;\n\t\t\tbody?: ReqSchema extends ZodTypeAny ? z.infer<ReqSchema> : unknown;\n\t\t\tresponseDataSchema: ResponseDataSchema;\n\t\t},\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\t// Validate request body if provided\n\t\tlet bodyPayload = opts.body;\n\t\tif (opts.requestSchema && opts.body !== undefined) {\n\t\t\tbodyPayload = opts.requestSchema.parse(opts.body);\n\t\t}\n\n\t\t// Build URL + query string\n\t\tconst url = new URL(this.config.baseUrl + path);\n\n\t\t// Perform fetch\n\t\tconst response = await this.config.fetch!(url.toString(), {\n\t\t\tmethod,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t...(this.config.apiKey\n\t\t\t\t\t? { \"x-api-key\": this.config.apiKey }\n\t\t\t\t\t: { Authorization: `Bearer ${this.config.apiToken}` }),\n\t\t\t},\n\t\t\tbody: bodyPayload ? JSON.stringify(bodyPayload) : undefined,\n\t\t});\n\n\t\tconst json = await response.json();\n\t\tconst parsedJson = ApiResponseSchema(opts.responseDataSchema).parse(json);\n\n\t\tif (\"error\" in parsedJson) {\n\t\t\tthrow new ApiClientError(parsedJson.error, parsedJson.statusCode, parsedJson.requestId);\n\t\t} else if (!(\"data\" in parsedJson)) {\n\t\t\tthrow new ApiClientError(\n\t\t\t\t{\n\t\t\t\t\tcode: \"INTERNAL_SERVER_ERROR\",\n\t\t\t\t\tmessage: \"Unexpected API response format\",\n\t\t\t\t\tdetails: 'Response did not contain expected \"data\" field',\n\t\t\t\t},\n\t\t\t\t500,\n\t\t\t\tparsedJson.requestId,\n\t\t\t);\n\t\t}\n\n\t\treturn parsedJson.data;\n\t}\n\n\t/**\n\t * GET convenience method inferring response type from schema\n\t */\n\tprotected get<ResponseDataSchema extends ZodTypeAny>(\n\t\tpath: string,\n\t\tresponseDataSchema: ResponseDataSchema,\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\treturn this.request(\"GET\", path, { responseDataSchema });\n\t}\n\n\t/**\n\t * PUT convenience method inferring both request and response types\n\t */\n\tprotected put<ReqSchema extends ZodTypeAny, ResponseDataSchema extends ZodTypeAny>(\n\t\tpath: string,\n\t\tbody: z.infer<ReqSchema>,\n\t\trequestSchema: ReqSchema,\n\t\tresponseDataSchema: ResponseDataSchema,\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\treturn this.request(\"PUT\", path, { body, requestSchema, responseDataSchema });\n\t}\n}\n","import { z } from \"zod\";\nimport { ProseMirrorDocSchema } from \"../../prosemirror\";\n\n//\n// 1) REUSABLE SCHEMAS FOR COMMON STRUCTURES\n//\n\n/**\n * A generic schema representing a heading used across various slices.\n * - `text`: The display text of the heading.\n * - `href`: An optional URL that the heading links to.\n */\nconst HeadingSchema = z.object({\n\ttext: z.string(),\n\thref: z.string().url().optional(),\n});\n\n/**\n * Base “properties” common to most page slices.\n * - `heading`: An optional heading object for slices that can display a title.\n */\nconst BasePageItemProps = z.object({\n\theading: HeadingSchema.optional(),\n});\n\n/**\n * Extended properties for any “graphics”-type slice.\n * In addition to base properties, these slices must specify how the graphic is displayed.\n * - `displayBehaviour`: Determines if the graphic stands alone or is associated with other content.\n */\nconst BaseGraphicsItemProps = BasePageItemProps.extend({\n\tdisplayBehaviour: z.enum([\"standalone\", \"associated\"]),\n});\n\n/**\n * A schema to validate that a string is valid JSON.\n */\nconst ValidJSONStringSchema = z.string().refine(\n\t(val) => {\n\t\ttry {\n\t\t\tJSON.parse(val);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n\t{ message: \"Invalid JSON string\" },\n);\n\n//\n// 2) GENERIC HELPER TO DEFINE “SLICE” INPUT/OUTPUT SCHEMAS\n//\n\n/**\n * A union type to represent either a Zod object schema or an optional Zod object schema.\n */\ntype OptionalOrRequiredZodObject = z.AnyZodObject | z.ZodOptional<z.AnyZodObject>;\n\n/**\n * Helper function that, given:\n * - `typeName`: A string literal identifying the slice type.\n * - `propsShape`: A Zod schema describing the slice’s `properties`.\n *\n * Returns an object containing two schemas:\n * - `InputSchema`: For client-side input; `sliceId` is optional.\n * - `OutputSchema`: For server-side/output; `sliceId` is required.\n *\n * This is useful because when defining slices we often want to allow -\n * clients to submit slices without an ID (e.g., when creating new slices),\n */\nfunction defineSliceSchema<T extends string, P extends OptionalOrRequiredZodObject>(options: {\n\ttypeName: T;\n\tpropsShape: P;\n}) {\n\tconst { typeName, propsShape } = options;\n\n\t// Base schema shared by both input and output:\n\t// - `type`: Literal string identifying which slice this is.\n\t// - `hidden`: Optional flag to mark the slice as hidden.\n\t// - `properties`: The detailed properties shape for the slice.\n\tconst BaseSchema = z.object({\n\t\ttype: z.literal(typeName),\n\t\thidden: z.boolean().optional(),\n\t\tproperties: propsShape,\n\t});\n\n\t/**\n\t * Input schema: For client submissions.\n\t * - `sliceId` is optional because the client might not specify it yet.\n\t */\n\tconst InputSchema = BaseSchema.extend({\n\t\tsliceId: z.string().uuid().optional(),\n\t});\n\n\t/**\n\t * Output schema: For persisted or server-returned data.\n\t * - `sliceId` is required (each saved slice must have an ID).\n\t */\n\tconst OutputSchema = BaseSchema.extend({\n\t\tsliceId: z.string().uuid(),\n\t});\n\n\treturn { InputSchema, OutputSchema };\n}\n\n//\n// 3) DEFINE INDIVIDUAL SLICE TYPES (INPUT & OUTPUT) USING THE HELPER\n//\n\n// 3.A “HomepageSlice”\n// - A generic homepage slice that may include an optional heading.\n// - Input: Clients can pass `properties` or omit entirely.\n// - Output: Always includes a `properties` object (may be empty) and a required `sliceId`.\nconst HomepageSlice = defineSliceSchema({\n\ttypeName: \"HomepageSlice\",\n\tpropsShape: BasePageItemProps.optional(),\n});\n\n// 3.B “FlourishGraphicSlice”\n// - A slice to embed or reference a Flourish graphic by its ID.\n// - Extends graphic base properties with `flourishId`.\nconst FlourishGraphicSlice = defineSliceSchema({\n\ttypeName: \"FlourishGraphic\",\n\tpropsShape: BaseGraphicsItemProps.extend({\n\t\tflourishDescription: z.string().optional(), // Optional description for the Flourish graphic\n\t\tflourishId: z.string().nonempty(),\n\t}),\n});\n\n// 3.C “CustomIframeSlice”\n// - A slice that renders a custom iframe.\n// - Extends graphic base properties with `iframeSrc`.\nconst CustomIframeSlice = defineSliceSchema({\n\ttypeName: \"CustomIframe\",\n\tpropsShape: BaseGraphicsItemProps.extend({\n\t\tiframeSrc: z.string().url().nonempty(),\n\t}),\n});\n\n// 3.D “ExperimentSlice”\n// - A slice for embedding experimental content.\n// - Requires an `experimentId`, `experimentName`, and a JSON string (`contentJson`).\nconst ExperimentSlice = defineSliceSchema({\n\ttypeName: \"Experiment\",\n\tpropsShape: BasePageItemProps.extend({\n\t\texperimentId: z.string().nonempty(), // Unique ID for the experiment\n\t\texperimentName: z.string().nonempty(), // Human-readable name of the experiment\n\t\tcontentJson: ValidJSONStringSchema, // The experiment’s JSON payload as a valid JSON string\n\t}),\n});\n\n// 3.E \"Strip\"\n// - A slice that displays a strip of content.\nconst StripSlice = defineSliceSchema({\n\ttypeName: \"Strip\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tlistId: z.string().uuid(), // The ID of the strip to display\n\t\tmaxStories: z.number().int().min(1), // Maximum number of stories to display in the strip\n\t}),\n});\n\n// 3.F \"TopperSlice\"\n// - A slice that displays a topper section with description and optional strapline.\nconst TopperSlice = defineSliceSchema({\n\ttypeName: \"Topper\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tdescription: ProseMirrorDocSchema,\n\t\tstrapline: z.string().optional(),\n\t}),\n});\n\n// 3.F \"Hero\"\n// - A slice that represents a Hero on the page. It references a Spark List.\nconst HeroSlice = defineSliceSchema({\n\ttypeName: \"Hero\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tlistId: z.string().uuid(), // The ID of the spark list to display\n\t\tmaxStories: z.number().int().min(1), // Maximum number of stories to display in the strip\n\t}),\n});\n\n//\n// 4) COMPOSE DISCRIMINATED UNIONS FOR “SLICE API” INPUT & OUTPUT\n//\n\n/**\n * All possible slice inputs for the Page API.\n * This discriminated union allows Zod to pick the correct schema based on the `type` field.\n */\nexport const SliceApiInputSchema = z.discriminatedUnion(\"type\", [\n\tHomepageSlice.InputSchema,\n\tFlourishGraphicSlice.InputSchema,\n\tCustomIframeSlice.InputSchema,\n\tExperimentSlice.InputSchema,\n\tStripSlice.InputSchema,\n\tTopperSlice.InputSchema,\n\tHeroSlice.InputSchema,\n] as const);\n\n/**\n * All possible slice outputs for the Page API.\n * The same discriminated union but with each slice requiring `sliceId`.\n */\nexport const SliceApiOutputSchema = z.discriminatedUnion(\"type\", [\n\tHomepageSlice.OutputSchema,\n\tFlourishGraphicSlice.OutputSchema,\n\tCustomIframeSlice.OutputSchema,\n\tExperimentSlice.OutputSchema,\n\tStripSlice.OutputSchema,\n\tTopperSlice.OutputSchema,\n\tHeroSlice.OutputSchema,\n] as const);\n\n//\n// 5) WRAPPER SCHEMAS FOR THE ENTIRE PAGE STRUCTURE\n//\n\nconst BasePagePropertiesSchema = z.object({\n\ttitle: z.string(),\n\tpageId: z.string().uuid(),\n\tconceptId: z.string().optional(),\n\tmetaDescription: z.string().optional(),\n\tpageTheme: z.string().optional(),\n\tsponsorText: z.string().optional(),\n\tsponsorImage: z.string().url().optional(),\n});\n\n/**\n * Page structure as submitted by clients.\n * - `properties`: Metadata about the page\n * - `children`: Array of slice inputs (each with an optional `sliceId`).\n */\nexport const PageStructureInputSchema = z.object({\n\tproperties: BasePagePropertiesSchema,\n\tchildren: z.array(SliceApiInputSchema),\n});\n\n/**\n * Page structure as submitted by clients.\n * - `properties`: Metadata about the page (title, list ID, page ID).\n * - `children`: Array of slice inputs (each with an optional `sliceId`).\n */\nexport const HomepageStructureInputSchema = PageStructureInputSchema.extend({\n\tproperties: BasePagePropertiesSchema.extend({\n\t\t// This is optional for the input. If clients don't send it, we generate a uuid.\n\t\thomepageListId: z.string().uuid(),\n\t}),\n});\n\n/**\n * Page structure as stored or returned by the server.\n */\nexport const PageStructureOutputSchema = z.object({\n\ttype: z.literal(\"Page\"),\n\tschemaVersion: z.number(),\n\tproperties: BasePagePropertiesSchema,\n\tchildren: z.array(SliceApiOutputSchema),\n});\n\nexport const HomepageStructureOutputSchema = PageStructureOutputSchema.extend({\n\ttype: z.literal(\"Homepage\"),\n\tproperties: BasePagePropertiesSchema.extend({\n\t\thomepageListId: z.string().uuid(),\n\t}),\n});\n\n//\n// 6) EXPORT TYPES FOR CONSUMPTION IN CODE\n//\n\n/** Client-side type for page structure input */\nexport type PageStructureInput = z.infer<typeof PageStructureInputSchema>;\n\n/** Server-side type for page structure output */\nexport type PageStructureOutput = z.infer<typeof PageStructureOutputSchema>;\n\n/** Client-side type for homepage structure input */\nexport type HomepageStructureInput = z.infer<typeof HomepageStructureInputSchema>;\n\n/** Server-side type for homepage structure output */\nexport type HomepageStructureOutput = z.infer<typeof HomepageStructureOutputSchema>;\n\n/** Union of all possible slice outputs for type-checking convenience */\nexport type Slice = z.infer<typeof SliceApiOutputSchema>;\n\n/** Individual slice output types */\nexport type HomepageSliceType = z.infer<typeof HomepageSlice.OutputSchema>;\nexport type FlourishGraphicSliceType = z.infer<typeof FlourishGraphicSlice.OutputSchema>;\nexport type CustomIframeSliceType = z.infer<typeof CustomIframeSlice.OutputSchema>;\nexport type ExperimentSliceType = z.infer<typeof ExperimentSlice.OutputSchema>;\nexport type StripSliceType = z.infer<typeof StripSlice.OutputSchema>;\nexport type TopperSliceType = z.infer<typeof TopperSlice.OutputSchema>;\nexport type HeroSliceType = z.infer<typeof HeroSlice.OutputSchema>;\n\n/**\n * Union type for interactive slices (i.e., the ones rendering visual components).\n * Useful for code that cares specifically about slices with visual/interactive content.\n */\nexport type InteractiveSlice = FlourishGraphicSliceType | CustomIframeSliceType;\n","import { z } from \"zod\";\n\n/** Accept http(s) and mailto: (matches your editor config) */\nconst HrefSchema = z.string().refine((v) => /^(https?:\\/\\/|mailto:).+/.test(v), {\n\tmessage: \"Expected http(s):// or mailto: URL\",\n});\n\n/** Link mark. */\nconst ProseMirrorLinkMark = z.object({\n\ttype: z.literal(\"link\"),\n\tattrs: z.object({\n\t\thref: HrefSchema,\n\t}),\n});\n\n/** Supported text marks */\nconst ProseMirrorMark = z.discriminatedUnion(\"type\", [\n\tProseMirrorLinkMark,\n\tz.object({ type: z.literal(\"bold\") }),\n\tz.object({ type: z.literal(\"italic\") }),\n\tz.object({ type: z.literal(\"underline\") }),\n\tz.object({ type: z.literal(\"strike\") }),\n]);\n\n/** Text node */\nconst ProseMirrorTextNode = z.object({\n\ttype: z.literal(\"text\"),\n\ttext: z.string(),\n\tmarks: z.array(ProseMirrorMark).optional(),\n});\n\n/** Paragraph node — content can be empty/omitted */\nconst ProseMirrorParagraphNode = z.object({\n\ttype: z.literal(\"paragraph\"),\n\tcontent: z.array(ProseMirrorTextNode),\n});\n\n/** ProseMirror Node Union. */\nconst ProseMirrorNode = z.union([ProseMirrorParagraphNode, ProseMirrorTextNode]);\n\n/** Root node of a ProseMirror document - enforcing at least 1 paragraph */\nexport const ProseMirrorDocSchema = z.object({\n\ttype: z.literal(\"doc\"),\n\tcontent: z\n\t\t.array(ProseMirrorNode)\n\t\t.min(1, { message: \"Document must contain at least one paragraph\" }),\n});\n\n/** Rich text editor TS type. */\nexport type RichTextEditorType = z.infer<typeof ProseMirrorDocSchema>;\n\nexport {};\n","import { BaseApiClient } from \"./base\";\nimport {\n\tHomepageStructureInputSchema,\n\tHomepageStructureOutputSchema,\n\ttype HomepageStructureInput,\n\ttype HomepageStructureOutput,\n} from \"./schemas/ftpink/page\";\n\n/**\n * Client for Homepage structure endpoints\n */\nexport class HomepageClient extends BaseApiClient {\n\tasync getStructure(pageId: string): Promise<HomepageStructureOutput> {\n\t\treturn this.get(`/v1/homepage/${pageId}/structure`, HomepageStructureOutputSchema);\n\t}\n\n\tasync getStructuresByHomepageListId(homepageListId: string): Promise<HomepageStructureOutput[]> {\n\t\treturn this.get(\n\t\t\t`/v1/homepage/list/${homepageListId}/structures`,\n\t\t\tHomepageStructureOutputSchema.array(),\n\t\t);\n\t}\n\n\tasync upsertStructure(\n\t\tpageId: string,\n\t\tdata: Omit<HomepageStructureInput, \"type\">,\n\t): Promise<HomepageStructureOutput> {\n\t\treturn this.put(\n\t\t\t`/v1/homepage/${pageId}/structure`,\n\t\t\tdata,\n\t\t\tHomepageStructureInputSchema,\n\t\t\tHomepageStructureOutputSchema,\n\t\t);\n\t}\n}\n","import { z } from \"zod\";\n\n/**\n * -----------------------------------------\n * Legacy API Schemas & Types\n *\n * These schemas map to expected types for Hub Pages rendered by dotcom-pages.\n * -----------------------------------------\n */\n\nconst LegacyFlourishChildSchema = z.object({\n\tsource: z.literal(\"flourish\"),\n\tproperties: z.object({\n\t\tid: z.string().min(1), // e.g. \"visualisation/21901162\"\n\t}),\n});\n\nconst LegacyListChildSchema = z.object({\n\tsource: z.literal(\"list\"),\n\tproperties: z.object({\n\t\tid: z.string().uuid(),\n\t\tmaxItems: z.number().optional(),\n\t}),\n});\n\nconst LegacyContainerChildSchema = z.discriminatedUnion(\"source\", [\n\tLegacyFlourishChildSchema,\n\tLegacyListChildSchema,\n]);\n\nconst LegacyTopperSchema = z.object({\n\ttype: z.literal(\"topper-basic\"),\n\tproperties: z.object({\n\t\ttitle: z.string(),\n\t\tsponsorText: z.string().optional(),\n\t\tsponsorImage: z.string().url().optional(),\n\t}),\n});\n\nconst LegacyInfoBoxSchema = z.object({\n\ttype: z.literal(\"info-box\"),\n\tproperties: z.object({\n\t\tbodyHTML: z.string(),\n\t}),\n});\n\nconst LegacyContainerSchema = z.object({\n\ttype: z.literal(\"container\"),\n\tchildren: z.array(LegacyContainerChildSchema).min(1),\n\tproperties: z.object({\n\t\ttitle: z.string().optional(),\n\t\tdesign: z.enum([\"chart\", \"four-story\", \"freeform\", \"hero-lead\"]).default(\"freeform\"),\n\t\tbackgroundColor: z.string().optional(),\n\t}),\n});\n\nconst LegacyExperimentSchema = z.object({\n\ttype: z.literal(\"experiment\"),\n\tchildren: z.tuple([]),\n\tproperties: z.object({\n\t\texperimentName: z.string(),\n\t\tid: z.string(),\n\t\ttitle: z.string().optional(),\n\t\tconfig: z\n\t\t\t.object({\n\t\t\t\tvalue: z.unknown().optional(),\n\t\t\t\t// Hub pages support experiments with HTML and Text.\n\t\t\t\t// For now we just support JSON. As we migrate pages, this may change.\n\t\t\t\tformat: z.enum([\"json\"]).default(\"json\"),\n\t\t\t})\n\t\t\t.partial()\n\t\t\t.optional(),\n\t}),\n});\n\nconst LegacyBlockSchema = z.discriminatedUnion(\"type\", [\n\tLegacyTopperSchema,\n\tLegacyInfoBoxSchema,\n\tLegacyContainerSchema,\n\tLegacyExperimentSchema,\n]);\n\nexport const LegacyPageStructureOutputSchema = z.object({\n\tuuid: z.string().uuid(),\n\tconceptId: z.string().uuid().optional(),\n\tthemeName: z.string().optional(),\n\tmetaDescription: z.string().optional(),\n\tblocks: z.array(LegacyBlockSchema),\n});\n\nexport type LegacyPageStructureOutput = z.infer<typeof LegacyPageStructureOutputSchema>;\nexport type LegacyBlock = z.infer<typeof LegacyBlockSchema>;\n","import { BaseApiClient } from \"./base\";\nimport type { LegacyPageStructureOutput } from \"./schemas/ftpink/legacyHubPage\";\nimport { LegacyPageStructureOutputSchema } from \"./schemas/ftpink/legacyHubPage\";\nimport {\n\tPageStructureInputSchema,\n\tPageStructureOutputSchema,\n\ttype PageStructureInput,\n\ttype PageStructureOutput,\n} from \"./schemas/ftpink/page\";\n\n/**\n * Client for Page structure endpoints\n */\nexport class PageClient extends BaseApiClient {\n\tasync getStructure(pageId: string): Promise<PageStructureOutput> {\n\t\treturn this.get(`/v1/page/${pageId}/structure`, PageStructureOutputSchema);\n\t}\n\n\tasync getLegacyHubPageStructure(pageId: string): Promise<LegacyPageStructureOutput> {\n\t\treturn this.get(`/v1/page/${pageId}/legacyHubPageStructure`, LegacyPageStructureOutputSchema);\n\t}\n\n\tasync upsertStructure(\n\t\tpageId: string,\n\t\tdata: Omit<PageStructureInput, \"type\">,\n\t): Promise<PageStructureOutput> {\n\t\treturn this.put(\n\t\t\t`/v1/page/${pageId}/structure`,\n\t\t\tdata,\n\t\t\tPageStructureInputSchema,\n\t\t\tPageStructureOutputSchema,\n\t\t);\n\t}\n}\n","import type { ApiClientConfig } from \"./base\";\nimport { BaseApiClient } from \"./base\";\nimport { HomepageClient } from \"./homepage\";\nimport { PageClient } from \"./page\";\n\n/**\n * Main API client that provides access to all API endpoints\n */\nexport class ApiClient extends BaseApiClient {\n\t/**\n\t * Homepage API endpoints\n\t */\n\thomepage: HomepageClient;\n\tpage: PageClient;\n\n\tconstructor(config: ApiClientConfig) {\n\t\tsuper(config);\n\n\t\t// Initialize sub-clients\n\t\tthis.homepage = new HomepageClient(config);\n\t\tthis.page = new PageClient(config);\n\t}\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -255,7 +255,12 @@ var SliceApiOutputSchema = z3.discriminatedUnion("type", [
|
|
|
255
255
|
]);
|
|
256
256
|
var BasePagePropertiesSchema = z3.object({
|
|
257
257
|
title: z3.string(),
|
|
258
|
-
pageId: z3.string().uuid()
|
|
258
|
+
pageId: z3.string().uuid(),
|
|
259
|
+
conceptId: z3.string().optional(),
|
|
260
|
+
metaDescription: z3.string().optional(),
|
|
261
|
+
pageTheme: z3.string().optional(),
|
|
262
|
+
sponsorText: z3.string().optional(),
|
|
263
|
+
sponsorImage: z3.string().url().optional()
|
|
259
264
|
});
|
|
260
265
|
var PageStructureInputSchema = z3.object({
|
|
261
266
|
properties: BasePagePropertiesSchema,
|
|
@@ -323,15 +328,14 @@ var LegacyContainerChildSchema = z4.discriminatedUnion("source", [
|
|
|
323
328
|
]);
|
|
324
329
|
var LegacyTopperSchema = z4.object({
|
|
325
330
|
type: z4.literal("topper-basic"),
|
|
326
|
-
children: z4.tuple([]),
|
|
327
331
|
properties: z4.object({
|
|
328
332
|
title: z4.string(),
|
|
329
|
-
sponsorText: z4.string().
|
|
333
|
+
sponsorText: z4.string().optional(),
|
|
334
|
+
sponsorImage: z4.string().url().optional()
|
|
330
335
|
})
|
|
331
336
|
});
|
|
332
337
|
var LegacyInfoBoxSchema = z4.object({
|
|
333
338
|
type: z4.literal("info-box"),
|
|
334
|
-
children: z4.tuple([]),
|
|
335
339
|
properties: z4.object({
|
|
336
340
|
bodyHTML: z4.string()
|
|
337
341
|
})
|
|
@@ -367,10 +371,11 @@ var LegacyBlockSchema = z4.discriminatedUnion("type", [
|
|
|
367
371
|
LegacyExperimentSchema
|
|
368
372
|
]);
|
|
369
373
|
var LegacyPageStructureOutputSchema = z4.object({
|
|
370
|
-
|
|
374
|
+
uuid: z4.string().uuid(),
|
|
371
375
|
conceptId: z4.string().uuid().optional(),
|
|
372
376
|
themeName: z4.string().optional(),
|
|
373
|
-
|
|
377
|
+
metaDescription: z4.string().optional(),
|
|
378
|
+
blocks: z4.array(LegacyBlockSchema)
|
|
374
379
|
});
|
|
375
380
|
|
|
376
381
|
// src/page.ts
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/response.ts","../src/base.ts","../src/schemas/ftpink/page/index.ts","../src/schemas/prosemirror.ts","../src/homepage.ts","../src/schemas/ftpink/legacyHubPage/index.ts","../src/page.ts","../src/client.ts"],"sourcesContent":["import { z, type ZodTypeAny } from \"zod\";\n\n/**\n * Strongly‐typed enum for all possible API error codes.\n */\nexport const ApiErrorCode = z.enum([\n\t\"UNAUTHORIZED\",\n\t\"NOT_FOUND\",\n\t\"INTERNAL_SERVER_ERROR\",\n\t\"INVALID_INPUT_DATA\",\n]);\n\n/**\n * Fields shared by both success and error envelopes (but not the discriminant).\n */\nconst BaseEnvelopeFields = z.object({\n\tstatusCode: z.number(),\n\trequestId: z.string(),\n});\n\n/**\n * Specific details carried in an error payload.\n */\nexport const ApiErrorPayloadSchema = z\n\t.object({\n\t\tcode: ApiErrorCode,\n\t\tmessage: z.string(),\n\t\tdetails: z.string().optional(),\n\t\tpath: z.string().optional(),\n\t\ttimestamp: z.string().optional(),\n\t})\n\t.strict();\n\nexport type ApiErrorPayload = z.infer<typeof ApiErrorPayloadSchema>;\n\n/**\n * Full “envelope” when the API has failed.\n */\nexport const ApiErrorResponseSchema = BaseEnvelopeFields.extend({\n\tstatus: z.literal(\"error\"),\n\terror: ApiErrorPayloadSchema,\n}).strict();\n\nexport type ApiErrorResponse = z.infer<typeof ApiErrorResponseSchema>;\n\n/**\n * Schema for a successful API response, given some data schema T.\n */\nexport function ApiSuccessResponseSchema<T extends ZodTypeAny>(dataSchema: T) {\n\treturn BaseEnvelopeFields.extend({\n\t\tstatus: z.literal(\"success\"),\n\t\tdata: dataSchema,\n\t}).strict();\n}\n\n/**\n * Union of success or error envelopes, discriminated on `status`.\n */\nexport function ApiResponseSchema<T extends ZodTypeAny>(dataSchema: T) {\n\tconst successSchema = ApiSuccessResponseSchema(dataSchema);\n\tconst errorSchema = ApiErrorResponseSchema;\n\treturn z.discriminatedUnion(\"status\", [successSchema, errorSchema]);\n}\n","import type { z, ZodTypeAny } from \"zod\";\nimport type { ApiErrorPayloadSchema } from \"./schemas/response\";\nimport { ApiResponseSchema } from \"./schemas/response\";\n\n/**\n * API-level error thrown when { status: 'error' } is returned\n */\nexport class ApiClientError extends Error {\n\tpublic code: string;\n\tpublic details?: string;\n\tpublic path?: string;\n\tpublic timestamp?: string;\n\n\tconstructor(\n\t\tpublic payload: z.infer<typeof ApiErrorPayloadSchema>,\n\t\tpublic statusCode: number,\n\t\tpublic requestId?: string,\n\t) {\n\t\tsuper(payload.message);\n\t\tthis.name = \"ApiError\";\n\t\tthis.code = payload.code;\n\t\tthis.details = payload.details;\n\t\tthis.path = payload.path;\n\t\tthis.timestamp = payload.timestamp;\n\t}\n}\n\n/**\n * Configuration options for the API client\n */\nexport type ApiClientConfig =\n\t| {\n\t\t\t// Standard configuration.\n\t\t\t// Intended for external clients using an API key issued via API Gateway.\n\t\t\tbaseUrl: string;\n\t\t\tapiKey: string;\n\t\t\tapiToken?: never;\n\t\t\tfetch?: typeof fetch;\n\t }\n\t| {\n\t\t\t// Alternative configuration.\n\t\t\t// Reserved for client with access to a bearer token (e.g. The e2e tests).\n\t\t\tbaseUrl: string;\n\t\t\tapiKey?: never;\n\t\t\tapiToken: string;\n\t\t\tfetch?: typeof fetch;\n\t };\n\nexport class BaseApiClient {\n\tprotected config: ApiClientConfig;\n\n\tconstructor(config: ApiClientConfig) {\n\t\tthis.config = {\n\t\t\t...config,\n\t\t\tfetch: config.fetch || fetch,\n\t\t};\n\t\tthis.config.baseUrl = this.config.baseUrl.replace(/\\/+$/, \"\"); // strip trailing slashes\n\t}\n\n\t/**\n\t * Generic HTTP request to a JSON API\n\t */\n\tprotected async request<\n\t\tReqSchema extends ZodTypeAny | undefined,\n\t\tResponseDataSchema extends ZodTypeAny,\n\t>(\n\t\tmethod: \"GET\" | \"PUT\" | \"POST\" | \"DELETE\",\n\t\tpath: string,\n\t\topts: {\n\t\t\trequestSchema?: ReqSchema;\n\t\t\tbody?: ReqSchema extends ZodTypeAny ? z.infer<ReqSchema> : unknown;\n\t\t\tresponseDataSchema: ResponseDataSchema;\n\t\t},\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\t// Validate request body if provided\n\t\tlet bodyPayload = opts.body;\n\t\tif (opts.requestSchema && opts.body !== undefined) {\n\t\t\tbodyPayload = opts.requestSchema.parse(opts.body);\n\t\t}\n\n\t\t// Build URL + query string\n\t\tconst url = new URL(this.config.baseUrl + path);\n\n\t\t// Perform fetch\n\t\tconst response = await this.config.fetch!(url.toString(), {\n\t\t\tmethod,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t...(this.config.apiKey\n\t\t\t\t\t? { \"x-api-key\": this.config.apiKey }\n\t\t\t\t\t: { Authorization: `Bearer ${this.config.apiToken}` }),\n\t\t\t},\n\t\t\tbody: bodyPayload ? JSON.stringify(bodyPayload) : undefined,\n\t\t});\n\n\t\tconst json = await response.json();\n\t\tconst parsedJson = ApiResponseSchema(opts.responseDataSchema).parse(json);\n\n\t\tif (\"error\" in parsedJson) {\n\t\t\tthrow new ApiClientError(parsedJson.error, parsedJson.statusCode, parsedJson.requestId);\n\t\t} else if (!(\"data\" in parsedJson)) {\n\t\t\tthrow new ApiClientError(\n\t\t\t\t{\n\t\t\t\t\tcode: \"INTERNAL_SERVER_ERROR\",\n\t\t\t\t\tmessage: \"Unexpected API response format\",\n\t\t\t\t\tdetails: 'Response did not contain expected \"data\" field',\n\t\t\t\t},\n\t\t\t\t500,\n\t\t\t\tparsedJson.requestId,\n\t\t\t);\n\t\t}\n\n\t\treturn parsedJson.data;\n\t}\n\n\t/**\n\t * GET convenience method inferring response type from schema\n\t */\n\tprotected get<ResponseDataSchema extends ZodTypeAny>(\n\t\tpath: string,\n\t\tresponseDataSchema: ResponseDataSchema,\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\treturn this.request(\"GET\", path, { responseDataSchema });\n\t}\n\n\t/**\n\t * PUT convenience method inferring both request and response types\n\t */\n\tprotected put<ReqSchema extends ZodTypeAny, ResponseDataSchema extends ZodTypeAny>(\n\t\tpath: string,\n\t\tbody: z.infer<ReqSchema>,\n\t\trequestSchema: ReqSchema,\n\t\tresponseDataSchema: ResponseDataSchema,\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\treturn this.request(\"PUT\", path, { body, requestSchema, responseDataSchema });\n\t}\n}\n","import { z } from \"zod\";\nimport { ProseMirrorDocSchema } from \"../../prosemirror\";\n\n//\n// 1) REUSABLE SCHEMAS FOR COMMON STRUCTURES\n//\n\n/**\n * A generic schema representing a heading used across various slices.\n * - `text`: The display text of the heading.\n * - `href`: An optional URL that the heading links to.\n */\nconst HeadingSchema = z.object({\n\ttext: z.string(),\n\thref: z.string().url().optional(),\n});\n\n/**\n * Base “properties” common to most page slices.\n * - `heading`: An optional heading object for slices that can display a title.\n */\nconst BasePageItemProps = z.object({\n\theading: HeadingSchema.optional(),\n});\n\n/**\n * Extended properties for any “graphics”-type slice.\n * In addition to base properties, these slices must specify how the graphic is displayed.\n * - `displayBehaviour`: Determines if the graphic stands alone or is associated with other content.\n */\nconst BaseGraphicsItemProps = BasePageItemProps.extend({\n\tdisplayBehaviour: z.enum([\"standalone\", \"associated\"]),\n});\n\n/**\n * A schema to validate that a string is valid JSON.\n */\nconst ValidJSONStringSchema = z.string().refine(\n\t(val) => {\n\t\ttry {\n\t\t\tJSON.parse(val);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n\t{ message: \"Invalid JSON string\" },\n);\n\n//\n// 2) GENERIC HELPER TO DEFINE “SLICE” INPUT/OUTPUT SCHEMAS\n//\n\n/**\n * A union type to represent either a Zod object schema or an optional Zod object schema.\n */\ntype OptionalOrRequiredZodObject = z.AnyZodObject | z.ZodOptional<z.AnyZodObject>;\n\n/**\n * Helper function that, given:\n * - `typeName`: A string literal identifying the slice type.\n * - `propsShape`: A Zod schema describing the slice’s `properties`.\n *\n * Returns an object containing two schemas:\n * - `InputSchema`: For client-side input; `sliceId` is optional.\n * - `OutputSchema`: For server-side/output; `sliceId` is required.\n *\n * This is useful because when defining slices we often want to allow -\n * clients to submit slices without an ID (e.g., when creating new slices),\n */\nfunction defineSliceSchema<T extends string, P extends OptionalOrRequiredZodObject>(options: {\n\ttypeName: T;\n\tpropsShape: P;\n}) {\n\tconst { typeName, propsShape } = options;\n\n\t// Base schema shared by both input and output:\n\t// - `type`: Literal string identifying which slice this is.\n\t// - `hidden`: Optional flag to mark the slice as hidden.\n\t// - `properties`: The detailed properties shape for the slice.\n\tconst BaseSchema = z.object({\n\t\ttype: z.literal(typeName),\n\t\thidden: z.boolean().optional(),\n\t\tproperties: propsShape,\n\t});\n\n\t/**\n\t * Input schema: For client submissions.\n\t * - `sliceId` is optional because the client might not specify it yet.\n\t */\n\tconst InputSchema = BaseSchema.extend({\n\t\tsliceId: z.string().uuid().optional(),\n\t});\n\n\t/**\n\t * Output schema: For persisted or server-returned data.\n\t * - `sliceId` is required (each saved slice must have an ID).\n\t */\n\tconst OutputSchema = BaseSchema.extend({\n\t\tsliceId: z.string().uuid(),\n\t});\n\n\treturn { InputSchema, OutputSchema };\n}\n\n//\n// 3) DEFINE INDIVIDUAL SLICE TYPES (INPUT & OUTPUT) USING THE HELPER\n//\n\n// 3.A “HomepageSlice”\n// - A generic homepage slice that may include an optional heading.\n// - Input: Clients can pass `properties` or omit entirely.\n// - Output: Always includes a `properties` object (may be empty) and a required `sliceId`.\nconst HomepageSlice = defineSliceSchema({\n\ttypeName: \"HomepageSlice\",\n\tpropsShape: BasePageItemProps.optional(),\n});\n\n// 3.B “FlourishGraphicSlice”\n// - A slice to embed or reference a Flourish graphic by its ID.\n// - Extends graphic base properties with `flourishId`.\nconst FlourishGraphicSlice = defineSliceSchema({\n\ttypeName: \"FlourishGraphic\",\n\tpropsShape: BaseGraphicsItemProps.extend({\n\t\tflourishDescription: z.string().optional(), // Optional description for the Flourish graphic\n\t\tflourishId: z.string().nonempty(),\n\t}),\n});\n\n// 3.C “CustomIframeSlice”\n// - A slice that renders a custom iframe.\n// - Extends graphic base properties with `iframeSrc`.\nconst CustomIframeSlice = defineSliceSchema({\n\ttypeName: \"CustomIframe\",\n\tpropsShape: BaseGraphicsItemProps.extend({\n\t\tiframeSrc: z.string().url().nonempty(),\n\t}),\n});\n\n// 3.D “ExperimentSlice”\n// - A slice for embedding experimental content.\n// - Requires an `experimentId`, `experimentName`, and a JSON string (`contentJson`).\nconst ExperimentSlice = defineSliceSchema({\n\ttypeName: \"Experiment\",\n\tpropsShape: BasePageItemProps.extend({\n\t\texperimentId: z.string().nonempty(), // Unique ID for the experiment\n\t\texperimentName: z.string().nonempty(), // Human-readable name of the experiment\n\t\tcontentJson: ValidJSONStringSchema, // The experiment’s JSON payload as a valid JSON string\n\t}),\n});\n\n// 3.E \"Strip\"\n// - A slice that displays a strip of content.\nconst StripSlice = defineSliceSchema({\n\ttypeName: \"Strip\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tlistId: z.string().uuid(), // The ID of the strip to display\n\t\tmaxStories: z.number().int().min(1), // Maximum number of stories to display in the strip\n\t}),\n});\n\n// 3.F \"TopperSlice\"\n// - A slice that displays a topper section with description and optional strapline.\nconst TopperSlice = defineSliceSchema({\n\ttypeName: \"Topper\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tdescription: ProseMirrorDocSchema,\n\t\tstrapline: z.string().optional(),\n\t}),\n});\n\n// 3.F \"Hero\"\n// - A slice that represents a Hero on the page. It references a Spark List.\nconst HeroSlice = defineSliceSchema({\n\ttypeName: \"Hero\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tlistId: z.string().uuid(), // The ID of the spark list to display\n\t\tmaxStories: z.number().int().min(1), // Maximum number of stories to display in the strip\n\t}),\n});\n\n//\n// 4) COMPOSE DISCRIMINATED UNIONS FOR “SLICE API” INPUT & OUTPUT\n//\n\n/**\n * All possible slice inputs for the Page API.\n * This discriminated union allows Zod to pick the correct schema based on the `type` field.\n */\nexport const SliceApiInputSchema = z.discriminatedUnion(\"type\", [\n\tHomepageSlice.InputSchema,\n\tFlourishGraphicSlice.InputSchema,\n\tCustomIframeSlice.InputSchema,\n\tExperimentSlice.InputSchema,\n\tStripSlice.InputSchema,\n\tTopperSlice.InputSchema,\n\tHeroSlice.InputSchema,\n] as const);\n\n/**\n * All possible slice outputs for the Page API.\n * The same discriminated union but with each slice requiring `sliceId`.\n */\nexport const SliceApiOutputSchema = z.discriminatedUnion(\"type\", [\n\tHomepageSlice.OutputSchema,\n\tFlourishGraphicSlice.OutputSchema,\n\tCustomIframeSlice.OutputSchema,\n\tExperimentSlice.OutputSchema,\n\tStripSlice.OutputSchema,\n\tTopperSlice.OutputSchema,\n\tHeroSlice.OutputSchema,\n] as const);\n\n//\n// 5) WRAPPER SCHEMAS FOR THE ENTIRE PAGE STRUCTURE\n//\n\nconst BasePagePropertiesSchema = z.object({\n\ttitle: z.string(),\n\tpageId: z.string().uuid(),\n});\n\n/**\n * Page structure as submitted by clients.\n * - `properties`: Metadata about the page\n * - `children`: Array of slice inputs (each with an optional `sliceId`).\n */\nexport const PageStructureInputSchema = z.object({\n\tproperties: BasePagePropertiesSchema,\n\tchildren: z.array(SliceApiInputSchema),\n});\n\n/**\n * Page structure as submitted by clients.\n * - `properties`: Metadata about the page (title, list ID, page ID).\n * - `children`: Array of slice inputs (each with an optional `sliceId`).\n */\nexport const HomepageStructureInputSchema = PageStructureInputSchema.extend({\n\tproperties: BasePagePropertiesSchema.extend({\n\t\t// This is optional for the input. If clients don't send it, we generate a uuid.\n\t\thomepageListId: z.string().uuid(),\n\t}),\n});\n\n/**\n * Page structure as stored or returned by the server.\n */\nexport const PageStructureOutputSchema = z.object({\n\ttype: z.literal(\"Page\"),\n\tschemaVersion: z.number(),\n\tproperties: BasePagePropertiesSchema,\n\tchildren: z.array(SliceApiOutputSchema),\n});\n\nexport const HomepageStructureOutputSchema = PageStructureOutputSchema.extend({\n\ttype: z.literal(\"Homepage\"),\n\tproperties: BasePagePropertiesSchema.extend({\n\t\thomepageListId: z.string().uuid(),\n\t}),\n});\n\n//\n// 6) EXPORT TYPES FOR CONSUMPTION IN CODE\n//\n\n/** Client-side type for page structure input */\nexport type PageStructureInput = z.infer<typeof PageStructureInputSchema>;\n\n/** Server-side type for page structure output */\nexport type PageStructureOutput = z.infer<typeof PageStructureOutputSchema>;\n\n/** Client-side type for homepage structure input */\nexport type HomepageStructureInput = z.infer<typeof HomepageStructureInputSchema>;\n\n/** Server-side type for homepage structure output */\nexport type HomepageStructureOutput = z.infer<typeof HomepageStructureOutputSchema>;\n\n/** Union of all possible slice outputs for type-checking convenience */\nexport type Slice = z.infer<typeof SliceApiOutputSchema>;\n\n/** Individual slice output types */\nexport type HomepageSliceType = z.infer<typeof HomepageSlice.OutputSchema>;\nexport type FlourishGraphicSliceType = z.infer<typeof FlourishGraphicSlice.OutputSchema>;\nexport type CustomIframeSliceType = z.infer<typeof CustomIframeSlice.OutputSchema>;\nexport type ExperimentSliceType = z.infer<typeof ExperimentSlice.OutputSchema>;\nexport type StripSliceType = z.infer<typeof StripSlice.OutputSchema>;\nexport type TopperSliceType = z.infer<typeof TopperSlice.OutputSchema>;\nexport type HeroSliceType = z.infer<typeof HeroSlice.OutputSchema>;\n\n/**\n * Union type for interactive slices (i.e., the ones rendering visual components).\n * Useful for code that cares specifically about slices with visual/interactive content.\n */\nexport type InteractiveSlice = FlourishGraphicSliceType | CustomIframeSliceType;\n","import { z } from \"zod\";\n\n/** Accept http(s) and mailto: (matches your editor config) */\nconst HrefSchema = z.string().refine((v) => /^(https?:\\/\\/|mailto:).+/.test(v), {\n\tmessage: \"Expected http(s):// or mailto: URL\",\n});\n\n/** Link mark. */\nconst ProseMirrorLinkMark = z.object({\n\ttype: z.literal(\"link\"),\n\tattrs: z.object({\n\t\thref: HrefSchema,\n\t}),\n});\n\n/** Supported text marks */\nconst ProseMirrorMark = z.discriminatedUnion(\"type\", [\n\tProseMirrorLinkMark,\n\tz.object({ type: z.literal(\"bold\") }),\n\tz.object({ type: z.literal(\"italic\") }),\n\tz.object({ type: z.literal(\"underline\") }),\n\tz.object({ type: z.literal(\"strike\") }),\n]);\n\n/** Text node */\nconst ProseMirrorTextNode = z.object({\n\ttype: z.literal(\"text\"),\n\ttext: z.string(),\n\tmarks: z.array(ProseMirrorMark).optional(),\n});\n\n/** Paragraph node — content can be empty/omitted */\nconst ProseMirrorParagraphNode = z.object({\n\ttype: z.literal(\"paragraph\"),\n\tcontent: z.array(ProseMirrorTextNode),\n});\n\n/** ProseMirror Node Union. */\nconst ProseMirrorNode = z.union([ProseMirrorParagraphNode, ProseMirrorTextNode]);\n\n/** Root node of a ProseMirror document - enforcing at least 1 paragraph */\nexport const ProseMirrorDocSchema = z.object({\n\ttype: z.literal(\"doc\"),\n\tcontent: z\n\t\t.array(ProseMirrorNode)\n\t\t.min(1, { message: \"Document must contain at least one paragraph\" }),\n});\n\n/** Rich text editor TS type. */\nexport type RichTextEditorType = z.infer<typeof ProseMirrorDocSchema>;\n\nexport {};\n","import { BaseApiClient } from \"./base\";\nimport {\n\tHomepageStructureInputSchema,\n\tHomepageStructureOutputSchema,\n\ttype HomepageStructureInput,\n\ttype HomepageStructureOutput,\n} from \"./schemas/ftpink/page\";\n\n/**\n * Client for Homepage structure endpoints\n */\nexport class HomepageClient extends BaseApiClient {\n\tasync getStructure(pageId: string): Promise<HomepageStructureOutput> {\n\t\treturn this.get(`/v1/homepage/${pageId}/structure`, HomepageStructureOutputSchema);\n\t}\n\n\tasync getStructuresByHomepageListId(homepageListId: string): Promise<HomepageStructureOutput[]> {\n\t\treturn this.get(\n\t\t\t`/v1/homepage/list/${homepageListId}/structures`,\n\t\t\tHomepageStructureOutputSchema.array(),\n\t\t);\n\t}\n\n\tasync upsertStructure(\n\t\tpageId: string,\n\t\tdata: Omit<HomepageStructureInput, \"type\">,\n\t): Promise<HomepageStructureOutput> {\n\t\treturn this.put(\n\t\t\t`/v1/homepage/${pageId}/structure`,\n\t\t\tdata,\n\t\t\tHomepageStructureInputSchema,\n\t\t\tHomepageStructureOutputSchema,\n\t\t);\n\t}\n}\n","import { z } from \"zod\";\n\n/**\n * -----------------------------------------\n * Legacy API Schemas & Types\n *\n * These schemas map to expected types for Hub Pages rendered by dotcom-pages.\n * -----------------------------------------\n */\n\nconst LegacyFlourishChildSchema = z.object({\n\tsource: z.literal(\"flourish\"),\n\tproperties: z.object({\n\t\tid: z.string().min(1), // e.g. \"visualisation/21901162\"\n\t}),\n});\n\nconst LegacyListChildSchema = z.object({\n\tsource: z.literal(\"list\"),\n\tproperties: z.object({\n\t\tid: z.string().uuid(),\n\t\tmaxItems: z.number().optional(),\n\t}),\n});\n\nconst LegacyContainerChildSchema = z.discriminatedUnion(\"source\", [\n\tLegacyFlourishChildSchema,\n\tLegacyListChildSchema,\n]);\n\nconst LegacyTopperSchema = z.object({\n\ttype: z.literal(\"topper-basic\"),\n\tchildren: z.tuple([]),\n\tproperties: z.object({\n\t\ttitle: z.string(),\n\t\tsponsorText: z.string().default(\"\"),\n\t}),\n});\n\nconst LegacyInfoBoxSchema = z.object({\n\ttype: z.literal(\"info-box\"),\n\tchildren: z.tuple([]),\n\tproperties: z.object({\n\t\tbodyHTML: z.string(),\n\t}),\n});\n\nconst LegacyContainerSchema = z.object({\n\ttype: z.literal(\"container\"),\n\tchildren: z.array(LegacyContainerChildSchema).min(1),\n\tproperties: z.object({\n\t\ttitle: z.string().optional(),\n\t\tdesign: z.enum([\"chart\", \"four-story\", \"freeform\", \"hero-lead\"]).default(\"freeform\"),\n\t\tbackgroundColor: z.string().optional(),\n\t}),\n});\n\nconst LegacyExperimentSchema = z.object({\n\ttype: z.literal(\"experiment\"),\n\tchildren: z.tuple([]),\n\tproperties: z.object({\n\t\texperimentName: z.string(),\n\t\tid: z.string(),\n\t\ttitle: z.string().optional(),\n\t\tconfig: z\n\t\t\t.object({\n\t\t\t\tvalue: z.unknown().optional(),\n\t\t\t\t// Hub pages support experiments with HTML and Text.\n\t\t\t\t// For now we just support JSON. As we migrate pages, this may change.\n\t\t\t\tformat: z.enum([\"json\"]).default(\"json\"),\n\t\t\t})\n\t\t\t.partial()\n\t\t\t.optional(),\n\t}),\n});\n\nconst LegacyBlockSchema = z.discriminatedUnion(\"type\", [\n\tLegacyTopperSchema,\n\tLegacyInfoBoxSchema,\n\tLegacyContainerSchema,\n\tLegacyExperimentSchema,\n]);\n\nexport const LegacyPageStructureOutputSchema = z.object({\n\tblocks: z.array(LegacyBlockSchema),\n\tconceptId: z.string().uuid().optional(),\n\tthemeName: z.string().optional(),\n\tuuid: z.string().uuid(),\n});\n\nexport type LegacyPageStructureOutput = z.infer<typeof LegacyPageStructureOutputSchema>;\nexport type LegacyBlock = z.infer<typeof LegacyBlockSchema>;\n","import { BaseApiClient } from \"./base\";\nimport type { LegacyPageStructureOutput } from \"./schemas/ftpink/legacyHubPage\";\nimport { LegacyPageStructureOutputSchema } from \"./schemas/ftpink/legacyHubPage\";\nimport {\n\tPageStructureInputSchema,\n\tPageStructureOutputSchema,\n\ttype PageStructureInput,\n\ttype PageStructureOutput,\n} from \"./schemas/ftpink/page\";\n\n/**\n * Client for Page structure endpoints\n */\nexport class PageClient extends BaseApiClient {\n\tasync getStructure(pageId: string): Promise<PageStructureOutput> {\n\t\treturn this.get(`/v1/page/${pageId}/structure`, PageStructureOutputSchema);\n\t}\n\n\tasync getLegacyHubPageStructure(pageId: string): Promise<LegacyPageStructureOutput> {\n\t\treturn this.get(`/v1/page/${pageId}/legacyHubPageStructure`, LegacyPageStructureOutputSchema);\n\t}\n\n\tasync upsertStructure(\n\t\tpageId: string,\n\t\tdata: Omit<PageStructureInput, \"type\">,\n\t): Promise<PageStructureOutput> {\n\t\treturn this.put(\n\t\t\t`/v1/page/${pageId}/structure`,\n\t\t\tdata,\n\t\t\tPageStructureInputSchema,\n\t\t\tPageStructureOutputSchema,\n\t\t);\n\t}\n}\n","import type { ApiClientConfig } from \"./base\";\nimport { BaseApiClient } from \"./base\";\nimport { HomepageClient } from \"./homepage\";\nimport { PageClient } from \"./page\";\n\n/**\n * Main API client that provides access to all API endpoints\n */\nexport class ApiClient extends BaseApiClient {\n\t/**\n\t * Homepage API endpoints\n\t */\n\thomepage: HomepageClient;\n\tpage: PageClient;\n\n\tconstructor(config: ApiClientConfig) {\n\t\tsuper(config);\n\n\t\t// Initialize sub-clients\n\t\tthis.homepage = new HomepageClient(config);\n\t\tthis.page = new PageClient(config);\n\t}\n}\n"],"mappings":"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","names":["z","z","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/schemas/response.ts","../src/base.ts","../src/schemas/ftpink/page/index.ts","../src/schemas/prosemirror.ts","../src/homepage.ts","../src/schemas/ftpink/legacyHubPage/index.ts","../src/page.ts","../src/client.ts"],"sourcesContent":["import { z, type ZodTypeAny } from \"zod\";\n\n/**\n * Strongly‐typed enum for all possible API error codes.\n */\nexport const ApiErrorCode = z.enum([\n\t\"UNAUTHORIZED\",\n\t\"NOT_FOUND\",\n\t\"INTERNAL_SERVER_ERROR\",\n\t\"INVALID_INPUT_DATA\",\n]);\n\n/**\n * Fields shared by both success and error envelopes (but not the discriminant).\n */\nconst BaseEnvelopeFields = z.object({\n\tstatusCode: z.number(),\n\trequestId: z.string(),\n});\n\n/**\n * Specific details carried in an error payload.\n */\nexport const ApiErrorPayloadSchema = z\n\t.object({\n\t\tcode: ApiErrorCode,\n\t\tmessage: z.string(),\n\t\tdetails: z.string().optional(),\n\t\tpath: z.string().optional(),\n\t\ttimestamp: z.string().optional(),\n\t})\n\t.strict();\n\nexport type ApiErrorPayload = z.infer<typeof ApiErrorPayloadSchema>;\n\n/**\n * Full “envelope” when the API has failed.\n */\nexport const ApiErrorResponseSchema = BaseEnvelopeFields.extend({\n\tstatus: z.literal(\"error\"),\n\terror: ApiErrorPayloadSchema,\n}).strict();\n\nexport type ApiErrorResponse = z.infer<typeof ApiErrorResponseSchema>;\n\n/**\n * Schema for a successful API response, given some data schema T.\n */\nexport function ApiSuccessResponseSchema<T extends ZodTypeAny>(dataSchema: T) {\n\treturn BaseEnvelopeFields.extend({\n\t\tstatus: z.literal(\"success\"),\n\t\tdata: dataSchema,\n\t}).strict();\n}\n\n/**\n * Union of success or error envelopes, discriminated on `status`.\n */\nexport function ApiResponseSchema<T extends ZodTypeAny>(dataSchema: T) {\n\tconst successSchema = ApiSuccessResponseSchema(dataSchema);\n\tconst errorSchema = ApiErrorResponseSchema;\n\treturn z.discriminatedUnion(\"status\", [successSchema, errorSchema]);\n}\n","import type { z, ZodTypeAny } from \"zod\";\nimport type { ApiErrorPayloadSchema } from \"./schemas/response\";\nimport { ApiResponseSchema } from \"./schemas/response\";\n\n/**\n * API-level error thrown when { status: 'error' } is returned\n */\nexport class ApiClientError extends Error {\n\tpublic code: string;\n\tpublic details?: string;\n\tpublic path?: string;\n\tpublic timestamp?: string;\n\n\tconstructor(\n\t\tpublic payload: z.infer<typeof ApiErrorPayloadSchema>,\n\t\tpublic statusCode: number,\n\t\tpublic requestId?: string,\n\t) {\n\t\tsuper(payload.message);\n\t\tthis.name = \"ApiError\";\n\t\tthis.code = payload.code;\n\t\tthis.details = payload.details;\n\t\tthis.path = payload.path;\n\t\tthis.timestamp = payload.timestamp;\n\t}\n}\n\n/**\n * Configuration options for the API client\n */\nexport type ApiClientConfig =\n\t| {\n\t\t\t// Standard configuration.\n\t\t\t// Intended for external clients using an API key issued via API Gateway.\n\t\t\tbaseUrl: string;\n\t\t\tapiKey: string;\n\t\t\tapiToken?: never;\n\t\t\tfetch?: typeof fetch;\n\t }\n\t| {\n\t\t\t// Alternative configuration.\n\t\t\t// Reserved for client with access to a bearer token (e.g. The e2e tests).\n\t\t\tbaseUrl: string;\n\t\t\tapiKey?: never;\n\t\t\tapiToken: string;\n\t\t\tfetch?: typeof fetch;\n\t };\n\nexport class BaseApiClient {\n\tprotected config: ApiClientConfig;\n\n\tconstructor(config: ApiClientConfig) {\n\t\tthis.config = {\n\t\t\t...config,\n\t\t\tfetch: config.fetch || fetch,\n\t\t};\n\t\tthis.config.baseUrl = this.config.baseUrl.replace(/\\/+$/, \"\"); // strip trailing slashes\n\t}\n\n\t/**\n\t * Generic HTTP request to a JSON API\n\t */\n\tprotected async request<\n\t\tReqSchema extends ZodTypeAny | undefined,\n\t\tResponseDataSchema extends ZodTypeAny,\n\t>(\n\t\tmethod: \"GET\" | \"PUT\" | \"POST\" | \"DELETE\",\n\t\tpath: string,\n\t\topts: {\n\t\t\trequestSchema?: ReqSchema;\n\t\t\tbody?: ReqSchema extends ZodTypeAny ? z.infer<ReqSchema> : unknown;\n\t\t\tresponseDataSchema: ResponseDataSchema;\n\t\t},\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\t// Validate request body if provided\n\t\tlet bodyPayload = opts.body;\n\t\tif (opts.requestSchema && opts.body !== undefined) {\n\t\t\tbodyPayload = opts.requestSchema.parse(opts.body);\n\t\t}\n\n\t\t// Build URL + query string\n\t\tconst url = new URL(this.config.baseUrl + path);\n\n\t\t// Perform fetch\n\t\tconst response = await this.config.fetch!(url.toString(), {\n\t\t\tmethod,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t...(this.config.apiKey\n\t\t\t\t\t? { \"x-api-key\": this.config.apiKey }\n\t\t\t\t\t: { Authorization: `Bearer ${this.config.apiToken}` }),\n\t\t\t},\n\t\t\tbody: bodyPayload ? JSON.stringify(bodyPayload) : undefined,\n\t\t});\n\n\t\tconst json = await response.json();\n\t\tconst parsedJson = ApiResponseSchema(opts.responseDataSchema).parse(json);\n\n\t\tif (\"error\" in parsedJson) {\n\t\t\tthrow new ApiClientError(parsedJson.error, parsedJson.statusCode, parsedJson.requestId);\n\t\t} else if (!(\"data\" in parsedJson)) {\n\t\t\tthrow new ApiClientError(\n\t\t\t\t{\n\t\t\t\t\tcode: \"INTERNAL_SERVER_ERROR\",\n\t\t\t\t\tmessage: \"Unexpected API response format\",\n\t\t\t\t\tdetails: 'Response did not contain expected \"data\" field',\n\t\t\t\t},\n\t\t\t\t500,\n\t\t\t\tparsedJson.requestId,\n\t\t\t);\n\t\t}\n\n\t\treturn parsedJson.data;\n\t}\n\n\t/**\n\t * GET convenience method inferring response type from schema\n\t */\n\tprotected get<ResponseDataSchema extends ZodTypeAny>(\n\t\tpath: string,\n\t\tresponseDataSchema: ResponseDataSchema,\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\treturn this.request(\"GET\", path, { responseDataSchema });\n\t}\n\n\t/**\n\t * PUT convenience method inferring both request and response types\n\t */\n\tprotected put<ReqSchema extends ZodTypeAny, ResponseDataSchema extends ZodTypeAny>(\n\t\tpath: string,\n\t\tbody: z.infer<ReqSchema>,\n\t\trequestSchema: ReqSchema,\n\t\tresponseDataSchema: ResponseDataSchema,\n\t): Promise<z.infer<ResponseDataSchema>> {\n\t\treturn this.request(\"PUT\", path, { body, requestSchema, responseDataSchema });\n\t}\n}\n","import { z } from \"zod\";\nimport { ProseMirrorDocSchema } from \"../../prosemirror\";\n\n//\n// 1) REUSABLE SCHEMAS FOR COMMON STRUCTURES\n//\n\n/**\n * A generic schema representing a heading used across various slices.\n * - `text`: The display text of the heading.\n * - `href`: An optional URL that the heading links to.\n */\nconst HeadingSchema = z.object({\n\ttext: z.string(),\n\thref: z.string().url().optional(),\n});\n\n/**\n * Base “properties” common to most page slices.\n * - `heading`: An optional heading object for slices that can display a title.\n */\nconst BasePageItemProps = z.object({\n\theading: HeadingSchema.optional(),\n});\n\n/**\n * Extended properties for any “graphics”-type slice.\n * In addition to base properties, these slices must specify how the graphic is displayed.\n * - `displayBehaviour`: Determines if the graphic stands alone or is associated with other content.\n */\nconst BaseGraphicsItemProps = BasePageItemProps.extend({\n\tdisplayBehaviour: z.enum([\"standalone\", \"associated\"]),\n});\n\n/**\n * A schema to validate that a string is valid JSON.\n */\nconst ValidJSONStringSchema = z.string().refine(\n\t(val) => {\n\t\ttry {\n\t\t\tJSON.parse(val);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n\t{ message: \"Invalid JSON string\" },\n);\n\n//\n// 2) GENERIC HELPER TO DEFINE “SLICE” INPUT/OUTPUT SCHEMAS\n//\n\n/**\n * A union type to represent either a Zod object schema or an optional Zod object schema.\n */\ntype OptionalOrRequiredZodObject = z.AnyZodObject | z.ZodOptional<z.AnyZodObject>;\n\n/**\n * Helper function that, given:\n * - `typeName`: A string literal identifying the slice type.\n * - `propsShape`: A Zod schema describing the slice’s `properties`.\n *\n * Returns an object containing two schemas:\n * - `InputSchema`: For client-side input; `sliceId` is optional.\n * - `OutputSchema`: For server-side/output; `sliceId` is required.\n *\n * This is useful because when defining slices we often want to allow -\n * clients to submit slices without an ID (e.g., when creating new slices),\n */\nfunction defineSliceSchema<T extends string, P extends OptionalOrRequiredZodObject>(options: {\n\ttypeName: T;\n\tpropsShape: P;\n}) {\n\tconst { typeName, propsShape } = options;\n\n\t// Base schema shared by both input and output:\n\t// - `type`: Literal string identifying which slice this is.\n\t// - `hidden`: Optional flag to mark the slice as hidden.\n\t// - `properties`: The detailed properties shape for the slice.\n\tconst BaseSchema = z.object({\n\t\ttype: z.literal(typeName),\n\t\thidden: z.boolean().optional(),\n\t\tproperties: propsShape,\n\t});\n\n\t/**\n\t * Input schema: For client submissions.\n\t * - `sliceId` is optional because the client might not specify it yet.\n\t */\n\tconst InputSchema = BaseSchema.extend({\n\t\tsliceId: z.string().uuid().optional(),\n\t});\n\n\t/**\n\t * Output schema: For persisted or server-returned data.\n\t * - `sliceId` is required (each saved slice must have an ID).\n\t */\n\tconst OutputSchema = BaseSchema.extend({\n\t\tsliceId: z.string().uuid(),\n\t});\n\n\treturn { InputSchema, OutputSchema };\n}\n\n//\n// 3) DEFINE INDIVIDUAL SLICE TYPES (INPUT & OUTPUT) USING THE HELPER\n//\n\n// 3.A “HomepageSlice”\n// - A generic homepage slice that may include an optional heading.\n// - Input: Clients can pass `properties` or omit entirely.\n// - Output: Always includes a `properties` object (may be empty) and a required `sliceId`.\nconst HomepageSlice = defineSliceSchema({\n\ttypeName: \"HomepageSlice\",\n\tpropsShape: BasePageItemProps.optional(),\n});\n\n// 3.B “FlourishGraphicSlice”\n// - A slice to embed or reference a Flourish graphic by its ID.\n// - Extends graphic base properties with `flourishId`.\nconst FlourishGraphicSlice = defineSliceSchema({\n\ttypeName: \"FlourishGraphic\",\n\tpropsShape: BaseGraphicsItemProps.extend({\n\t\tflourishDescription: z.string().optional(), // Optional description for the Flourish graphic\n\t\tflourishId: z.string().nonempty(),\n\t}),\n});\n\n// 3.C “CustomIframeSlice”\n// - A slice that renders a custom iframe.\n// - Extends graphic base properties with `iframeSrc`.\nconst CustomIframeSlice = defineSliceSchema({\n\ttypeName: \"CustomIframe\",\n\tpropsShape: BaseGraphicsItemProps.extend({\n\t\tiframeSrc: z.string().url().nonempty(),\n\t}),\n});\n\n// 3.D “ExperimentSlice”\n// - A slice for embedding experimental content.\n// - Requires an `experimentId`, `experimentName`, and a JSON string (`contentJson`).\nconst ExperimentSlice = defineSliceSchema({\n\ttypeName: \"Experiment\",\n\tpropsShape: BasePageItemProps.extend({\n\t\texperimentId: z.string().nonempty(), // Unique ID for the experiment\n\t\texperimentName: z.string().nonempty(), // Human-readable name of the experiment\n\t\tcontentJson: ValidJSONStringSchema, // The experiment’s JSON payload as a valid JSON string\n\t}),\n});\n\n// 3.E \"Strip\"\n// - A slice that displays a strip of content.\nconst StripSlice = defineSliceSchema({\n\ttypeName: \"Strip\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tlistId: z.string().uuid(), // The ID of the strip to display\n\t\tmaxStories: z.number().int().min(1), // Maximum number of stories to display in the strip\n\t}),\n});\n\n// 3.F \"TopperSlice\"\n// - A slice that displays a topper section with description and optional strapline.\nconst TopperSlice = defineSliceSchema({\n\ttypeName: \"Topper\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tdescription: ProseMirrorDocSchema,\n\t\tstrapline: z.string().optional(),\n\t}),\n});\n\n// 3.F \"Hero\"\n// - A slice that represents a Hero on the page. It references a Spark List.\nconst HeroSlice = defineSliceSchema({\n\ttypeName: \"Hero\",\n\tpropsShape: BasePageItemProps.extend({\n\t\tlistId: z.string().uuid(), // The ID of the spark list to display\n\t\tmaxStories: z.number().int().min(1), // Maximum number of stories to display in the strip\n\t}),\n});\n\n//\n// 4) COMPOSE DISCRIMINATED UNIONS FOR “SLICE API” INPUT & OUTPUT\n//\n\n/**\n * All possible slice inputs for the Page API.\n * This discriminated union allows Zod to pick the correct schema based on the `type` field.\n */\nexport const SliceApiInputSchema = z.discriminatedUnion(\"type\", [\n\tHomepageSlice.InputSchema,\n\tFlourishGraphicSlice.InputSchema,\n\tCustomIframeSlice.InputSchema,\n\tExperimentSlice.InputSchema,\n\tStripSlice.InputSchema,\n\tTopperSlice.InputSchema,\n\tHeroSlice.InputSchema,\n] as const);\n\n/**\n * All possible slice outputs for the Page API.\n * The same discriminated union but with each slice requiring `sliceId`.\n */\nexport const SliceApiOutputSchema = z.discriminatedUnion(\"type\", [\n\tHomepageSlice.OutputSchema,\n\tFlourishGraphicSlice.OutputSchema,\n\tCustomIframeSlice.OutputSchema,\n\tExperimentSlice.OutputSchema,\n\tStripSlice.OutputSchema,\n\tTopperSlice.OutputSchema,\n\tHeroSlice.OutputSchema,\n] as const);\n\n//\n// 5) WRAPPER SCHEMAS FOR THE ENTIRE PAGE STRUCTURE\n//\n\nconst BasePagePropertiesSchema = z.object({\n\ttitle: z.string(),\n\tpageId: z.string().uuid(),\n\tconceptId: z.string().optional(),\n\tmetaDescription: z.string().optional(),\n\tpageTheme: z.string().optional(),\n\tsponsorText: z.string().optional(),\n\tsponsorImage: z.string().url().optional(),\n});\n\n/**\n * Page structure as submitted by clients.\n * - `properties`: Metadata about the page\n * - `children`: Array of slice inputs (each with an optional `sliceId`).\n */\nexport const PageStructureInputSchema = z.object({\n\tproperties: BasePagePropertiesSchema,\n\tchildren: z.array(SliceApiInputSchema),\n});\n\n/**\n * Page structure as submitted by clients.\n * - `properties`: Metadata about the page (title, list ID, page ID).\n * - `children`: Array of slice inputs (each with an optional `sliceId`).\n */\nexport const HomepageStructureInputSchema = PageStructureInputSchema.extend({\n\tproperties: BasePagePropertiesSchema.extend({\n\t\t// This is optional for the input. If clients don't send it, we generate a uuid.\n\t\thomepageListId: z.string().uuid(),\n\t}),\n});\n\n/**\n * Page structure as stored or returned by the server.\n */\nexport const PageStructureOutputSchema = z.object({\n\ttype: z.literal(\"Page\"),\n\tschemaVersion: z.number(),\n\tproperties: BasePagePropertiesSchema,\n\tchildren: z.array(SliceApiOutputSchema),\n});\n\nexport const HomepageStructureOutputSchema = PageStructureOutputSchema.extend({\n\ttype: z.literal(\"Homepage\"),\n\tproperties: BasePagePropertiesSchema.extend({\n\t\thomepageListId: z.string().uuid(),\n\t}),\n});\n\n//\n// 6) EXPORT TYPES FOR CONSUMPTION IN CODE\n//\n\n/** Client-side type for page structure input */\nexport type PageStructureInput = z.infer<typeof PageStructureInputSchema>;\n\n/** Server-side type for page structure output */\nexport type PageStructureOutput = z.infer<typeof PageStructureOutputSchema>;\n\n/** Client-side type for homepage structure input */\nexport type HomepageStructureInput = z.infer<typeof HomepageStructureInputSchema>;\n\n/** Server-side type for homepage structure output */\nexport type HomepageStructureOutput = z.infer<typeof HomepageStructureOutputSchema>;\n\n/** Union of all possible slice outputs for type-checking convenience */\nexport type Slice = z.infer<typeof SliceApiOutputSchema>;\n\n/** Individual slice output types */\nexport type HomepageSliceType = z.infer<typeof HomepageSlice.OutputSchema>;\nexport type FlourishGraphicSliceType = z.infer<typeof FlourishGraphicSlice.OutputSchema>;\nexport type CustomIframeSliceType = z.infer<typeof CustomIframeSlice.OutputSchema>;\nexport type ExperimentSliceType = z.infer<typeof ExperimentSlice.OutputSchema>;\nexport type StripSliceType = z.infer<typeof StripSlice.OutputSchema>;\nexport type TopperSliceType = z.infer<typeof TopperSlice.OutputSchema>;\nexport type HeroSliceType = z.infer<typeof HeroSlice.OutputSchema>;\n\n/**\n * Union type for interactive slices (i.e., the ones rendering visual components).\n * Useful for code that cares specifically about slices with visual/interactive content.\n */\nexport type InteractiveSlice = FlourishGraphicSliceType | CustomIframeSliceType;\n","import { z } from \"zod\";\n\n/** Accept http(s) and mailto: (matches your editor config) */\nconst HrefSchema = z.string().refine((v) => /^(https?:\\/\\/|mailto:).+/.test(v), {\n\tmessage: \"Expected http(s):// or mailto: URL\",\n});\n\n/** Link mark. */\nconst ProseMirrorLinkMark = z.object({\n\ttype: z.literal(\"link\"),\n\tattrs: z.object({\n\t\thref: HrefSchema,\n\t}),\n});\n\n/** Supported text marks */\nconst ProseMirrorMark = z.discriminatedUnion(\"type\", [\n\tProseMirrorLinkMark,\n\tz.object({ type: z.literal(\"bold\") }),\n\tz.object({ type: z.literal(\"italic\") }),\n\tz.object({ type: z.literal(\"underline\") }),\n\tz.object({ type: z.literal(\"strike\") }),\n]);\n\n/** Text node */\nconst ProseMirrorTextNode = z.object({\n\ttype: z.literal(\"text\"),\n\ttext: z.string(),\n\tmarks: z.array(ProseMirrorMark).optional(),\n});\n\n/** Paragraph node — content can be empty/omitted */\nconst ProseMirrorParagraphNode = z.object({\n\ttype: z.literal(\"paragraph\"),\n\tcontent: z.array(ProseMirrorTextNode),\n});\n\n/** ProseMirror Node Union. */\nconst ProseMirrorNode = z.union([ProseMirrorParagraphNode, ProseMirrorTextNode]);\n\n/** Root node of a ProseMirror document - enforcing at least 1 paragraph */\nexport const ProseMirrorDocSchema = z.object({\n\ttype: z.literal(\"doc\"),\n\tcontent: z\n\t\t.array(ProseMirrorNode)\n\t\t.min(1, { message: \"Document must contain at least one paragraph\" }),\n});\n\n/** Rich text editor TS type. */\nexport type RichTextEditorType = z.infer<typeof ProseMirrorDocSchema>;\n\nexport {};\n","import { BaseApiClient } from \"./base\";\nimport {\n\tHomepageStructureInputSchema,\n\tHomepageStructureOutputSchema,\n\ttype HomepageStructureInput,\n\ttype HomepageStructureOutput,\n} from \"./schemas/ftpink/page\";\n\n/**\n * Client for Homepage structure endpoints\n */\nexport class HomepageClient extends BaseApiClient {\n\tasync getStructure(pageId: string): Promise<HomepageStructureOutput> {\n\t\treturn this.get(`/v1/homepage/${pageId}/structure`, HomepageStructureOutputSchema);\n\t}\n\n\tasync getStructuresByHomepageListId(homepageListId: string): Promise<HomepageStructureOutput[]> {\n\t\treturn this.get(\n\t\t\t`/v1/homepage/list/${homepageListId}/structures`,\n\t\t\tHomepageStructureOutputSchema.array(),\n\t\t);\n\t}\n\n\tasync upsertStructure(\n\t\tpageId: string,\n\t\tdata: Omit<HomepageStructureInput, \"type\">,\n\t): Promise<HomepageStructureOutput> {\n\t\treturn this.put(\n\t\t\t`/v1/homepage/${pageId}/structure`,\n\t\t\tdata,\n\t\t\tHomepageStructureInputSchema,\n\t\t\tHomepageStructureOutputSchema,\n\t\t);\n\t}\n}\n","import { z } from \"zod\";\n\n/**\n * -----------------------------------------\n * Legacy API Schemas & Types\n *\n * These schemas map to expected types for Hub Pages rendered by dotcom-pages.\n * -----------------------------------------\n */\n\nconst LegacyFlourishChildSchema = z.object({\n\tsource: z.literal(\"flourish\"),\n\tproperties: z.object({\n\t\tid: z.string().min(1), // e.g. \"visualisation/21901162\"\n\t}),\n});\n\nconst LegacyListChildSchema = z.object({\n\tsource: z.literal(\"list\"),\n\tproperties: z.object({\n\t\tid: z.string().uuid(),\n\t\tmaxItems: z.number().optional(),\n\t}),\n});\n\nconst LegacyContainerChildSchema = z.discriminatedUnion(\"source\", [\n\tLegacyFlourishChildSchema,\n\tLegacyListChildSchema,\n]);\n\nconst LegacyTopperSchema = z.object({\n\ttype: z.literal(\"topper-basic\"),\n\tproperties: z.object({\n\t\ttitle: z.string(),\n\t\tsponsorText: z.string().optional(),\n\t\tsponsorImage: z.string().url().optional(),\n\t}),\n});\n\nconst LegacyInfoBoxSchema = z.object({\n\ttype: z.literal(\"info-box\"),\n\tproperties: z.object({\n\t\tbodyHTML: z.string(),\n\t}),\n});\n\nconst LegacyContainerSchema = z.object({\n\ttype: z.literal(\"container\"),\n\tchildren: z.array(LegacyContainerChildSchema).min(1),\n\tproperties: z.object({\n\t\ttitle: z.string().optional(),\n\t\tdesign: z.enum([\"chart\", \"four-story\", \"freeform\", \"hero-lead\"]).default(\"freeform\"),\n\t\tbackgroundColor: z.string().optional(),\n\t}),\n});\n\nconst LegacyExperimentSchema = z.object({\n\ttype: z.literal(\"experiment\"),\n\tchildren: z.tuple([]),\n\tproperties: z.object({\n\t\texperimentName: z.string(),\n\t\tid: z.string(),\n\t\ttitle: z.string().optional(),\n\t\tconfig: z\n\t\t\t.object({\n\t\t\t\tvalue: z.unknown().optional(),\n\t\t\t\t// Hub pages support experiments with HTML and Text.\n\t\t\t\t// For now we just support JSON. As we migrate pages, this may change.\n\t\t\t\tformat: z.enum([\"json\"]).default(\"json\"),\n\t\t\t})\n\t\t\t.partial()\n\t\t\t.optional(),\n\t}),\n});\n\nconst LegacyBlockSchema = z.discriminatedUnion(\"type\", [\n\tLegacyTopperSchema,\n\tLegacyInfoBoxSchema,\n\tLegacyContainerSchema,\n\tLegacyExperimentSchema,\n]);\n\nexport const LegacyPageStructureOutputSchema = z.object({\n\tuuid: z.string().uuid(),\n\tconceptId: z.string().uuid().optional(),\n\tthemeName: z.string().optional(),\n\tmetaDescription: z.string().optional(),\n\tblocks: z.array(LegacyBlockSchema),\n});\n\nexport type LegacyPageStructureOutput = z.infer<typeof LegacyPageStructureOutputSchema>;\nexport type LegacyBlock = z.infer<typeof LegacyBlockSchema>;\n","import { BaseApiClient } from \"./base\";\nimport type { LegacyPageStructureOutput } from \"./schemas/ftpink/legacyHubPage\";\nimport { LegacyPageStructureOutputSchema } from \"./schemas/ftpink/legacyHubPage\";\nimport {\n\tPageStructureInputSchema,\n\tPageStructureOutputSchema,\n\ttype PageStructureInput,\n\ttype PageStructureOutput,\n} from \"./schemas/ftpink/page\";\n\n/**\n * Client for Page structure endpoints\n */\nexport class PageClient extends BaseApiClient {\n\tasync getStructure(pageId: string): Promise<PageStructureOutput> {\n\t\treturn this.get(`/v1/page/${pageId}/structure`, PageStructureOutputSchema);\n\t}\n\n\tasync getLegacyHubPageStructure(pageId: string): Promise<LegacyPageStructureOutput> {\n\t\treturn this.get(`/v1/page/${pageId}/legacyHubPageStructure`, LegacyPageStructureOutputSchema);\n\t}\n\n\tasync upsertStructure(\n\t\tpageId: string,\n\t\tdata: Omit<PageStructureInput, \"type\">,\n\t): Promise<PageStructureOutput> {\n\t\treturn this.put(\n\t\t\t`/v1/page/${pageId}/structure`,\n\t\t\tdata,\n\t\t\tPageStructureInputSchema,\n\t\t\tPageStructureOutputSchema,\n\t\t);\n\t}\n}\n","import type { ApiClientConfig } from \"./base\";\nimport { BaseApiClient } from \"./base\";\nimport { HomepageClient } from \"./homepage\";\nimport { PageClient } from \"./page\";\n\n/**\n * Main API client that provides access to all API endpoints\n */\nexport class ApiClient extends BaseApiClient {\n\t/**\n\t * Homepage API endpoints\n\t */\n\thomepage: HomepageClient;\n\tpage: PageClient;\n\n\tconstructor(config: ApiClientConfig) {\n\t\tsuper(config);\n\n\t\t// Initialize sub-clients\n\t\tthis.homepage = new HomepageClient(config);\n\t\tthis.page = new PageClient(config);\n\t}\n}\n"],"mappings":"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","names":["z","z","z","z"]}
|
package/package.json
CHANGED
|
Binary file
|