editia-core
Version:
Core services and utilities for Editia applications - Authentication, Monetization, Video Generation Types, and Database Management
151 lines • 6.18 kB
JavaScript
"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.ACTIONS.VIDEO_GENERATION,
[]: exports.ACTIONS.SOURCE_VIDEO_UPLOAD,
[]: exports.ACTIONS.VOICE_CLONE,
[]: exports.ACTIONS.ACCOUNT_ANALYSIS,
[]: exports.ACTIONS.ACCOUNT_INSIGHTS,
[]: exports.ACTIONS.SCRIPT_CONVERSATIONS,
[]: exports.ACTIONS.SCRIPT_CONVERSATIONS, // Same action as conversations
[]: exports.ACTIONS.SCRIPT_CONVERSATIONS, // Chat AI uses script conversations
[]: exports.ACTIONS.ACCOUNT_CHAT,
};
/**
* Maps actions to their corresponding usage fields
*/
exports.ACTION_TO_USAGE_FIELD_MAP = {
[]: exports.USAGE_FIELDS.VIDEOS_GENERATED,
[]: exports.USAGE_FIELDS.SOURCE_VIDEOS_USED,
[]: exports.USAGE_FIELDS.VOICE_CLONES_USED,
[]: exports.USAGE_FIELDS.ACCOUNT_ANALYSIS_USED,
[]: exports.USAGE_FIELDS.ACCOUNT_INSIGHTS_USED,
[]: exports.USAGE_FIELDS.SCRIPT_CONVERSATIONS_USED,
[]: exports.USAGE_FIELDS.ACCOUNT_CHAT_USED,
};
/**
* Maps features to their corresponding usage fields
*/
exports.FEATURE_TO_USAGE_FIELD_MAP = {
[]: exports.USAGE_FIELDS.VIDEOS_GENERATED,
[]: exports.USAGE_FIELDS.SOURCE_VIDEOS_USED,
[]: exports.USAGE_FIELDS.VOICE_CLONES_USED,
[]: exports.USAGE_FIELDS.ACCOUNT_ANALYSIS_USED,
[]: exports.USAGE_FIELDS.ACCOUNT_INSIGHTS_USED,
[]: exports.USAGE_FIELDS.ACCOUNT_CHAT_USED,
[]: exports.USAGE_FIELDS.SCRIPT_CONVERSATIONS_USED,
[]: exports.USAGE_FIELDS.SCRIPT_CONVERSATIONS_USED,
[]: 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