1 export type FeatureType = 'boolean' | 'integer' | 'float' | 'string' | 'enumeration' | 'mixed';
3 export interface Feature<V = any> {
13 ExpirationTime: number;
17 export enum FeatureCode {
19 * In the past whether you have a certain early-access (e.g. alpha / beta)
20 * enabled or not was purely based on a client-side cookie and this feature's
21 * value was to indicate not what your env was but rather what options were
22 * available to you (whether you had access to both alpha & beta or only to beta).
24 * However, now we are persisting the users preference on the backed on their
25 * settings under the same name "EarlyAccess" (either 0 or 1).
27 * To avoid confusing these two this has been renamed to "EarlyAccessScope".
28 * Ideally we would rename it to that on the server as well (and when that happens
29 * we can remove this comment :)).
31 AccountSecurityDismissed2FACard = 'AccountSecurityDismissed2FACard',
32 AliasPromotion = 'AliasPromotion',
33 AlmostAllMail = 'AlmostAllMail',
34 AutoAddHolidaysCalendars = 'AutoAddHolidaysCalendars',
35 AutoDelete = 'AutoDelete',
36 AutoDowngradeReminder = 'AutoDowngradeReminder',
37 BlackFridayPromoShown = 'BlackFridayPromoShown',
38 BlockSenderInToolbar = 'BlockSenderInToolbar',
39 BundlePromoShown = 'BundlePromoShown',
40 CollapsibleSidebarSpotlightMail = 'CollapsibleSidebarSpotlightMail',
41 CollapsibleSidebarSpotlightCalendar = 'CollapsibleSidebarSpotlightCalendar',
42 CalendarBusySlotsSpotlight = 'CalendarBusySlotsSpotlight',
43 CalendarFeedbackEnabled = 'CalendarFeedbackEnabled',
44 CalendarEncryptedSearch = 'CalendarEncryptedSearch',
45 CalendarEventColorSpotlight = 'CalendarEventColorSpotlight',
46 CalendarVideoConferenceSpotlight = 'CalendarVideoConferenceSpotlight',
47 CleanUTMTrackers = 'CleanUTMTrackers',
48 ComposerAssistantSpotlight = 'ComposerAssistantSpotlight',
49 ComposerAssistantInitialSetup = 'ComposerAssistantInitialSetup',
50 ComposerAssistantTrialStartDate = 'ComposerAssistantTrialStartDate',
51 DarkStylesInBody = 'DarkStylesInBody',
52 DismissedRecoverDataCard = 'DismissedRecoverDataCard',
53 DriveMyDevices = 'DriveWebMyDevices',
54 DrivePlan = 'DrivePlan',
55 DriveSearchSpotlight = 'DriveSearchSpotlight',
56 ESAutomaticBackgroundIndexing = 'ESAutomaticBackgroundIndexing',
57 ESUserInterface = 'ESUserInterface',
58 EarlyAccessScope = 'EarlyAccess',
59 EasySwitch = 'EasySwitch',
60 ElectronESInboxThreshold = 'ElectronESInboxThreshold',
61 ElectronConvPreloadAmount = 'ElectronConvPreloadAmount',
62 InboxDesktopFreeTrialDates = 'InboxDesktopFreeTrialDates',
63 InboxDesktopFreeTrialReminders = 'InboxDesktopFreeTrialReminders',
64 MailActionsChunkSize = 'MailActionsChunkSize',
65 MailFeedbackEnabled = 'MailFeedbackEnabled',
66 MailServiceWorker = 'MailServiceWorker',
67 NumAttachmentsWithoutEmbedded = 'NumAttachmentsWithoutEmbedded',
68 NumberOfPreloadedConversations = 'NumberOfPreloadedConversations',
69 // This is a different offer than the others, it runs all the time and is used to nudge free users once their accounts is old enough
70 OfferSubscriptionReminder = 'OfferSubscriptionReminder',
71 OfferDuoPlanYearly2024 = 'OfferDuoPlanYearly2024',
72 OfferDuoPlanTwoYears2024 = 'OfferDuoPlanTwoYears2024',
73 OfferFamily2023 = 'OfferFamily2023',
74 OfferGoUnlimited2022 = 'OfferGoUnlimited2022',
75 OfferMailTrial2023 = 'OfferMailTrial2023',
76 OfferMailTrial2024 = 'OfferMailTrial2024',
77 OfferSpecialOffer2022 = 'OfferSpecialOffer2022',
78 OfferSummer2023 = 'OfferSummer2023',
80 OfferPassFamilyPlan2024Yearly = 'OfferPassFamilyPlan2024Yearly',
82 OfferBlackFriday2024InboxFree = 'OfferBlackFriday2024InboxFree',
83 OfferBlackFriday2024PassFree = 'OfferBlackFriday2024PassFree',
84 OfferBlackFriday2024PassPlus = 'OfferBlackFriday2024PassPlus',
85 OfferBlackFriday2024DriveFree = 'OfferBlackFriday2024DriveFree',
86 OfferBlackFriday2024VPNFree = 'OfferBlackFriday2024VPNFree',
87 OfferBlackFriday2024InboxFreeYearly = 'OfferBlackFriday2024InboxFreeYearly',
88 OfferBlackFriday2024DriveFreeYearly = 'OfferBlackFriday2024DriveFreeYearly',
89 OfferBlackFriday2024VPNFreeYearly = 'OfferBlackFriday2024VPNFreeYearly',
90 OfferBlackFriday2024Plus = 'OfferBlackFriday2024Plus',
91 OfferBlackFriday2024VPNMonthly = 'OfferBlackFriday2024VPNMonthly',
92 OfferBlackFriday2024Unlimited = 'OfferBlackFriday2024Unlimited',
93 OfferBlackFriday2024Duo = 'OfferBlackFriday2024Duo',
96 OrgSpamBlockList = 'OrgSpamBlockList',
97 OrgTwoFactor = 'OrgTwoFactor',
98 PaymentsDisabled = 'PaymentsDisabled',
99 PrivacyDropdownOpened = 'PrivacyDropdownOpened',
100 ProtonBadge = 'ProtonBadge',
101 ProtonSentinel = 'ProtonSentinel',
102 ProtonSentinelUpsell = 'ProtonSentinelUpsell',
103 QuickReply = 'QuickReply',
104 QuickSettingsSpotlight = 'QuickSettingsSpotlight',
105 RebrandingFeedback = 'RebrandingFeedback',
106 RebrandingFeedbackEnabled = 'RebrandingFeedbackEnabled',
107 ReferralExplanationOpened = 'ReferralExplanationOpened',
108 ReferralProgram = 'ReferralProgram',
109 ReferralProgramSpotlight = 'ReferralProgramSpotlight',
110 SLIntegration = 'SLIntegration',
111 ScheduledSendFreemium = 'ScheduledSendFreemium',
112 SeenReferralModal = 'SeenReferralModal',
113 SetExpiration = 'SetExpiration',
114 SmtpToken = 'SmtpToken',
115 SpotlightBreachAlertSecurityCenter = 'SpotlightBreachAlertSecurityCenter',
116 SpotlightGetStartedChecklist = 'SpotlightGetStartedChecklist',
117 SpotlightLoadContent = 'SpotlightLoadContent',
118 SpotlightScheduledSend = 'SpotlightScheduledSend',
119 SpyTrackerProtectionIncorporator = 'SpyTrackerProtectionIncorporator',
120 SubscriptionLastReminderDate = 'SubscriptionLastReminderDate',
121 UnreadFavicon = 'UnreadFavicon',
122 UsedContactsImport = 'UsedContactsImport',
123 UsedMailMobileApp = 'UsedMailMobileApp',
124 WelcomeImportModalShown = 'WelcomeImportModalShown',
125 PassOnboardingSpotlights = 'PassOnboardingSpotlights',
126 ProtonTipsSnoozeTime = 'ProtonTipsSnoozeTime',
127 SeenLightLabellingFeatureModal = 'SeenLightLabellingFeatureModal',
128 PostSubscriptionShortDomainSpotlight = 'PostSubscriptionShortDomainSpotlight',