@guardian/support-dotcom-components 0.0.0-beta-20251028082458

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.
Files changed (71) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +6 -0
  3. package/dist/dotcom/index.d.ts +14 -0
  4. package/dist/dotcom/index.d.ts.map +1 -0
  5. package/dist/dotcom/requests.d.ts +18 -0
  6. package/dist/dotcom/requests.d.ts.map +1 -0
  7. package/dist/dotcom/types.d.ts +6 -0
  8. package/dist/dotcom/types.d.ts.map +1 -0
  9. package/dist/index.esm.js +1 -0
  10. package/dist/index.js +1 -0
  11. package/dist/shared/lib/geolocation.d.ts +44 -0
  12. package/dist/shared/lib/geolocation.d.ts.map +1 -0
  13. package/dist/shared/lib/history.d.ts +18 -0
  14. package/dist/shared/lib/history.d.ts.map +1 -0
  15. package/dist/shared/lib/index.d.ts +6 -0
  16. package/dist/shared/lib/index.d.ts.map +1 -0
  17. package/dist/shared/lib/placeholders.d.ts +12 -0
  18. package/dist/shared/lib/placeholders.d.ts.map +1 -0
  19. package/dist/shared/lib/reminderFields.d.ts +9 -0
  20. package/dist/shared/lib/reminderFields.d.ts.map +1 -0
  21. package/dist/shared/lib/viewLog.d.ts +17 -0
  22. package/dist/shared/lib/viewLog.d.ts.map +1 -0
  23. package/dist/shared/types/abTests/banner.d.ts +424 -0
  24. package/dist/shared/types/abTests/banner.d.ts.map +1 -0
  25. package/dist/shared/types/abTests/epic.d.ts +345 -0
  26. package/dist/shared/types/abTests/epic.d.ts.map +1 -0
  27. package/dist/shared/types/abTests/gutter.d.ts +146 -0
  28. package/dist/shared/types/abTests/gutter.d.ts.map +1 -0
  29. package/dist/shared/types/abTests/header.d.ts +173 -0
  30. package/dist/shared/types/abTests/header.d.ts.map +1 -0
  31. package/dist/shared/types/abTests/index.d.ts +6 -0
  32. package/dist/shared/types/abTests/index.d.ts.map +1 -0
  33. package/dist/shared/types/abTests/shared.d.ts +186 -0
  34. package/dist/shared/types/abTests/shared.d.ts.map +1 -0
  35. package/dist/shared/types/index.d.ts +6 -0
  36. package/dist/shared/types/index.d.ts.map +1 -0
  37. package/dist/shared/types/prices.d.ts +10 -0
  38. package/dist/shared/types/prices.d.ts.map +1 -0
  39. package/dist/shared/types/props/banner.d.ts +313 -0
  40. package/dist/shared/types/props/banner.d.ts.map +1 -0
  41. package/dist/shared/types/props/choiceCards.d.ts +108 -0
  42. package/dist/shared/types/props/choiceCards.d.ts.map +1 -0
  43. package/dist/shared/types/props/design.d.ts +164 -0
  44. package/dist/shared/types/props/design.d.ts.map +1 -0
  45. package/dist/shared/types/props/epic.d.ts +429 -0
  46. package/dist/shared/types/props/epic.d.ts.map +1 -0
  47. package/dist/shared/types/props/gutter.d.ts +75 -0
  48. package/dist/shared/types/props/gutter.d.ts.map +1 -0
  49. package/dist/shared/types/props/header.d.ts +87 -0
  50. package/dist/shared/types/props/header.d.ts.map +1 -0
  51. package/dist/shared/types/props/index.d.ts +7 -0
  52. package/dist/shared/types/props/index.d.ts.map +1 -0
  53. package/dist/shared/types/props/shared.d.ts +180 -0
  54. package/dist/shared/types/props/shared.d.ts.map +1 -0
  55. package/dist/shared/types/purchaseInfo.d.ts +18 -0
  56. package/dist/shared/types/purchaseInfo.d.ts.map +1 -0
  57. package/dist/shared/types/reminders.d.ts +16 -0
  58. package/dist/shared/types/reminders.d.ts.map +1 -0
  59. package/dist/shared/types/targeting/banner.d.ts +28 -0
  60. package/dist/shared/types/targeting/banner.d.ts.map +1 -0
  61. package/dist/shared/types/targeting/epic.d.ts +30 -0
  62. package/dist/shared/types/targeting/epic.d.ts.map +1 -0
  63. package/dist/shared/types/targeting/gutter.d.ts +13 -0
  64. package/dist/shared/types/targeting/gutter.d.ts.map +1 -0
  65. package/dist/shared/types/targeting/header.d.ts +13 -0
  66. package/dist/shared/types/targeting/header.d.ts.map +1 -0
  67. package/dist/shared/types/targeting/index.d.ts +6 -0
  68. package/dist/shared/types/targeting/index.d.ts.map +1 -0
  69. package/dist/shared/types/targeting/shared.d.ts +30 -0
  70. package/dist/shared/types/targeting/shared.d.ts.map +1 -0
  71. package/package.json +104 -0
@@ -0,0 +1,87 @@
1
+ import type { ComponentEvent } from '@guardian/ophan-tracker-js';
2
+ import { z } from 'zod';
3
+ import type { Cta, Tracking } from './shared';
4
+ export interface HeaderContent {
5
+ heading: string;
6
+ subheading: string;
7
+ primaryCta?: Cta;
8
+ secondaryCta?: Cta;
9
+ benefits?: string[];
10
+ }
11
+ export declare const headerContentSchema: z.ZodObject<{
12
+ heading: z.ZodString;
13
+ subheading: z.ZodString;
14
+ primaryCta: z.ZodOptional<z.ZodObject<{
15
+ text: z.ZodString;
16
+ baseUrl: z.ZodString;
17
+ }, z.core.$strip>>;
18
+ secondaryCta: z.ZodOptional<z.ZodObject<{
19
+ text: z.ZodString;
20
+ baseUrl: z.ZodString;
21
+ }, z.core.$strip>>;
22
+ benefits: z.ZodOptional<z.ZodArray<z.ZodString>>;
23
+ }, z.core.$strip>;
24
+ export interface HeaderProps {
25
+ content: HeaderContent;
26
+ tracking: Tracking;
27
+ mobileContent?: HeaderContent;
28
+ countryCode?: string;
29
+ submitComponentEvent?: (componentEvent: ComponentEvent) => Promise<void>;
30
+ numArticles?: number;
31
+ promoCodes?: string[];
32
+ }
33
+ export declare const headerPropsSchema: z.ZodObject<{
34
+ content: z.ZodObject<{
35
+ heading: z.ZodString;
36
+ subheading: z.ZodString;
37
+ primaryCta: z.ZodOptional<z.ZodObject<{
38
+ text: z.ZodString;
39
+ baseUrl: z.ZodString;
40
+ }, z.core.$strip>>;
41
+ secondaryCta: z.ZodOptional<z.ZodObject<{
42
+ text: z.ZodString;
43
+ baseUrl: z.ZodString;
44
+ }, z.core.$strip>>;
45
+ benefits: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
+ }, z.core.$strip>;
47
+ tracking: z.ZodObject<{
48
+ abTestName: z.ZodString;
49
+ abTestVariant: z.ZodString;
50
+ campaignCode: z.ZodString;
51
+ componentType: z.ZodEnum<{
52
+ ACQUISITIONS_EPIC: "ACQUISITIONS_EPIC";
53
+ ACQUISITIONS_ENGAGEMENT_BANNER: "ACQUISITIONS_ENGAGEMENT_BANNER";
54
+ ACQUISITIONS_HEADER: "ACQUISITIONS_HEADER";
55
+ ACQUISITIONS_OTHER: "ACQUISITIONS_OTHER";
56
+ ACQUISITIONS_SUBSCRIPTIONS_BANNER: "ACQUISITIONS_SUBSCRIPTIONS_BANNER";
57
+ }>;
58
+ products: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodEnum<{
59
+ CONTRIBUTION: "CONTRIBUTION";
60
+ MEMBERSHIP_SUPPORTER: "MEMBERSHIP_SUPPORTER";
61
+ DIGITAL_SUBSCRIPTION: "DIGITAL_SUBSCRIPTION";
62
+ PRINT_SUBSCRIPTION: "PRINT_SUBSCRIPTION";
63
+ }>>>>;
64
+ labels: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
65
+ ophanPageId: z.ZodString;
66
+ platformId: z.ZodString;
67
+ referrerUrl: z.ZodString;
68
+ }, z.core.$strip>;
69
+ mobileContent: z.ZodOptional<z.ZodObject<{
70
+ heading: z.ZodString;
71
+ subheading: z.ZodString;
72
+ primaryCta: z.ZodOptional<z.ZodObject<{
73
+ text: z.ZodString;
74
+ baseUrl: z.ZodString;
75
+ }, z.core.$strip>>;
76
+ secondaryCta: z.ZodOptional<z.ZodObject<{
77
+ text: z.ZodString;
78
+ baseUrl: z.ZodString;
79
+ }, z.core.$strip>>;
80
+ benefits: z.ZodOptional<z.ZodArray<z.ZodString>>;
81
+ }, z.core.$strip>>;
82
+ countryCode: z.ZodOptional<z.ZodString>;
83
+ submitComponentEvent: z.ZodAny;
84
+ numArticles: z.ZodOptional<z.ZodNumber>;
85
+ promoCodes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
86
+ }, z.core.$strip>;
87
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/props/header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG9C,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;iBAM9B,CAAC;AAEH,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ5B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './epic';
2
+ export * from './banner';
3
+ export * from './header';
4
+ export * from './shared';
5
+ export * from './design';
6
+ export * from './gutter';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/props/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,180 @@
1
+ import { z } from 'zod';
2
+ import type { TestTracking } from '../abTests';
3
+ export type Stage = 'PROD' | 'CODE' | 'DEV';
4
+ export interface Cta {
5
+ text: string;
6
+ baseUrl: string;
7
+ }
8
+ export declare const ctaSchema: z.ZodObject<{
9
+ text: z.ZodString;
10
+ baseUrl: z.ZodString;
11
+ }, z.core.$strip>;
12
+ export declare enum SecondaryCtaType {
13
+ Custom = "CustomSecondaryCta",
14
+ ContributionsReminder = "ContributionsReminderSecondaryCta"
15
+ }
16
+ export declare const secondaryCtaTypeSchema: z.ZodEnum<typeof SecondaryCtaType>;
17
+ interface CustomSecondaryCta {
18
+ type: SecondaryCtaType.Custom;
19
+ cta: Cta;
20
+ }
21
+ export declare const customSecondaryCtaSchema: z.ZodObject<{
22
+ type: z.ZodLiteral<SecondaryCtaType.Custom>;
23
+ cta: z.ZodObject<{
24
+ text: z.ZodString;
25
+ baseUrl: z.ZodString;
26
+ }, z.core.$strip>;
27
+ }, z.core.$strip>;
28
+ interface ContributionsReminderSecondaryCta {
29
+ type: SecondaryCtaType.ContributionsReminder;
30
+ }
31
+ export declare const contributionsReminderSecondaryCtaSchema: z.ZodObject<{
32
+ type: z.ZodLiteral<SecondaryCtaType.ContributionsReminder>;
33
+ }, z.core.$strip>;
34
+ export type SecondaryCta = CustomSecondaryCta | ContributionsReminderSecondaryCta;
35
+ export declare const secondaryCtaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
36
+ type: z.ZodLiteral<SecondaryCtaType.Custom>;
37
+ cta: z.ZodObject<{
38
+ text: z.ZodString;
39
+ baseUrl: z.ZodString;
40
+ }, z.core.$strip>;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ type: z.ZodLiteral<SecondaryCtaType.ContributionsReminder>;
43
+ }, z.core.$strip>], "type">;
44
+ interface TickerCopy {
45
+ countLabel: string;
46
+ goalCopy?: string;
47
+ }
48
+ export declare const tickerCopySchema: z.ZodObject<{
49
+ countLabel: z.ZodString;
50
+ goalCopy: z.ZodOptional<z.ZodString>;
51
+ }, z.core.$strip>;
52
+ export interface TickerData {
53
+ total: number;
54
+ goal: number;
55
+ }
56
+ export declare const tickerDataSchema: z.ZodObject<{
57
+ total: z.ZodNumber;
58
+ goal: z.ZodNumber;
59
+ }, z.core.$strip>;
60
+ export type TickerName = 'US' | 'AU' | 'global';
61
+ export interface TickerSettings {
62
+ currencySymbol: string;
63
+ copy: TickerCopy;
64
+ name: TickerName;
65
+ tickerData?: TickerData;
66
+ }
67
+ export declare const tickerSettingsSchema: z.ZodObject<{
68
+ currencySymbol: z.ZodString;
69
+ copy: z.ZodObject<{
70
+ countLabel: z.ZodString;
71
+ goalCopy: z.ZodOptional<z.ZodString>;
72
+ }, z.core.$strip>;
73
+ name: z.ZodEnum<{
74
+ global: "global";
75
+ US: "US";
76
+ AU: "AU";
77
+ }>;
78
+ tickerData: z.ZodOptional<z.ZodObject<{
79
+ total: z.ZodNumber;
80
+ goal: z.ZodNumber;
81
+ }, z.core.$strip>>;
82
+ }, z.core.$strip>;
83
+ export declare const articleCountsSchema: z.ZodObject<{
84
+ for52Weeks: z.ZodNumber;
85
+ forTargetedWeeks: z.ZodNumber;
86
+ }, z.core.$strip>;
87
+ export type ArticleCountType = 'for52Weeks' | 'forTargetedWeeks';
88
+ export type ArticleCounts = Record<ArticleCountType, number>;
89
+ export declare const separateArticleCountSchema: z.ZodObject<{
90
+ type: z.ZodLiteral<"above">;
91
+ copy: z.ZodOptional<z.ZodString>;
92
+ countType: z.ZodOptional<z.ZodEnum<{
93
+ for52Weeks: "for52Weeks";
94
+ forTargetedWeeks: "forTargetedWeeks";
95
+ }>>;
96
+ }, z.core.$strip>;
97
+ export interface SeparateArticleCount {
98
+ type: 'above';
99
+ copy?: string;
100
+ countType?: ArticleCountType;
101
+ }
102
+ export declare const ophanProductSchema: z.ZodEnum<{
103
+ CONTRIBUTION: "CONTRIBUTION";
104
+ MEMBERSHIP_SUPPORTER: "MEMBERSHIP_SUPPORTER";
105
+ DIGITAL_SUBSCRIPTION: "DIGITAL_SUBSCRIPTION";
106
+ PRINT_SUBSCRIPTION: "PRINT_SUBSCRIPTION";
107
+ }>;
108
+ export declare const ophanComponentTypeSchema: z.ZodEnum<{
109
+ ACQUISITIONS_EPIC: "ACQUISITIONS_EPIC";
110
+ ACQUISITIONS_ENGAGEMENT_BANNER: "ACQUISITIONS_ENGAGEMENT_BANNER";
111
+ ACQUISITIONS_HEADER: "ACQUISITIONS_HEADER";
112
+ ACQUISITIONS_OTHER: "ACQUISITIONS_OTHER";
113
+ ACQUISITIONS_SUBSCRIPTIONS_BANNER: "ACQUISITIONS_SUBSCRIPTIONS_BANNER";
114
+ }>;
115
+ export type PageTracking = {
116
+ ophanPageId: string;
117
+ platformId: string;
118
+ referrerUrl: string;
119
+ };
120
+ export type Tracking = TestTracking & PageTracking;
121
+ export declare const trackingSchema: z.ZodObject<{
122
+ abTestName: z.ZodString;
123
+ abTestVariant: z.ZodString;
124
+ campaignCode: z.ZodString;
125
+ componentType: z.ZodEnum<{
126
+ ACQUISITIONS_EPIC: "ACQUISITIONS_EPIC";
127
+ ACQUISITIONS_ENGAGEMENT_BANNER: "ACQUISITIONS_ENGAGEMENT_BANNER";
128
+ ACQUISITIONS_HEADER: "ACQUISITIONS_HEADER";
129
+ ACQUISITIONS_OTHER: "ACQUISITIONS_OTHER";
130
+ ACQUISITIONS_SUBSCRIPTIONS_BANNER: "ACQUISITIONS_SUBSCRIPTIONS_BANNER";
131
+ }>;
132
+ products: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodEnum<{
133
+ CONTRIBUTION: "CONTRIBUTION";
134
+ MEMBERSHIP_SUPPORTER: "MEMBERSHIP_SUPPORTER";
135
+ DIGITAL_SUBSCRIPTION: "DIGITAL_SUBSCRIPTION";
136
+ PRINT_SUBSCRIPTION: "PRINT_SUBSCRIPTION";
137
+ }>>>>;
138
+ labels: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
139
+ ophanPageId: z.ZodString;
140
+ platformId: z.ZodString;
141
+ referrerUrl: z.ZodString;
142
+ }, z.core.$strip>;
143
+ export interface Image {
144
+ mainUrl: string;
145
+ mobileUrl?: string;
146
+ tabletUrl?: string;
147
+ desktopUrl?: string;
148
+ leftColUrl?: string;
149
+ wideUrl?: string;
150
+ altText: string;
151
+ }
152
+ export declare const imageSchema: z.ZodObject<{
153
+ mainUrl: z.ZodString;
154
+ mobileUrl: z.ZodOptional<z.ZodString>;
155
+ tabletUrl: z.ZodOptional<z.ZodString>;
156
+ desktopUrl: z.ZodOptional<z.ZodString>;
157
+ leftColUrl: z.ZodOptional<z.ZodString>;
158
+ wideUrl: z.ZodOptional<z.ZodString>;
159
+ altText: z.ZodString;
160
+ }, z.core.$strip>;
161
+ export interface BylineWithImage {
162
+ name: string;
163
+ description?: string;
164
+ headshot?: Image;
165
+ }
166
+ export declare const bylineWithImageSchema: z.ZodObject<{
167
+ name: z.ZodString;
168
+ description: z.ZodOptional<z.ZodString>;
169
+ headshot: z.ZodOptional<z.ZodObject<{
170
+ mainUrl: z.ZodString;
171
+ mobileUrl: z.ZodOptional<z.ZodString>;
172
+ tabletUrl: z.ZodOptional<z.ZodString>;
173
+ desktopUrl: z.ZodOptional<z.ZodString>;
174
+ leftColUrl: z.ZodOptional<z.ZodString>;
175
+ wideUrl: z.ZodOptional<z.ZodString>;
176
+ altText: z.ZodString;
177
+ }, z.core.$strip>>;
178
+ }, z.core.$strip>;
179
+ export {};
180
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/props/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ declare const purchaseInfoProduct: readonly ["Contribution", "SupporterPlus", "GuardianWeekly", "Paper"];
3
+ export type purchaseInfoProduct = (typeof purchaseInfoProduct)[number];
4
+ export declare const purchaseInfoProductSchema: z.ZodEnum<{
5
+ Contribution: "Contribution";
6
+ SupporterPlus: "SupporterPlus";
7
+ GuardianWeekly: "GuardianWeekly";
8
+ Paper: "Paper";
9
+ }>;
10
+ declare const purchaseInfoUser: readonly ["new", "guest", "current"];
11
+ export type purchaseInfoUser = (typeof purchaseInfoUser)[number];
12
+ export declare const purchaseInfoUserSchema: z.ZodEnum<{
13
+ new: "new";
14
+ guest: "guest";
15
+ current: "current";
16
+ }>;
17
+ export {};
18
+ //# sourceMappingURL=purchaseInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purchaseInfo.d.ts","sourceRoot":"","sources":["../../../src/shared/types/purchaseInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,mBAAmB,uEAAwE,CAAC;AAElG,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACvE,eAAO,MAAM,yBAAyB;;;;;EAA8B,CAAC;AAErE,QAAA,MAAM,gBAAgB,sCAAuC,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AACjE,eAAO,MAAM,sBAAsB;;;;EAA2B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export type ReminderPlatform = 'WEB';
2
+ export type ReminderComponent = 'EPIC' | 'BANNER';
3
+ export type ReminderStage = 'PRE' | 'POST';
4
+ interface BaseSignupRequest {
5
+ email: string;
6
+ reminderPlatform: ReminderPlatform;
7
+ reminderComponent: ReminderComponent;
8
+ reminderStage: ReminderStage;
9
+ country?: string;
10
+ reminderOption?: string;
11
+ }
12
+ export interface OneOffSignupRequest extends BaseSignupRequest {
13
+ reminderPeriod: string;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=reminders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reminders.d.ts","sourceRoot":"","sources":["../../../src/shared/types/reminders.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAErC,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,UAAU,iBAAiB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC1D,cAAc,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,28 @@
1
+ import type { AbandonedBasket, PurchaseInfo, WeeklyArticleHistory } from './shared';
2
+ export type BannerTargeting = {
3
+ shouldHideReaderRevenue?: boolean;
4
+ isPaidContent?: boolean;
5
+ showSupportMessaging: boolean;
6
+ engagementBannerLastClosedAt?: string;
7
+ subscriptionBannerLastClosedAt?: string;
8
+ signInBannerLastClosedAt?: string;
9
+ abandonedBasketBannerLastClosedAt?: string;
10
+ mvtId: number;
11
+ countryCode: string;
12
+ weeklyArticleHistory?: WeeklyArticleHistory;
13
+ articleCountToday?: number;
14
+ hasOptedOutOfArticleCount: boolean;
15
+ sectionId?: string;
16
+ tagIds?: string[];
17
+ contentType?: string;
18
+ browserId?: string;
19
+ purchaseInfo?: PurchaseInfo;
20
+ isSignedIn: boolean;
21
+ hasConsented: boolean;
22
+ abandonedBasket?: AbandonedBasket;
23
+ pageId?: string;
24
+ };
25
+ export type BannerPayload = {
26
+ targeting: BannerTargeting;
27
+ };
28
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/targeting/banner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEpF,MAAM,MAAM,eAAe,GAAG;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,eAAe,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { EpicViewLog } from '../../lib/viewLog';
2
+ import type { WeeklyArticleHistory } from './shared';
3
+ type Tag = {
4
+ id: string;
5
+ type: string;
6
+ };
7
+ export type EpicTargeting = {
8
+ contentType: string;
9
+ sectionName?: string;
10
+ sectionId?: string;
11
+ shouldHideReaderRevenue: boolean;
12
+ isMinuteArticle: boolean;
13
+ isPaidContent: boolean;
14
+ tags: Tag[];
15
+ mvtId?: number;
16
+ epicViewLog?: EpicViewLog;
17
+ countryCode?: string;
18
+ weeklyArticleHistory?: WeeklyArticleHistory;
19
+ hasOptedOutOfArticleCount: boolean;
20
+ showSupportMessaging: boolean;
21
+ url?: string;
22
+ browserId?: string;
23
+ isSignedIn?: boolean;
24
+ pageId?: string;
25
+ };
26
+ export type EpicPayload = {
27
+ targeting: EpicTargeting;
28
+ };
29
+ export {};
30
+ //# sourceMappingURL=epic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epic.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/targeting/epic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD,KAAK,GAAG,GAAG;IACP,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,OAAO,CAAC;IAEjC,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IAEvB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,yBAAyB,EAAE,OAAO,CAAC;IACnC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,SAAS,EAAE,aAAa,CAAC;CAC5B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface GutterTargeting {
2
+ showSupportMessaging: boolean;
3
+ countryCode: string;
4
+ mvtId: number;
5
+ isSignedIn: boolean;
6
+ tagIds?: string[];
7
+ sectionId?: string;
8
+ pageId?: string;
9
+ }
10
+ export type GutterPayload = {
11
+ targeting: GutterTargeting;
12
+ };
13
+ //# sourceMappingURL=gutter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gutter.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/targeting/gutter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,eAAe,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { PurchaseInfo } from './shared';
2
+ export interface HeaderTargeting {
3
+ showSupportMessaging: boolean;
4
+ countryCode: string;
5
+ mvtId: number;
6
+ numArticles?: number;
7
+ purchaseInfo?: PurchaseInfo;
8
+ isSignedIn: boolean;
9
+ }
10
+ export type HeaderPayload = {
11
+ targeting: HeaderTargeting;
12
+ };
13
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/targeting/header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,eAAe,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './epic';
2
+ export * from './header';
3
+ export * from './banner';
4
+ export * from './gutter';
5
+ export * from './shared';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/targeting/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ import type { purchaseInfoProduct, purchaseInfoUser } from '../purchaseInfo';
3
+ export type TagCounts = Record<string, number>;
4
+ export type WeeklyArticleLog = {
5
+ week: number;
6
+ count: number;
7
+ tags?: TagCounts;
8
+ };
9
+ export type WeeklyArticleHistory = WeeklyArticleLog[];
10
+ /**
11
+ * This interface is duplicated from the @guardian/libs definition of StorageFactory. This is to avoid adding the
12
+ * whole library as a dependency.
13
+ * TODO: @guardian/libs is now a dependency anyway - we should consider using the library directly as it may provide some consent checking in future.
14
+ */
15
+ export interface LocalStorage {
16
+ set(key: string, value: unknown): void;
17
+ get(key: string): any;
18
+ }
19
+ export interface PurchaseInfo {
20
+ userType: purchaseInfoUser;
21
+ product: purchaseInfoProduct;
22
+ }
23
+ export declare const abandonedBasketSchema: z.ZodObject<{
24
+ amount: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"other">]>;
25
+ billingPeriod: z.ZodUnion<readonly [z.ZodLiteral<"ONE_OFF">, z.ZodLiteral<"MONTHLY">, z.ZodLiteral<"ANNUAL">]>;
26
+ product: z.ZodUnion<readonly [z.ZodLiteral<"Contribution">, z.ZodLiteral<"SupporterPlus">, z.ZodLiteral<"PremiumTier">, z.ZodLiteral<"DailyEdition">, z.ZodLiteral<"GuardianWeekly">, z.ZodLiteral<"Paper">, z.ZodLiteral<"PaperAndDigital">]>;
27
+ region: z.ZodUnion<readonly [z.ZodLiteral<"uk">, z.ZodLiteral<"us">, z.ZodLiteral<"au">, z.ZodLiteral<"eu">, z.ZodLiteral<"int">, z.ZodLiteral<"nz">, z.ZodLiteral<"ca">]>;
28
+ }, z.core.$strip>;
29
+ export type AbandonedBasket = z.infer<typeof abandonedBasketSchema>;
30
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/targeting/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,EAAE,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAEvC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;CAChC;AAED,eAAO,MAAM,qBAAqB;;;;;iBAuBhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,104 @@
1
+ {
2
+ "name": "@guardian/support-dotcom-components",
3
+ "version": "0.0.0-beta-20251028082458",
4
+ "description": "Service to serve Reader Revenue components to dotcom",
5
+ "repository": "github:guardian/support-dotcom-components",
6
+ "author": "The Guardian",
7
+ "license": "MIT",
8
+ "main": "dist/index.js",
9
+ "module": "dist/index.esm.js",
10
+ "types": "dist/dotcom/index.d.ts",
11
+ "files": [
12
+ "dist/**/*"
13
+ ],
14
+ "devDependencies": {
15
+ "@babel/core": "^7.23.2",
16
+ "@babel/preset-typescript": "^7.23.2",
17
+ "@changesets/cli": "^2.26.2",
18
+ "@guardian/eslint-config": "^11.0.0",
19
+ "@guardian/node-riffraff-artifact": "^0.3.2",
20
+ "@guardian/prettier": "^8.0.1",
21
+ "@rollup/plugin-alias": "^3.1.1",
22
+ "@rollup/plugin-babel": "^5.1.0",
23
+ "@rollup/plugin-commonjs": "^14.0.0",
24
+ "@rollup/plugin-node-resolve": "^8.4.0",
25
+ "@rollup/plugin-replace": "^2.3.3",
26
+ "@types/body-parser": "^1.19.5",
27
+ "@types/compression": "^1.7.0",
28
+ "@types/cors": "^2.8.6",
29
+ "@types/express": "^5.0.0",
30
+ "@types/jest": "^24.0.25",
31
+ "@types/lodash.debounce": "^4.0.6",
32
+ "@types/lodash.throttle": "^4.1.7",
33
+ "@types/node": "^22.10.7",
34
+ "@types/seedrandom": "^3.0.1",
35
+ "babel-loader": "^9.1.3",
36
+ "body-parser": "^1.20.3",
37
+ "concurrently": "^6.2.0",
38
+ "eslint": "^9.24.0",
39
+ "eslint-plugin-react": "^7.33.2",
40
+ "fishery": "^0.3.0",
41
+ "globals": "15.14.0",
42
+ "inquirer": "^7.0.3",
43
+ "jest": "^29.7.0",
44
+ "nodemon": "^3.1.7",
45
+ "prettier": "^3.0.0",
46
+ "rollup": "^2.79.2",
47
+ "rollup-plugin-external-globals": "^0.13.0",
48
+ "rollup-plugin-filesize": "^10.0.0",
49
+ "rollup-plugin-peer-deps-external": "^2.2.3",
50
+ "rollup-plugin-terser": "^7.0.2",
51
+ "ts-jest": "^29.1.1",
52
+ "ts-loader": "^9.2.5",
53
+ "ts-node-dev": "^2.0.0",
54
+ "tslib": "^2.5.3",
55
+ "typescript": "~5.5.2",
56
+ "typescript-json-schema": "^0.42.0",
57
+ "webpack": "^5.94.0",
58
+ "webpack-cli": "^4.7.2",
59
+ "webpack-merge": "^5.8.0",
60
+ "zod": "4.1.12"
61
+ },
62
+ "dependencies": {
63
+ "@guardian/libs": "22.0.1",
64
+ "@guardian/ophan-tracker-js": "2.6.1",
65
+ "@aws-sdk/client-s3": "^3.835.0",
66
+ "@aws-sdk/client-dynamodb": "^3.835.0",
67
+ "@aws-sdk/lib-dynamodb": "^3.835.0",
68
+ "@aws-sdk/credential-providers": "^3.835.0",
69
+ "@aws-sdk/client-cloudwatch": "^3.835.0",
70
+ "@aws-sdk/client-ssm": "^3.835.0",
71
+ "compression": "1.7.4",
72
+ "cors": "^2.8.5",
73
+ "date-fns": "^2.25.0",
74
+ "express": "^4.21.2",
75
+ "jsonschema": "^1.4.0",
76
+ "lodash.debounce": "^4.0.8",
77
+ "lodash.throttle": "^4.1.1",
78
+ "log4js": "^6.3.0",
79
+ "seedrandom": "^3.0.5",
80
+ "zod": "4.1.12"
81
+ },
82
+ "peerDependencies": {
83
+ "@guardian/libs": "^22.0.0",
84
+ "@guardian/ophan-tracker-js": "2.6.1",
85
+ "zod": "^4.1.12"
86
+ },
87
+ "packageManager": "pnpm@8.15.7",
88
+ "scripts": {
89
+ "build-server": "webpack --config webpack.prod.js",
90
+ "prestart": "webpack --config webpack.dev.js",
91
+ "start-watch": "webpack --config webpack.dev.js --watch",
92
+ "start-server": "stage=DEV PORT=8082 nodemon server-dist/server.js",
93
+ "start": "concurrently --kill-others \"pnpm start-watch\" \"pnpm start-server\"",
94
+ "build-dotcom": "rollup --config rollup.config.js",
95
+ "build-dotcom-types": "tsc --project tsconfig.types.json",
96
+ "publish-dry-run": "pnpm publish --dry-run",
97
+ "lint": "eslint .",
98
+ "prune-lint-suppressions": "pnpm lint --prune-suppressions",
99
+ "prettier:check": "prettier --check ./src",
100
+ "prettier:fix": "prettier --write ./src",
101
+ "test": "export stage=DEV; jest",
102
+ "riffraff": "node-riffraff-artifact"
103
+ }
104
+ }