{"version":3,"sources":["../../src/react/index.ts"],"sourcesContent":["import {\n  useAction as useConvexAction,\n  useMutation as useConvexMutation,\n  useQuery as useConvexQuery,\n} from \"convex/react\";\nimport type { FunctionReference } from \"convex/server\";\nimport { Effect, Option, Schema } from \"effect\";\n\nexport const useQuery =\n  <Query extends FunctionReference<\"query\">, Args, Returns>({\n    query,\n    args,\n    returns,\n  }: {\n    query: Query;\n    args: Schema.Schema<Args, Query[\"_args\"]>;\n    returns: Schema.Schema<Returns, Query[\"_returnType\"]>;\n  }) =>\n  (actualArgs: Args): Option.Option<Returns> => {\n    const encodedArgs = Schema.encodeSync(args)(actualArgs);\n\n    const actualReturnsOrUndefined = useConvexQuery(query, encodedArgs);\n\n    if (actualReturnsOrUndefined === undefined) {\n      return Option.none();\n    } else {\n      const decodedReturns = Schema.decodeSync(returns)(\n        actualReturnsOrUndefined,\n      );\n\n      return Option.some(decodedReturns);\n    }\n  };\n\nexport const useMutation = <\n  Mutation extends FunctionReference<\"mutation\">,\n  Args,\n  Returns,\n>({\n  mutation,\n  args,\n  returns,\n}: {\n  mutation: Mutation;\n  args: Schema.Schema<Args, Mutation[\"_args\"]>;\n  returns: Schema.Schema<Returns, Mutation[\"_returnType\"]>;\n}) => {\n  const actualMutation = useConvexMutation(mutation);\n\n  return (actualArgs: Args): Effect.Effect<Returns> =>\n    Effect.gen(function* () {\n      const encodedArgs = yield* Schema.encode(args)(actualArgs);\n\n      const actualReturns = yield* Effect.promise(() =>\n        actualMutation(encodedArgs),\n      );\n\n      return yield* Schema.decode(returns)(actualReturns);\n    }).pipe(Effect.orDie);\n};\n\nexport const useAction = <\n  Action extends FunctionReference<\"action\">,\n  Args,\n  Returns,\n>({\n  action,\n  args,\n  returns,\n}: {\n  action: Action;\n  args: Schema.Schema<Args, Action[\"_args\"]>;\n  returns: Schema.Schema<Returns, Action[\"_returnType\"]>;\n}) => {\n  const actualAction = useConvexAction(action);\n\n  return (actualArgs: Args): Effect.Effect<Returns> =>\n    Effect.gen(function* () {\n      const encodedArgs = yield* Schema.encode(args)(actualArgs);\n\n      const actualReturns = yield* Effect.promise(() =>\n        actualAction(encodedArgs),\n      );\n\n      return yield* Schema.decode(returns)(actualReturns);\n    }).pipe(Effect.orDie);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAIO;AAEP,oBAAuC;AAEhC,IAAM,WACX,CAA0D;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AACF,MAKA,CAAC,eAA6C;AAC5C,QAAM,cAAc,qBAAO,WAAW,IAAI,EAAE,UAAU;AAEtD,QAAM,+BAA2B,aAAAA,UAAe,OAAO,WAAW;AAElE,MAAI,6BAA6B,QAAW;AAC1C,WAAO,qBAAO,KAAK;AAAA,EACrB,OAAO;AACL,UAAM,iBAAiB,qBAAO,WAAW,OAAO;AAAA,MAC9C;AAAA,IACF;AAEA,WAAO,qBAAO,KAAK,cAAc;AAAA,EACnC;AACF;AAEK,IAAM,cAAc,CAIzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,qBAAiB,aAAAC,aAAkB,QAAQ;AAEjD,SAAO,CAAC,eACN,qBAAO,IAAI,aAAa;AACtB,UAAM,cAAc,OAAO,qBAAO,OAAO,IAAI,EAAE,UAAU;AAEzD,UAAM,gBAAgB,OAAO,qBAAO;AAAA,MAAQ,MAC1C,eAAe,WAAW;AAAA,IAC5B;AAEA,WAAO,OAAO,qBAAO,OAAO,OAAO,EAAE,aAAa;AAAA,EACpD,CAAC,EAAE,KAAK,qBAAO,KAAK;AACxB;AAEO,IAAM,YAAY,CAIvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,mBAAe,aAAAC,WAAgB,MAAM;AAE3C,SAAO,CAAC,eACN,qBAAO,IAAI,aAAa;AACtB,UAAM,cAAc,OAAO,qBAAO,OAAO,IAAI,EAAE,UAAU;AAEzD,UAAM,gBAAgB,OAAO,qBAAO;AAAA,MAAQ,MAC1C,aAAa,WAAW;AAAA,IAC1B;AAEA,WAAO,OAAO,qBAAO,OAAO,OAAO,EAAE,aAAa;AAAA,EACpD,CAAC,EAAE,KAAK,qBAAO,KAAK;AACxB;","names":["useConvexQuery","useConvexMutation","useConvexAction"]}