{"version":3,"file":"response-status.type.mjs","names":[],"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;;;AAGF,iBAAiB,oBAAoB,EACnC,MAAM,sBACP,CAAC;AAEF,+BAae,mBAAmB;YAC/B,YAAY,mBAAmB;iCAdjC,cAAc,EACb,YAAY,OAAO;AACjB,KAAI,MAAM,SAAS,mBAAmB,QACpC,QAAO;UACE,MAAM,SAAS,mBAAmB,OAC3C,QAAO;UACE,MAAM,SAAS,mBAAmB,QAC3C,QAAO;GAIZ,CAAC,EACD,YAAY;AAON,kCAAM,8BAA8B,mBAAmB;;;cACjC,mBAAmB;;;oCAF/C,WAAW,EAAE,YAAY,oBAAoB,CAAC;AAMxC,kCAAM,8BAA8B,mBAAmB;;;cACjC,mBAAmB;;;oCAF/C,WAAW,EAAE,YAAY,oBAAoB,CAAC;AAK/C,IAAY,kFAAL;AACL;AACA;AACA;;;AAGF,iBAAiB,4BAA4B,EAC3C,MAAM,8BACP,CAAC;AAGK,iCAAM,6BAA6B,mBAAmB;;;cAChC,mBAAmB;iBAMd;;;YAJ/B,YAAY,2BAA2B;YAGvC,YAAY,aAAa,EAAE,UAAU,MAAM,CAAC;mCAP9C,WAAW,EAAE,YAAY,oBAAoB,CAAC;AAW/C,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,aACE;EACE;EACA;EACA;EACD;CACJ,CAAC"}