{"_id":"react-executor","_rev":"36-a4a21a2677b62cbbfe38088a6b279249","name":"react-executor","dist-tags":{"latest":"0.0.28","next":"0.0.28-next.535c571"},"versions":{"0.0.1":{"name":"react-executor","version":"0.0.1","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.1","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"411265737bd1197256ef7f6ca1b4f891457de6b3","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.1.tgz","fileCount":22,"integrity":"sha512-HTrkSBH1kodZx/28pUd4tORuo2uaMcX//aH8BQP5azs7sMwTHPYz7h2iK1v6zmOJ+YXxfc0RCqmBrZi2nnBlLw==","signatures":[{"sig":"MEYCIQCTN+Z7m567u941GJPvUZiiUKNn7OpsiV/LvGD+Dbf7iwIhAJ1Bx0xsFV/M5wXvQxTznEcU5hWlONnlC9aGt4yuKHTd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33054},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json"},"gitHead":"0fdb286235de2e4b79d20c527b862e819d8ecd7b","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"react-hookers":"^5.1.0","parallel-universe":"^5.0.1"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.1_1713821508379_0.807509836171852","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"react-executor","version":"0.0.2","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.2","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"290a10cf05843c1bbfba96ff53f438c425e18738","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.2.tgz","fileCount":35,"integrity":"sha512-xIO03wvpzEFJWQCtp19SoYVGI8ZkLwUQKFuca3+5mR1+fMaWrpFOAyWZzw+p1uwdzZouzlS65pc8b4AnCC8Y3A==","signatures":[{"sig":"MEUCIDocz0AXG4E6/6Kasqhu+alsO34JpIl0GOlGGIDSEJnIAiEArNhr2WvX7ECVP2JWE76VRlRxkVyoo5vf7c9jmy1VOeU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70967},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryStale":{"types":"./plugin/retryStale.d.ts","import":"./plugin/retryStale.mjs","require":"./plugin/retryStale.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/disposeDeactivated":{"types":"./plugin/disposeDeactivated.d.ts","import":"./plugin/disposeDeactivated.mjs","require":"./plugin/disposeDeactivated.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"ef6a1303019e882a595a657e1adb7de0b4d671d4","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.2_1714228673181_0.9452491201885893","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"react-executor","version":"0.0.3","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.3","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"35d65460e6bb8de4f6f24a1e10a29c7ec7713277","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.3.tgz","fileCount":58,"integrity":"sha512-gqqEX2JVw7rE+eJpV/G633jTkDjKCjq4oDOxMyAr7ulNLhtB0WbX+u1DooG35AyAoJigtylbYtsCxdARFCtKpg==","signatures":[{"sig":"MEQCIGPm2MhHWdAvQPdjy9LzANLx5vfzozOG7PqWDjoAFqsqAiAqtjU8BLHu8GXe22Bp+dohhRk6EUQOpmF4SeAfEXYOEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":113369},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryStale":{"types":"./plugin/retryStale.d.ts","import":"./plugin/retryStale.mjs","require":"./plugin/retryStale.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/disposeDeactivated":{"types":"./plugin/disposeDeactivated.d.ts","import":"./plugin/disposeDeactivated.mjs","require":"./plugin/disposeDeactivated.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"220fc1eb8c0e3468bf9c66339b6fa5a20eab6d84","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.3_1714411160127_0.19734792340518714","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"react-executor","version":"0.0.4","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.4","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"8552091b08a2753e46be1b38ed8e4f5596de4a8b","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.4.tgz","fileCount":58,"integrity":"sha512-Rp5c66nqHCC+pXsvYxiZpMst9+OqYSfGMfNxxH350sXSD/jxQGTtciPtPna5/fCqyGKrO/5f+J2pldenhWWT7g==","signatures":[{"sig":"MEYCIQDwD9tzq0xGZ0wrmYLoMF6vj6KxacPKZkJjeTU9IuhdEAIhAP2aQD2Q627AcaWfHJ4l1hrPczf/KxKrSjSXAtb3qqPm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123223},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryStale":{"types":"./plugin/retryStale.d.ts","import":"./plugin/retryStale.mjs","require":"./plugin/retryStale.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/disposeDeactivated":{"types":"./plugin/disposeDeactivated.d.ts","import":"./plugin/disposeDeactivated.mjs","require":"./plugin/disposeDeactivated.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"15c17e9c0d0d437fc98c1b9026d6ea54a0060aaf","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.4_1714478243137_0.17409369783397266","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"react-executor","version":"0.0.5","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.5","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"54a7d557cd4447ff05f83f957849280fcae51d0c","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.5.tgz","fileCount":58,"integrity":"sha512-JAyZzqp+nYZr1CS5ghNq7M571pNFyQMJTbnvg/rEqVRucgVVc4qcQMAnoPN9vrv03GWYyS1mlI3Crf4UJ27ujA==","signatures":[{"sig":"MEUCIBQRgt/aZ7w1X55b8d7zJ43PkQZudhu6yGvvEWAlMNvEAiEA+JUIyXbjczeOqOtb3IChlOA0xvp61m1oaH4IiM6WF1Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124135},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryStale":{"types":"./plugin/retryStale.d.ts","import":"./plugin/retryStale.mjs","require":"./plugin/retryStale.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/disposeDeactivated":{"types":"./plugin/disposeDeactivated.d.ts","import":"./plugin/disposeDeactivated.mjs","require":"./plugin/disposeDeactivated.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"0a783b98a77773732de338fc100c2bbb7c5acd1f","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.5_1714500077067_0.5944849739826497","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"react-executor","version":"0.0.6","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.6","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"41a5dca4cd5a1520419faee9259c3f2a7e1db745","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.6.tgz","fileCount":58,"integrity":"sha512-41fTqSN2imEw9TvB9lgbzXnUdTEN2KxSdORLTPF+GuQlYnZWypanN31hBbXNIYWlY/SooWsJ/szqlhqG0yCxSg==","signatures":[{"sig":"MEUCIQCn4bMomvlpgwP11yPStd1DzyHgCIVaDbkQbIdiaZmZvAIgJadxaqeok+y4+Mrzd1AswXcs3LpcSzNGIR2YpUW/Qyw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124237},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryStale":{"types":"./plugin/retryStale.d.ts","import":"./plugin/retryStale.mjs","require":"./plugin/retryStale.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/disposeDeactivated":{"types":"./plugin/disposeDeactivated.d.ts","import":"./plugin/disposeDeactivated.mjs","require":"./plugin/disposeDeactivated.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"2ef7d43850becdb9e7ef306a781cec2755d3896b","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.6_1714502058861_0.8291061609124624","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"react-executor","version":"0.0.7","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.7","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"e2494c23e6918824db6f3d17893fd4959193e51f","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.7.tgz","fileCount":61,"integrity":"sha512-UgCMRUz88Xgrv+dy+lWbITKg84R07eREsrkTgc0WYnRcR83LnfDgf0MEkpsJkGkkCdvkXA0sHxEvCH9ppfqFbg==","signatures":[{"sig":"MEUCIQDTrxflAh0UgoT7pM0flTzZ5P/Ea/r1Euui7jKGrFrFywIgW9q24x1OxWOo+0ZNcxL6Gw8lrcXfl/aZIkEIPAtJTYQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":132031},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryStale":{"types":"./plugin/retryStale.d.ts","import":"./plugin/retryStale.mjs","require":"./plugin/retryStale.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/disposeDeactivated":{"types":"./plugin/disposeDeactivated.d.ts","import":"./plugin/disposeDeactivated.mjs","require":"./plugin/disposeDeactivated.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"8a08363fd6b75fc3fee106714e9806dc13aa33bb","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.7_1714658760849_0.5461418169511671","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"react-executor","version":"0.0.8","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.8","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"5adfe1acdf14917083becb6bcb015865100096f3","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.8.tgz","fileCount":61,"integrity":"sha512-yBgVR9Vt8qvcNMGPg7Jv6CTbOmpGYt1YmNhvafTHjPV8LHHrjNNg0YWFWOtd+VioUORf/ZlG52R2UiUQKz1vkw==","signatures":[{"sig":"MEQCIEgMnA41kxqxHUxHKTnoIznehVRIjW6qeEI5U08NgwmoAiAhPM5C4cMEYApAlfVYzTFZDH8USMMl/jXNHdh5mIiqSw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142887},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"0e3484db8a13632bf031fc14643f6f0388c51f3c","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.8_1715431976553_0.7926441118137457","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"react-executor","version":"0.0.9","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.9","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"c734b371a7b48bd77ec8271a1afff12c9b508169","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.9.tgz","fileCount":61,"integrity":"sha512-XfHn9wTH//OF72dDMN3qnAbLylObZBw1WYCM1EtTDQ19F+VH1tQOihYrNfBqZLKzRV8dL2yTXErdVoiRtRfdZQ==","signatures":[{"sig":"MEYCIQD7bD22M6Y4wdAgeNlmcMMFNf6ozuoTkzhlKQm23x7AywIhAIJ8Y5PEnLUsVhFM++lw9q2kc88+VMTCYKxdPSDb2Siq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143869},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"7dcc51e7e8292b6676ff92b4bf60a09f53a0a162","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.12.2","dependencies":{"parallel-universe":"^6.0.0","use-sync-external-store":"^1.2.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.9_1715784488469_0.5651819752870946","host":"s3://npm-registry-packages"}},"0.0.10":{"name":"react-executor","version":"0.0.10","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.10","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"49f0c25335b9124edf031bee44a9a7f708a1ce58","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.10.tgz","fileCount":79,"integrity":"sha512-hmLaai8iFZm4J2PnA+tLn8KFf3Dy3VM1EXxOScPCxMBxs7mcALSkBlR74WrE7IhcyNs86C/+IokGfqyjr3WExg==","signatures":[{"sig":"MEUCIAuWIIJfPsm+qvQ8sSPPcEAFcVZYLFKF5I+QXm6NMqseAiEA9AK74wjUDG/sVfGcSRz8qJXIkUnYo9eTOSGux3wIq/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171635},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"f51943388a9e44c1fa44239c5347690029bca501","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.13.1","dependencies":{"parallel-universe":"^6.0.0","use-sync-external-store":"^1.2.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.10_1715965756124_0.8732500691317191","host":"s3://npm-registry-packages"}},"0.0.11":{"name":"react-executor","version":"0.0.11","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.11","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"0e594df570003dfad05668f79a36641eb3b99658","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.11.tgz","fileCount":82,"integrity":"sha512-SwBe02xQc4g7poGXqbyX2Aek7tA7U+VvX/ge5cA97ZDpUbK435O9IQrYQOdlqWv0RTScSfaFSfkiIjq/aOmwLg==","signatures":[{"sig":"MEQCICF7fT0nY6cLYgi6IW3QvH7UpjCjnN6fRSCAAnVBTCmqAiA2J4rDjrPJsHOJu17thgEo9b0tDR/ADzGvJzB82CkmXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175023},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"b56ad8b5f6505cf2f7e0ceeacbbfc14f5f3eae22","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.13.1","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.11_1716843990764_0.712943099581747","host":"s3://npm-registry-packages"}},"0.0.12":{"name":"react-executor","version":"0.0.12","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.12","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"693731f373d9dae16c01bcb92be7c36f59b99598","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.12.tgz","fileCount":82,"integrity":"sha512-5MVFhVLeWHXoYtv/6PI/LyGsmoMKdh8xpMDGHqWwBtkP+6OxXoHUu62l+l942i7nsiSWNQGA+MrT7aIVWcQ3Rg==","signatures":[{"sig":"MEUCIQC02OvCC/fYHWJWhCECyhsbU8d7KvKR8CV+yz1f1P29JgIgaF9VdXTP2utbs5rgJnz3i8okeLM4s2ednT2sPceTrsk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175023},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"16e13fc3419dac9ceedd916cfa2255923b3570a7","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.13.1","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.12_1716844427887_0.12815756081250074","host":"s3://npm-registry-packages"}},"0.0.13":{"name":"react-executor","version":"0.0.13","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.13","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"c40397b5a44da47a0010573f28c49bcfc49b271a","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.13.tgz","fileCount":82,"integrity":"sha512-6W7oujXWwFjzYlpfsnJhaRTQp+4YTkmyKESz9gE81dh9BhI7lL/Y+cuWk/a7PpH6ozpgeVAUn3dq2wu0+02jKw==","signatures":[{"sig":"MEQCIA6Wq4nYtJ9wew2+9Sx3TB2O4DWEsUQZcXZLGds01S77AiA+NQlKPH6bXgDeYmGh91wX1VyxwQrrYSpokZJffsHvhA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175129},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/retryFocused":{"types":"./plugin/retryFocused.d.ts","import":"./plugin/retryFocused.mjs","require":"./plugin/retryFocused.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"4f7ac03a2d52478f51cf5c20eabd4c7eb67c6cad","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.13.1","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.13_1717100196033_0.3146018654902798","host":"s3://npm-registry-packages"}},"0.0.14":{"name":"react-executor","version":"0.0.14","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.14","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"db5a1d9fc04cfe40003c301719df79e7ca36ee5c","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.14.tgz","fileCount":100,"integrity":"sha512-zizy76thuwagplmclcXOIEQyxs/HQ33KWi/ooVLBKa0mvdKA6KEbyYZndfDC08U04TGmaPdg+ptAdeDT2rG+bg==","signatures":[{"sig":"MEUCIQCxtVO65d37nims+mawxQCIcgNmDjeucnrmXl59KoLS+gIgOVgz146s3VAGubXO/l3Pvha6fNqHyGtPFKV27/FID5g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":205270},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/resolveWhen":{"types":"./plugin/resolveWhen.d.ts","import":"./plugin/resolveWhen.mjs","require":"./plugin/resolveWhen.js"},"./plugin/abortPending":{"types":"./plugin/abortPending.d.ts","import":"./plugin/abortPending.mjs","require":"./plugin/abortPending.js"},"./plugin/rejectPending":{"types":"./plugin/rejectPending.d.ts","import":"./plugin/rejectPending.mjs","require":"./plugin/rejectPending.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./observable/windowOnline":{"types":"./observable/windowOnline.d.ts","import":"./observable/windowOnline.mjs","require":"./observable/windowOnline.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"cbb070766b38e83fcba3f818133966959f718e54","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.5.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.13.1","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.14_1717328267240_0.052002832411982336","host":"s3://npm-registry-packages"}},"0.0.15":{"name":"react-executor","version":"0.0.15","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.15","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"a643b5d3e8368c1067ad19dcaa5e1773be228c3c","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.15.tgz","fileCount":100,"integrity":"sha512-548WcGjyI65sNDSvvvd0O+vB6/9JreX7MgaRAKfalDvIxEmbPjQ9Lkpa2waQWGVdTKZH4lUS9Dxm5KKYzLtBFw==","signatures":[{"sig":"MEUCIQDi2A3n8xTNpcy2vcTqYrtWvMBtGglkM4Qsirs8vrsStQIgbf1+mZ1e4XMHXquUPHaFvNdqSFV0IZDydNhpm5ZSY3I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":208230},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/resolveWhen":{"types":"./plugin/resolveWhen.d.ts","import":"./plugin/resolveWhen.mjs","require":"./plugin/resolveWhen.js"},"./plugin/abortPending":{"types":"./plugin/abortPending.d.ts","import":"./plugin/abortPending.mjs","require":"./plugin/abortPending.js"},"./plugin/rejectPending":{"types":"./plugin/rejectPending.d.ts","import":"./plugin/rejectPending.mjs","require":"./plugin/rejectPending.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./observable/windowOnline":{"types":"./observable/windowOnline.d.ts","import":"./observable/windowOnline.mjs","require":"./observable/windowOnline.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"7c84cecdb9a4c85a8ca4ca1793a717dde15e1169","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.7.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.14.0","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.15_1717949902431_0.9860764882470958","host":"s3://npm-registry-packages"}},"0.0.16":{"name":"react-executor","version":"0.0.16","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.16","homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"9ee2c5d305c856a86bfa5dfb179f476562de4546","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.16.tgz","fileCount":100,"integrity":"sha512-TyY0rf+cFiiKvIKrFaVdnZukXrLcqaqNQYrfprnIFAXZ963dMSv/YU6+8n4CfeLM+9XmyDwC+4FP3c+S2I6uoA==","signatures":[{"sig":"MEYCIQCz4gqH1N6XON9tpIZK7a3GrWJ8MyJLFCOiAggZ7Cf5gAIhALNAqDz2TtEGef3+297WioaNpWpkPmO/UGq9USSkLkqP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":209932},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/resolveWhen":{"types":"./plugin/resolveWhen.d.ts","import":"./plugin/resolveWhen.mjs","require":"./plugin/resolveWhen.js"},"./plugin/abortPending":{"types":"./plugin/abortPending.d.ts","import":"./plugin/abortPending.mjs","require":"./plugin/abortPending.js"},"./plugin/rejectPending":{"types":"./plugin/rejectPending.d.ts","import":"./plugin/rejectPending.mjs","require":"./plugin/rejectPending.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./observable/windowOnline":{"types":"./observable/windowOnline.d.ts","import":"./observable/windowOnline.mjs","require":"./observable/windowOnline.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"bebe4a6bd3ba87c8f702268035fe8aeaae651de6","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.7.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.14.0","dependencies":{"parallel-universe":"^6.0.0"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.16_1718913416049_0.9618236131110569","host":"s3://npm-registry-packages"}},"0.0.17":{"name":"react-executor","version":"0.0.17","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.17","homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"48099a5c2591fed85d449dae61afd9f158447161","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.17.tgz","fileCount":100,"integrity":"sha512-kR0OWdwL28tVo1oSYdMIvDlygj/4LALWKX4EAwfKsuSoEto1EJk5MggLR1dZAbWao6TzdlXhsZIt3gCLiOSSGg==","signatures":[{"sig":"MEUCIQDpAcDYXZV88TMS2Uel3tSoANHN2ta1LPyLFgYQFL6FVAIgQRN3WLq7FjsnHsww9fOyagCsZIQgdP0W37TluLg2ONY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":210825},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/resolveWhen":{"types":"./plugin/resolveWhen.d.ts","import":"./plugin/resolveWhen.mjs","require":"./plugin/resolveWhen.js"},"./plugin/abortPending":{"types":"./plugin/abortPending.d.ts","import":"./plugin/abortPending.mjs","require":"./plugin/abortPending.js"},"./plugin/rejectPending":{"types":"./plugin/rejectPending.d.ts","import":"./plugin/rejectPending.mjs","require":"./plugin/rejectPending.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./observable/windowOnline":{"types":"./observable/windowOnline.d.ts","import":"./observable/windowOnline.mjs","require":"./observable/windowOnline.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"6615dacb1f6e738a49f76e8ddf1a193988978992","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.7.0","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.15.0","dependencies":{"parallel-universe":"^6.1.1"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.17_1719933008470_0.8927868149577027","host":"s3://npm-registry-packages"}},"0.0.18":{"name":"react-executor","version":"0.0.18","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.18","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"8e573c6afbb3c3a48a7f6967e46a93c2e3bff82c","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.18.tgz","fileCount":103,"integrity":"sha512-OalyC3AkizXH0ZsGmEmIjsodWdflazFHNbUkE1N1oTyAUMtzlRhiEvRhrAu4vl014OJc1AUM/T2/4xzKZWpoWg==","signatures":[{"sig":"MEYCIQCv2e6x7XJ+iGr7rmdA1vfg5nF9ClmtAYVZ8617i1Hm2QIhAJksv7aHwH5BOiwgfqCyaJGjhOkF8xFiMvJq2YGZizIX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214576},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/resolveWhen":{"types":"./plugin/resolveWhen.d.ts","import":"./plugin/resolveWhen.mjs","require":"./plugin/resolveWhen.js"},"./plugin/abortPending":{"types":"./plugin/abortPending.d.ts","import":"./plugin/abortPending.mjs","require":"./plugin/abortPending.js"},"./plugin/rejectPending":{"types":"./plugin/rejectPending.d.ts","import":"./plugin/rejectPending.mjs","require":"./plugin/rejectPending.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./observable/windowOnline":{"types":"./observable/windowOnline.d.ts","import":"./observable/windowOnline.mjs","require":"./observable/windowOnline.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"}},"gitHead":"8db51a45f786057cc99e23ba7fdc7bfdeb25a345","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{"parallel-universe":"^6.1.1"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.18_1741988298277_0.45829121799422756","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"react-executor","version":"0.0.19","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.19","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"a2860fcd13152a79a667b93682e6b9ecd196c453","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.19.tgz","fileCount":115,"integrity":"sha512-gVUT1XkoqFqgS4mHKWrZH/35uKS1IRGcjvakI/j3RL8jAp+berNdn3mhUrwdkOO5C9YAZxfHBDO2E/l/WL8bBg==","signatures":[{"sig":"MEUCIQCaYCYd35XeiStHy2BqOaF5w9NRjMiLlLj0GBpR9THamwIgRhDSq3b524XA291fY7fPlc+mZSrvdWdS7xgo/wEuTVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235069},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"fc2c26cc901634f87021b0b0d5b6161138a33274","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.0","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.19_1742825697713_0.7436409571163789","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"react-executor","version":"0.0.20","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.20","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"465ba8c85b2c9e94378ce1fc85f1f9620498c8c5","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.20.tgz","fileCount":115,"integrity":"sha512-A5vXNMKHFiYXcQOaIkE8lna/8s166NhJQCoZxu6nsz0MPv6qDKfa4SRVH86lAWaHbhacP3nyVkYKdaQ5xa39DQ==","signatures":[{"sig":"MEYCIQDpWRB13a9PpLaxB/jkz64xSyfiZxRzfK5kjGeUgQZ6+gIhAPM+9CLD15GZtMaCmJePgjrsXQL1l1wPq5mp4/5mOnmR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235040},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"131f45265b0538963c9f1aec48ca3af0f2fdfdf6","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.0","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.20_1743001697866_0.614230146274263","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"react-executor","version":"0.0.21","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.21","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"e9fa108972d92dfd8c2b451597c34c1aba5366b2","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.21.tgz","fileCount":115,"integrity":"sha512-+7Ee9g5DbuDyh4AN0NMzEvuBOKYUZibKHdXHMul+zD4XTtW9z2dHk8PdTPzhk3Zd/OTG9028Kh4YThLgH8MX3w==","signatures":[{"sig":"MEYCIQCv+c+XMSFZC0fnIOmBFQ5L0DrQs7qSKAVQsAI+hic6ewIhAKhBHFleEMyXFDgQ2IfcjJHlM2JN7/3ATnIvEOLnQTSU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235316},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"d6824b8f47f5dca4fca8f9a448ccf04c053870cf","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.0","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.21_1746004839674_0.4705646365653575","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"react-executor","version":"0.0.22","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.22","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"0ca391d816f11a691c9150f7b0839762b47c9418","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.22.tgz","fileCount":117,"integrity":"sha512-WB1NPWtk0DnN3VaLgnYNcgn/9DYDEf5rzUSObxoiuWGbvopeHJxX8hr69FrK9u5TIp601tR04eda/HEpH5lPig==","signatures":[{"sig":"MEYCIQCMXep1sdVxXNjLdNJk46bl/VA2Pi6kGllAGu73iAQxLgIhAPcTwsV2OiMVix6vrelQw/guW7jnVTqpSylFBZV/c1Cx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244644},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"a9e3094c57070ad2acf609fdbd3cd6871aade1fc","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.1","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.22_1747051597305_0.9165984851064082","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"react-executor","version":"0.0.23","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.23","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"1a0a309a40a51fbf05258f90c061efc9fa9cc138","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.23.tgz","fileCount":117,"integrity":"sha512-sF3SNmKzeYe8iEv4fqPIiFY3uYp4QNRsn6E4WfeeKr457PpCWF9ao/+PYyAIt7IoEhepA0XIrha2ddqsooYEBg==","signatures":[{"sig":"MEUCIBFC19QWN8S6mnFBbl1yzgvWFRpEVzQFktirG6SeappIAiEAvidBIGOYup7YnzkS7i29y1RmgynUQ5jGOVibrVELbCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246947},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"b24f76a12c62d12b7c15384954ccff01180267f3","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.1","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.23_1747674158445_0.3673829377748905","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"react-executor","version":"0.0.24","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.24","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"5336869cbd8c25c575e3fc3ba2991d5a4d509767","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.24.tgz","fileCount":117,"integrity":"sha512-g1hiyxA33hkS76cS02Net7PymBLBukHEUS56zlZtPCN4sLAA9B43hLnNeSyzWfe6MBo7bvtQt3JBOcLm0ZIDtA==","signatures":[{"sig":"MEUCIHJOk+f3Atv0b79RAqBGn0WzVFR95+3YvC3oq8i4dRuOAiEAgXgYXZCgwxw2qJDXhPFKCJLnZs+f/ObG49ugXi8Rh14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":248158},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"1cc20d22e5434d4d9b40338de549ac127ca7d9ae","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.1","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.24_1747738687998_0.4418931858521409","host":"s3://npm-registry-packages-npm-production"}},"0.0.24-next.fe557b7":{"name":"react-executor","version":"0.0.24-next.fe557b7","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.24-next.fe557b7","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"a20109caf2a0297230af0d4e9ff43878cc7b43eb","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.24-next.fe557b7.tgz","fileCount":117,"integrity":"sha512-rBH7keb9lIDqmct8aMs8wiQ+meD7BA/W7qk4Onoq1mPAg5a5RocjmYbq2C7cpCnlyLbVhGiK4HD3kIUT6AXK/A==","signatures":[{"sig":"MEYCIQCNydiUj/S/TEDRdDlMfjfwlqhsD8u/l847MuJ3Hd5elwIhAIYqoYxn9KesWUcJP2cvT9s+f2kvHKsOLXoG0DyrWhjU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250614},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"fe557b7d38dfbc97c1c7d751f292c2ef116532c2","_npmUser":{"name":"smikhalevski","actor":{"name":"smikhalevski","type":"user","email":"smikhalevski@gmail.com"},"email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.2","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.24-next.fe557b7_1750935891121_0.009701564199567914","host":"s3://npm-registry-packages-npm-production"}},"0.0.24-next.9a35a1a":{"name":"react-executor","version":"0.0.24-next.9a35a1a","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.24-next.9a35a1a","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"da71885ec0b389b529e074961452490ca8a6d3b1","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.24-next.9a35a1a.tgz","fileCount":117,"integrity":"sha512-Ma22cM4mVfMETbU5nXYJBCFI00YR6CcBz37BpdDeMCWHEjKBoUIn1qONF065hhRyQwUxVLLALZ19AIuhR4RH7Q==","signatures":[{"sig":"MEUCIQCTqw3h3Zc8cFHXi+25Ni8Nu03LaYL2CFj42wJvG2SCQgIgNWtRcaoH7zAtmBfonNZHD1hsmG6hB2wpos78ubJabwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250432},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"9a35a1a5c25e76b402792fee385629d70517dc74","_npmUser":{"name":"smikhalevski","actor":{"name":"smikhalevski","type":"user","email":"smikhalevski@gmail.com"},"email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.2","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.24-next.9a35a1a_1750948460491_0.6056978632708736","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"react-executor","version":"0.0.25","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.25","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"b685c113736a4dbfd2b4015281a5242a599c40bd","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.25.tgz","fileCount":117,"integrity":"sha512-lvu4YEw/64B9nMGSDOk4cieqXKzWSunHg8nj1sdy/gtZAohQukvGJp7wbnrI/qdX3fZaRTl8aHUgE6ph3ifJlw==","signatures":[{"sig":"MEUCIQDboOIineu86zCYEV71CB9mIDBUebItfgCdmOOet4q++QIgBSCAzEzkjOWNMED0SiPiPjooJ8x+64yCUH1Mvj4WdMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":251882},"main":"./index.js","types":"./index.d.ts","module":"./index.mjs","exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.js"},"./ssr":{"types":"./ssr/index.d.ts","import":"./ssr/index.mjs","require":"./ssr/index.js"},"./core":{"types":"./core.d.ts","import":"./core.mjs","require":"./core.js"},"./ssr/node":{"types":"./ssr/node/index.d.ts","import":"./ssr/node/index.mjs","require":"./ssr/node/index.js"},"./package.json":"./package.json","./observable/not":{"types":"./observable/not.d.ts","import":"./observable/not.mjs","require":"./observable/not.js"},"./plugin/bindAll":{"types":"./plugin/bindAll.d.ts","import":"./plugin/bindAll.mjs","require":"./plugin/bindAll.js"},"./plugin/abortWhen":{"types":"./plugin/abortWhen.d.ts","import":"./plugin/abortWhen.mjs","require":"./plugin/abortWhen.js"},"./plugin/resolveBy":{"types":"./plugin/resolveBy.d.ts","import":"./plugin/resolveBy.mjs","require":"./plugin/resolveBy.js"},"./plugin/retryWhen":{"types":"./plugin/retryWhen.d.ts","import":"./plugin/retryWhen.mjs","require":"./plugin/retryWhen.js"},"./plugin/retryRejected":{"types":"./plugin/retryRejected.d.ts","import":"./plugin/retryRejected.mjs","require":"./plugin/retryRejected.js"},"./plugin/detachInactive":{"types":"./plugin/detachInactive.d.ts","import":"./plugin/detachInactive.mjs","require":"./plugin/detachInactive.js"},"./plugin/retryActivated":{"types":"./plugin/retryActivated.d.ts","import":"./plugin/retryActivated.mjs","require":"./plugin/retryActivated.js"},"./plugin/retryFulfilled":{"types":"./plugin/retryFulfilled.d.ts","import":"./plugin/retryFulfilled.mjs","require":"./plugin/retryFulfilled.js"},"./plugin/invalidateAfter":{"types":"./plugin/invalidateAfter.d.ts","import":"./plugin/invalidateAfter.mjs","require":"./plugin/invalidateAfter.js"},"./plugin/invalidatePeers":{"types":"./plugin/invalidatePeers.d.ts","import":"./plugin/invalidatePeers.mjs","require":"./plugin/invalidatePeers.js"},"./plugin/abortDeactivated":{"types":"./plugin/abortDeactivated.d.ts","import":"./plugin/abortDeactivated.mjs","require":"./plugin/abortDeactivated.js"},"./plugin/retryInvalidated":{"types":"./plugin/retryInvalidated.d.ts","import":"./plugin/retryInvalidated.mjs","require":"./plugin/retryInvalidated.js"},"./observable/windowBlurred":{"types":"./observable/windowBlurred.d.ts","import":"./observable/windowBlurred.mjs","require":"./observable/windowBlurred.js"},"./observable/windowFocused":{"types":"./observable/windowFocused.d.ts","import":"./observable/windowFocused.mjs","require":"./observable/windowFocused.js"},"./plugin/abortPendingAfter":{"types":"./plugin/abortPendingAfter.d.ts","import":"./plugin/abortPendingAfter.mjs","require":"./plugin/abortPendingAfter.js"},"./plugin/detachDeactivated":{"types":"./plugin/detachDeactivated.d.ts","import":"./plugin/detachDeactivated.mjs","require":"./plugin/detachDeactivated.js"},"./plugin/invalidateByPeers":{"types":"./plugin/invalidateByPeers.d.ts","import":"./plugin/invalidateByPeers.mjs","require":"./plugin/invalidateByPeers.js"},"./plugin/rejectPendingAfter":{"types":"./plugin/rejectPendingAfter.d.ts","import":"./plugin/rejectPendingAfter.mjs","require":"./plugin/rejectPendingAfter.js"},"./plugin/synchronizeStorage":{"types":"./plugin/synchronizeStorage.d.ts","import":"./plugin/synchronizeStorage.mjs","require":"./plugin/synchronizeStorage.js"},"./observable/navigatorOnline":{"types":"./observable/navigatorOnline.d.ts","import":"./observable/navigatorOnline.mjs","require":"./observable/navigatorOnline.js"},"./observable/navigatorOffline":{"types":"./observable/navigatorOffline.d.ts","import":"./observable/navigatorOffline.mjs","require":"./observable/navigatorOffline.js"}},"gitHead":"b9dfc7dbf5009859425d70e4a72f08351459d8b9","_npmUser":{"name":"smikhalevski","actor":{"name":"smikhalevski","type":"user","email":"smikhalevski@gmail.com"},"email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.2","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.25_1751723298867_0.7528004574863265","host":"s3://npm-registry-packages-npm-production"}},"0.0.25-next.9e1a944":{"name":"react-executor","version":"0.0.25-next.9e1a944","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.25-next.9e1a944","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"ece408c5d1cc0419ce8983da7ed629e503075bd6","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.25-next.9e1a944.tgz","fileCount":79,"integrity":"sha512-nDbeoU7fHgXsm1ofl+lyoVG5q9DpBGfwzHSrvsNKCIET3sWV302QSAfYUCmnqhfz6Gjh6w5+nIRDZ1ud3FxtUA==","signatures":[{"sig":"MEUCIQC0zdS8yntGHdlhuUuJ3EVRmsqg4/onG2dYYITzriO+IgIgJ/mUzRirIHOWRMxiUvjuWcPNrzvWQPkhQQOcvCKevu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187614},"main":"./index.js","type":"module","types":"./index.d.ts","exports":{".":"./index.js","./ssr":"./ssr/index.js","./core":"./core.js","./ssr/node":"./ssr/node/index.js","./package.json":"./package.json","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/syncStorage":"./plugin/syncStorage.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/navigatorOffline":"./observable/navigatorOffline.js"},"gitHead":"9e1a9447da1d70592214fb24fd7d31d0d78beb4e","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.25-next.9e1a944_1754333625935_0.09500180629667665","host":"s3://npm-registry-packages-npm-production"}},"0.0.25-next.b8e5b7a":{"name":"react-executor","version":"0.0.25-next.b8e5b7a","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.25-next.b8e5b7a","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://github.com/smikhalevski/react-executor#readme","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"94eedc4632b289d121918444d958c83438938294","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.25-next.b8e5b7a.tgz","fileCount":73,"integrity":"sha512-NutKq52flxYueHFkiFGZB2Z009LQa/k2kx/Sdp9wQal/e70B6VxoUuN/DOJXeovvyuboImP/BOxb4WoRzxzfNQ==","signatures":[{"sig":"MEYCIQD2C5gG6QuEqVwl9oozNf7Ygwn0FQv3w7QgWdIGWbovjwIhAKcIIPMItMN2rBiJQxVCq6kpzjjbtMr4ExbJJOsjcJgA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182673},"main":"./index.js","type":"module","types":"./index.d.ts","exports":{".":"./index.js","./ssr":"./ssr/index.js","./core":"./core.js","./package.json":"./package.json","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/syncStorage":"./plugin/syncStorage.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/navigatorOffline":"./observable/navigatorOffline.js"},"gitHead":"b8e5b7af59ed0ccd83ff4c7bd1dc5a8b93664153","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.25-next.b8e5b7a_1754928369941_0.38852839891093427","host":"s3://npm-registry-packages-npm-production"}},"0.0.25-next.f6ec1e0":{"name":"react-executor","version":"0.0.25-next.f6ec1e0","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.25-next.f6ec1e0","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://megastack.dev/react-executor","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"bb7cd65be6edcaa8da524a03c3cfec9e18f281d3","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.25-next.f6ec1e0.tgz","fileCount":75,"integrity":"sha512-+GM6l30W9lZ90qUhWzWXhd/QM9vwTZ5dSp+zkOHuS26XNJGpp1QR5E4Tu29JAN5D5W34uRo/akmRvbJFkSmV0w==","signatures":[{"sig":"MEUCIDw0pZ1prvjA2lMh0UTRSASLY8SjpSsbsYr7F45oAHkqAiEAoKZKGHfX++nObKn1N+BWsYVPkPuHkuisStLX2VzVvYE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185910},"main":"./index.js","type":"module","types":"./index.d.ts","exports":{".":"./index.js","./ssr":"./ssr/index.js","./core":"./core.js","./package.json":"./package.json","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/syncExternalStore":"./plugin/syncExternalStore.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./plugin/syncBrowserStorage":"./plugin/syncBrowserStorage.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/navigatorOffline":"./observable/navigatorOffline.js"},"gitHead":"f6ec1e0e8cc89850e4e64382090c4f118475f5c2","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.25-next.f6ec1e0_1755861968205_0.26947280898087467","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"react-executor","version":"0.0.26","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.26","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://megastack.dev/react-executor","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"683c99c5598cdfb204da40f49e4c95ae78f5c6de","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.26.tgz","fileCount":75,"integrity":"sha512-5av2WNEY/nURy4rys129kvSuC5BTgr/nJP7K5YVqNE16zEXJLft1oLK8DSAWL7pTCf6nDh+rNLANx4miR9e3PA==","signatures":[{"sig":"MEUCIFL6X5WuUskmYYzPPmf+3mjFHQwT2MSlhSOrPxPAqrhKAiEAgwK22eJXqqMh+UBakg9Z+VqJ2uZCJ0boLvf3VkoNQWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185897},"main":"./index.js","type":"module","types":"./index.d.ts","exports":{".":"./index.js","./ssr":"./ssr/index.js","./core":"./core.js","./package.json":"./package.json","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/syncExternalStore":"./plugin/syncExternalStore.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./plugin/syncBrowserStorage":"./plugin/syncBrowserStorage.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/navigatorOffline":"./observable/navigatorOffline.js"},"gitHead":"0da1087db37b793634823f795c19f5918ae17937","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.26_1755862740050_0.2273249285581722","host":"s3://npm-registry-packages-npm-production"}},"0.0.26-next.35c0409":{"name":"react-executor","version":"0.0.26-next.35c0409","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.26-next.35c0409","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://megastack.dev/react-executor","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"f7ce92d87eadaf41c27af954b84a691ec5cef147","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.26-next.35c0409.tgz","fileCount":75,"integrity":"sha512-4eotjqOYOxBZ9/Kznz3Cewu8umxTynz9RFGKtMi+zuoQX/KDu6yI+nii5U1ZZu0Xeno/xfTEtelNvUnKVEW+hw==","signatures":[{"sig":"MEUCIQC4KoI9avAIXrVWVeSbZSH8PRP16y90ODPpptPEJAZgJQIgPT84ushpjZIJznWBkW6dKTKjnjHS9UmTohBzJaXWZV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183194},"main":"./index.js","type":"module","types":"./index.d.ts","exports":{".":"./index.js","./ssr":"./ssr/index.js","./core":"./core.js","./package.json":"./package.json","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/syncExternalStore":"./plugin/syncExternalStore.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./plugin/syncBrowserStorage":"./plugin/syncBrowserStorage.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/navigatorOffline":"./observable/navigatorOffline.js"},"gitHead":"35c04095120524b1c0e2b33dd91be5a4cd9dbd97","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.26-next.35c0409_1764061532779_0.02761483543083143","host":"s3://npm-registry-packages-npm-production"}},"0.0.26-next.0ab93f5":{"name":"react-executor","version":"0.0.26-next.0ab93f5","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.26-next.0ab93f5","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://megastack.dev/react-executor","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"6dac438f3dccdabcbccb7c6ea78b1c07ab6a8e3a","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.26-next.0ab93f5.tgz","fileCount":75,"integrity":"sha512-bRu81VXULQGOU1NgLIqtY2cDH+0PuofUkpTX+frXxIXsImq/yyuUeG4VlkmktJNFr9ZqBwWf1D9EmhHbEpnSZw==","signatures":[{"sig":"MEYCIQCp2K1gWgBtexPc81NXOm33LpZN94UalpY3Yv6/wBefrAIhAOyQlpr2GcW1pOYds2JjIQTnYKiNY6gWursi1V+btFsO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183837},"main":"./index.js","type":"module","types":"./index.d.ts","exports":{".":"./index.js","./ssr":"./ssr/index.js","./core":"./core.js","./package.json":"./package.json","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/syncExternalStore":"./plugin/syncExternalStore.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./plugin/syncBrowserStorage":"./plugin/syncBrowserStorage.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/navigatorOffline":"./observable/navigatorOffline.js"},"gitHead":"0ab93f5305c1bd48823896d60c474e72b732308a","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.26-next.0ab93f5_1764064007446_0.6492095479635911","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"react-executor","version":"0.0.27","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.27","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://megastack.dev/react-executor","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"9944397a2fb8ff07c403f6a58a97291c247d3268","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.27.tgz","fileCount":75,"integrity":"sha512-Y7+070TXqtmmjWkk/WeZNXA1G2CtZJNXlD4rB37uHxjHUH/nXREwlYzPCjqCQtqNvWVxy/v7iEV4OcF2QqTLtA==","signatures":[{"sig":"MEUCIEqxWICxqZThnFDOHywQe7kCrjavIj7gGwssCqiZylDdAiEAnIpym48TIqCCW7AUAlC1Cc7D0eBN1y4mYnpeTFbYp2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183723},"main":"./index.js","type":"module","types":"./index.d.ts","exports":{".":"./index.js","./ssr":"./ssr/index.js","./core":"./core.js","./package.json":"./package.json","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/syncExternalStore":"./plugin/syncExternalStore.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./plugin/syncBrowserStorage":"./plugin/syncBrowserStorage.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/navigatorOffline":"./observable/navigatorOffline.js"},"gitHead":"0840dfa76632cd1186df8a90a3aafa71327329fc","_npmUser":{"name":"smikhalevski","email":"smikhalevski@gmail.com"},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"10.8.2","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"optionalDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.27_1764164279835_0.9274256573297563","host":"s3://npm-registry-packages-npm-production"}},"0.0.28-next.535c571":{"name":"react-executor","version":"0.0.28-next.535c571","keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","_id":"react-executor@0.0.28-next.535c571","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"homepage":"https://megastack.dev/react-executor","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"dist":{"shasum":"4bd849489cc32d4827e0c8ed95621087f7103c60","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.28-next.535c571.tgz","fileCount":75,"integrity":"sha512-yF/QCA7VBMGWCyRFXCwbPRbIgS1Gfet/7pkUH8iznVdlaBWon7OHhmxTj+qUfZkwlQrRx+vY+/iSRW1Z7nZ2yA==","signatures":[{"sig":"MEQCICcpxTEefoBZOaoZCH5luc//Bof3Cf84z/Q3IaTSt4zGAiAZPQjc246dXcFdnbSb0LXyDj/mODWPGPICnae8VM5A8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-executor@0.0.28-next.535c571","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":184447},"main":"./index.js","type":"module","types":"./index.d.ts","exports":{".":"./index.js","./ssr":"./ssr/index.js","./core":"./core.js","./package.json":"./package.json","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/syncExternalStore":"./plugin/syncExternalStore.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./plugin/syncBrowserStorage":"./plugin/syncBrowserStorage.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/navigatorOffline":"./observable/navigatorOffline.js"},"gitHead":"535c571c9005350417e5773b1c821f059b9f7149","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0d843a1c-685c-4ccb-b6bc-ed1fd78730a0"}},"repository":{"url":"git+https://github.com/smikhalevski/react-executor.git","type":"git"},"_npmVersion":"11.12.1","description":"Asynchronous task execution and state management for React.","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"parallel-universe":"^6.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"react":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-executor_0.0.28-next.535c571_1778180826698_0.8810536644274989","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"react-executor","version":"0.0.28","description":"Asynchronous task execution and state management for React.","type":"module","main":"./index.js","types":"./index.d.ts","exports":{".":"./index.js","./core":"./core.js","./ssr":"./ssr/index.js","./observable/navigatorOffline":"./observable/navigatorOffline.js","./observable/navigatorOnline":"./observable/navigatorOnline.js","./observable/windowBlurred":"./observable/windowBlurred.js","./observable/windowFocused":"./observable/windowFocused.js","./plugin/abortDeactivated":"./plugin/abortDeactivated.js","./plugin/abortPendingAfter":"./plugin/abortPendingAfter.js","./plugin/abortWhen":"./plugin/abortWhen.js","./plugin/detachDeactivated":"./plugin/detachDeactivated.js","./plugin/detachInactive":"./plugin/detachInactive.js","./plugin/invalidateAfter":"./plugin/invalidateAfter.js","./plugin/invalidateByPeers":"./plugin/invalidateByPeers.js","./plugin/invalidatePeers":"./plugin/invalidatePeers.js","./plugin/invalidateWhen":"./plugin/invalidateWhen.js","./plugin/lazyTask":"./plugin/lazyTask.js","./plugin/rejectPendingAfter":"./plugin/rejectPendingAfter.js","./plugin/resolveBy":"./plugin/resolveBy.js","./plugin/retryActivated":"./plugin/retryActivated.js","./plugin/retryFulfilled":"./plugin/retryFulfilled.js","./plugin/retryInvalidated":"./plugin/retryInvalidated.js","./plugin/retryRejected":"./plugin/retryRejected.js","./plugin/retryWhen":"./plugin/retryWhen.js","./plugin/syncBrowserStorage":"./plugin/syncBrowserStorage.js","./plugin/syncExternalStore":"./plugin/syncExternalStore.js","./package.json":"./package.json"},"sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/smikhalevski/react-executor.git"},"keywords":["react","hook","executor"],"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"homepage":"https://megastack.dev/react-executor","optionalDependencies":{"react":">=17.0.0"},"dependencies":{"parallel-universe":"^6.1.2"},"gitHead":"d28b8afe712c2f4d3772fd93f3ccef4e62d30258","_id":"react-executor@0.0.28","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-r0IUxnY00x3x7xmejInZFp7SPLlQVW9O37TkuAiQyv0ooCs5ofQHNvJmLjmGJ78XNIyJdFVAcnrx/PPGtCYejg==","shasum":"01a81f0697752eb6394b3035ff895e555cce18ce","tarball":"https://registry.npmjs.org/react-executor/-/react-executor-0.0.28.tgz","fileCount":75,"unpackedSize":194272,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-executor@0.0.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCU2izQlU7ni2aT+KlnOgBJtFEZqkUSsr0cXCjj0gPvkQIhAJhJMmuqv5uYiQX+S/giUFmQweOnU2Y62sKVHRWRfJ/r"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0d843a1c-685c-4ccb-b6bc-ed1fd78730a0"}},"directories":{},"maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-executor_0.0.28_1778259206412_0.4244620510911077"},"_hasShrinkwrap":false}},"time":{"created":"2024-04-22T21:31:48.378Z","modified":"2026-05-08T16:53:26.860Z","0.0.1":"2024-04-22T21:31:48.530Z","0.0.2":"2024-04-27T14:37:53.324Z","0.0.3":"2024-04-29T17:19:20.303Z","0.0.4":"2024-04-30T11:57:23.311Z","0.0.5":"2024-04-30T18:01:17.245Z","0.0.6":"2024-04-30T18:34:19.009Z","0.0.7":"2024-05-02T14:06:01.079Z","0.0.8":"2024-05-11T12:52:56.709Z","0.0.9":"2024-05-15T14:48:08.633Z","0.0.10":"2024-05-17T17:09:16.305Z","0.0.11":"2024-05-27T21:06:30.978Z","0.0.12":"2024-05-27T21:13:48.125Z","0.0.13":"2024-05-30T20:16:36.215Z","0.0.14":"2024-06-02T11:37:47.475Z","0.0.15":"2024-06-09T16:18:22.612Z","0.0.16":"2024-06-20T19:56:56.245Z","0.0.17":"2024-07-02T15:10:08.639Z","0.0.18":"2025-03-14T21:38:18.469Z","0.0.19":"2025-03-24T14:14:57.916Z","0.0.20":"2025-03-26T15:08:18.084Z","0.0.21":"2025-04-30T09:20:39.882Z","0.0.22":"2025-05-12T12:06:37.548Z","0.0.23":"2025-05-19T17:02:38.681Z","0.0.24":"2025-05-20T10:58:08.174Z","0.0.24-next.fe557b7":"2025-06-26T11:04:51.303Z","0.0.24-next.9a35a1a":"2025-06-26T14:34:20.670Z","0.0.25":"2025-07-05T13:48:19.092Z","0.0.25-next.9e1a944":"2025-08-04T18:53:46.115Z","0.0.25-next.b8e5b7a":"2025-08-11T16:06:10.241Z","0.0.25-next.f6ec1e0":"2025-08-22T11:26:08.424Z","0.0.26":"2025-08-22T11:39:00.263Z","0.0.26-next.35c0409":"2025-11-25T09:05:32.961Z","0.0.26-next.0ab93f5":"2025-11-25T09:46:47.663Z","0.0.27":"2025-11-26T13:38:00.021Z","0.0.28-next.535c571":"2026-05-07T19:07:06.857Z","0.0.28":"2026-05-08T16:53:26.570Z"},"bugs":{"url":"https://github.com/smikhalevski/react-executor/issues"},"author":{"name":"Savva Mikhalevski","email":"smikhalevski@gmail.com"},"license":"MIT","homepage":"https://megastack.dev/react-executor","keywords":["react","hook","executor"],"repository":{"type":"git","url":"git+https://github.com/smikhalevski/react-executor.git"},"description":"Asynchronous task execution and state management for React.","maintainers":[{"name":"smikhalevski","email":"smikhalevski@gmail.com"}],"readme":"<p align=\"center\">\n  <a href=\"#readme\"><picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"./assets/logo-dark.png\" />\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"./assets/logo-light.png\" />\n    <img alt=\"React Executor\" src=\"./assets/logo-light.png\" width=\"500\" />\n  </picture></a>\n</p>\n\n<br/>\n\n<!--ARTICLE-->\n\n<!--OVERVIEW-->\n\nAsynchronous task execution and state management for React.\n\n- TypeScript first.\n- Expressive and concise API with strict typings.\n- Works great with SSR and Suspense.\n- [Extensible with plugins.](#plugins)\n- [First class devtools.](#devtools)\n- [Just 3&#8239;kB gzipped.](https://bundlephobia.com/package/react-executor)\n- Check out the [Cookbook](#cookbook) for real-life examples!\n\n<!--/OVERVIEW-->\n\n<br>\n\n```sh\nnpm install --save-prod react-executor\n```\n\n<br>\n\n<!--/ARTICLE-->\n\n<!--TOC-->\n\n<span class=\"toc-icon\">🔰&ensp;</span>[**Introduction**](#introduction)\n\n- [Executor keys](#executor-keys)\n- [Execute a task](#execute-a-task)\n- [Abort a task](#abort-a-task)\n- [Replace a task](#replace-a-task)\n- [Wait for a task to complete](#wait-for-a-task-to-complete)\n- [Retry the latest task](#retry-the-latest-task)\n- [Settle an executor](#settle-an-executor)\n- [Clear an executor](#clear-an-executor)\n- [Optimistic updates](#optimistic-updates)\n\n<span class=\"toc-icon\">📢&ensp;</span>[**Events and lifecycle**](#events-and-lifecycle)\n\n- [Activate an executor](#activate-an-executor)\n- [Invalidate results](#invalidate-results)\n- [Detach an executor](#detach-an-executor)\n\n<span class=\"toc-icon\">🔌&ensp;</span>[**Plugins**](#plugins)\n\n- [`abortDeactivated`](#abortdeactivated)\n- [`abortPendingAfter`](#abortpendingafter)\n- [`abortWhen`](#abortwhen)\n- [`detachDeactivated`](#detachdeactivated)\n- [`detachInactive`](#detachinactive)\n- [`invalidateAfter`](#invalidateafter)\n- [`invalidateByPeers`](#invalidatebypeers)\n- [`invalidatePeers`](#invalidatepeers)\n- [`invalidateWhen`](#invalidatewhen)\n- [`lazyTask`](#lazytask)\n- [`rejectPendingAfter`](#rejectpendingafter)\n- [`resolveBy`](#resolveby)\n- [`retryActivated`](#retryactivated)\n- [`retryFulfilled`](#retryfulfilled)\n- [`retryInvalidated`](#retryinvalidated)\n- [`retryRejected`](#retryrejected)\n- [`retryWhen`](#retrywhen)\n- [`syncBrowserStorage`](#syncbrowserstorage)\n- [`syncExternalStore`](#syncexternalstore)\n\n<span class=\"toc-icon\">👁️&ensp;</span>[**Observables**](#observables)\n\n- [`navigatorOnline`](#navigatoronline)\n- [`navigatorOffline`](#navigatoroffline)\n- [`windowFocused`](#windowfocused)\n- [`windowBlurred`](#windowblurred)\n\n<span class=\"toc-icon\">⚛️&ensp;</span>[**React integration**](#react-integration)\n\n- [Suspense](#suspense)\n- [External executors](#external-executors)\n\n<span class=\"toc-icon\">🚀&ensp;</span>[**Server-side rendering**](#server-side-rendering)\n\n- [Render to string](#render-to-string)\n- [Streaming SSR](#streaming-ssr)\n- [State serialization](#state-serialization)\n- [Content-Security-Policy support](#content-security-policy-support)\n- [Next.js integration](#nextjs-integration)\n\n<span class=\"toc-icon\">⚙️&ensp;</span>[**Devtools**](#devtools)\n\n<span class=\"toc-icon\">🍪&ensp;</span>**Cookbook**\n\n- [Dependent tasks](#dependent-tasks)\n- [Derived executors](#derived-executors)\n- [Pagination](#pagination)\n- [Infinite scroll](#infinite-scroll)\n- [Invalidate all executors](#invalidate-all-executors)\n- [Prefetching](#prefetching)\n- [Storage state versioning](#storage-state-versioning)\n- [Global loading indicator](#global-loading-indicator)\n\n<span class=\"toc-icon\">🔎&ensp;</span>**Resources**\n\n- [API docs](https://smikhalevski.github.io/react-executor/)\n- [TODO app example](https://stackblitz.com/edit/react-executor-todo-app?file=README.md)\n- [Streaming SSR example](https://codesandbox.io/p/devbox/react-executor-ssr-streaming-example-mwrmrs)\n- [Next.js integration example](https://codesandbox.io/p/devbox/react-executor-next-example-whsj4v)\n\n<!--/TOC-->\n\n<!--ARTICLE-->\n\n# Introduction\n\nAn executor runs a task, stores the execution result, and provides access to that result. Tasks are callbacks that\nreturn a value or throw an error.\n\nAn [`Executor`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html) is created and\nmanaged by\nan [`ExecutorManager`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html),\nwhich controls the executor's lifecycle:\n\n```ts\nimport { ExecutorManager } from 'react-executor';\n\nconst manager = new ExecutorManager();\n\nconst rookyExecutor = manager.getOrCreate('rooky');\n// ⮕ Executor<any>\n```\n\nEach executor has a unique key within the manager's scope. In this example, we created a new executor with the key\n`'rooky'`. The manager creates a new executor when you call\n[`getOrCreate`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html#getorcreate)\nwith a previously unused key. Subsequent calls with the same key return the same executor instance.\n\nIf you want to retrieve an existing executor by its key and avoid creating a new one if it doesn't exist, use\n[`get`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html#get):\n\n```ts\nmanager.get('bobby');\n// ⮕ undefined\n\nmanager.get('rooky');\n// ⮕ Executor<any>\n```\n\nThe executor we created is _unsettled_, meaning it stores neither a value nor a failure reason:\n\n```ts\nrookyExecutor.isSettled;\n// ⮕ false\n```\n\nAn executor can be created with an initial value:\n\n```ts\nconst bobbyExecutor = manager.getOrCreate('bobby', 42);\n\nbobbyExecutor.isSettled;\n// ⮕ true\n\n// The result stored in the executor is a value\nbobbyExecutor.isFulfilled;\n// ⮕ true\n\nbobbyExecutor.value;\n// ⮕ 42\n```\n\nAn initial value may be a task (which will be executed), a promise (which the executor will await), or any other value\nthat immediately fulfills the executor. Read more in the [Execute a task](#execute-a-task) and in\nthe [Settle an executor](#settle-an-executor) sections.\n\nWhen creating an executor, you can also provide an array of plugins:\n\n```ts\nimport retryRejected from 'react-executor/plugin/retryRejected';\n\nconst rookyExecutor = manager.getOrCreate('rooky', 42, [retryRejected()]);\n```\n\nPlugins can subscribe to [executor events](#events-and-lifecycle) or modify the executor instance. Read more about\nplugins in the [Plugins](#plugins) section.\n\n## Executor keys\n\nAnything can be an executor key: a string, a number, an object, etc. By default, keys are considered identical if\ntheir [`JSON`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)-serialized form\nis identical:\n\n```ts\nconst manager = new ExecutorManager();\n\nconst userExecutor = manager.getOrCreate(['user', 123]);\n\nmanager.get(['user', 123]);\n// ⮕ userExecutor\n```\n\nPass\n[`keyIdGenerator`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.ExecutorManagerOptions.html#keyidgenerator)\noption to the `ExecutorManager` constructor to change the way key identity is computed. The returned key ID can be\nanything, a string, or an object.\n\nIf you're using objects as executor keys, then you may want to use stable serialized form of executor keys as key IDs\n(when object keys are sorted alphabetically during serialization). In this case use any library that supports stable\nJSON serialization:\n\n```ts\nimport JSONMarshal from 'json-marshal';\n\nconst manager = new ExecutorManager({\n  keyIdGenerator: key => JSONMarshal.stringify(key, { isStable: true }),\n});\n\nconst rookyExecutor = manager.getOrCreate({ id: 123, name: 'Rooky' });\n// ⮕ Executor<any>\n\n// 🟡 Key properties are listed in a different order\nmanager.get({ name: 'Rooky', id: 123 });\n// ⮕ rookyExecutor\n```\n\n> [!TIP]\\\n> With additional configuration, [json-marshal](https://github.com/smikhalevski/json-marshal#readme) can stringify and\n> parse any data structure.\n\nIf you want to use object references as executor key IDs, provide an identity function:\n\n```ts\nconst manager = new ExecutorManager({\n  keyIdGenerator: key => key,\n});\n\nconst rookyKey = { id: 123 };\n\nconst rookyExecutor = manager.getOrCreate(rookyKey);\n\n// 🟡 Executors are different because different objects were used as keys\nmanager.get(rookyKey) !== manager.getOrCreate({ id: 123 });\n```\n\n## Execute a task\n\nLet's execute a new task:\n\n```ts\nimport { ExecutorManager, ExecutorTaskCallback } from 'react-executor';\n\nconst manager = new ExecutorManager();\n\nconst rookyExecutor = manager.getOrCreate('rooky');\n\nconst helloTask: ExecutorTaskCallback = async (signal, executor) => 'Hello';\n\nconst helloPromise = rookyExecutor.execute(task);\n// ⮕ AbortablePromise<any>\n```\n\n`helloTask` receives an [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)\nand `rookyExecutor` as arguments. The signal is aborted if the task is [aborted](#abort-a-task) or\n[replaced](#replace-a-task).\n\nWhile tasks can be synchronous or asynchronous, executors always handle them in an asynchronous fashion. The executor\nis marked as [pending](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#ispending)\nimmediately after\n[`execute`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#execute)\nis called:\n\n```ts\n// The executor is waiting for the task to complete\nrookyExecutor.isPending;\n// ⮕ true\n```\n\n`helloPromise` is resolved when the task completes:\n\n```ts\nawait helloPromise;\n\n// The executor doesn't have a pending task anymore\nrookyExecutor.isPending;\n// ⮕ false\n\n// The result stored in the executor is a value\nrookyExecutor.isFulfilled;\n// ⮕ true\n\nrookyExecutor.value;\n// ⮕ 'Hello'\n```\n\nThe executor keeps track of\nthe [latest task](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#task)\nit has executed:\n\n```ts\nrookyExecutor.task;\n// ⮕ helloTask\n```\n\nIf a task throws an error (or returns a promise that rejects with an error), then the promise returned from the\n`execute` is rejected:\n\n```ts\nconst ooopsPromise = rookyExecutor.execute(() => {\n  throw new Error('Ooops!');\n});\n// ⮕ Promise{<rejected>}\n\nrookyExecutor.isPending;\n// ⮕ true\n```\n\nThe executor becomes rejected as well after `ooopsPromise` is settled:\n\n```ts\nrookyExecutor.isRejected;\n// ⮕ true\n\n// The reason of the task failure\nrookyExecutor.reason;\n// ⮕ Error('Ooops!')\n```\n\nExecutors always preserve the latest value and the latest reason. So even when the executor\n[`isPending`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#ispending),\nyou can access the previous value or failure reason. Use\n[`isFulfilled`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#isfulfilled)\nand\n[`isRejected`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#isrejected)\nto detect with what result the executor has settled the last time. An executor cannot be both fulfilled and rejected at\nthe same time.\n\n```ts\n// Execute a new task\nconst byePromise = rookyExecutor.execute(() => 'Bye');\n\n// 1️⃣ The executor is waiting for the task to complete\nrookyExecutor.isPending;\n// ⮕ true\n\n// 2️⃣ The executor is still rejected after the previous task\nrookyExecutor.isRejected;\n// ⮕ true\n\nrookyExecutor.reason;\n// ⮕ Error('Ooops!')\n\n// 3️⃣ The executor still holds the latest value, but it isn't fulfilled\nrookyExecutor.isFulfilled;\n// ⮕ false\n\nrookyExecutor.value;\n// ⮕ 'Hello'\n```\n\nThe executor becomes fulfilled after `byePromise` settles:\n\n```ts\nawait byePromise;\n\nrookyExecutor.isFulfilled;\n// ⮕ true\n\nrookyExecutor.value;\n// ⮕ 'Bye'\n```\n\n## Abort a task\n\nThe promise returned by\nthe [`execute`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#execute)\nmethod is [abortable](https://smikhalevski.github.io/parallel-universe/classes/AbortablePromise.html)\nso the task can be prematurely aborted. Results of the aborted task are discarded:\n\n```ts\nconst helloPromise = rookyExecutor.execute(async () => 'Hello');\n\nrookyExecutor.isPending;\n// ⮕ true\n\nhelloPromise.abort();\n\nrookyExecutor.isPending;\n// ⮕ false\n```\n\nIt isn't always convenient to keep the reference to the task execution promise, and you can abort the pending task by\naborting the whole executor:\n\n```ts\nrookyExecutor.abort();\n```\n\nIf there's no pending task, then aborting an executor is a no-op.\n\nWhen a task is aborted, the signal it received as an argument is aborted as well. Check\nthe [signal status](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/aborted) to ensure that computation\nshould be concluded.\n\nFor example, if you're fetching data from the server inside a task, you can pass signal as\na [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch#signal) option:\n\n```ts\nconst byeTask: ExecutorTaskCallback = async (signal, executor) => {\n  const response = await fetch('/bye', { signal });\n\n  return response.json();\n};\n```\n\n## Replace a task\n\nIf a new task is executed while the pending task isn't completed yet, then pending task is aborted and its results are\ndiscarded:\n\n```ts\nexecutor.execute(async signal => 'Pluto');\n\nawait executor.execute(async signal => 'Mars');\n\nexecutor.value;\n// ⮕ 'Mars'\n```\n\n## Wait for a task to complete\n\nIn the [Execute a task](#execute-a-task) section we used a promise that is returned from\n[`Executor.execute`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#execute)\nto wait for a task execution to complete. While this approach allows to wait for a given task execution to settle, it\nis usually required to wait for an executor itself become settled. The main point here is that the executor remains\npending while multiple tasks [replace one another](#replace-a-task).\n\nLet's consider the scenario where a task is replaced with another task:\n\n```ts\nconst planetExecutor = manager.getOrCreate('planet');\n\n// The promise is resolved only when planetExecutor is settled\nconst planetPromise = planetExecutor.getOrAwait();\n\nconst marsPromise = planetExecutor.execute(async signal => 'Mars');\n\n// 🟡 marsPromise is aborted, because task was replaced\nconst venusPromise = planetExecutor.execute(async signal => 'Venus');\n\nawait planetPromise;\n// ⮕ 'Venus'\n```\n\nIn this example, `marsPromise` is aborted, and `planetPromise` is resolved only after executor itself is settled and\nnot pending anymore.\n\nHere's another example, where the executor waits to be settled:\n\n```ts\nconst printerExecutor = manager.getOrCreate('printer');\n\nprinterExecutor.getOrAwait().then(value => {\n  console.log(value);\n});\n\n// Prints \"Hello\" to console\nprinterExecutor.execute(() => 'Hello');\n```\n\n## Retry the latest task\n\nTo retry\nthe [latest task](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#task),\nuse [`retry`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#retry):\n\n```ts\nconst planets = ['Mars', 'Venus'];\n\nawait executor.execute(() => planets.shift());\n\nexecutor.retry();\n\nawait executor.getOrAwait();\n\nexecutor.value;\n// ⮕ 'Mars'\n```\n\nIf there's no latest task, or there's a pending task already, then calling `retry` is a no-op.\n\nIf you want to forcefully retry the latest task, then abort the executor first:\n\n```ts\nexecutor.abort();\nexecutor.retry();\n```\n\n## Settle an executor\n\nWhile tasks are always handled in an asynchronous fashion, there are cases when an executor should be settled\nsynchronously.\n\nExecutor can be synchronously fulfilled via\n[`resolve`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#resolve):\n\n```ts\nexecutor.resolve('Venus');\n\nexecutor.isFulfilled;\n// ⮕ true\n\nexecutor.value;\n// ⮕ 'Venus'\n```\n\nOr rejected\nvia [`reject`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#reject):\n\n```ts\nexecutor.reject(new Error('Ooops!'));\n\nexecutor.isRejected;\n// ⮕ true\n\nexecutor.reason;\n// ⮕ Error('Ooops!')\n```\n\nIf there is a pending task then invoking `resolve` or `reject` will [abort it](#abort-a-task).\n\nIf you pass a promise to `resolve`, then an executor would wait for it to settle and store the result:\n\n```ts\nconst planetPromise = Promise.resolve('Mars');\n\nexecutor.resolve(planetPromise);\n\n// The executor is waiting for the promise to settle\nexecutor.isPending;\n// ⮕ true\n\nawait executor.getOrAwait();\n\nexecutor.value;\n// ⮕ 'Mars'\n```\n\n## Clear an executor\n\nAfter the executor\nbecomes [settled](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#issettled),\nit remains settled until it is cleared.\n\nYou can reset the executor back to its unsettled state\nusing [`clear`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#clear):\n\n```ts\nexecutor.clear();\n```\n\nClearing an executor removes the stored value and reason, but _doesn't_ affect the pending task execution and preserves\nthe [latest task](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#task)\nthat was executed.\n\n## Optimistic updates\n\nOptimistic updates are a UX technique where the UI reflects the result of an action instantly, before the server has\nconfirmed it. If the server succeeds, nothing changes visually. If the server fails, the UI rolls back to the state it\nwas in before the action.\n\nIn React Executor, optimistic updates are first-class citizens and can be achieved by providing\n[`pendingValue`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.ExecutorTask.html#pendingxalue)\nin executor task. When a task is submitted with a `pendingValue`, the executor resolves to that value instantly\n(before the task callback runs) and stores a checkpoint of the previous state. If the task fails, the checkpoint is\nrestored automatically.\n\n```ts\nconst executor = useExecutor('meaningOfLife');\n\nconst handleClick = () => {\n  executor.execute({\n    callback: async signal => await getTheMeaningOfLife(signal),\n\n    // 🟡 Executor is resolved with this value before running callback\n    pendingValue: 42,\n  });\n};\n```\n\nThe UI reflects `42` the moment the button is clicked. If `getTheMeaningOfLife` rejects, the executor rolls back\nto the value it held before execute was called — no manual snapshot or error handling required.\n\nThe rollback covers three cases depending on what state the executor was in before the optimistic update was applied:\n\n- If previously _fulfilled_, then the executor is resolved back to the previous value.\n\n- If previously _rejected_, then the executor is rejected with the previous reason.\n\n- If previously _unsettled_, then the executor is cleared back to its initial state.\n\nThis means `pendingValue` is safe to use regardless of whether the executor has ever successfully fetched data.\n\n# Events and lifecycle\n\nExecutors publish various events when their state changes. To subscribe to executor events use the\n[`subscribe`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#subscribe)\nmethod:\n\n```ts\nconst manager = new ExecutorManager();\n\nconst rookyExecutor = manager.getOrCreate('rooky');\n\nconst unsubscribe = rookyExecutor.subscribe(event => {\n  if (event.type === 'fulfilled') {\n    // Handle the event here\n  }\n});\n\nunsubscribe();\n```\n\nYou can subscribe to the executor manager to receive events from all executors. For example, you can automatically\nretry any invalidated executor:\n\n```ts\nmanager.subscribe(event => {\n  if (event.type === 'invalidated') {\n    event.target.retry();\n  }\n});\n```\n\nBoth executors and managers may have multiple subscribers and each subscriber receives\n[events](https://smikhalevski.github.io/react-executor/interfaces/react-executor.ExecutorEvent.html)\nwith following types:\n\n<dl>\n<dt>attached</dt>\n<dd>\n\nThe executor was just created, plugins were applied to it, and it was attached to the manager. Read more about plugins\nin the [Plugins](#plugins) section.\n\n</dd>\n\n<dt>detached</dt>\n<dd>\n\nThe executor was just detached: it was removed from the manager and all of its subscribers were unsubscribed. Read more\nin the [Detach an executor](#detach-an-executor) section.\n\n</dd>\n\n<dt>activated</dt>\n<dd>\n\nThe executor was inactive and became active. This means that there are consumers that observe the state of the executor.\nRead more in the [Activate an executor](#activate-an-executor) section.\n\n</dd>\n\n<dt>deactivated</dt>\n<dd>\n\nThe executor was active and became inactive. This means that there are no consumers that observe the state of the\nexecutor. Read more in the [Activate an executor](#activate-an-executor) section.\n\n</dd>\n\n<dt>pending</dt>\n<dd>\n\nThe executor started [a task execution](#execute-a-task). You can find the latest task the executor handled in the\n[`Executor.task`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#task)\nproperty.\n\n</dd>\n\n<dt>fulfilled</dt>\n<dd>\n\nThe executor was fulfilled with a value.\n\n</dd>\n\n<dt>rejected</dt>\n<dd>\n\nThe executor was rejected with a reason.\n\n</dd>\n\n<dt>aborted</dt>\n<dd>\n\nThe [task was aborted](#abort-a-task).\n\nIf executor is\nstill [pending](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#ispending)\nwhen an `'aborted'` event is published then the currently pending task is being [replaced](#replace-a-task) with a new\ntask.\n\nCalling\n[`Executor.execute`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#execute)\nwhen handling an abort event may lead to stack overflow. If you need to do this anyway, execute a new task from async\ncontext using [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask) or\na similar API.\n\n</dd>\n\n<dt>cleared</dt>\n<dd><p>The executor was cleared and now isn't settled.</p></dd>\n\n<dt>invalidated</dt>\n<dd>\n\nResults stored in an executor were [invalidated](#invalidate-results).\n\n</dd>\n\n<dt>annotated</dt>\n<dd>\n\n[Annotations](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#annotations)\nassociated with the executor were patched.\n\n</dd>\n\n<dt>plugin_configured</dt>\n<dd>\n\nThe configuration of the plugin associated with the executor was updated.\n\n</dd>\n</dl>\n\n## Activate an executor\n\nExecutors have\nan [active](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#isactive)\nstatus that tells whether executor is actively used by a consumer.\n\n```ts\nconst deactivate = executor.activate();\n\nexecutor.isActive;\n// ⮕ true\n\ndeactivate();\n\nexecutor.isActive;\n// ⮕ false\n```\n\nIf there are multiple consumers and each of them invoke the `activate` method, then executor would remain active until\nall of them invoke their deactivate callbacks.\n\nBy default, marking an executor as active has no additional effect. Checking the executor active status in a plugin\nallows to skip or defer excessive updates and keep executor results up-to-date lazily. For example, consider a plugin\nthat [retries the latest task](#retry-the-latest-task) if an active executor becomes rejected:\n\n```ts\nconst retryPlugin: ExecutorPlugin = executor => {\n  executor.subscribe(event => {\n    switch (event.type) {\n      case 'rejected':\n      case 'activated':\n        if (executor.isActive && executor.isRejected) {\n          executor.retry();\n        }\n        break;\n    }\n  });\n};\n\nconst executor = manager.getOrCreate('rooky', heavyTask, [retryPlugin]);\n\nexecutor.activate();\n```\n\nNow an executor would automatically retry the `heavyTask` if it fails. Read more about plugins in\nthe [Plugins](#plugins) section.\n\n## Invalidate results\n\nInvalidate results stored in the executor:\n\n```ts\nexecutor.invalidate();\n\nexecutor.isInvalidated;\n// ⮕ true\n```\n\nAfter the executor is fulfilled, rejected, or cleared, it becomes valid:\n\n```ts\nexecutor.resolve('Okay');\n\nexecutor.isInvalidated;\n// ⮕ false\n```\n\nBy default, invalidating an executor has no effect except marking it\nas [invalidated](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Executor.html#isinvalidated).\n\n## Detach an executor\n\nBy default, executors that a manager has created are preserved indefinitely and are always available though\n[`get`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html#get).\nThis isn't always optimal, and you may want to detach an executor when it isn't needed anymore.\nUse [`detach`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html#detach)\nin such case:\n\n```ts\nconst executor = manager.getOrCreate('test');\n\nmanager.detach(executor.key);\n// ⮕ true\n```\n\nAll executor subscribers are now unsubscribed, and executor is removed from the manager.\n\nIf an executor is still [active](#activate-an-executor) then it won't be detached.\n\n> [!NOTE]\\\n> Pending task isn't aborted if the executor is detached. Use [`abortDeactivated`](#abortdeactivated) plugin to abort\n> the task of the deactivated executor.\n\n# Plugins\n\nPlugins are callbacks that are invoked only once when the executor is created by the manager. For example, you can\ncreate a plugin that aborts the pending task and [detaches an executor](#detach-an-executor) when it is\n[deactivated](#activate-an-executor):\n\n```ts\nconst detachPlugin: ExecutorPlugin = executor => {\n  executor.subscribe(event => {\n    if (event.type === 'deactivated') {\n      executor.abort();\n      executor.manager.detach(executor.key);\n    }\n  });\n};\n```\n\nTo apply a plugin, pass it to the\n[`ExecutorManager.getOrCreate`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html#getorcreate)\nor to the [`useExecutor`](https://smikhalevski.github.io/react-executor/functions/react-executor.useExecutor.html)\nhook:\n\n```ts\nconst executor = manager.getOrCreate('test', undefined, [detachPlugin]);\n\nconst deactivate = executor.activate();\n\n// The executor is instantly detached by the plugin\ndeactivate();\n\nmanager.get('test');\n// ⮕ undefined\n```\n\nMake the manager apply a plugin to all executors by default:\n\n```ts\nconst manager = new ExecutorManager({\n  plugins: [detachPlugin],\n});\n```\n\n> [!IMPORTANT]\n> Plugins are applied in array order. When combining plugins that react to the same events, order matters. A good rule\n> of thumb: plugins that _read_ state (e.g. [`syncBrowserStorage`](#syncbrowserstorage)) should come before plugins that\n> _act_ on it (e.g. [`invalidateAfter`](#invalidateafter)), and cleanup plugins\n> (e.g. [`abortDeactivated`](#abortdeactivated)) before lifecycle plugins\n> (e.g. [`detachDeactivated`](#detachdeactivated)).\n\n## `abortDeactivated`\n\n[Aborts the pending task](#abort-a-task) after the delay if the executor is deactivated.\n\n<!-- prettier-ignore -->\n```ts\nimport abortDeactivated from 'react-executor/plugin/abortDeactivated';\n\nconst executor = useExecutor('test', heavyTask, [\n  abortDeactivated({ delay: 2_000 }),\n]);\n\nconst deactivate = executor.activate();\n\n// Aborts heavyTask in 2 seconds\ndeactivate();\n```\n\nIf an executor is re-activated during this delay, the task won't be aborted. The executor must be activated at least\nonce for this plugin to have an effect.\n\n## `abortPendingAfter`\n\n[Aborts the pending task](#abort-a-task)\nwith [`TimeoutError`](https://developer.mozilla.org/en-US/docs/Web/API/DOMException#timeouterror) if\nthe task execution took longer than the given delay.\n\n<!-- prettier-ignore -->\n```ts\nimport abortPendingAfter from 'react-executor/plugin/abortPendingAfter';\n\nconst executor = useExecutor('test', heavyTask, [\n  abortPendingAfter(10_000),\n]);\n```\n\n## `abortWhen`\n\n[Aborts the pending task](#abort-a-task) if the\n[observable](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Observable.html)\nemits `true`.\n\nFor example, abort the current task if the device is disconnected from the network for more then 5 seconds:\n\n<!-- prettier-ignore -->\n```ts\nimport abortWhen from 'react-executor/plugin/abortWhen';\nimport navigatorOffline from 'react-executor/observable/navigatorOffline';\n\nconst executor = useExecutor('test', heavyTask, [\n  abortWhen(navigatorOffline, { delay: 5_000 }),\n]);\n```\n\nBy default, `abortWhen` only aborts the currently pending task. Here's how every newly executed task can be instantly\naborted if the last value emitted by the observable was `true` and a delay has ran out:\n\n```ts\nconst executor = useExecutor('test', heavyTask, [\n  abortWhen(navigatorOffline, {\n    delay: 5_000,\n\n    // 🟡 Abort every newly executed task\n    isSustained: true,\n  }),\n]);\n```\n\nRead more about observables in the [`InvalidateWhen`](#invalidatewhen) section.\n\n## `detachDeactivated`\n\n[Detaches the executor](#detach-an-executor) after the timeout if the executor is deactivated.\n\n<!-- prettier-ignore -->\n```ts\nimport detachDeactivated from 'react-executor/plugin/detachDeactivated';\n\nconst executor = useExecutor('test', heavyTask, [\n  detachDeactivated({ delay: 2_000 }),\n]);\n\nconst deactivate = executor.activate();\n\n// Executor is detached in 2 seconds\ndeactivate();\n```\n\nIf an executor is re-activated during this delay, the executor won't be detached.\n\nThis plugin doesn't abort the pending task when an executor is detached. Use [`abortDeactivated`](#abortdeactivated)\nto do the job:\n\n```ts\nimport abortDeactivated from 'react-executor/plugin/abortDeactivated';\nimport detachDeactivated from 'react-executor/plugin/detachDeactivated';\n\nconst executor = useExecutor('test', heavyTask, [\n  abortDeactivated({ delay: 2_000 }),\n  detachDeactivated({ delay: 2_000 }),\n]);\n\nconst deactivate = executor.activate();\n\n// The heavyTask is aborted and the executor is detached in 2 seconds\ndeactivate();\n```\n\n## `detachInactive`\n\nDetach an executor if it wasn't activated during first 5 seconds after being created:\n\n<!-- prettier-ignore -->\n```ts\nimport detachInactive from 'react-executor/plugin/detachInactive';\n\nconst executor = useExecutor('test', 42, [\n  detachInactive({ delayBeforeActivated: 5_000 }),\n]);\n```\n\nDetach an executor if it was inactive for 5 seconds:\n\n<!-- prettier-ignore -->\n```ts\nconst executor = useExecutor('test', 42, [\n  detachInactive({ delayAfterActivation: 5_000 }),\n]);\n\nconst deactivate = executor.activate();\n\n// The executor is detached in 5 seconds\ndeactivate();\n```\n\n## `invalidateAfter`\n\nInvalidates the executor result after a delay.\n\n<!-- prettier-ignore -->\n```ts\nimport invalidateAfter from 'react-executor/plugin/invalidateAfter';\n\nconst executor = useExecutor('test', 42, [\n  invalidateAfter(2_000),\n]);\n\n// The executor is invalidated in 2 seconds\nexecutor.activate();\n```\n\nIf the executor is settled then the timeout is restarted.\n\n## `invalidateByPeers`\n\nInvalidates the executor result if another executor with a matching key is fulfilled or invalidated.\n\n<!-- prettier-ignore -->\n```ts\nimport invalidateByPeers from 'react-executor/plugin/invalidateByPeers';\n\nconst cheeseExecutor = useExecutor('cheese', 'Burrata', [\n  invalidateByPeers(executor => executor.key === 'bread'),\n]);\n\nconst breadExecutor = useExecutor('bread');\n\n// cheeseExecutor is invalidated\nbreadExecutor.resolve('Ciabatta');\n```\n\nProvide an array of executors as peers:\n\n<!-- prettier-ignore -->\n```ts\nconst breadExecutor = useExecutor('bread');\n\nconst cheeseExecutor = useExecutor('cheese', 'Burrata', [\n  invalidateByPeers([breadExecutor]),\n]);\n\n// cheeseExecutor is invalidated\nbreadExecutor.resolve('Ciabatta');\n```\n\n## `invalidatePeers`\n\nInvalidates peer executors with matching keys if the executor is fulfilled or invalidated.\n\n<!-- prettier-ignore -->\n```ts\nimport invalidatePeers from 'react-executor/plugin/invalidatePeers';\n\nconst cheeseExecutor = useExecutor('cheese', 'Burrata', [\n  invalidatePeers(executor => executor.key === 'bread'),\n]);\n\nconst breadExecutor = useExecutor('bread', 'Focaccia');\n\n// breadExecutor is invalidated\ncheeseExecutor.resolve('Mozzarella');\n```\n\nProvide an array of executors as peers:\n\n<!-- prettier-ignore -->\n```ts\nconst breadExecutor = useExecutor('bread', 'Focaccia');\n\nconst cheeseExecutor = useExecutor('cheese', 'Burrata', [\n  invalidatePeers([breadExecutor]),\n]);\n\n// breadExecutor is invalidated\ncheeseExecutor.resolve('Mozzarella');\n```\n\n## `invalidateWhen`\n\n[Invalidates](#invalidate-results) the settled executor result when the\n[observable](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Observable.html) emits `true`.\n\nFor example, if the window was offline for more than 5 seconds, then the executor would be invalidated when the window\ngoes back online:\n\n<!-- prettier-ignore -->\n```ts\nimport invalidateWhen from 'react-executor/plugin/invalidateWhen';\nimport navigatorOnline from 'react-executor/observable/navigatorOnline';\n\nconst executor = useExecutor('test', heavyTask, [\n  invalidateWhen(navigatorOnline, { delay: 5_000 }),\n]);\n```\n\nCombining multiple plugins, you can set up a complex executor behaviour. For example, let's create an executor that\nfollows these requirements:\n\n1. Executes the task every 5 seconds.\n2. Aborts the pending task if the window loses focus for more than 10 seconds.\n3. Aborts instantly if the window goes offline.\n4. Resumes the periodic task execution if window gains focus or goes back online.\n\n```ts\nimport { useExecutor } from 'react-executor';\nimport abortWhen from 'react-executor/plugin/abortWhen';\nimport invalidateWhen from 'react-executor/plugin/invalidateWhen';\nimport navigatorOffline from 'react-executor/observable/navigatorOffline';\nimport navigatorOnline from 'react-executor/observable/navigatorOnline';\nimport retryInvalidated from 'react-executor/plugin/retryInvalidated';\nimport retryFulfilled from 'react-executor/plugin/retryFulfilled';\nimport windowBlurred from 'react-executor/observable/windowBlurred';\nimport windowFocused from 'react-executor/observable/windowFocused';\n\nuseExecutor('test', heavyTask, [\n  retryInvalidated(),\n\n  // Retry the task every 5 seconds if if succeeds\n  retryFulfilled({ delay: 5_000 }),\n\n  // Abort the task if the window loses focus for at least 10 seconds\n  abortWhen(windowBlurred, { delay: 10_000 }),\n\n  // Abort the pending task if the device is disconnected from the network\n  abortWhen(navigatorOffline),\n\n  // Invalidate results when the window was blurred and then gains focus\n  invalidateWhen(windowFocused),\n\n  // Invalidate results if the device was disconnected from the network\n  // and then connects again\n  invalidateWhen(navigatorOnline),\n]);\n```\n\n## `lazyTask`\n\nSets [an executor task](#execute-a-task) but doesn't execute it.\n\nThis plugin is useful when you have a static initial value and a task that can update this value later:\n\n```ts\nimport lazyTask from 'react-executor/plugin/lazyTask';\nimport retryInvalidated from 'react-executor/plugin/retryInvalidated';\n\nconst executor = useExecutor('meaningOfLife', 42, [\n  lazyTask(async () => await getTheMeaningOfLife()),\n  retryInvalidated(),\n]);\n```\n\n`executor` is created with the `value` set to 42. `getTheMeaningOfLife` task isn't executed and would be called only if\nexecutor is invalidated (thanks to [`retryInvalidated`](#retryinvalidated) plugin):\n\n```ts\nexecutor.invalidate();\n```\n\n## `rejectPendingAfter`\n\n[Aborts the pending task](#abort-a-task) and [rejects the executor](#settle-an-executor)\nwith [`TimeoutError`](https://developer.mozilla.org/en-US/docs/Web/API/DOMException#timeouterror) if\nthe task execution took longer than the given timeout.\n\n<!-- prettier-ignore -->\n```ts\nimport rejectPendingAfter from 'react-executor/plugin/rejectPendingAfter';\n\nconst executor = useExecutor('test', heavyTask, [\n  rejectPendingAfter(10_000),\n]);\n```\n\n## `resolveBy`\n\n[Resolves the executor](#settle-an-executor) with values pushed by an\n[`Observable`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Observable.html).\n\n<!-- prettier-ignore -->\n```ts\nimport { Observable } from 'react-executor';\nimport resolveBy from 'react-executor/plugin/resolveBy';\n\nconst observable: Observable<string> = {\n  subscribe(listener) {\n    // Call the listener when value is changed\n    const timer = setTimeout(listener, 1_000, 'Venus');\n\n    return () => {\n      // Unsubscribe the listener\n      clearTimeout(timer);\n    };\n  },\n};\n\nconst executor = useExecutor('planet', 'Mars', [\n  resolveBy(observable),\n]);\n```\n\n[`PubSub`](https://smikhalevski.github.io/parallel-universe/classes/PubSub.html) can be used to decouple the lazy data\nsource from the executor:\n\n<!-- prettier-ignore -->\n```ts\nimport { PubSub } from 'parallel-universe';\n\nconst pubSub = new PubSub<string>();\n\nconst executor = useExecutor('planet', 'Mars', [\n  resolveBy(pubSub),\n]);\n\npubSub.publish('Venus');\n\nexecutor.value; // ⮕ 'Venus'\n```\n\n## `retryActivated`\n\n[Retries the latest task](#retry-the-latest-task) if the executor is activated.\n\n<!-- prettier-ignore -->\n```ts\nimport retryActivated from 'react-executor/plugin/retryActivated';\n\nconst executor = useExecutor('test', heavyTask, [\n  retryActivated(),\n]);\n\n// Retries the task\nexecutor.activate();\n```\n\nSet the minimum delay in milliseconds that should pass between the activation and the moment the executor was last\nsettled:\n\n<!-- prettier-ignore -->\n```ts\nconst executor = useExecutor('test', heavyTask, [\n  retryActivated({ delay: 5_000 }),\n]);\n\n// Doesn't retry the task if 5 seconds didn't pass\nexecutor.activate();\n```\n\n## `retryFulfilled`\n\n[Retries the latest task](#retry-the-latest-task) after the execution was fulfilled.\n\n<!-- prettier-ignore -->\n```ts\nimport retryFulfilled from 'react-executor/plugin/retryFulfilled';\n\nconst executor = useExecutor('test', heavyTask, [\n  retryFulfilled(),\n]);\n```\n\nIf the task fails, is aborted, or if an executor is deactivated then the plugin stops the retry process.\n\nWith the default configuration, the plugin would infinitely retry the task of an [active](#activate-an-executor)\nexecutor with a 5-second delay between retries. This is effectively a decent polling strategy that kicks in only if\nsomeone is actually using an executor.\n\nSpecify the number of times the task should be re-executed if it succeeds:\n\n```ts\nretryFulfilled({ count: 3 });\n```\n\nSpecify the delay in milliseconds between retries:\n\n```ts\nretryFulfilled({ count: 3, delay: 5_000 });\n```\n\nProvide a function that returns the delay depending on the number of retries:\n\n```ts\nretryFulfilled({\n  count: 5,\n  delay: (index, executor) => 1000 * index,\n});\n```\n\nBy default, `retryFulfilled` doesn't retry inactive executors. The executor is retried only after it becomes active.\n\nTo retry the latest task regardless of the executor activation status:\n\n```ts\nretryFulfilled({ isEager: true });\n```\n\nUse `retryFulfilled` in conjunction with [`retryRejected`](#retryrejected) to create a polling sequence. For example,\nthis configuration would infinitely poll the `heavyTask` and would retry failed iterations with an exponential backoff\nand no more then 3 times in a row:\n\n<!-- prettier-ignore -->\n```ts\nconst executor = useExecutor('test', heavyTask, [\n  retryFulfilled(),\n  retryRejected({ count: 5 }),\n]);\n```\n\nYou can also use a combination of [`invalidateAfter`](#invalidateafter) and [`retryInvalidated`](#retryinvalidated)\nto create an infinite polling regardless of the result of the previous iteration:\n\n<!-- prettier-ignore -->\n```ts\nconst executor = useExecutor('test', heavyTask, [\n  invalidateAfter(5_000),\n  retryInvalidated(),\n]);\n```\n\n## `retryInvalidated`\n\nRetries the latest task of the active executor if it was invalidated.\n\n<!-- prettier-ignore -->\n```ts\nimport retryInvalidated from 'react-executor/plugin/retryInvalidated';\n\nconst executor = useExecutor('test', 42, [\n  retryInvalidated(),\n]);\n\nexecutor.activate();\n```\n\nCombine this plugin with [`invalidateByPeers`](#invalidatebypeers) to automatically retry this executor if another\nexecutor on which it depends becomes invalid:\n\n```ts\nimport { ExecutorTaskCallback, useExecutor } from 'react-executor';\nimport invalidateByPeers from 'react-executor/plugin/invalidateByPeers';\n\nconst fetchCheese: ExecutorTaskCallback = async (signal, executor) => {\n  // Wait for the breadExecutor to be created\n  const breadExecutor = await executor.manager.getOrAwait('bread');\n\n  // Wait for the breadExecutor to be settled\n  const bread = await breadExecutor.getOrAwait();\n\n  // Choose the best cheese for this bread\n  return bread === 'Ciabatta' ? 'Mozzarella' : 'Burrata';\n};\n\nconst cheeseExecutor = useExecutor('cheese', fetchCheese, [\n  invalidateByPeers(executor => executor.key === 'bread'),\n  retryInvalidated(),\n]);\n\nconst breadExecutor = useExecutor('bread');\n\n// 🟡 cheeseExecutor is invalidated and re-fetches cheese\nbreadExecutor.resolve('Ciabatta');\n```\n\nRead more about [dependent tasks](#dependent-tasks).\n\nBy default, `retryInvalidated` doesn't retry inactive executors. The executor is retried only after it becomes active.\n\nTo retry the latest task regardless of the executor activation status:\n\n```ts\nretryInvalidated({ isEager: true });\n```\n\n## `retryRejected`\n\nRetries the last task after the execution has failed.\n\n<!-- prettier-ignore -->\n```ts\nimport retryRejected from 'react-executor/plugin/retryRejected';\n\nconst executor = useExecutor('test', heavyTask, [\n  retryRejected(),\n]);\n\nexecutor.activate();\n```\n\nIf the task succeeds, is aborted, or if an executor is deactivated then the plugin stops the retry process.\n\nWith the default configuration, the plugin would retry the task 3 times with an exponential delay between retries.\n\nSpecify the number of times the task should be re-executed if it fails:\n\n```ts\nretryRejected({ count: 3 });\n```\n\nSpecify the delay in milliseconds between retries:\n\n```ts\nretryRejected({ count: 3, delay: 5_000 });\n```\n\nProvide a function that returns the delay depending on the number of retries:\n\n```ts\nretryRejected({\n  count: 5,\n  delay: (index, executor) => 1000 * 1.8 ** index,\n});\n```\n\nBy default, `retryRejected` doesn't retry inactive executors. The executor is retried only after it becomes active.\n\nTo retry the latest task regardless of the executor activation status:\n\n```ts\nretryRejected({ isEager: true });\n```\n\n## `retryWhen`\n\n[Retries the latest task](#retry-the-latest-task) if the\n[observable](https://smikhalevski.github.io/react-executor/interfaces/react-executor.Observable.html) emits `true`.\n\nFor example, if the window was offline for more than 5 seconds, the executor would retry the `heavyTask` after\nthe window is back online:\n\n<!-- prettier-ignore -->\n```ts\nimport retryWhen from 'react-executor/plugin/retryWhen';\nimport navigatorOnline from 'react-executor/observable/navigatorOnline';\n\nconst executor = useExecutor('test', heavyTask, [\n  retryWhen(navigatorOnline, { delay: 5_000 }),\n]);\n```\n\n## `syncBrowserStorage`\n\nSynchronizes the executor state with `localStorage` or `sessionStorage` item. No-op in a non-browser environment.\n\n```ts\nimport syncBrowserStorage from 'react-executor/plugin/syncBrowserStorage';\n\nconst executor = useExecutor('test', 42, [syncBrowserStorage()]);\n```\n\nWith this plugin, you can synchronize the executor state\n[across multiple browser tabs](https://stackblitz.com/edit/react-executor-todo-app?file=README.md) in just one line.\n\n> [!IMPORTANT]\\\n> If executor is [detached](#detach-an-executor), then the corresponding item is removed from the storage.\n\nBy default, an executor state is serialized using\n[`JSON`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON). If your executor stores\na value that may contain circular references, or non-serializable data like `BigInt`, use a custom serializer.\n\nHere's how you can enable serialization of objects with circular references:\n\n```ts\nimport JSONMarshal from 'json-marshal';\n\nconst executor = useExecutor('test', 42, [\n  syncBrowserStorage({\n    serializer: JSONMarshal,\n  }),\n]);\n```\n\n> [!TIP]\\\n> With additional configuration, [json-marshal](https://github.com/smikhalevski/json-marshal#readme) can stringify and\n> parse any data structure.\n\nBy default, `syncBrowserStorage` plugin uses a [serialized executor key](#executor-keys) as a storage key. You can\nprovide a custom key via\n[`storageKey`](https://smikhalevski.github.io/react-executor/interfaces/plugin_syncBrowserStorage.SyncBrowserStorageOptions.html#storagekey)\noption:\n\n```ts\nuseExecutor('test', 42, [syncBrowserStorage({ storageKey: 'hello' })]);\n```\n\n## `syncExternalStore`\n\nPersists the executor state in the observable external store.\n\nHere's the minimal external store example:\n\n```ts\nimport { useExecutor, ExecutorState } from 'react-executor';\nimport syncExternalStore, { ExternalStore } from 'react-executor/plugin/syncExternalStore';\n\nlet myStoredState: ExecutorState | null = null;\n\nconst myStore: ExternalStore<ExecutorState> = {\n  get() {\n    return myStoredState;\n  },\n\n  subscribe(listener) {\n    // Place subscription login here\n    return () => {};\n  },\n};\n\nconst myExecutor = useExecutor('test', 42, [syncExternalStore(myStore)]);\n```\n\nWhen executor is [settled](#settle-an-executor), [cleared](#clear-an-executor), [invalidated](#invalidate-results) or\nannotated then the plugin calls the\n[`ExternalStore.set`](https://smikhalevski.github.io/react-executor/interfaces/plugin_syncExternalStore.ExternalStore.html#set)\nmethod on the store.\n\nWhen executor is [detached](#detach-an-executor) then the plugin calls the\n[`ExternalStore.delete`](https://smikhalevski.github.io/react-executor/interfaces/plugin_syncExternalStore.ExternalStore.html#delete)\nmethod on the store.\n\nPrefer [`syncBrowserStorage`](#syncbrowserstorage) if you want to persist the executor state in a `localStorage`\nor `sessionStorage`.\n\n# Observables\n\nObservables are values that can be passed to any `*When` plugin (`abortWhen`, `invalidateWhen`, `retryWhen`,\n`resolveBy`). They follow a minimal interface: a `subscribe` method that calls a listener whenever the value changes and\nreturns an unsubscribe callback. You can pass any object matching this interface — including third-party reactive\nprimitives — as an observable.\n\nFour built-in observables are provided out of the box:\n\n## `navigatorOnline`\n\nEmits `true` when the device is connected to the network, and `false` when it is disconnected.\n\n```ts\nimport retryWhen from 'react-executor/plugin/retryWhen';\nimport navigatorOnline from 'react-executor/observable/navigatorOnline';\n\nconst executor = useExecutor('test', heavyTask, [retryWhen(navigatorOnline)]);\n```\n\n## `navigatorOffline`\n\nThe inverse of `navigatorOnline`. Emits `true` when the device is disconnected.\n\n```ts\nimport abortWhen from 'react-executor/plugin/abortWhen';\nimport navigatorOffline from 'react-executor/observable/navigatorOffline';\n\nconst executor = useExecutor('test', heavyTask, [abortWhen(navigatorOffline)]);\n```\n\n## `windowFocused`\n\nEmits `true` when the window receives focus, and `false` when it loses focus.\n\n```ts\nimport retryWhen from 'react-executor/plugin/retryWhen';\nimport windowFocused from 'react-executor/observable/windowFocused';\n\nconst executor = useExecutor('test', heavyTask, [retryWhen(windowFocused)]);\n```\n\n## `windowBlurred`\n\nThe inverse of `windowFocused`. Emits `true` when the window loses focus.\n\n```ts\nimport abortWhen from 'react-executor/plugin/abortWhen';\nimport windowBlurred from 'react-executor/observable/windowBlurred';\n\nconst executor = useExecutor('test', heavyTask, [abortWhen(windowBlurred)]);\n```\n\n# React integration\n\nIn the basic scenario, to use executors in your React app, you don't need any additional configuration, just use\nthe [`useExecutor`](https://smikhalevski.github.io/react-executor/functions/react-executor.useExecutor.html)\nhook right away:\n\n```tsx\nimport { useExecutor } from 'react-executor';\n\nfunction User(props: { userId: string }) {\n  const executor = useExecutor(['user', props.userId], async signal => {\n    // Fetch the user from the server\n  });\n\n  if (executor.isPending) {\n    return 'Loading';\n  }\n\n  // Render the user from the executor.value\n}\n```\n\nEvery time the executor's state is changed, the component is re-rendered. The executor returned from the hook is\n[activated](#activate-an-executor) after mount and deactivated on unmount.\n\nThe hook has the exact same signature as the\n[`ExecutorManager.getOrCreate`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html#getorcreate)\nmethod, described in the [Introduction](#introduction) section.\n\n> [!TIP]\\\n> Check out the live example\n> of [the TODO app](https://stackblitz.com/edit/react-executor-todo-app?file=README.md) that employs\n> React Executor.\n\nYou can use executors both inside and outside the rendering process. To do this, provide a custom\n[`ExecutorManager`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html)\nthrough the context:\n\n```tsx\nimport { ExecutorManager, ExecutorManagerProvider } from 'react-executor';\n\nconst manager = new ExecutorManager();\n\nconst App = () => (\n  <ExecutorManagerProvider value={manager}>\n    <User userId={'28'} />\n  </ExecutorManagerProvider>\n);\n```\n\nNow you can use `manager` to access all the same executors that are available through the `useExecutor` hook:\n\n```ts\nconst executor = manager.get(['user', '28']);\n```\n\nIf you want to have access to an executor in a component, but don't want to re-render the component when the executor's\nstate is changed, use\n[`useExecutorManager`](https://smikhalevski.github.io/react-executor/functions/react-executor.useExecutorManager.html)\nhook:\n\n```ts\nconst accountExecutor = useExecutorManager().getOrCreate('account');\n```\n\nYou can execute a task in response to a user action, for example when user clicks a button:\n\n```tsx\nconst executor = useExecutor('test');\n\nconst handleClick = () => {\n  executor.execute(async signal => {\n    // Handle the task\n  });\n};\n```\n\nIf you want executor to run on the client only, then execute a task from the effect:\n\n```ts\nconst executor = useExecutor('test');\n\nuseEffect(() => {\n  executor.execute(async signal => {\n    // Handle the task\n  });\n}, []);\n```\n\n## Suspense\n\nExecutors support fetch-as-you-render approach and can be integrated with React Suspense. To facilitate the rendering\nsuspension, use the\n[`useExecutorSuspense`](https://smikhalevski.github.io/react-executor/functions/react-executor.useExecutorSuspense.html)\nhook:\n\n```tsx\nimport { useExecutor, useExecutorSuspense } from 'react-executor';\n\nfunction Account() {\n  const accountExecutor = useExecutor('account', signal => {\n    // Fetch an account from a server\n  });\n\n  // Suspend rendering if accountExecutor is pending and isn't fulfilled\n  const account = useExecutorSuspense(accountExecutor).get();\n}\n```\n\nNow when the `Account` component is rendered, it would be suspended until the `accountExecutor` is settled:\n\n```tsx\nimport { Suspense } from 'react';\n\nconst App = () => (\n  <Suspense fallback={'Loading'}>\n    <Account />\n  </Suspense>\n);\n```\n\nExecutors can run tasks in parallel and rendering is suspended until both of them are settled:\n\n```ts\nconst cheeseExecutor = useExecutor('cheese', buyCheeseTask);\nconst beadExecutor = useExecutor('bread', bakeBreadTask);\n\nconst cheese = useExecutorSuspense(cheeseExecutor).get();\nconst bread = useExecutorSuspense(breadExecutor).get();\n```\n\n## External executors\n\nYou can use executors created outside the rendering process in your components, rerender and suspend your components\nwhen such executors get updated:\n\n```ts\nconst manager = new ExecutorManager();\n\n// 1️⃣ Create an executor\nconst accountExecutor = manager.getOrCreate('account', signal => {\n  // Fetch an account from a server\n});\n\nfunction Account() {\n  // 2️⃣ Re-render a component when accountExecutor is updated\n  useExecutorSubscription(accountExecutor);\n\n  // 3️⃣ Suspend rendering if accountExecutor is pending and isn't fulfilled\n  const account = useExecutorSuspense(accountExecutor).get();\n}\n```\n\n# Server-side rendering\n\n> [!TIP]\\\n> Check out the live example\n> of [streaming SSR](https://codesandbox.io/p/devbox/react-executor-ssr-streaming-example-mwrmrs) with React Executor.\n\nExecutors can be hydrated on the client after being settled on the server.\n\nTo enable hydration on the client, create the executor manager and provide it through a context:\n\n```tsx\nimport { hydrateRoot } from 'react-dom/client';\nimport { hydrateExecutorManager, ExecutorManager, ExecutorManagerProvider } from 'react-executor';\n\nconst manager = new ExecutorManager();\n\n// 🟡 Hydrates executors on the client with the server data\nhydrateExecutorManager(manager);\n\nhydrateRoot(\n  document,\n  <ExecutorManagerProvider value={manager}>\n    <App />\n  </ExecutorManagerProvider>\n);\n```\n\nHere, `App` is the component that renders your application. Inside the `App` you can use `useExecutor` and\n[`useExecutorSuspense`](#suspense) to load your data.\n\n[`hydrateExecutorManager`](https://smikhalevski.github.io/react-executor/functions/react-executor.hydrateExecutorManager.html)\nmust be called only once on the client-side with the manager that would receive the dehydrated state from the server.\n\nOn the server-side, you can either render your app contents [as a string](#render-to-string) and send it to the client\nin one go, or [stream the contents](#streaming-ssr).\n\n## Render to string\n\nUse [`SSRExecutorManager`](https://smikhalevski.github.io/react-executor/classes/ssr.SSRExecutorManager.html)\nto render your app as an HTML string:\n\n```tsx\nimport { createServer } from 'node:http';\nimport { renderToString } from 'react-dom/server';\nimport { ExecutorManagerProvider } from 'react-executor';\nimport { SSRExecutorManager } from 'react-executor/ssr';\n\nconst server = createServer(async (request, response) => {\n  // 1️⃣ Create a new manager for each request\n  const manager = new SSRExecutorManager();\n\n  // 2️⃣ Re-render until there are no more changes\n  let html;\n  do {\n    html = renderToString(\n      <ExecutorManagerProvider value={manager}>\n        <App />\n      </ExecutorManagerProvider>\n    );\n  } while (await manager.hasChanges());\n\n  // 3️⃣ Inject the hydration script\n  html = html.replace('</body>', manager.nextHydrationChunk() + '</body>');\n\n  response.setHeader('Content-Type', 'text/html');\n  response.end(html);\n});\n\nserver.listen(8080);\n```\n\nA new executor manager must be created for each request, so the results that are stored in executors are served in\nresponse to a particular request.\n\n[`hasChanges`](https://smikhalevski.github.io/react-executor/classes/ssr.SSRExecutorManager.html#haschanges)\nwould resolve with `true` if state of some executors have changed during rendering.\n\n> [!WARNING]\n> Plugins that continuously re-execute tasks — such as [`retryFulfilled`](#retryfulfilled) with a short delay —\n> will cause `hasChanges()` to loop indefinitely. Avoid polling plugins in SSR, or pass `maxRetries` to cap the number\n> of iterations.\n\nThe hydration chunk returned by\n[`nextHydrationChunk`](https://smikhalevski.github.io/react-executor/classes/ssr.SSRExecutorManager.html#nexthydrationchunk)\ncontains the `<script>` tag that hydrates the manager for which\n[`hydrateExecutorManager`](https://smikhalevski.github.io/react-executor/functions/react-executor.hydrateExecutorManager.html)\nwas invoked.\n\n## Streaming SSR\n\nReact can stream parts of your app while it is being rendered. You can inject React Executor hydration chunks into the\nReact stream.\n\n```tsx\nimport { createServer } from 'node:http';\nimport { Writable } from 'node:stream';\nimport { renderToReadableStream } from 'react-dom/server';\nimport { ExecutorManagerProvider } from 'react-executor';\nimport { SSRExecutorManager } from 'react-executor/ssr';\n\nconst server = createServer(async (request, response) => {\n  // 1️⃣ Create a new manager for each request\n  const manager = new SSRExecutorManager();\n\n  const stream = await renderToReadableStream(\n    <ExecutorManagerProvider value={manager}>\n      <App />\n    </ExecutorManagerProvider>\n  );\n\n  const hydrator = new TransformStream({\n    transform(chunk, controller) {\n      controller.enqueue(chunk);\n      controller.enqueue(manager.nextHydrationChunk());\n    },\n  });\n\n  response.setHeader('Content-Type', 'text/html');\n\n  // 2️⃣ Inject the hydration chunks into the react stream\n  await stream.pipeThrough(hydrator).pipeTo(Writable.toWeb(response));\n\n  response.end();\n});\n\nserver.listen(8080);\n```\n\n`hydrator` injects React Executor hydration chunks into the React stream.\n\nIn the `App` component, use the combination\nof [`<Suspense>`](https://react.dev/reference/react/Suspense),\n[`useExecutor`](https://smikhalevski.github.io/react-executor/functions/react-executor.useExecutor.html) and\n[`useExecutorSuspense`](https://smikhalevski.github.io/react-executor/functions/react-executor.useExecutorSuspense.html)\nto suspend rendering while executors process their tasks:\n\n```tsx\nfunction App() {\n  return (\n    <html>\n      <head />\n      <body>\n        <Suspense fallback={'Loading'}>\n          <Hello />\n        </Suspense>\n      </body>\n    </html>\n  );\n}\n\nfunction Hello() {\n  const helloExecutor = useExecutor('hello', async () => {\n    // Asynchronously return the result\n    return 'Hello, Paul!';\n  });\n\n  // 🟡 Suspend rendering until helloExecutor is settled\n  useExecutorSuspense(helloExecutor);\n\n  return helloExecutor.get();\n}\n```\n\nIf the `App` is rendered in streaming mode, it would first show \"Loading\" and after the executor is settled, it would\nupdate to \"Hello, Paul!\". In the meantime `helloExecutor` on the client would be hydrated with the data from the\nserver.\n\n## State serialization\n\nBy default, an executor state is serialized using\n[`JSON`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)\nthat has quite a few limitations. If your executor stores a value that may contain circular references, or\nnon-serializable data like `BigInt`, then a custom state serializer must be provided.\n\nOn the server, pass a\n[`serializer`](https://smikhalevski.github.io/react-executor/interfaces/ssr.SSRExecutorManagerOptions.html#serializer)\noption to [`SSRExecutorManager`](#render-to-string):\n\n```ts\nimport { SSRExecutorManager } from 'react-executor/ssr';\nimport JSONMarshal from 'json-marshal';\n\nconst manager = new SSRExecutorManager({ serializer: JSONMarshal });\n```\n\nOn the client, pass _the same_\n[`serializer`](https://smikhalevski.github.io/react-executor/interfaces/react-executor.HydrateExecutorManagerOptions.html#serializer)\nto `hydrateExecutorManager`:\n\n```tsx\nimport { hydrateRoot } from 'react-dom/client';\nimport { hydrateExecutorManager, ExecutorManager, ExecutorManagerProvider } from 'react-executor';\nimport JSONMarshal from 'json-marshal';\n\nconst manager = new ExecutorManager();\n\nhydrateExecutorManager(manager, { serializer: JSONMarshal });\n\nhydrateRoot(\n  document,\n  <ExecutorManagerProvider value={manager}>\n    <App />\n  </ExecutorManagerProvider>\n);\n```\n\n> [!TIP]\\\n> With additional configuration, [json-marshal](https://github.com/smikhalevski/json-marshal#readme) can stringify and\n> parse any data structure.\n\n## Content-Security-Policy support\n\nBy default,\n[`nextHydrationChunk`](https://smikhalevski.github.io/react-executor/classes/ssr.SSRExecutorManager.html#nexthydrationchunk)\nrenders an inline `<script>` tag without any attributes. To enable the support of\nthe [`script-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src)\ndirective of the `Content-Security-Policy` header, provide\nthe [`nonce`](https://smikhalevski.github.io/react-executor/interfaces/ssr.SSRExecutorManagerOptions.html#nonce)\noption to `SSRExecutorManager` or any of its subclasses:\n\n```ts\nconst manager = new SSRExecutorManager(response, { nonce: '2726c7f26c' });\n```\n\nSend the header with this nonce in the server response:\n\n```\nContent-Security-Policy: script-src 'nonce-2726c7f26c'\n```\n\n## Next.js integration\n\n> [!TIP]\\\n> Check out the live example\n> of [the Next.js app](https://codesandbox.io/p/devbox/react-executor-next-example-whsj4v) that showcases streaming SSR\n> with React Executor.\n\nTo enable client hydration in Next.js,\nuse [`@react-executor/next`](https://github.com/smikhalevski/react-executor-next) package.\n\nFirst, provide\nan [`ExecutorManager`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html):\n\n```tsx\n// providers.tsx\n'use client';\n\nimport { ReactNode } from 'react';\nimport { hydrateExecutorManager, ExecutorManager, ExecutorManagerProvider } from 'react-executor';\nimport { SSRExecutorManager } from 'react-executor/ssr';\nimport { ExecutorHydrator } from '@react-executor/next';\n\nconst manager = typeof window !== 'undefined' ? hydrateExecutorManager(new ExecutorManager()) : undefined;\n\nexport function Providers(props: { children: ReactNode }) {\n  return (\n    <ExecutorManagerProvider value={manager || new SSRExecutorManager()}>\n      <ExecutorHydrator>{props.children}</ExecutorHydrator>\n    </ExecutorManagerProvider>\n  );\n}\n```\n\n`ExecutorHydrator` propagates server-rendered executor state to the client. You can configure how dehydrated state is\n[serialized on the server and deserialized on the client](#state-serialization), by default `JSON` is used.\n\nEnable providers in the root layout:\n\n```tsx\n// layout.tsx\nimport { ReactNode } from 'react';\nimport { Providers } from './providers';\n\nexport default function (props: { children: ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <Providers>{props.children}</Providers>\n      </body>\n    </html>\n  );\n}\n```\n\n# Devtools\n\nTo inspect the current state of executors in your app, install the\n[React Executor\nDevtools](https://chromewebstore.google.com/detail/react-executor-devtools/achlflelpafnlpepfpfhildkahbfhgjc)\nbrowser extension and open its panel in the Chrome Developer Tools:\n\n<br/>\n<p align=\"center\">\n  <img\n    alt=\"React Executor Devtools Screenshot\"\n    src=\"https://raw.githubusercontent.com/smikhalevski/react-executor-devtools/master/assets/screenshot.png\"\n    width=\"640\"\n  />\n</p>\n<br/>\n\nDevtools extension doesn't require any additional configuration and provides introspection to all executors on the\npage, regardless if they were rendered through React or created outside of the rendering process.\n\nTo disable devtools, create a custom\n[`ExecutorManager`](https://smikhalevski.github.io/react-executor/classes/react-executor.ExecutorManager.html):\n\n```ts\nimport { ExecutorManager } from 'react-executor';\n\nconst opaqueExecutorManager = new ExecutorManager({\n  devtools: false,\n});\n```\n\nExecutors created by the `opaqueExecutorManager` won't be visible in the React Executor Devtools extension. It is\nrecommended to use this setting in production.\n\nThe extension source can be found in\nthe [react-executor-devtools](https://github.com/smikhalevski/react-executor-devtools) repo.\n\n# Cookbook\n\n## Dependent tasks\n\nPause a task until another executor is settled:\n\n```ts\nconst accountExecutor = useExecutor('account', async signal => {\n  // Fetch account here\n});\n\nconst shoppingCartExecutor = useExecutor('shoppingCart', async signal => {\n  const account = await accountExecutor.getOrAwait();\n\n  // Fetch shopping cart for an account\n});\n```\n\nIn this example, the component is subscribed to both account and a shopping cart executors, and re-rendered if their\nstate is changed. To avoid unnecessary re-renders, you can acquire an executor through the manager:\n\n```tsx\nconst shoppingCartExecutor = useExecutor('shoppingCart', async (signal, executor) => {\n  // 1️⃣ Wait for the account executor to be created\n  const accountExecutor = await executor.manager.getOrAwait('account');\n\n  // 2️⃣ Wait for the account executor to be settled\n  const account = await accountExecutor.getOrAwait();\n\n  // Fetch shopping cart for an account\n});\n```\n\n## Derived executors\n\nAn executor whose result depends on another executor can be re-computed automatically when that dependency changes.\nCombine [`invalidateByPeers`](#invalidatebypeers) and [`retryInvalidated`](#retryinvalidated) to wire this up:\n\n```ts\nimport { useExecutor } from 'react-executor';\nimport invalidateByPeers from 'react-executor/plugin/invalidateByPeers';\nimport retryInvalidated from 'react-executor/plugin/retryInvalidated';\n\nconst breadExecutor = useExecutor('bread', fetchBread);\n\nconst cheeseExecutor = useExecutor(\n  'cheese',\n  async signal => {\n    const bread = await breadExecutor.getOrAwait();\n    return bestCheeseFor(bread);\n  },\n  [invalidateByPeers([breadExecutor]), retryInvalidated()]\n);\n```\n\n`cheeseExecutor` re-runs whenever `breadExecutor` is fulfilled or invalidated. For bidirectional invalidation — where\nfulfilling either executor invalidates the other — add [`invalidatePeers`](#invalidatepeers) to both.\n\n## Pagination\n\nCreate an executor that would store the current page contents:\n\n```ts\nconst fetchPage = async (pageIndex: number, signal: AbortSignal) => {\n  // Request the data from the server here\n};\n\nconst pageExecutor = useExecutor('page', signal => fetchPage(0, signal));\n\nconst handleGoToPageClick = (pageIndex: number) => {\n  pageExecutor.execute(signal => fetchPage(pageIndex, signal));\n};\n```\n\nThe executor preserves the latest value it was resolved with, so you can render page contents using `executor.value`,\nand render a spinner when `executor.isPending`.\n\n## Infinite scroll\n\nCreate a task that uses the current executor value to combine it with the data loaded from the server:\n\n```ts\nconst itemsExecutor = useExecutor<Item[]>('items', async (signal, executor) => {\n  const items = executor.value || [];\n\n  return items.concat(await fetchItems({ offset: items.length, signal }));\n});\n```\n\nNow if a user clicks on a button to load more items, `itemsExecutor` must retry the latest task:\n\n```ts\nconst handleLoadMoreClick = () => {\n  itemsExecutor.retry();\n};\n```\n\n## Invalidate all executors\n\n[`ExecutorManager`](https://smikhalevski.github.io/react-executor/classes/","readmeFilename":"README.md"}