#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" output_file="$repo_root/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs" simple_methods=( "NewJSAccountResourcesExceededError|AccountResourcesExceeded" "NewJSAtomicPublishContainsDuplicateMessageError|AtomicPublishContainsDuplicateMessage" "NewJSAtomicPublishDisabledError|AtomicPublishDisabled" "NewJSAtomicPublishIncompleteBatchError|AtomicPublishIncompleteBatch" "NewJSAtomicPublishInvalidBatchCommitError|AtomicPublishInvalidBatchCommit" "NewJSAtomicPublishInvalidBatchIDError|AtomicPublishInvalidBatchID" "NewJSAtomicPublishMissingSeqError|AtomicPublishMissingSeq" "NewJSBadRequestError|BadRequest" "NewJSClusterIncompleteError|ClusterIncomplete" "NewJSClusterNotActiveError|ClusterNotActive" "NewJSClusterNotAssignedError|ClusterNotAssigned" "NewJSClusterNotAvailError|ClusterNotAvail" "NewJSClusterNotLeaderError|ClusterNotLeader" "NewJSClusterPeerNotMemberError|ClusterPeerNotMember" "NewJSClusterRequiredError|ClusterRequired" "NewJSClusterServerMemberChangeInflightError|ClusterServerMemberChangeInflight" "NewJSClusterServerNotMemberError|ClusterServerNotMember" "NewJSClusterTagsError|ClusterTags" "NewJSClusterUnSupportFeatureError|ClusterUnSupportFeature" "NewJSConsumerAckPolicyInvalidError|ConsumerAckPolicyInvalid" "NewJSConsumerAckWaitNegativeError|ConsumerAckWaitNegative" "NewJSConsumerAlreadyExistsError|ConsumerAlreadyExists" "NewJSConsumerBackOffNegativeError|ConsumerBackOffNegative" "NewJSConsumerBadDurableNameError|ConsumerBadDurableName" "NewJSConsumerConfigRequiredError|ConsumerConfigRequired" "NewJSConsumerCreateDurableAndNameMismatchError|ConsumerCreateDurableAndNameMismatch" "NewJSConsumerCreateFilterSubjectMismatchError|ConsumerCreateFilterSubjectMismatch" "NewJSConsumerDeliverCycleError|ConsumerDeliverCycle" "NewJSConsumerDeliverToWildcardsError|ConsumerDeliverToWildcards" "NewJSConsumerDirectRequiresEphemeralError|ConsumerDirectRequiresEphemeral" "NewJSConsumerDirectRequiresPushError|ConsumerDirectRequiresPush" "NewJSConsumerDoesNotExistError|ConsumerDoesNotExist" "NewJSConsumerDuplicateFilterSubjectsError|ConsumerDuplicateFilterSubjects" "NewJSConsumerDurableNameNotInSubjectError|ConsumerDurableNameNotInSubject" "NewJSConsumerDurableNameNotMatchSubjectError|ConsumerDurableNameNotMatchSubject" "NewJSConsumerDurableNameNotSetError|ConsumerDurableNameNotSet" "NewJSConsumerEmptyFilterError|ConsumerEmptyFilter" "NewJSConsumerEmptyGroupNameError|ConsumerEmptyGroupName" "NewJSConsumerEphemeralWithDurableInSubjectError|ConsumerEphemeralWithDurableInSubject" "NewJSConsumerEphemeralWithDurableNameError|ConsumerEphemeralWithDurableName" "NewJSConsumerExistingActiveError|ConsumerExistingActive" "NewJSConsumerFCRequiresPushError|ConsumerFCRequiresPush" "NewJSConsumerFilterNotSubsetError|ConsumerFilterNotSubset" "NewJSConsumerHBRequiresPushError|ConsumerHBRequiresPush" "NewJSConsumerInvalidDeliverSubjectError|ConsumerInvalidDeliverSubject" "NewJSConsumerInvalidGroupNameError|ConsumerInvalidGroupName" "NewJSConsumerInvalidPriorityGroupError|ConsumerInvalidPriorityGroup" "NewJSConsumerMaxDeliverBackoffError|ConsumerMaxDeliverBackoff" ) templated_methods=( "NewJSAtomicPublishTooLargeBatchError|object?|size|AtomicPublishTooLargeBatch|{size}" "NewJSAtomicPublishUnsupportedHeaderBatchError|object?|header|AtomicPublishUnsupportedHeaderBatch|{header}" "NewJSClusterNoPeersError|Exception|err|ClusterNoPeers|{err}" "NewJSConsumerCreateError|Exception|err|ConsumerCreateErr|{err}" "NewJSConsumerDescriptionTooLongError|object?|max|ConsumerDescriptionTooLong|{max}" "NewJSConsumerInactiveThresholdExcessError|object?|limit|ConsumerInactiveThresholdExcess|{limit}" "NewJSConsumerInvalidPolicyError|Exception|err|ConsumerInvalidPolicy|{err}" "NewJSConsumerInvalidResetError|Exception|err|ConsumerInvalidReset|{err}" "NewJSConsumerInvalidSamplingError|Exception|err|ConsumerInvalidSampling|{err}" ) { cat <<'EOF' // Copyright 2020-2026 The NATS Authors // Licensed under the Apache License, Version 2.0 (the "License"); // // Generated constructor surface for JetStream API errors. // Source parity: server/jetstream_errors_generated.go namespace ZB.MOM.NatsNet.Server; public static partial class JsApiErrors { EOF for entry in "${simple_methods[@]}"; do IFS='|' read -r method field <<<"$entry" cat <"$output_file" echo "Generated $output_file"