generateWithPlatformSupport method
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();
}