{"ast":null,"code":"// src/notifyManager.ts\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = callback => {\n callback();\n };\n let batchNotifyFn = callback => {\n callback();\n };\n let scheduleFn = cb => setTimeout(cb, 0);\n const schedule = callback => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach(callback => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n return {\n batch: callback => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n },\n /**\n * All calls to the wrapped function will be batched.\n */\n batchCalls: callback => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n },\n schedule,\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n setNotifyFunction: fn => {\n notifyFn = fn;\n },\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n setBatchNotifyFunction: fn => {\n batchNotifyFn = fn;\n },\n setScheduler: fn => {\n scheduleFn = fn;\n }\n };\n}\nvar notifyManager = createNotifyManager();\nexport { createNotifyManager, notifyManager };","map":{"version":3,"names":["createNotifyManager","queue","transactions","notifyFn","callback","batchNotifyFn","scheduleFn","cb","setTimeout","schedule","push","flush","originalQueue","length","forEach","batch","result","batchCalls","args","setNotifyFunction","fn","setBatchNotifyFunction","setScheduler","notifyManager"],"sources":["/Users/shoofle/Projects/the-forest/client/node_modules/@tanstack/query-core/src/notifyManager.ts"],"sourcesContent":["// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\ntype BatchCallsCallback> = (...args: T) => void\n\ntype ScheduleFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: Array = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n let scheduleFn: ScheduleFunction = (cb) => setTimeout(cb, 0)\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleFn(() => {\n notifyFn(callback)\n })\n }\n }\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n return {\n batch: (callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n },\n /**\n * All calls to the wrapped function will be batched.\n */\n batchCalls: >(\n callback: BatchCallsCallback,\n ): BatchCallsCallback => {\n return (...args) => {\n schedule(() => {\n callback(...args)\n })\n }\n },\n schedule,\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n setNotifyFunction: (fn: NotifyFunction) => {\n notifyFn = fn\n },\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n setBatchNotifyFunction: (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n },\n setScheduler: (fn: ScheduleFunction) => {\n scheduleFn = fn\n },\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n"],"mappings":";AAYO,SAASA,oBAAA,EAAsB;EACpC,IAAIC,KAAA,GAA+B,EAAC;EACpC,IAAIC,YAAA,GAAe;EACnB,IAAIC,QAAA,GAA4BC,QAAA,IAAa;IAC3CA,QAAA,CAAS;EACX;EACA,IAAIC,aAAA,GAAsCD,QAAA,IAAyB;IACjEA,QAAA,CAAS;EACX;EACA,IAAIE,UAAA,GAAgCC,EAAA,IAAOC,UAAA,CAAWD,EAAA,EAAI,CAAC;EAE3D,MAAME,QAAA,GAAYL,QAAA,IAAmC;IACnD,IAAIF,YAAA,EAAc;MAChBD,KAAA,CAAMS,IAAA,CAAKN,QAAQ;IACrB,OAAO;MACLE,UAAA,CAAW,MAAM;QACfH,QAAA,CAASC,QAAQ;MACnB,CAAC;IACH;EACF;EACA,MAAMO,KAAA,GAAQA,CAAA,KAAY;IACxB,MAAMC,aAAA,GAAgBX,KAAA;IACtBA,KAAA,GAAQ,EAAC;IACT,IAAIW,aAAA,CAAcC,MAAA,EAAQ;MACxBP,UAAA,CAAW,MAAM;QACfD,aAAA,CAAc,MAAM;UAClBO,aAAA,CAAcE,OAAA,CAASV,QAAA,IAAa;YAClCD,QAAA,CAASC,QAAQ;UACnB,CAAC;QACH,CAAC;MACH,CAAC;IACH;EACF;EAEA,OAAO;IACLW,KAAA,EAAWX,QAAA,IAAyB;MAClC,IAAIY,MAAA;MACJd,YAAA;MACA,IAAI;QACFc,MAAA,GAASZ,QAAA,CAAS;MACpB,UAAE;QACAF,YAAA;QACA,IAAI,CAACA,YAAA,EAAc;UACjBS,KAAA,CAAM;QACR;MACF;MACA,OAAOK,MAAA;IACT;IAAA;AAAA;AAAA;IAIAC,UAAA,EACEb,QAAA,IAC0B;MAC1B,OAAO,IAAIc,IAAA,KAAS;QAClBT,QAAA,CAAS,MAAM;UACbL,QAAA,CAAS,GAAGc,IAAI;QAClB,CAAC;MACH;IACF;IACAT,QAAA;IAAA;AAAA;AAAA;AAAA;IAKAU,iBAAA,EAAoBC,EAAA,IAAuB;MACzCjB,QAAA,GAAWiB,EAAA;IACb;IAAA;AAAA;AAAA;AAAA;IAKAC,sBAAA,EAAyBD,EAAA,IAA4B;MACnDf,aAAA,GAAgBe,EAAA;IAClB;IACAE,YAAA,EAAeF,EAAA,IAAyB;MACtCd,UAAA,GAAac,EAAA;IACf;EACF;AACF;AAGO,IAAMG,aAAA,GAAgBvB,mBAAA,CAAoB","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}