Files
gstack/ios-qa/templates/StateAccessor.swift.template
T

42 lines
1.5 KiB
Plaintext

// AUTO-GENERATED from gstack/ios-qa/templates/StateAccessor.swift.template
// Regenerated by `swift run gen-accessors`. DO NOT EDIT.
//
// This file is a TEMPLATE that gen-accessors-tool fills in. The placeholders
// are filled per-class from swift-syntax AST inspection of the app's
// @Observable types. Only properties preceded by `// @Snapshotable` are emitted.
//
// {{CLASS_NAME}} — the canonical AppState struct name
// {{APP_BUILD_ID}} — bundle short version + git SHA at codegen time
// {{ACCESSOR_HASH}} — sha256 of accessor signatures (snapshot schema fingerprint)
// {{ACCESSORS}} — generated register/read/write blocks per marked field
#if DEBUG
import Foundation
@MainActor
public enum {{CLASS_NAME}}Accessor {
public static func register(_ state: {{CLASS_NAME}}) {
StateServer.shared.register(
buildId: "{{APP_BUILD_ID}}",
accessorHash: "{{ACCESSOR_HASH}}",
atomicRestore: { keys, apply in
// Validate every key + type before mutating any state. Invalid
// input therefore cannot leave a partially restored model.
var snapshot = state.snapshotable
{{VALIDATION_BLOCK}}
// StateServer validates every model first, then invokes the
// same handlers with apply=true for a cross-model commit.
if apply {
state.snapshotable = snapshot
}
return .ok
}
)
{{REGISTER_BLOCK}}
}
}
#endif // DEBUG