{"version":3,"file":"controller.mjs","sources":["../../../../../src/query/controller.ts"],"sourcesContent":["import { type EventCallable, createEvent, sample } from \"effector\"\n\nimport type { RemoteOperation } from \"../remote_operation\"\n\nexport interface QueryMeta {\n  force: boolean\n}\n\ninterface QueryControllerOptions<Data, Variables> {\n  operation: RemoteOperation<Data, Variables, QueryMeta>\n\n  name: string\n}\n\nexport interface QueryController<Variables> {\n  start: EventCallable<Variables>\n  refresh: EventCallable<Variables>\n}\n\nexport function createQueryController<Data, Variables>({\n  operation,\n  name,\n}: QueryControllerOptions<Data, Variables>): QueryController<Variables> {\n  const start = createEvent<Variables>({ name: `${name}.start` })\n  const refresh = createEvent<Variables>({ name: `${name}.refresh` })\n\n  sample({\n    clock: refresh,\n    fn: (variables) => ({ variables, meta: { force: false } }),\n    target: operation.__.execute,\n  })\n\n  sample({\n    clock: start,\n    fn: (variables) => ({ variables, meta: { force: true } }),\n    target: operation.__.execute,\n  })\n\n  return { start, refresh }\n}\n"],"names":[],"mappings":";AAmBO,SAAS,sBAAuC;AAAA,EACrD;AAAA,EACA;AACF,GAAwE;AACtE,QAAM,QAAQ,YAAuB,EAAE,MAAM,GAAG,IAAI,UAAU;AAC9D,QAAM,UAAU,YAAuB,EAAE,MAAM,GAAG,IAAI,YAAY;AAE3D,SAAA;AAAA,IACL,OAAO;AAAA,IACP,IAAI,CAAC,eAAe,EAAE,WAAW,MAAM,EAAE,OAAO,MAAA;IAChD,QAAQ,UAAU,GAAG;AAAA,EAAA,CACtB;AAEM,SAAA;AAAA,IACL,OAAO;AAAA,IACP,IAAI,CAAC,eAAe,EAAE,WAAW,MAAM,EAAE,OAAO,KAAA;IAChD,QAAQ,UAAU,GAAG;AAAA,EAAA,CACtB;AAEM,SAAA,EAAE,OAAO,QAAQ;AAC1B;"}