{"version":3,"file":"response-status.type.cjs","names":["GraphQLJSON"],"sources":["../../../src/graphql/types/response-status.type.ts"],"sourcesContent":["import { GraphQLJSON } from \"graphql-scalars\";\nimport {\n  Field,\n  InterfaceType,\n  ObjectType,\n  createUnionType,\n  registerEnumType,\n} from \"type-graphql\";\n\nexport enum ResponseStatusCode {\n  Pending = \"pending\",\n  Success = \"success\",\n  Failed = \"failed\",\n}\n\nregisterEnumType(ResponseStatusCode, {\n  name: \"ResponseStatusCode\",\n});\n\n@InterfaceType({\n  resolveType(value) {\n    if (value.code === ResponseStatusCode.Success) {\n      return SuccessResponseStatus;\n    } else if (value.code === ResponseStatusCode.Failed) {\n      return FailedResponseStatus;\n    } else if (value.code === ResponseStatusCode.Pending) {\n      return PendingResponseStatus;\n    }\n    return undefined;\n  },\n})\n@ObjectType()\nabstract class BaseResponseStatus {\n  @Field(() => ResponseStatusCode)\n  code: ResponseStatusCode;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class PendingResponseStatus extends BaseResponseStatus {\n  code: ResponseStatusCode = ResponseStatusCode.Pending;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class SuccessResponseStatus extends BaseResponseStatus {\n  code: ResponseStatusCode = ResponseStatusCode.Success;\n}\n\nexport enum FailedResponseStatusReason {\n  GUARDRAILS_VALIDATION_FAILED = \"GUARDRAILS_VALIDATION_FAILED\",\n  MESSAGE_STREAM_INTERRUPTED = \"MESSAGE_STREAM_INTERRUPTED\",\n  UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n}\n\nregisterEnumType(FailedResponseStatusReason, {\n  name: \"FailedResponseStatusReason\",\n});\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class FailedResponseStatus extends BaseResponseStatus {\n  code: ResponseStatusCode = ResponseStatusCode.Failed;\n\n  @Field(() => FailedResponseStatusReason)\n  reason: FailedResponseStatusReason;\n\n  @Field(() => GraphQLJSON, { nullable: true })\n  details?: Record<string, any> = null;\n}\n\nexport const ResponseStatusUnion = createUnionType({\n  name: \"ResponseStatus\",\n  types: () =>\n    [\n      PendingResponseStatus,\n      SuccessResponseStatus,\n      FailedResponseStatus,\n    ] as const,\n});\n"],"mappings":";;;;;;;;;AASA,IAAY,kEAAL;AACL;AACA;AACA;;;mCAGe,oBAAoB,EACnC,MAAM,sBACP,CAAC;AAEF,+BAae,mBAAmB;2DACnB,mBAAmB;kFAdnB,EACb,YAAY,OAAO;AACjB,KAAI,MAAM,SAAS,mBAAmB,QACpC,QAAO;UACE,MAAM,SAAS,mBAAmB,OAC3C,QAAO;UACE,MAAM,SAAS,mBAAmB,QAC3C,QAAO;GAIZ,CAAC,gCACW;AAON,kCAAM,8BAA8B,mBAAmB;;;cACjC,mBAAmB;;;kFAFpC,EAAE,YAAY,oBAAoB,CAAC;AAMxC,kCAAM,8BAA8B,mBAAmB;;;cACjC,mBAAmB;;;kFAFpC,EAAE,YAAY,oBAAoB,CAAC;AAK/C,IAAY,kFAAL;AACL;AACA;AACA;;;mCAGe,4BAA4B,EAC3C,MAAM,8BACP,CAAC;AAGK,iCAAM,6BAA6B,mBAAmB;;;cAChC,mBAAmB;iBAMd;;;2DAJnB,2BAA2B;2DAG3BA,6BAAa,EAAE,UAAU,MAAM,CAAC;iFAPnC,EAAE,YAAY,oBAAoB,CAAC;AAW/C,MAAa,wDAAsC;CACjD,MAAM;CACN,aACE;EACE;EACA;EACA;EACD;CACJ,CAAC"}