{"version":3,"sources":["../src/helpers/hardwareId.ts","../src/index.ts"],"names":["createHash"],"mappings":"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","file":"index.mjs","sourcesContent":["import { createHash } from 'crypto';\nimport { execSync } from 'child_process';\nimport { readFileSync, writeFileSync, existsSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\n\nexport function getHardwareDeviceId(): string {\n  try {\n    // Try platform-specific hardware ID detection\n    const hardwareId = detectHardwareId();\n    if (hardwareId) {\n      return hardwareId;\n    }\n  } catch (error) {\n    // Fallback to stored UUID if hardware detection fails\n  }\n\n  // Use fallback UUID stored in user's home directory\n  return getFallbackDeviceId();\n}\n\nfunction detectHardwareId(): string | null {\n  const platform = process.platform;\n\n  try {\n    switch (platform) {\n      case 'linux':\n        return getLinuxMachineId();\n      case 'darwin':\n        return getMacOSHardwareId();\n      case 'win32':\n        return getWindowsHardwareId();\n      default:\n        return null;\n    }\n  } catch (error) {\n    return null;\n  }\n}\n\nfunction getLinuxMachineId(): string | null {\n  const machineIdPaths = [\n    '/etc/machine-id',\n    '/var/lib/dbus/machine-id'\n  ];\n\n  for (const path of machineIdPaths) {\n    try {\n      if (existsSync(path)) {\n        const id = readFileSync(path, 'utf8').trim();\n        if (id && id.length > 0) {\n          return createHash('sha256').update(id).digest('hex').substring(0, 16);\n        }\n      }\n    } catch (error) {\n      continue;\n    }\n  }\n\n  // Try CPU info for Raspberry Pi\n  try {\n    const cpuInfo = readFileSync('/proc/cpuinfo', 'utf8');\n    const serialMatch = cpuInfo.match(/Serial\\s*:\\s*([a-f0-9]+)/i);\n    if (serialMatch && serialMatch[1]) {\n      return createHash('sha256').update(serialMatch[1]).digest('hex').substring(0, 16);\n    }\n  } catch (error) {\n    // Ignore and continue\n  }\n\n  return null;\n}\n\nfunction getMacOSHardwareId(): string | null {\n  try {\n    const output = execSync('system_profiler SPHardwareDataType | grep \"Hardware UUID\"', { \n      encoding: 'utf8',\n      timeout: 5000\n    });\n    const match = output.match(/Hardware UUID:\\s*([A-F0-9-]+)/i);\n    if (match && match[1]) {\n      return createHash('sha256').update(match[1]).digest('hex').substring(0, 16);\n    }\n  } catch (error) {\n    // Ignore and continue\n  }\n  return null;\n}\n\nfunction getWindowsHardwareId(): string | null {\n  try {\n    const output = execSync('wmic csproduct get uuid /value', { \n      encoding: 'utf8',\n      timeout: 5000\n    });\n    const match = output.match(/UUID=([A-F0-9-]+)/i);\n    if (match && match[1]) {\n      return createHash('sha256').update(match[1]).digest('hex').substring(0, 16);\n    }\n  } catch (error) {\n    // Ignore and continue\n  }\n  return null;\n}\n\nfunction getFallbackDeviceId(): string {\n  const fallbackPath = join(homedir(), '.payu-ble-id');\n  \n  try {\n    if (existsSync(fallbackPath)) {\n      const stored = readFileSync(fallbackPath, 'utf8').trim();\n      if (stored && stored.length > 0) {\n        return stored;\n      }\n    }\n  } catch (error) {\n    // Ignore and generate new one\n  }\n\n  // Generate new UUID and store it\n  const uuid = generateUUID();\n  const deviceId = createHash('sha256').update(uuid).digest('hex').substring(0, 16);\n  \n  try {\n    writeFileSync(fallbackPath, deviceId, 'utf8');\n  } catch (error) {\n    // If we can't write to disk, just return the generated ID\n  }\n  \n  return deviceId;\n}\n\nfunction generateUUID(): string {\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n    const r = Math.random() * 16 | 0;\n    const v = c === 'x' ? r : (r & 0x3 | 0x8);\n    return v.toString(16);\n  });\n}","// src/index.ts\nimport { createHash } from 'crypto';\n\nexport interface ChallengeOptions {\n  type: 'arithmetic' | 'hash' | 'custom';\n  difficulty?: 1 | 2 | 3 | 4;\n  formula?: () => string;\n  validate?: (input: string) => boolean;\n  validAnswers?: string[];\n  caseInsensitive?: boolean;\n  ttl?: number; // Time-to-live in milliseconds\n}\n\nexport interface Challenge {\n  id: string;\n  type: string;\n  prompt: string;\n  createdAt: number;\n  expiresAt: number | undefined;\n  validate: (input: string) => boolean;\n}\n\nexport interface PayuBLEState {\n  currentChallenge: Challenge | null;\n  isAvailable: boolean;\n  availabilityTrigger: (() => boolean) | null;\n}\n\nclass PayuBLE {\n  private state: PayuBLEState = {\n    currentChallenge: null,\n    isAvailable: false,\n    availabilityTrigger: null\n  };\n\n  private deviceId: string;\n\n  constructor(deviceId?: string) {\n    this.deviceId = deviceId || this.generateDeviceId();\n  }\n\n  private generateDeviceId(): string {\n    return createHash('sha256')\n      .update(Date.now().toString() + Math.random().toString())\n      .digest('hex')\n      .substring(0, 16);\n  }\n\n  private generateArithmeticChallenge(difficulty: number = 1): { prompt: string; answer: number } {\n    const operations = ['+', '-', '*'];\n    \n    switch (difficulty) {\n      case 1: {\n        const a = Math.floor(Math.random() * 10) + 1;\n        const b = Math.floor(Math.random() * 10) + 1;\n        const op = operations[Math.floor(Math.random() * 2)]; // + or -\n        const answer = op === '+' ? a + b : a - b;\n        return { prompt: `${a} ${op} ${b}`, answer };\n      }\n      case 2: {\n        const a = Math.floor(Math.random() * 20) + 1;\n        const b = Math.floor(Math.random() * 12) + 1;\n        const op = operations[Math.floor(Math.random() * 3)];\n        let answer: number;\n        switch (op) {\n          case '+': answer = a + b; break;\n          case '-': answer = a - b; break;\n          case '*': answer = a * b; break;\n          default: answer = a + b;\n        }\n        return { prompt: `${a} ${op} ${b}`, answer };\n      }\n      case 3: {\n        const a = Math.floor(Math.random() * 50) + 10;\n        const b = Math.floor(Math.random() * 20) + 2;\n        const c = Math.floor(Math.random() * 10) + 1;\n        const answer = a + (b * c);\n        return { prompt: `${a} + ${b} × ${c}`, answer };\n      }\n      case 4: {\n        const a = Math.floor(Math.random() * 100) + 50;\n        const b = Math.floor(Math.random() * 20) + 5;\n        const c = Math.floor(Math.random() * 15) + 3;\n        const d = Math.floor(Math.random() * 8) + 2;\n        const answer = (a + b) * c - d;\n        return { prompt: `(${a} + ${b}) × ${c} - ${d}`, answer };\n      }\n      default:\n        return this.generateArithmeticChallenge(1);\n    }\n  }\n\n  private generateHashChallenge(): { prompt: string; answer: string } {\n    const timestamp = Date.now();\n    const input = `${this.deviceId}${timestamp}`;\n    const fullHash = createHash('sha256').update(input).digest('hex');\n    const answer = (parseInt(fullHash.substring(0, 8), 16) % 100).toString();\n    \n    return {\n      prompt: `What is (SHA256(\"${this.deviceId}${timestamp}\")) % 100?`,\n      answer\n    };\n  }\n\n  createChallenge(options: ChallengeOptions): Challenge {\n    const id = createHash('sha256')\n      .update(Date.now().toString() + Math.random().toString())\n      .digest('hex')\n      .substring(0, 12);\n\n    const createdAt = Date.now();\n    const expiresAt = options.ttl ? createdAt + options.ttl : undefined;\n\n    let prompt: string;\n    let validator: (input: string) => boolean;\n\n    switch (options.type) {\n      case 'arithmetic': {\n        const { prompt: mathPrompt, answer } = this.generateArithmeticChallenge(options.difficulty);\n        prompt = `Solve: ${mathPrompt}`;\n        validator = (input: string) => {\n          const numInput = parseInt(input.trim());\n          return !isNaN(numInput) && numInput === answer;\n        };\n        break;\n      }\n\n      case 'hash': {\n        const { prompt: hashPrompt, answer } = this.generateHashChallenge();\n        prompt = hashPrompt;\n        validator = (input: string) => input.trim() === answer;\n        break;\n      }\n\n      case 'custom': {\n        if (!options.formula) {\n          throw new Error('Custom challenge requires a formula function');\n        }\n        \n        prompt = options.formula();\n        \n        if (options.validate) {\n          validator = options.validate;\n        } else if (options.validAnswers) {\n          validator = (input: string) => {\n            const processedInput = options.caseInsensitive \n              ? input.trim().toLowerCase() \n              : input.trim();\n            \n            const processedAnswers = options.caseInsensitive\n              ? options.validAnswers!.map(a => a.toLowerCase())\n              : options.validAnswers!;\n            \n            return processedAnswers.includes(processedInput);\n          };\n        } else {\n          throw new Error('Custom challenge requires either validate function or validAnswers array');\n        }\n        break;\n      }\n\n      default:\n        throw new Error(`Unsupported challenge type: ${options.type}`);\n    }\n\n    const challenge: Challenge = {\n      id,\n      type: options.type,\n      prompt,\n      createdAt,\n      expiresAt,\n      validate: validator\n    };\n\n    this.state.currentChallenge = challenge;\n    return challenge;\n  }\n\n  verifyAnswer(input: string): boolean {\n    if (!this.state.currentChallenge) {\n      throw new Error('No active challenge');\n    }\n\n    // Check if challenge has expired\n    if (this.state.currentChallenge.expiresAt && Date.now() > this.state.currentChallenge.expiresAt) {\n      this.state.currentChallenge = null;\n      throw new Error('Challenge has expired');\n    }\n\n    try {\n      return this.state.currentChallenge.validate(input);\n    } catch (error) {\n      // Handle validation errors gracefully by returning false\n      if (this.isDevelopmentMode()) {\n        console.warn('⚠️  PayuBLE: Validation function threw an error:', error);\n        console.warn('   Challenge ID:', this.state.currentChallenge.id);\n        console.warn('   Challenge Type:', this.state.currentChallenge.type);\n        console.warn('   Input:', JSON.stringify(input));\n        console.warn('   Consider adding proper error handling in your validation function.');\n      }\n      return false;\n    }\n  }\n\n  setBLEAvailability(triggerFn: () => boolean): void {\n    this.state.availabilityTrigger = triggerFn;\n    this.updateAvailability();\n  }\n\n  private updateAvailability(): void {\n    if (this.state.availabilityTrigger) {\n      try {\n        this.state.isAvailable = this.state.availabilityTrigger();\n      } catch (error) {\n        // Handle availability trigger errors gracefully by setting to false\n        if (this.isDevelopmentMode()) {\n          console.warn('⚠️  PayuBLE: Availability trigger threw an error:', error);\n          console.warn('   Device ID:', this.deviceId);\n          console.warn('   Trigger function:', this.state.availabilityTrigger.toString().substring(0, 100) + '...');\n          console.warn('   Consider adding proper error handling in your availability trigger.');\n        }\n        this.state.isAvailable = false;\n      }\n    }\n  }\n\n  getCurrentChallenge(): Challenge | null {\n    return this.state.currentChallenge;\n  }\n\n  isDeviceAvailable(): boolean {\n    this.updateAvailability();\n    return this.state.isAvailable;\n  }\n\n  getDeviceId(): string {\n    return this.deviceId;\n  }\n\n  clearChallenge(): void {\n    this.state.currentChallenge = null;\n  }\n\n  getState(): PayuBLEState {\n    return { ...this.state };\n  }\n\n  private isDevelopmentMode(): boolean {\n    // Check for common development environment indicators\n    return (\n      typeof process !== 'undefined' &&\n      process.env &&\n      (process.env.NODE_ENV === 'development' ||\n       process.env.NODE_ENV === 'dev' ||\n       process.env.NODE_ENV === 'test' ||\n       !process.env.NODE_ENV) // Default to development if NODE_ENV is not set\n    );\n  }\n}\n\n// Helper functions for common availability triggers\nexport const helpers = {\n  timeBased: (hours: number[]): (() => boolean) => {\n    return () => {\n      const currentHour = new Date().getHours();\n      return hours.includes(currentHour);\n    };\n  },\n\n  gpioButton: (_pin: number): (() => boolean) => {\n    return () => {\n      // Placeholder for GPIO implementation\n      // In real implementation, this would check GPIO pin state\n      console.warn('GPIO helper requires platform-specific implementation');\n      return true;\n    };\n  },\n\n  macOnNetwork: (_mac: string): (() => boolean) => {\n    return () => {\n      // Placeholder for network MAC detection\n      // In real implementation, this would scan network for MAC address\n      console.warn('MAC network helper requires platform-specific implementation');\n      return true;\n    };\n  },\n\n  gpsLocation: (_zone: { lat: number; lng: number; radius: number }): (() => boolean) => {\n    return () => {\n      // Placeholder for GPS implementation\n      // In real implementation, this would check current GPS coordinates\n      console.warn('GPS helper requires platform-specific implementation');\n      return true;\n    };\n  },\n\n  alwaysAvailable: (): (() => boolean) => {\n    return () => true;\n  },\n\n  scheduleBasedAvailability: (schedule: { start: string; end: string }[]): (() => boolean) => {\n    return () => {\n      const now = new Date();\n      const currentTime = now.getHours() * 60 + now.getMinutes();\n      \n      return schedule.some(slot => {\n        const [startHour, startMin] = slot.start.split(':').map(Number);\n        const [endHour, endMin] = slot.end.split(':').map(Number);\n        const startTime = startHour * 60 + startMin;\n        const endTime = endHour * 60 + endMin;\n        \n        return currentTime >= startTime && currentTime <= endTime;\n      });\n    };\n  }\n};\n\n// Export the main class\nexport { PayuBLE };\n\n// Export helper functions\nexport { getHardwareDeviceId } from './helpers/hardwareId';\n\n// Default instance for convenience\nconst defaultInstance = new PayuBLE();\n\nexport const createChallenge = (options: ChallengeOptions) => defaultInstance.createChallenge(options);\nexport const verifyAnswer = (input: string) => defaultInstance.verifyAnswer(input);\nexport const setBLEAvailability = (triggerFn: () => boolean) => defaultInstance.setBLEAvailability(triggerFn);\nexport const getCurrentChallenge = () => defaultInstance.getCurrentChallenge();\nexport const isDeviceAvailable = () => defaultInstance.isDeviceAvailable();\nexport const getDeviceId = () => defaultInstance.getDeviceId();\nexport const clearChallenge = () => defaultInstance.clearChallenge();\n\n// Export PayuBLE as default for backward compatibility\nexport default PayuBLE;"]}