generateWithPlatformSupport method

Future<String> generateWithPlatformSupport(
  1. ConfidentialPlatform platform
)

Generates code with platform-specific optimizations and warnings.

Implementation

Future<String> generateWithPlatformSupport(
  ConfidentialPlatform platform,
) async {
  final buffer = StringBuffer();

  // Add platform-specific header
  buffer.writeln('// Generated by dart-confidential build_runner');
  buffer.writeln('// Generated: ${DateTime.now().toIso8601String()}');
  buffer.writeln('// Platform: ${platform.name}');
  buffer.writeln('// Secrets: ${config.secrets.length}');

  if (platform == ConfidentialPlatform.web) {
    buffer.writeln(
      '// ⚠️  WARNING: Web platform detected - secrets are not secure in JavaScript',
    );
  }

  buffer.writeln('');

  // Add imports
  buffer.writeln("import 'dart:typed_data';");
  buffer.writeln("import 'package:confidential/confidential.dart';");
  buffer.writeln('');

  // Generate the main secrets class
  buffer.writeln('/// Generated secrets class with platform-aware handling.');
  buffer.writeln('class Secrets {');

  // Add platform detection
  buffer.writeln('  /// Current platform detection.');
  buffer.writeln(
    '  static ConfidentialPlatform get currentPlatform => PlatformDetector.detectPlatform();',
  );
  buffer.writeln('');
  buffer.writeln('  /// Whether secrets are secure on current platform.');
  buffer.writeln(
    '  static bool get areSecretsSecure => PlatformDetector.areSecretsSecure;',
  );
  buffer.writeln('');

  // Generate individual secrets
  for (final secret in config.secrets) {
    await _generateSecretProperty(buffer, secret, platform);
  }

  buffer.writeln('}');

  // Add platform-specific utilities
  await _generatePlatformUtilities(buffer, platform);

  return buffer.toString();
}