UNPKG

editia-core

Version:

Core services and utilities for Editia applications - Authentication, Monetization, Video Generation Types, and Database Management

151 lines 6.18 kB
"use strict"; /** * Monetization types for Editia Core * * This file defines strict types for all monetization-related concepts: * - Feature identifiers * - Action types * - Usage tracking * - Plan management */ Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidUsageField = exports.isValidAction = exports.isValidFeatureId = exports.getUsageFieldForFeature = exports.getUsageFieldForAction = exports.getActionForFeature = exports.FEATURE_TO_USAGE_FIELD_MAP = exports.ACTION_TO_USAGE_FIELD_MAP = exports.FEATURE_TO_ACTION_MAP = exports.USAGE_FIELDS = exports.ACTIONS = exports.FEATURES = void 0; // ============================================================================ // CORE TYPES // ============================================================================ /** * All available features in the system */ exports.FEATURES = { // Video generation features VIDEO_GENERATION: 'video_generation', SOURCE_VIDEOS: 'source_videos', // Voice features VOICE_CLONE: 'voice_clone', // Analysis features ACCOUNT_ANALYSIS: 'account_analysis', ACCOUNT_INSIGHTS: 'account_insights', ACCOUNT_CHAT: 'account_chat', // Script features SCRIPT_CONVERSATIONS: 'script_conversations', SCRIPT_GENERATION: 'script_generation', // Chat features CHAT_AI: 'chat_ai', }; /** * All available actions that can be performed */ exports.ACTIONS = { // Video actions VIDEO_GENERATION: 'video_generation', SOURCE_VIDEO_UPLOAD: 'source_video_upload', // Voice actions VOICE_CLONE: 'voice_clone', // Analysis actions ACCOUNT_ANALYSIS: 'account_analysis', ACCOUNT_INSIGHTS: 'account_insights', ACCOUNT_CHAT: 'account_chat', // Script actions SCRIPT_CONVERSATIONS: 'script_conversations', }; /** * Usage tracking fields in the database */ exports.USAGE_FIELDS = { VIDEOS_GENERATED: 'videos_generated', SOURCE_VIDEOS_USED: 'source_videos_used', VOICE_CLONES_USED: 'voice_clones_used', ACCOUNT_ANALYSIS_USED: 'account_analysis_used', ACCOUNT_INSIGHTS_USED: 'account_insights_used', SCRIPT_CONVERSATIONS_USED: 'script_conversations_used', ACCOUNT_CHAT_USED: 'account_chat_used', }; // ============================================================================ // MAPPING TYPES // ============================================================================ /** * Maps features to their corresponding actions */ exports.FEATURE_TO_ACTION_MAP = { [exports.FEATURES.VIDEO_GENERATION]: exports.ACTIONS.VIDEO_GENERATION, [exports.FEATURES.SOURCE_VIDEOS]: exports.ACTIONS.SOURCE_VIDEO_UPLOAD, [exports.FEATURES.VOICE_CLONE]: exports.ACTIONS.VOICE_CLONE, [exports.FEATURES.ACCOUNT_ANALYSIS]: exports.ACTIONS.ACCOUNT_ANALYSIS, [exports.FEATURES.ACCOUNT_INSIGHTS]: exports.ACTIONS.ACCOUNT_INSIGHTS, [exports.FEATURES.SCRIPT_CONVERSATIONS]: exports.ACTIONS.SCRIPT_CONVERSATIONS, [exports.FEATURES.SCRIPT_GENERATION]: exports.ACTIONS.SCRIPT_CONVERSATIONS, // Same action as conversations [exports.FEATURES.CHAT_AI]: exports.ACTIONS.SCRIPT_CONVERSATIONS, // Chat AI uses script conversations [exports.FEATURES.ACCOUNT_CHAT]: exports.ACTIONS.ACCOUNT_CHAT, }; /** * Maps actions to their corresponding usage fields */ exports.ACTION_TO_USAGE_FIELD_MAP = { [exports.ACTIONS.VIDEO_GENERATION]: exports.USAGE_FIELDS.VIDEOS_GENERATED, [exports.ACTIONS.SOURCE_VIDEO_UPLOAD]: exports.USAGE_FIELDS.SOURCE_VIDEOS_USED, [exports.ACTIONS.VOICE_CLONE]: exports.USAGE_FIELDS.VOICE_CLONES_USED, [exports.ACTIONS.ACCOUNT_ANALYSIS]: exports.USAGE_FIELDS.ACCOUNT_ANALYSIS_USED, [exports.ACTIONS.ACCOUNT_INSIGHTS]: exports.USAGE_FIELDS.ACCOUNT_INSIGHTS_USED, [exports.ACTIONS.SCRIPT_CONVERSATIONS]: exports.USAGE_FIELDS.SCRIPT_CONVERSATIONS_USED, [exports.ACTIONS.ACCOUNT_CHAT]: exports.USAGE_FIELDS.ACCOUNT_CHAT_USED, }; /** * Maps features to their corresponding usage fields */ exports.FEATURE_TO_USAGE_FIELD_MAP = { [exports.FEATURES.VIDEO_GENERATION]: exports.USAGE_FIELDS.VIDEOS_GENERATED, [exports.FEATURES.SOURCE_VIDEOS]: exports.USAGE_FIELDS.SOURCE_VIDEOS_USED, [exports.FEATURES.VOICE_CLONE]: exports.USAGE_FIELDS.VOICE_CLONES_USED, [exports.FEATURES.ACCOUNT_ANALYSIS]: exports.USAGE_FIELDS.ACCOUNT_ANALYSIS_USED, [exports.FEATURES.ACCOUNT_INSIGHTS]: exports.USAGE_FIELDS.ACCOUNT_INSIGHTS_USED, [exports.FEATURES.ACCOUNT_CHAT]: exports.USAGE_FIELDS.ACCOUNT_CHAT_USED, [exports.FEATURES.SCRIPT_CONVERSATIONS]: exports.USAGE_FIELDS.SCRIPT_CONVERSATIONS_USED, [exports.FEATURES.SCRIPT_GENERATION]: exports.USAGE_FIELDS.SCRIPT_CONVERSATIONS_USED, [exports.FEATURES.CHAT_AI]: exports.USAGE_FIELDS.SCRIPT_CONVERSATIONS_USED, }; // ============================================================================ // UTILITY FUNCTIONS // ============================================================================ /** * Get the action corresponding to a feature */ function getActionForFeature(featureId) { return exports.FEATURE_TO_ACTION_MAP[featureId]; } exports.getActionForFeature = getActionForFeature; /** * Get the usage field corresponding to an action */ function getUsageFieldForAction(action) { return exports.ACTION_TO_USAGE_FIELD_MAP[action]; } exports.getUsageFieldForAction = getUsageFieldForAction; /** * Get the usage field corresponding to a feature */ function getUsageFieldForFeature(featureId) { return exports.FEATURE_TO_USAGE_FIELD_MAP[featureId]; } exports.getUsageFieldForFeature = getUsageFieldForFeature; /** * Check if a string is a valid feature ID */ function isValidFeatureId(value) { return Object.values(exports.FEATURES).includes(value); } exports.isValidFeatureId = isValidFeatureId; /** * Check if a string is a valid action */ function isValidAction(value) { return Object.values(exports.ACTIONS).includes(value); } exports.isValidAction = isValidAction; /** * Check if a string is a valid usage field */ function isValidUsageField(value) { return Object.values(exports.USAGE_FIELDS).includes(value); } exports.isValidUsageField = isValidUsageField; //# sourceMappingURL=monetization.js.map