@automattic/calypso-products
Version:
This module contains information about the various products sold within calypso, such as product slugs, plan intervals, etc.
364 lines • 18.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.featureGroups = void 0;
exports.resolveFeatureGroupsForFeaturesGrid = resolveFeatureGroupsForFeaturesGrid;
exports.resolveFeatureGroupsForComparisonGrid = resolveFeatureGroupsForComparisonGrid;
exports.resolveWooExpressFeatureGroupsForComparisonGrid = resolveWooExpressFeatureGroupsForComparisonGrid;
const tslib_1 = require("tslib");
const i18n_calypso_1 = tslib_1.__importDefault(require("i18n-calypso"));
const constants_1 = require("./constants");
const isUploadVideosTranslated = () => {
const isEnglishLocale = i18n_calypso_1.default.getLocaleSlug()?.startsWith('en');
const hasUploadVideoTranslation = i18n_calypso_1.default.hasTranslation('Upload videos') &&
i18n_calypso_1.default.hasTranslation('Upload video files like mp4 and display them beautifully in 4K resolution, with picture-in-picture, subtitles, and without intrusive ads.');
return isEnglishLocale || hasUploadVideoTranslation;
};
const isStatsGroupTranslated = () => {
const isEnglishLocale = i18n_calypso_1.default.getLocaleSlug()?.startsWith('en');
const hasTranslation = i18n_calypso_1.default.hasTranslation('Stats') && i18n_calypso_1.default.hasTranslation('Premium stats');
return isEnglishLocale || hasTranslation;
};
exports.featureGroups = {
[constants_1.FEATURE_GROUP_ALL_FEATURES]: {
slug: constants_1.FEATURE_GROUP_ALL_FEATURES,
getTitle: () => null, // Intentionally null, as this is a placeholder for all features.
getFeatures: () => [], // This is a placeholder for now. It will not be processed, but theoretically a reference to all the features.
},
[constants_1.FEATURE_GROUP_STORAGE]: {
slug: constants_1.FEATURE_GROUP_STORAGE,
getTitle: () => i18n_calypso_1.default.translate('Storage'),
getFeatures: () => [], // Intentionally empty for now. We will include a fixed list of feature slugs in a follow-up.
},
[constants_1.FEATURE_GROUP_ESSENTIAL_FEATURES]: {
slug: constants_1.FEATURE_GROUP_ESSENTIAL_FEATURES,
getTitle: () => i18n_calypso_1.default.translate('Essential features'),
getFeatures: () => [
constants_1.FEATURE_PAGES,
constants_1.FEATURE_USERS,
constants_1.FEATURE_POST_EDITS_HISTORY,
constants_1.FEATURE_ALWAYS_ONLINE,
constants_1.FEATURE_CUSTOM_DOMAIN,
constants_1.FEATURE_BANDWIDTH,
constants_1.FEATURE_STATS_JP,
constants_1.FEATURE_SUPPORT,
constants_1.FEATURE_PLUGINS_THEMES,
constants_1.FEATURE_PLUGIN_AUTOUPDATE_JP,
constants_1.FEATURE_CONTACT_FORM_JP,
constants_1.FEATURE_ES_SEARCH_JP,
constants_1.FEATURE_SMART_REDIRECTS,
],
},
[constants_1.FEATURE_GROUP_PERFORMANCE_BOOSTERS]: {
slug: constants_1.FEATURE_GROUP_PERFORMANCE_BOOSTERS,
getTitle: () => i18n_calypso_1.default.translate('Performance boosters'),
getFeatures: () => [
constants_1.FEATURE_FAST_DNS,
constants_1.FEATURE_BURST,
constants_1.FEATURE_CPUS,
constants_1.FEATURE_GLOBAL_EDGE_CACHING,
constants_1.FEATURE_CDN,
],
},
[constants_1.FEATURE_GROUP_HIGH_AVAILABILITY]: {
slug: constants_1.FEATURE_GROUP_HIGH_AVAILABILITY,
getTitle: () => i18n_calypso_1.default.translate('High Availability'),
getFeatures: () => [
constants_1.FEATURE_DATACENTRE_FAILOVER,
constants_1.FEATURE_ONE_CLICK_RESTORE_V2,
constants_1.FEATURE_REALTIME_BACKUPS_JP,
constants_1.FEATURE_UPTIME_MONITOR_JP,
],
},
[constants_1.FEATURE_GROUP_DEVELOPER_TOOLS]: {
slug: constants_1.FEATURE_GROUP_DEVELOPER_TOOLS,
getTitle: () => i18n_calypso_1.default.translate('Developer tools'),
getFeatures: () => [
constants_1.FEATURE_DEV_TOOLS,
constants_1.FEATURE_DEV_TOOLS_SSH,
constants_1.FEATURE_DEV_TOOLS_GIT,
constants_1.FEATURE_SITE_STAGING_SITES,
constants_1.FEATURE_MULTI_SITE,
constants_1.FEATURE_WP_UPDATES,
],
},
[constants_1.FEATURE_GROUP_SECURITY_AND_SAFETY]: {
slug: constants_1.FEATURE_GROUP_SECURITY_AND_SAFETY,
getTitle: () => i18n_calypso_1.default.translate('Security and safety'),
getFeatures: () => [
constants_1.FEATURE_SECURITY_BRUTE_FORCE,
constants_1.FEATURE_ISOLATED_INFRA,
constants_1.FEATURE_SPAM_JP,
constants_1.FEATURE_SECURITY_DDOS,
constants_1.FEATURE_SECURITY_MALWARE,
constants_1.FEATURE_WAF_V2,
constants_1.FEATURE_SITE_ACTIVITY_LOG_JP,
],
},
[constants_1.FEATURE_GROUP_THEMES_AND_CUSTOMIZATION]: {
slug: constants_1.FEATURE_GROUP_THEMES_AND_CUSTOMIZATION,
getTitle: () => i18n_calypso_1.default.translate('Design customization'),
getFeatures: () => [
constants_1.FEATURE_BEAUTIFUL_THEMES,
constants_1.FEATURE_STYLE_CUSTOMIZATION,
constants_1.FEATURE_PREMIUM_THEMES,
],
},
[constants_1.FEATURE_GROUP_SUPERIOR_COMMERCE_SOLUTIONS]: {
slug: constants_1.FEATURE_GROUP_SUPERIOR_COMMERCE_SOLUTIONS,
getTitle: () => i18n_calypso_1.default.translate('Commerce solutions'),
getFeatures: () => [
constants_1.FEATURE_PREMIUM_STORE_THEMES,
constants_1.FEATURE_STORE_DESIGN,
constants_1.FEATURE_UNLIMITED_PRODUCTS,
constants_1.FEATURE_DISPLAY_PRODUCTS_BRAND,
constants_1.FEATURE_PRODUCT_ADD_ONS,
constants_1.FEATURE_ASSEMBLED_KITS,
constants_1.FEATURE_MIN_MAX_ORDER_QUANTITY,
constants_1.FEATURE_STOCK_NOTIFS,
constants_1.FEATURE_DYNAMIC_UPSELLS,
constants_1.FEATURE_CUSTOM_MARKETING_AUTOMATION,
constants_1.FEATURE_BULK_DISCOUNTS,
constants_1.FEATURE_INVENTORY_MGMT,
constants_1.FEATURE_STREAMLINED_CHECKOUT,
constants_1.FEATURE_SELL_60_COUNTRIES,
constants_1.FEATURE_SHIPPING_INTEGRATIONS,
],
},
[constants_1.FEATURE_GROUP_MARKETING_GROWTH_AND_MONETIZATION_TOOLS]: {
slug: constants_1.FEATURE_GROUP_MARKETING_GROWTH_AND_MONETIZATION_TOOLS,
getTitle: () => i18n_calypso_1.default.translate('Growth and monetization tools'),
getFeatures: () => [
constants_1.FEATURE_AI_ASSISTANT,
constants_1.FEATURE_NEWSLETTERS_RSS,
constants_1.FEATURE_AD_FREE_EXPERIENCE,
constants_1.FEATURE_WORDADS,
constants_1.FEATURE_CONNECT_ANALYTICS,
constants_1.FEATURE_STATS_PAID,
constants_1.FEATURE_UNLTD_SOCIAL_MEDIA_JP,
constants_1.FEATURE_SEO_JP,
...(isUploadVideosTranslated() ? [constants_1.FEATURE_UPLOAD_VIDEO] : []),
constants_1.FEATURE_PREMIUM_CONTENT_JP,
constants_1.FEATURE_PAID_SUBSCRIBERS_JP,
constants_1.FEATURE_COMMISSION_FEE_STANDARD_FEATURES,
constants_1.FEATURE_COMMISSION_FEE_WOO_FEATURES,
constants_1.FEATURE_DONATIONS_AND_TIPS_JP,
constants_1.FEATURE_PAYMENT_BUTTONS_JP,
constants_1.FEATURE_PAYPAL_JP,
],
},
[constants_1.FEATURE_GROUP_YOUR_STORE]: {
slug: constants_1.FEATURE_GROUP_YOUR_STORE,
getTitle: () => i18n_calypso_1.default.translate('Your store'),
getFeatures: () => [
constants_1.FEATURE_WOOCOMMERCE_STORE,
constants_1.FEATURE_WOOCOMMERCE_MOBILE_APP,
constants_1.FEATURE_WORDPRESS_CMS,
constants_1.FEATURE_WORDPRESS_MOBILE_APP,
constants_1.FEATURE_CUSTOM_DOMAIN,
constants_1.FEATURE_FREE_SSL_CERTIFICATE,
constants_1.FEATURE_AUTOMATED_BACKUPS_SECURITY_SCAN,
constants_1.FEATURE_AD_FREE_EXPERIENCE,
constants_1.FEATURE_UNLIMITED_ADMINS,
constants_1.FEATURE_PRIORITY_24_7_SUPPORT,
constants_1.FEATURE_FAST_SUPPORT_FROM_EXPERTS,
constants_1.WPCOM_FEATURES_PREMIUM_THEMES_UNLIMITED,
constants_1.FEATURE_SALES_REPORTS,
constants_1.FEATURE_GOOGLE_ANALYTICS_V3,
],
},
/* START: WooExpress Feature Groups */
[constants_1.FEATURE_GROUP_PRODUCTS]: {
slug: constants_1.FEATURE_GROUP_PRODUCTS,
getTitle: () => i18n_calypso_1.default.translate('Products'),
getFeatures: () => [
constants_1.FEATURE_LIST_UNLIMITED_PRODUCTS,
constants_1.FEATURE_GIFT_CARDS,
constants_1.FEATURE_MIN_MAX_ORDER_QUANTITY,
constants_1.FEATURE_PRODUCT_BUNDLES,
constants_1.FEATURE_CUSTOM_PRODUCT_KITS,
constants_1.FEATURE_LIST_PRODUCTS_BY_BRAND,
constants_1.FEATURE_PRODUCT_RECOMMENDATIONS,
constants_1.FEATURE_AI_ASSISTED_PRODUCT_DESCRIPTION,
],
},
[constants_1.FEATURE_GROUP_PAYMENTS]: {
slug: constants_1.FEATURE_GROUP_PAYMENTS,
getTitle: () => i18n_calypso_1.default.translate('Payments'),
getFeatures: () => [
constants_1.FEATURE_INTEGRATED_PAYMENTS,
constants_1.FEATURE_INTERNATIONAL_PAYMENTS,
constants_1.FEATURE_AUTOMATED_SALES_TAXES,
constants_1.FEATURE_ACCEPT_LOCAL_PAYMENTS,
constants_1.FEATURE_RECURRING_PAYMENTS,
],
getFootnotes: () => ({
[i18n_calypso_1.default.translate('Available as standard in WooCommerce Payments (restrictions apply). Additional extensions may be required for other payment providers.')]: [
constants_1.FEATURE_INTERNATIONAL_PAYMENTS,
constants_1.FEATURE_ACCEPT_LOCAL_PAYMENTS,
constants_1.FEATURE_RECURRING_PAYMENTS,
],
}),
},
[constants_1.FEATURE_GROUP_MARKETING_EMAIL]: {
slug: constants_1.FEATURE_GROUP_MARKETING_EMAIL,
getTitle: () => i18n_calypso_1.default.translate('Marketing & Email'),
getFeatures: () => [
constants_1.FEATURE_PROMOTE_ON_TIKTOK,
constants_1.FEATURE_SYNC_WITH_PINTEREST,
constants_1.FEATURE_CONNECT_WITH_FACEBOOK,
constants_1.FEATURE_BACK_IN_STOCK_NOTIFICATIONS,
constants_1.FEATURE_MARKETING_AUTOMATION,
constants_1.FEATURE_ABANDONED_CART_RECOVERY,
constants_1.FEATURE_ADVANCED_SEO_TOOLS,
constants_1.FEATURE_ADVERTISE_ON_GOOGLE,
constants_1.FEATURE_REFERRAL_PROGRAMS,
constants_1.FEATURE_CUSTOMER_BIRTHDAY_EMAILS,
constants_1.FEATURE_CUSTOM_ORDER_EMAILS,
constants_1.FEATURE_LOYALTY_POINTS_PROGRAMS,
],
},
[constants_1.FEATURE_GROUP_SHIPPING]: {
slug: constants_1.FEATURE_GROUP_SHIPPING,
getTitle: () => i18n_calypso_1.default.translate('Shipping'),
getFeatures: () => [
constants_1.FEATURE_INTEGRATED_SHIPMENT_TRACKING,
constants_1.FEATURE_LIVE_SHIPPING_RATES,
constants_1.FEATURE_DISCOUNTED_SHIPPING,
constants_1.FEATURE_PRINT_SHIPPING_LABELS,
],
getFootnotes: () => ({
[i18n_calypso_1.default.translate('Only available in the U.S. – an additional extension will be required for other countries.')]: [constants_1.FEATURE_DISCOUNTED_SHIPPING, constants_1.FEATURE_PRINT_SHIPPING_LABELS],
}),
},
[constants_1.FEATURE_GROUP_DOMAIN]: {
slug: constants_1.FEATURE_GROUP_DOMAIN,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_CUSTOM_DOMAIN],
},
[constants_1.FEATURE_GROUP_SUPPORT]: {
slug: constants_1.FEATURE_GROUP_SUPPORT,
getTitle: () => null,
getFeatures: () => [
constants_1.FEATURE_SUPPORT_FROM_EXPERTS,
constants_1.FEATURE_FAST_SUPPORT_FROM_EXPERTS,
constants_1.FEATURE_PRIORITY_24_7_SUPPORT,
],
},
[constants_1.FEATURE_GROUP_THEMES]: {
slug: constants_1.FEATURE_GROUP_THEMES,
getTitle: () => null,
getFeatures: () => [
constants_1.FEATURE_BEAUTIFUL_THEMES,
constants_1.FEATURE_PREMIUM_THEMES,
constants_1.FEATURE_THEMES_PREMIUM_AND_STORE,
constants_1.WPCOM_FEATURES_PREMIUM_THEMES_UNLIMITED,
constants_1.WPCOM_FEATURES_PREMIUM_THEMES_LIMITED,
],
},
[constants_1.FEATURE_GROUP_BIG_SKY]: {
slug: constants_1.FEATURE_GROUP_BIG_SKY,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_BIG_SKY_WEBSITE_BUILDER],
},
[constants_1.FEATURE_GROUP_ENTITIES]: {
slug: constants_1.FEATURE_GROUP_ENTITIES,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_UNLIMITED_ENTITIES],
},
[constants_1.FEATURE_GROUP_UPLOAD_VIDEOS]: {
slug: constants_1.FEATURE_GROUP_UPLOAD_VIDEOS,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_UPLOAD_VIDEO],
},
[constants_1.FEATURE_GROUP_STATS]: {
slug: constants_1.FEATURE_GROUP_STATS,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_STATS_BASIC_20250206, constants_1.FEATURE_STATS_ADVANCED_20250206],
},
[constants_1.FEATURE_GROUP_ADS]: {
slug: constants_1.FEATURE_GROUP_ADS,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_AD_FREE_EXPERIENCE],
},
[constants_1.FEATURE_GROUP_CUSTOMIZE_STYLE]: {
slug: constants_1.FEATURE_GROUP_CUSTOMIZE_STYLE,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_STYLE_CUSTOMIZATION],
},
[constants_1.FEATURE_GROUP_ANALYTICS]: {
slug: constants_1.FEATURE_GROUP_ANALYTICS,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_CONNECT_ANALYTICS],
},
[constants_1.FEATURE_GROUP_WOO]: {
slug: constants_1.FEATURE_GROUP_WOO,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_WOOCOMMERCE_HOSTING],
},
[constants_1.FEATURE_GROUP_CUSTOM_PLUGINS]: {
slug: constants_1.FEATURE_GROUP_CUSTOM_PLUGINS,
getTitle: () => null,
getFeatures: () => [constants_1.FEATURE_UPLOAD_PLUGINS],
},
[constants_1.FEATURE_GROUP_DEV_TOOLS]: {
slug: constants_1.FEATURE_GROUP_DEV_TOOLS,
getTitle: () => null,
getFeatures: () => [
constants_1.FEATURE_DEV_TOOLS,
constants_1.FEATURE_SITE_STAGING_SITES,
constants_1.FEATURE_MULTI_SITE,
constants_1.FEATURE_WP_UPDATES,
],
},
};
function resolveFeatureGroupsForFeaturesGrid({ showSimplifiedFeatures, } = {}) {
if (showSimplifiedFeatures) {
return {
[constants_1.FEATURE_GROUP_STORAGE]: exports.featureGroups[constants_1.FEATURE_GROUP_STORAGE],
[constants_1.FEATURE_GROUP_BIG_SKY]: exports.featureGroups[constants_1.FEATURE_GROUP_BIG_SKY],
[constants_1.FEATURE_GROUP_ENTITIES]: exports.featureGroups[constants_1.FEATURE_GROUP_ENTITIES],
[constants_1.FEATURE_GROUP_DOMAIN]: exports.featureGroups[constants_1.FEATURE_GROUP_DOMAIN],
[constants_1.FEATURE_GROUP_ADS]: exports.featureGroups[constants_1.FEATURE_GROUP_ADS],
[constants_1.FEATURE_GROUP_THEMES]: exports.featureGroups[constants_1.FEATURE_GROUP_THEMES],
[constants_1.FEATURE_GROUP_SUPPORT]: exports.featureGroups[constants_1.FEATURE_GROUP_SUPPORT],
...(isStatsGroupTranslated() && {
[constants_1.FEATURE_GROUP_STATS]: exports.featureGroups[constants_1.FEATURE_GROUP_STATS],
}),
[constants_1.FEATURE_GROUP_CUSTOMIZE_STYLE]: exports.featureGroups[constants_1.FEATURE_GROUP_CUSTOMIZE_STYLE],
[constants_1.FEATURE_GROUP_ANALYTICS]: exports.featureGroups[constants_1.FEATURE_GROUP_ANALYTICS],
...(isUploadVideosTranslated() && {
[constants_1.FEATURE_GROUP_UPLOAD_VIDEOS]: exports.featureGroups[constants_1.FEATURE_GROUP_UPLOAD_VIDEOS],
}),
[constants_1.FEATURE_GROUP_CUSTOM_PLUGINS]: exports.featureGroups[constants_1.FEATURE_GROUP_CUSTOM_PLUGINS],
[constants_1.FEATURE_GROUP_DEV_TOOLS]: exports.featureGroups[constants_1.FEATURE_GROUP_DEV_TOOLS],
[constants_1.FEATURE_GROUP_WOO]: exports.featureGroups[constants_1.FEATURE_GROUP_WOO],
};
}
return {
[constants_1.FEATURE_GROUP_ALL_FEATURES]: exports.featureGroups[constants_1.FEATURE_GROUP_ALL_FEATURES],
[constants_1.FEATURE_GROUP_STORAGE]: exports.featureGroups[constants_1.FEATURE_GROUP_STORAGE],
};
}
function resolveFeatureGroupsForComparisonGrid() {
return {
[constants_1.FEATURE_GROUP_ESSENTIAL_FEATURES]: exports.featureGroups[constants_1.FEATURE_GROUP_ESSENTIAL_FEATURES],
[constants_1.FEATURE_GROUP_PERFORMANCE_BOOSTERS]: exports.featureGroups[constants_1.FEATURE_GROUP_PERFORMANCE_BOOSTERS],
[constants_1.FEATURE_GROUP_HIGH_AVAILABILITY]: exports.featureGroups[constants_1.FEATURE_GROUP_HIGH_AVAILABILITY],
[constants_1.FEATURE_GROUP_DEVELOPER_TOOLS]: exports.featureGroups[constants_1.FEATURE_GROUP_DEVELOPER_TOOLS],
[constants_1.FEATURE_GROUP_SECURITY_AND_SAFETY]: exports.featureGroups[constants_1.FEATURE_GROUP_SECURITY_AND_SAFETY],
[constants_1.FEATURE_GROUP_THEMES_AND_CUSTOMIZATION]: exports.featureGroups[constants_1.FEATURE_GROUP_THEMES_AND_CUSTOMIZATION],
[constants_1.FEATURE_GROUP_SUPERIOR_COMMERCE_SOLUTIONS]: exports.featureGroups[constants_1.FEATURE_GROUP_SUPERIOR_COMMERCE_SOLUTIONS],
[constants_1.FEATURE_GROUP_MARKETING_GROWTH_AND_MONETIZATION_TOOLS]: exports.featureGroups[constants_1.FEATURE_GROUP_MARKETING_GROWTH_AND_MONETIZATION_TOOLS],
[constants_1.FEATURE_GROUP_STORAGE]: exports.featureGroups[constants_1.FEATURE_GROUP_STORAGE],
};
}
function resolveWooExpressFeatureGroupsForComparisonGrid() {
return {
[constants_1.FEATURE_GROUP_YOUR_STORE]: exports.featureGroups[constants_1.FEATURE_GROUP_YOUR_STORE],
[constants_1.FEATURE_GROUP_PRODUCTS]: exports.featureGroups[constants_1.FEATURE_GROUP_PRODUCTS],
[constants_1.FEATURE_GROUP_PAYMENTS]: exports.featureGroups[constants_1.FEATURE_GROUP_PAYMENTS],
[constants_1.FEATURE_GROUP_MARKETING_EMAIL]: exports.featureGroups[constants_1.FEATURE_GROUP_MARKETING_EMAIL],
[constants_1.FEATURE_GROUP_SHIPPING]: exports.featureGroups[constants_1.FEATURE_GROUP_SHIPPING],
};
}
//# sourceMappingURL=feature-group-plan-map.js.map