{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Macro Configuration", "description": "Configuration file for Dart macro system", "type": "object", "properties": { "config": { "type": "object", "description": "Global macro configuration settings", "properties": { "remap_generated_file_to": { "type": "string", "description": "Directory path where generated files should be remapped to", "examples": [ "lib/gen", "lib/generated" ] }, "auto_rebuild_on_connect": { "type": "boolean", "description": "Automatically rebuild when connecting", "default": true }, "always_rebuild_on_connect": { "type": "boolean", "description": "Always force rebuild on connect", "default": false }, "skip_connect_rebuild_with_auto_run_macro": { "type": "boolean", "description": "Skip connect-triggered rebuilds when external auto-run process is active. Disables auto_rebuild_on_connect and always_rebuild_on_connect if macro generation is being handled by a separate auto-run process. Set to true when autoRunMacro from your macro_context.dart is true", "default": true } }, "additionalProperties": true }, "macros": { "type": "object", "description": "Configuration for individual macros", "properties": { "DataClassMacro": { "$ref": "#/definitions/DataClassMacroConfig" }, "WidgetStateMacro": { "$ref": "#/definitions/WidgetStateMacroConfig" }, "ModelMacro": { "$ref": "#/definitions/WidgetStateMacroConfig" } }, "additionalProperties": { "type": "object", "description": "Custom macro configuration - structure depends on the macro implementation" } } }, "definitions": { "DataClassMacroConfig": { "type": "object", "description": "Configuration for the built-in DataClassMacro", "properties": { "field_rename": { "type": "string", "description": "Field renaming strategy", "enum": [ "none", "snake_case", "kebab_case", "camel_case", "pascal_case" ], "default": "none" }, "create_from_json": { "type": "boolean", "description": "Generate fromJson method", "default": true }, "create_to_json": { "type": "boolean", "description": "Generate toJson method", "default": true }, "create_map_to": { "type": "boolean", "description": "Generate mapTo method", "default": true }, "create_as_cast": { "type": "boolean", "description": "Generate as cast methods", "default": true }, "create_equal": { "type": "boolean", "description": "Generate equality operator override", "default": true }, "create_copy_with": { "type": "boolean", "description": "Generate copyWith method", "default": true }, "copy_with_as_option": { "type": "boolean", "description": "When true, generates copyWith methods using Option to support setting nullable fields to null. Defaults to false. Can be overridden per-field using @JsonKey(copyWithAsOption).", "default": false }, "create_to_string": { "type": "boolean", "description": "Generate toString override", "default": true }, "include_if_null": { "type": "boolean", "description": "Include null fields in JSON serialization", "default": false }, "as_literal_types": { "type": "array", "description": "List of types to be treated as literals", "items": { "type": "string" }, "default": [] }, "use_map_convention": { "type": "boolean", "description": "Use 'toMap'/'fromMap' naming convention instead of 'toJson'/'fromJson'. This is configured globally since data classes that depend on other data classes need consistent method names.", "default": false } }, "additionalProperties": false }, "WidgetStateMacroConfig": { "type": "object", "description": "Configuration for the WidgetStateMacro", "properties": { "state_field_strategy": { "type": "string", "description": "Controls how state field visibility is resolved when no explicit visibility is specified on the annotation.", "enum": [ "public", "private", "keep" ], "default": "public" } }, "additionalProperties": false } }, "additionalProperties": false }