orchestrator_generator 0.5.1 copy "orchestrator_generator: ^0.5.1" to clipboard
orchestrator_generator: ^0.5.1 copied to clipboard

Code generator for orchestrator_core's offline support. Generates NetworkJobRegistry registration code from @NetworkRegistry annotation.

example/orchestrator_generator_example.dart

// Copyright (c) 2024, Flutter Orchestrator
// SPDX-License-Identifier: MIT

/// Example demonstrating code generation for NetworkJob registry.
///
/// This package generates `registerNetworkJobs()` function for offline
/// queue restoration.
///
/// ## Usage
///
/// 1. Annotate your entry point:
/// ```dart
/// @NetworkRegistry([
///   SendMessageJob,
///   LikePostJob,
/// ])
/// void setupNetworkRegistry() {}
/// ```
///
/// 2. Run build_runner:
/// ```bash
/// dart run build_runner build
/// ```
///
/// 3. Call generated function in main:
/// ```dart
/// void main() {
///   setupNetworkRegistry();
///   // or: registerNetworkJobs();
///   runApp(MyApp());
/// }
/// ```
library;

import 'package:orchestrator_core/orchestrator_core.dart';

// Example job that implements NetworkAction
class SendMessageJob extends BaseJob implements NetworkAction<String> {
  final String message;

  SendMessageJob(this.message) : super(id: generateJobId('msg'));

  @override
  Map<String, dynamic> toJson() => {'message': message};

  @override
  String createOptimisticResult() => message;

  @override
  String? get deduplicationKey => null;

  // Required for deserialization from queue
  static SendMessageJob fromJson(Map<String, dynamic> json) {
    return SendMessageJob(json['message'] as String);
  }
}

// Annotate to generate registry
@NetworkRegistry([SendMessageJob])
void setupNetworkRegistry() {
  // Generated code will register:
  // NetworkJobRegistry.register('SendMessageJob', SendMessageJob.fromJson);
}

void main() {
  print('Run: dart run build_runner build');
  print('This generates registerNetworkJobs() function');
}
0
likes
90
points
412
downloads

Publisher

unverified uploader

Weekly Downloads

Code generator for orchestrator_core's offline support. Generates NetworkJobRegistry registration code from @NetworkRegistry annotation.

Repository (GitHub)
View/report issues
Contributing

Topics

#code-generator #build-runner #offline #orchestrator

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

analyzer, build, code_builder, dart_style, orchestrator_core, source_gen

More

Packages that depend on orchestrator_generator