158 lines
7.9 KiB
Bash
Executable File
158 lines
7.9 KiB
Bash
Executable File
#!/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"
|
|
"NewJSConsumerMaxPendingAckPolicyRequiredError|ConsumerMaxPendingAckPolicyRequired"
|
|
"NewJSConsumerMaxRequestBatchNegativeError|ConsumerMaxRequestBatchNegative"
|
|
"NewJSConsumerMaxRequestExpiresTooSmallError|ConsumerMaxRequestExpiresTooSmall"
|
|
"NewJSConsumerMaxWaitingNegativeError|ConsumerMaxWaitingNegative"
|
|
"NewJSConsumerMultipleFiltersNotAllowedError|ConsumerMultipleFiltersNotAllowed"
|
|
"NewJSConsumerNameContainsPathSeparatorsError|ConsumerNameContainsPathSeparators"
|
|
"NewJSConsumerNameExistError|ConsumerNameExist"
|
|
"NewJSConsumerNotFoundError|ConsumerNotFound"
|
|
"NewJSConsumerOfflineError|ConsumerOffline"
|
|
"NewJSConsumerOnMappedError|ConsumerOnMapped"
|
|
"NewJSConsumerOverlappingSubjectFiltersError|ConsumerOverlappingSubjectFilters"
|
|
"NewJSConsumerPinnedTTLWithoutPriorityPolicyNoneError|ConsumerPinnedTTLWithoutPriorityPolicyNone"
|
|
"NewJSConsumerPriorityGroupWithPolicyNoneError|ConsumerPriorityGroupWithPolicyNone"
|
|
"NewJSConsumerPriorityPolicyWithoutGroupError|ConsumerPriorityPolicyWithoutGroup"
|
|
"NewJSConsumerPullNotDurableError|ConsumerPullNotDurable"
|
|
"NewJSConsumerPullRequiresAckError|ConsumerPullRequiresAck"
|
|
"NewJSConsumerPullWithRateLimitError|ConsumerPullWithRateLimit"
|
|
"NewJSConsumerPushMaxWaitingError|ConsumerPushMaxWaiting"
|
|
"NewJSConsumerPushWithPriorityGroupError|ConsumerPushWithPriorityGroup"
|
|
"NewJSConsumerReplacementWithDifferentNameError|ConsumerReplacementWithDifferentName"
|
|
"NewJSConsumerReplayPolicyInvalidError|ConsumerReplayPolicyInvalid"
|
|
"NewJSConsumerReplicasExceedsStreamError|ConsumerReplicasExceedsStream"
|
|
"NewJSConsumerReplicasShouldMatchStreamError|ConsumerReplicasShouldMatchStream"
|
|
"NewJSConsumerSmallHeartbeatError|ConsumerSmallHeartbeat"
|
|
"NewJSConsumerWQConsumerNotDeliverAllError|ConsumerWQConsumerNotDeliverAll"
|
|
"NewJSConsumerWQConsumerNotUniqueError|ConsumerWQConsumerNotUnique"
|
|
"NewJSConsumerWQMultipleUnfilteredError|ConsumerWQMultipleUnfiltered"
|
|
"NewJSConsumerWQRequiresExplicitAckError|ConsumerWQRequiresExplicitAck"
|
|
"NewJSConsumerWithFlowControlNeedsHeartbeatsError|ConsumerWithFlowControlNeedsHeartbeats"
|
|
"NewJSInsufficientResourcesError|InsufficientResources"
|
|
"NewJSMaximumConsumersLimitError|MaximumConsumersLimit"
|
|
"NewJSMaximumStreamsLimitError|MaximumStreamsLimit"
|
|
"NewJSMemoryResourcesExceededError|MemoryResourcesExceeded"
|
|
)
|
|
|
|
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}"
|
|
"NewJSConsumerMaxPendingAckExcessError|object?|limit|ConsumerMaxPendingAckExcess|{limit}"
|
|
"NewJSConsumerMaxRequestBatchExceededError|object?|limit|ConsumerMaxRequestBatchExceeded|{limit}"
|
|
"NewJSConsumerMetadataLengthError|object?|limit|ConsumerMetadataLength|{limit}"
|
|
"NewJSConsumerNameTooLongError|object?|max|ConsumerNameTooLong|{max}"
|
|
"NewJSConsumerOfflineReasonError|Exception|err|ConsumerOfflineReason|{err}"
|
|
"NewJSConsumerStoreFailedError|Exception|err|ConsumerStoreFailed|{err}"
|
|
"NewJSInvalidJSONError|Exception|err|InvalidJSON|{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 <<EOF
|
|
public static JsApiError ${method}(params ErrorOption[] opts)
|
|
{
|
|
if (ParseOpts(opts) is JsApiError overridden)
|
|
return Clone(overridden);
|
|
|
|
return Clone(${field});
|
|
}
|
|
|
|
EOF
|
|
done
|
|
|
|
for entry in "${templated_methods[@]}"; do
|
|
IFS='|' read -r method arg_type arg_name field placeholder <<<"$entry"
|
|
cat <<EOF
|
|
public static JsApiError ${method}(${arg_type} ${arg_name}, params ErrorOption[] opts)
|
|
{
|
|
if (ParseOpts(opts) is JsApiError overridden)
|
|
return Clone(overridden);
|
|
|
|
return NewWithTags(${field}, "${placeholder}", ${arg_name});
|
|
}
|
|
|
|
EOF
|
|
done
|
|
|
|
cat <<'EOF'
|
|
}
|
|
EOF
|
|
} >"$output_file"
|
|
|
|
echo "Generated $output_file"
|