{"version":3,"sources":["../../src/math/constants.ts","../../src/notifications/constants.ts"],"names":["NUMBER_SYSTEM","SIZE_25_MB","SIZE_30_MB","DEFAULT_NOTIFICATION_CATEGORY","NOTIFICATION_CATEGORIES","RETRY_CONFIG","ATTACHMENT_CONFIG","CIRCUIT_BREAKER_CONFIG","QUEUE_CONFIG","RATE_LIMIT_CONFIG","TEMPLATE_CONFIG","SMS_CONFIG","NOTIFICATION_CONFIG","LOGGING_CONFIG","HEALTH_CHECK_CONFIG","NOTIFICATION_PACKAGE_CONFIG"],"mappings":";AAYO,IAAMA,CAAAA,CAAgB,CAsF3B,YAAA,CAAc,OAsIhB,CAAA,CCxNA,IAAMC,CAAAA,CAAa,EAAA,CACbC,CAAAA,CAAa,EAAA,CAMNC,CAAAA,CAAgCC,6BAAAA,CAAwB,aAAA,CAKxDC,CAAAA,CAAe,CAK1B,oBAAA,CAAsB,CAAA,CAMtB,wBAAA,CAA0B,GAAA,CAM1B,YAAA,CAAc,GAAA,CAMd,kBAAA,CAAoB,CACtB,CAAA,CAKaC,CAAAA,CAAoB,CAI/B,uBAAA,CAAyB,EAAA,CAMzB,+BAAA,CAAiCL,CAAAA,CAAaD,CAAAA,CAAc,YAAA,CAM5D,sBAAA,CAAwBC,CAAAA,CAAaD,CAAAA,CAAc,aAMnD,iBAAA,CAAmBE,CAAAA,CAAaF,CAAAA,CAAc,YAAA,CAM9C,uBAAA,CAAyBE,CAAAA,CAAaF,CAAAA,CAAc,YAAA,CAMpD,gBAAA,CAAkBE,CAAAA,CAAaF,CAAAA,CAAc,YAAA,CAM7C,sBAAA,CAAwBE,CAAAA,CAAaF,CAAAA,CAAc,YAAA,CAKnD,oBAAA,CAAsB,GAAA,CAKtB,qBAAA,CAAuB,CACzB,CAAA,CAKaO,CAAAA,CAAyB,CAKpC,yBAAA,CAA2B,CAAA,CAM3B,kBAAA,CAAoB,GAAA,CAMpB,yBAAA,CAA2B,CAC7B,CAAA,CAKaC,CAAAA,CAAe,CAI1B,gBAAA,CAAkB,GAAA,CAKlB,mBAAA,CAAqB,CAAA,CAKrB,8BAAA,CAAgC,GAClC,CAAA,CAKaC,CAAAA,CAAoB,CAI/B,2BAAA,CAA6B,EAAA,CAM7B,uBAAA,CAAyB,EAAA,CAKzB,iBAAA,CAAmB,GACrB,CAAA,CAKaC,CAAAA,CAAkB,CAI7B,cAAA,CAAgB,IAAA,CAKhB,eAAA,CAAiB,IAAA,CAMjB,YAAA,CAAc,GAAA,CAKd,iBAAA,CAAmBV,CAAAA,CAAc,YACnC,CAAA,CAMaW,CAAAA,CAAa,CAKxB,0BAA2B,GAAA,CAM3B,6BAAA,CAA+B,GAAA,CAM/B,yBAAA,CAA2B,EAAA,CAM3B,6BAAA,CAA+B,EAAA,CAM/B,oBAAA,CAAsB,EAAA,CAMtB,4BAAA,CAA8B,EAChC,CAAA,CAKaC,CAAAA,CAAsB,CAIjC,gBAAA,CAAkB,QAAA,CAKlB,kBAAA,CAAoB,GAAA,CAKpB,qBAAA,CAAuB,GAAA,CAKvB,oBAAA,CAAsB,GACxB,CAAA,CAKaC,CAAAA,CAAiB,CAI5B,aAAA,CAAe,MAAA,CAMf,YAAA,CAAc,GAChB,CAAA,CAKaC,CAAAA,CAAsB,CAIjC,mBAAA,CAAqB,GAAA,CAKrB,kBAAA,CAAoB,GAAA,CAMpB,yBAAA,CAA2B,GAC7B,CAAA,CAKaC,CAAAA,CAA8B,CACzC,KAAA,CAAOV,CAAAA,CACP,UAAA,CAAYC,CAAAA,CACZ,eAAA,CAAiBC,CAAAA,CACjB,KAAA,CAAOC,CAAAA,CACP,UAAA,CAAYC,CAAAA,CACZ,QAAA,CAAUC,CAAAA,CACV,GAAA,CAAKC,CAAAA,CACL,YAAA,CAAcC,CAAAA,CACd,OAAA,CAASC,CAAAA,CACT,YAAA,CAAcC,CAChB","file":"index.cjs","sourcesContent":["/**\n * Mathematical Constants\n *\n * Common mathematical values, number system bases, and calculation constants\n * used throughout the application for various computations.\n *\n * @module math/constants\n */\n\n/**\n * Number system base constants\n */\nexport const NUMBER_SYSTEM = {\n  // Number bases\n  /**\n   * Base 2 - Binary number system\n   */\n  BINARY_BASE: 2,\n\n  /**\n   * Base 8 - Octal number system\n   */\n  OCTAL_BASE: 8,\n\n  /**\n   * Base 10 - Decimal number system\n   */\n  DECIMAL_BASE: 10,\n\n  /**\n   * Base 12 - Duodecimal number system\n   */\n  DUODECIMAL_BASE: 12,\n\n  /**\n   * Base 16 - Hexadecimal number system\n   */\n  HEX_BASE: 16,\n\n  /**\n   * Base 32 - Base32 encoding\n   */\n  BASE32: 32,\n\n  /**\n   * Base 36 - Alphanumeric number system (0-9, a-z)\n   */\n  BASE36: 36,\n\n  /**\n   * Base 58 - Bitcoin base58 encoding (excludes similar looking characters)\n   */\n  BASE58: 58,\n\n  /**\n   * Base 62 - Alphanumeric with uppercase (0-9, a-z, A-Z)\n   */\n  BASE62: 62,\n\n  /**\n   * Base 64 - Base64 encoding\n   */\n  BASE64: 64,\n\n  // Formatting and padding\n  /**\n   * Default padding length for hexadecimal values (e.g., \"0F\" instead of \"F\")\n   */\n  HEX_PAD_LENGTH: 2,\n\n  /**\n   * Padding length for RGB hex colors (6 characters)\n   */\n  HEX_COLOR_LENGTH: 6,\n\n  /**\n   * Padding length for RGBA hex colors with alpha (8 characters)\n   */\n  HEX_COLOR_ALPHA_LENGTH: 8,\n\n  /**\n   * Standard byte size in bits\n   */\n  BITS_PER_BYTE: 8,\n\n  /**\n   * Standard nibble size in bits (half byte)\n   */\n  BITS_PER_NIBBLE: 4,\n\n  /**\n   * Number of bytes in a kilobyte (binary)\n   */\n  BYTES_PER_KB: 1024,\n\n  /**\n   * Number of bytes in a megabyte (binary)\n   */\n  BYTES_PER_MB: 1048576,\n\n  /**\n   * Number of bytes in a gigabyte (binary)\n   */\n  BYTES_PER_GB: 1073741824,\n\n  // Precision and rounding\n  /**\n   * Default decimal places for currency\n   */\n  CURRENCY_DECIMAL_PLACES: 2,\n\n  /**\n   * Default decimal places for percentages\n   */\n  PERCENTAGE_DECIMAL_PLACES: 2,\n\n  /**\n   * Default decimal places for coordinates\n   */\n  COORDINATE_DECIMAL_PLACES: 6,\n\n  /**\n   * Maximum safe integer in JavaScript\n   */\n  MAX_SAFE_INTEGER: 9007199254740991,\n\n  /**\n   * Minimum safe integer in JavaScript\n   */\n  MIN_SAFE_INTEGER: -9007199254740991,\n\n  /**\n   * Maximum 32-bit signed integer\n   */\n  MAX_INT32: 2147483647,\n\n  /**\n   * Minimum 32-bit signed integer\n   */\n  MIN_INT32: -2147483648,\n\n  /**\n   * Maximum 16-bit unsigned integer\n   */\n  MAX_UINT16: 65535,\n\n  /**\n   * Maximum 8-bit unsigned integer\n   */\n  MAX_UINT8: 255,\n\n  // Common angles in degrees\n  /**\n   * Full circle in degrees\n   */\n  DEGREES_FULL_CIRCLE: 360,\n\n  /**\n   * Half circle in degrees\n   */\n  DEGREES_HALF_CIRCLE: 180,\n\n  /**\n   * Quarter circle in degrees (right angle)\n   */\n  DEGREES_RIGHT_ANGLE: 90,\n\n  /**\n   * Degrees in a radian\n   */\n  DEGREES_PER_RADIAN: 57.29577951308232,\n\n  /**\n   * Radians in a degree\n   */\n  RADIANS_PER_DEGREE: 0.017453292519943295,\n\n  // Mathematical constants\n  /**\n   * Pi (π)\n   */\n  PI: 3.141592653589793,\n\n  /**\n   * Two times Pi (2π) - full circle in radians\n   */\n  TWO_PI: 6.283185307179586,\n\n  /**\n   * Half Pi (π/2) - quarter circle in radians\n   */\n  HALF_PI: 1.5707963267948966,\n\n  /**\n   * Euler's number (e)\n   */\n  E: 2.718281828459045,\n\n  /**\n   * Golden ratio (φ)\n   */\n  GOLDEN_RATIO: 1.618033988749895,\n\n  /**\n   * Square root of 2\n   */\n  SQRT2: 1.4142135623730951,\n\n  /**\n   * Square root of 3\n   */\n  SQRT3: 1.7320508075688772,\n\n  /**\n   * Natural logarithm of 2\n   */\n  LN2: 0.6931471805599453,\n\n  /**\n   * Natural logarithm of 10\n   */\n  LN10: 2.302585092994046,\n\n  /**\n   * Base 2 logarithm of E\n   */\n  LOG2E: 1.4426950408889634,\n\n  /**\n   * Base 10 logarithm of E\n   */\n  LOG10E: 0.4342944819032518,\n} as const;\n\n/**\n * Mathematical and percentage constants\n */\nexport const MATH_CONSTANTS = {\n  /**\n   * Maximum percentage value\n   */\n  PERCENTAGE_MAX: 100,\n\n  /**\n   * Half value (50%)\n   */\n  HALF: 0.5,\n\n  /**\n   * One tenth (10%)\n   */\n  TENTH: 0.1,\n\n  /**\n   * One twentieth (5%)\n   */\n  TWENTIETH: 0.05,\n\n  /**\n   * 95th percentile\n   */\n  PERCENT_95: 0.95,\n\n  /**\n   * 99th percentile\n   */\n  PERCENT_99: 0.99,\n\n  /**\n   * Threshold for quadratic algorithm detection\n   */\n  QUADRATIC_THRESHOLD: 1.5,\n\n  /**\n   * Threshold for exponential algorithm detection\n   */\n  EXPONENTIAL_THRESHOLD: 3,\n\n  /**\n   * Multiplier for variance calculations\n   */\n  VARIANCE_MULTIPLIER: 4,\n\n  /**\n   * Offset for variance calculations\n   */\n  VARIANCE_OFFSET: 2,\n} as const;\n\n/**\n * Common numeric multipliers for calculations\n */\nexport const MULTIPLIERS = {\n  /**\n   * One and a half times (1.5x)\n   */\n  ONE_AND_HALF: 1.5,\n\n  /**\n   * Double (2x)\n   */\n  DOUBLE: 2,\n\n  /**\n   * Triple (3x)\n   */\n  TRIPLE: 3,\n\n  /**\n   * Quadruple (4x)\n   */\n  QUADRUPLE: 4,\n\n  /**\n   * Quintuple (5x)\n   */\n  QUINTUPLE: 5,\n\n  /**\n   * Ten times (10x)\n   */\n  TEN: 10,\n} as const;\n\n/**\n * Common numeric constants for general use\n */\nexport const NUMERIC_CONSTANTS = {\n  /**\n   * Milliseconds in one second\n   */\n  MILLISECONDS_PER_SECOND: 1000,\n\n  /**\n   * Seconds in one minute\n   */\n  SECONDS_PER_MINUTE: 60,\n\n  /**\n   * Minutes in one hour\n   */\n  MINUTES_PER_HOUR: 60,\n\n  /**\n   * Hours in one day\n   */\n  HOURS_PER_DAY: 24,\n\n  /**\n   * Negative one (-1)\n   */\n  NEGATIVE_ONE: -1,\n\n  /**\n   * Zero (0)\n   */\n  ZERO: 0,\n\n  /**\n   * One (1)\n   */\n  ONE: 1,\n\n  /**\n   * Two (2)\n   */\n  TWO: 2,\n\n  /**\n   * Three (3)\n   */\n  THREE: 3,\n\n  /**\n   * Five (5)\n   */\n  FIVE: 5,\n\n  /**\n   * Ten (10)\n   */\n  TEN: 10,\n  /**\n   * One hour in seconds (3600)\n   */\n  ONE_HOUR_SECONDS: 3600,\n  /**\n   * Minimum pool size (1)\n   */\n  MIN_POOL_SIZE: 1,\n  /**\n   * Maximum pool size (100)\n   */\n  MAX_POOL_SIZE: 100,\n  /**\n   * Minimum timeout in milliseconds (1000)\n   */\n  MIN_TIMEOUT_MS: 1000,\n} as const;\n\n/**\n * Type for number system values\n */\nexport type NumberSystemBase = (typeof NUMBER_SYSTEM)[keyof typeof NUMBER_SYSTEM];\n\n/**\n * Type for math constant values\n */\nexport type MathConstant = (typeof MATH_CONSTANTS)[keyof typeof MATH_CONSTANTS];\n\n/**\n * Type for multiplier values\n */\nexport type Multiplier = (typeof MULTIPLIERS)[keyof typeof MULTIPLIERS];\n\n/**\n * Type for numeric constant values\n */\nexport type NumericConstant = (typeof NUMERIC_CONSTANTS)[keyof typeof NUMERIC_CONSTANTS];\n","/**\n * Notification Configuration Constants\n *\n * Default configuration values for the notifications system.\n * These can be overridden at runtime through configuration objects.\n *\n * @module src/notifications/constants\n */\n\n// Import type-level constants from @plyaz/types\nimport { NOTIFICATION_CATEGORIES } from '@plyaz/types';\n\n// Import byte calculation constants from @plyaz/config/math\nimport { NUMBER_SYSTEM } from '../math/constants';\n\n// Common size values in MB\nconst SIZE_25_MB = 25;\nconst SIZE_30_MB = 30;\n\n/**\n * Default notification category\n * Safest default for compliance - transactional emails must always be sent\n */\nexport const DEFAULT_NOTIFICATION_CATEGORY = NOTIFICATION_CATEGORIES.TRANSACTIONAL;\n\n/**\n * Retry Configuration\n */\nexport const RETRY_CONFIG = {\n  /**\n   * Default maximum number of retry attempts\n   * Used when no specific retry count is provided\n   */\n  DEFAULT_MAX_ATTEMPTS: 3,\n\n  /**\n   * Default initial delay between retries (milliseconds)\n   * Used for exponential backoff calculation\n   */\n  DEFAULT_INITIAL_DELAY_MS: 1000,\n\n  /**\n   * Maximum delay between retries (milliseconds)\n   * Prevents exponential backoff from growing too large\n   */\n  MAX_DELAY_MS: 30000,\n\n  /**\n   * Backoff multiplier for exponential backoff\n   * Each retry delay = previous delay * multiplier\n   */\n  BACKOFF_MULTIPLIER: 2,\n} as const;\n\n/**\n * Attachment Configuration\n */\nexport const ATTACHMENT_CONFIG = {\n  /**\n   * Default maximum number of attachments per notification\n   */\n  DEFAULT_MAX_ATTACHMENTS: 10,\n\n  /**\n   * Default maximum size per attachment (bytes)\n   * 25MB - Common limit across providers\n   */\n  DEFAULT_MAX_SIZE_PER_ATTACHMENT: SIZE_25_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Default maximum total size of all attachments (bytes)\n   * 25MB - Ensures we don't exceed provider limits\n   */\n  DEFAULT_MAX_TOTAL_SIZE: SIZE_25_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum attachment size for SendGrid (bytes)\n   * 30MB per SendGrid documentation\n   */\n  SENDGRID_MAX_SIZE: SIZE_30_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum total attachment size for SendGrid (bytes)\n   * 30MB per SendGrid documentation\n   */\n  SENDGRID_MAX_TOTAL_SIZE: SIZE_30_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum attachment size for Infobip (bytes)\n   * 30MB - matching SendGrid for consistency\n   */\n  INFOBIP_MAX_SIZE: SIZE_30_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Maximum total attachment size for Infobip (bytes)\n   * 30MB - matching SendGrid for consistency\n   */\n  INFOBIP_MAX_TOTAL_SIZE: SIZE_30_MB * NUMBER_SYSTEM.BYTES_PER_MB,\n\n  /**\n   * Default timeout for URL attachment fetching (milliseconds)\n   */\n  URL_FETCH_TIMEOUT_MS: 30000,\n\n  /**\n   * Maximum number of retry attempts for failed URL fetches\n   */\n  URL_FETCH_MAX_RETRIES: 3,\n} as const;\n\n/**\n * Circuit Breaker Configuration\n */\nexport const CIRCUIT_BREAKER_CONFIG = {\n  /**\n   * Default failure threshold before opening circuit\n   * Circuit opens after this many consecutive failures\n   */\n  DEFAULT_FAILURE_THRESHOLD: 5,\n\n  /**\n   * Default timeout before attempting half-open state (milliseconds)\n   * How long to wait before testing if provider has recovered\n   */\n  DEFAULT_TIMEOUT_MS: 60000,\n\n  /**\n   * Default success threshold in half-open state\n   * Number of successful requests needed to close circuit\n   */\n  DEFAULT_SUCCESS_THRESHOLD: 2,\n} as const;\n\n/**\n * Queue Configuration\n */\nexport const QUEUE_CONFIG = {\n  /**\n   * Default maximum queue size\n   */\n  DEFAULT_MAX_SIZE: 10000,\n\n  /**\n   * Default number of concurrent workers\n   */\n  DEFAULT_CONCURRENCY: 5,\n\n  /**\n   * Default queue processing interval (milliseconds)\n   */\n  DEFAULT_PROCESSING_INTERVAL_MS: 100,\n} as const;\n\n/**\n * Rate Limiting Configuration\n */\nexport const RATE_LIMIT_CONFIG = {\n  /**\n   * Default requests per second per provider\n   */\n  DEFAULT_REQUESTS_PER_SECOND: 10,\n\n  /**\n   * Default burst allowance\n   * Number of requests that can be sent in a burst\n   */\n  DEFAULT_BURST_ALLOWANCE: 20,\n\n  /**\n   * Default window size for rate limiting (milliseconds)\n   */\n  DEFAULT_WINDOW_MS: 1000,\n} as const;\n\n/**\n * Template Configuration\n */\nexport const TEMPLATE_CONFIG = {\n  /**\n   * Default locale for templates\n   */\n  DEFAULT_LOCALE: 'en',\n\n  /**\n   * Fallback locale when requested locale not found\n   */\n  FALLBACK_LOCALE: 'en',\n\n  /**\n   * Template cache TTL (milliseconds)\n   * How long to cache compiled templates\n   */\n  CACHE_TTL_MS: 300000, // 5 minutes\n\n  /**\n   * Maximum template size (bytes)\n   */\n  MAX_TEMPLATE_SIZE: NUMBER_SYSTEM.BYTES_PER_MB, // 1MB\n} as const;\n\n/**\n * SMS Character Limits and Encoding\n * Based on GSM-7 and UCS-2 encoding standards\n */\nexport const SMS_CONFIG = {\n  /**\n   * Single SMS message limit for GSM-7 encoding (standard characters)\n   * Includes: A-Z, a-z, 0-9, and basic punctuation\n   */\n  GSM7_SINGLE_MESSAGE_LIMIT: 160,\n\n  /**\n   * Multi-part SMS message segment limit for GSM-7 encoding\n   * Each segment in a concatenated message is limited to 153 characters (7 chars for UDH)\n   */\n  GSM7_MULTI_PART_SEGMENT_LIMIT: 153,\n\n  /**\n   * Single SMS message limit for UCS-2 encoding (unicode characters)\n   * Used when message contains emoji, non-Latin characters, etc.\n   */\n  UCS2_SINGLE_MESSAGE_LIMIT: 70,\n\n  /**\n   * Multi-part SMS message segment limit for UCS-2 encoding\n   * Each segment in a concatenated message is limited to 67 characters\n   */\n  UCS2_MULTI_PART_SEGMENT_LIMIT: 67,\n\n  /**\n   * Maximum number of SMS segments to allow\n   * Prevents accidentally sending very expensive multi-part messages\n   */\n  DEFAULT_MAX_SEGMENTS: 10,\n\n  /**\n   * Warning threshold (percentage of limit)\n   * Emit warning when message reaches this percentage of the limit\n   */\n  WARNING_THRESHOLD_PERCENTAGE: 90,\n} as const;\n\n/**\n * Notification Configuration\n */\nexport const NOTIFICATION_CONFIG = {\n  /**\n   * Default notification priority\n   */\n  DEFAULT_PRIORITY: 'normal' as const,\n\n  /**\n   * Maximum subject line length\n   */\n  MAX_SUBJECT_LENGTH: 255,\n\n  /**\n   * Maximum push notification title length\n   */\n  MAX_PUSH_TITLE_LENGTH: 100,\n\n  /**\n   * Maximum push notification body length\n   */\n  MAX_PUSH_BODY_LENGTH: 500,\n} as const;\n\n/**\n * Logging Configuration\n */\nexport const LOGGING_CONFIG = {\n  /**\n   * Default log level\n   */\n  DEFAULT_LEVEL: 'info' as const,\n\n  /**\n   * Maximum log message size (bytes)\n   * Prevents excessive log sizes\n   */\n  MAX_LOG_SIZE: 10000,\n} as const;\n\n/**\n * Health Check Configuration\n */\nexport const HEALTH_CHECK_CONFIG = {\n  /**\n   * Default health check interval (milliseconds)\n   */\n  DEFAULT_INTERVAL_MS: 30000,\n\n  /**\n   * Default health check timeout (milliseconds)\n   */\n  DEFAULT_TIMEOUT_MS: 5000,\n\n  /**\n   * Maximum acceptable latency (milliseconds)\n   * Health check fails if latency exceeds this\n   */\n  MAX_ACCEPTABLE_LATENCY_MS: 2000,\n} as const;\n\n/**\n * Export all configuration as a single object for convenience\n */\nexport const NOTIFICATION_PACKAGE_CONFIG = {\n  RETRY: RETRY_CONFIG,\n  ATTACHMENT: ATTACHMENT_CONFIG,\n  CIRCUIT_BREAKER: CIRCUIT_BREAKER_CONFIG,\n  QUEUE: QUEUE_CONFIG,\n  RATE_LIMIT: RATE_LIMIT_CONFIG,\n  TEMPLATE: TEMPLATE_CONFIG,\n  SMS: SMS_CONFIG,\n  NOTIFICATION: NOTIFICATION_CONFIG,\n  LOGGING: LOGGING_CONFIG,\n  HEALTH_CHECK: HEALTH_CHECK_CONFIG,\n} as const;\n"]}