buildStdConvertModule function

Module buildStdConvertModule()

Builds the std_convert base module.

Implementation

Module buildStdConvertModule() {
  final module = Module()
    ..name = 'std_convert'
    ..description =
        'Standard conversion module. JSON, UTF-8, base64 encoding/decoding.';

  // ============================================================
  // Types
  // ============================================================

  module.typeDefs.addAll(
    <google.DescriptorProto>[
      _type('JsonEncodeInput', [_exprField('value', 1)]),
      _type('JsonDecodeInput', [_stringField('value', 1)]),
      _type('Utf8EncodeInput', [_stringField('value', 1)]),
      _type('Utf8DecodeInput', [_bytesField('value', 1)]),
      _type('Base64EncodeInput', [_bytesField('value', 1)]),
      _type('Base64DecodeInput', [_stringField('value', 1)]),
    ].map(
      (d) => TypeDefinition()
        ..name = d.name
        ..descriptor = d,
    ),
  );

  // ============================================================
  // Functions
  // ============================================================

  module.functions.addAll([
    // JSON
    _fn(
      'json_encode',
      'JsonEncodeInput',
      'string',
      'Encode value to JSON string',
    ),
    _fn(
      'json_decode',
      'JsonDecodeInput',
      '',
      'Decode JSON string to value (map/list/scalar)',
    ),

    // UTF-8
    _fn(
      'utf8_encode',
      'Utf8EncodeInput',
      'bytes',
      'Encode string to UTF-8 bytes',
    ),
    _fn(
      'utf8_decode',
      'Utf8DecodeInput',
      'string',
      'Decode UTF-8 bytes to string',
    ),

    // Base64
    _fn(
      'base64_encode',
      'Base64EncodeInput',
      'string',
      'Encode bytes to base64 string',
    ),
    _fn(
      'base64_decode',
      'Base64DecodeInput',
      'bytes',
      'Decode base64 string to bytes',
    ),
  ]);

  return module;
}