UNPKG

refun

Version:

A collection of React Hook-enabled functions that compose harmoniously with each other. Similar to `recompose`, but:

1 lines 3.94 kB
{"version":3,"sources":["utils.ts"],"names":["shallowEquals","a","b","key","shallowEqualByKeys","keys","generatorIdFactory","latestId","ids","Set","switchToGenerator","id","clear","add","newId","isGeneratorRunning","has","unwindGenerator","gen","shouldContinue","handle","ir","done","value","next","return","e","throw"],"mappings":";;;;;;AAAA,OAAO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAAeC,CAAf,EAAqBC,CAArB,EAA8B;AACzD,MAAID,CAAC,KAAKC,CAAV,EAAa;AACX,WAAO,IAAP;AACD;;AAED,OAAK,IAAMC,GAAX,IAAkBD,CAAlB,EAAqB;AACnB,QAAID,CAAC,CAACE,GAAD,CAAD,KAAWD,CAAC,CAACC,GAAD,CAAhB,EAAuB;AACrB,aAAO,KAAP;AACD;AACF;;AAED,OAAK,IAAMA,IAAX,IAAkBF,CAAlB,EAAqB;AACnB,QAAIA,CAAC,CAACE,IAAD,CAAD,KAAWD,CAAC,CAACC,IAAD,CAAhB,EAAuB;AACrB,aAAO,KAAP;AACD;AACF;;AAED,SAAO,IAAP;AACD,CAlBM;AAoBP,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAAeH,CAAf,EAAqBC,CAArB,EAA2BG,IAA3B,EAAiD;AACjF,MAAIJ,CAAC,KAAKC,CAAV,EAAa;AACX,WAAO,IAAP;AACD;;AAHgF,6CAK/DG,IAL+D;AAAA;;AAAA;AAKjF,wDAAwB;AAAA,UAAbF,GAAa;;AACtB,UAAIF,CAAC,CAACE,GAAD,CAAD,KAAWD,CAAC,CAACC,GAAD,CAAhB,EAAuB;AACrB,eAAO,KAAP;AACD;AACF;AATgF;AAAA;AAAA;AAAA;AAAA;;AAWjF,SAAO,IAAP;AACD,CAZM;AAcP,OAAO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;AACtC,MAAIC,QAAQ,GAAG,CAAf;AACA,MAAMC,GAAG,GAAG,IAAIC,GAAJ,EAAZ;;AAEA,MAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,EAAD;AAAA,WAAgB,YAAM;AAC9CH,MAAAA,GAAG,CAACI,KAAJ;AACAJ,MAAAA,GAAG,CAACK,GAAJ,CAAQF,EAAR;AACD,KAHyB;AAAA,GAA1B;;AAKA,MAAMG,KAAK,GAAG,SAARA,KAAQ,GAAM;AAClB,QAAMH,EAAE,GAAGJ,QAAQ,EAAnB;AAEAC,IAAAA,GAAG,CAACK,GAAJ,CAAQF,EAAR;AAEA,WAAOA,EAAP;AACD,GAND;;AAQA,MAAMI,kBAAkB,GAAG,SAArBA,kBAAqB,CAACJ,EAAD;AAAA,WAAgBH,GAAG,CAACQ,GAAJ,CAAQL,EAAR,CAAhB;AAAA,GAA3B;;AAEA,SAAO;AACLD,IAAAA,iBAAiB,EAAjBA,iBADK;AAELI,IAAAA,KAAK,EAALA,KAFK;AAGLC,IAAAA,kBAAkB,EAAlBA;AAHK,GAAP;AAKD,CAxBM;AA0BP,OAAO,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAAIC,GAAJ,EAAyCC,cAAzC,EAAiF;AAC9G,MAAMC,MAAM,GAAG,eAATA,MAAS,CAAOC,EAAP,EAAyD;AACtE,QAAIA,EAAE,CAACC,IAAP,EAAa;AACX;AACD;;AAED,QAAI;AACF,UAAMC,KAAK,GAAG,MAAMF,EAAE,CAACE,KAAvB;;AAEA,UAAIJ,cAAc,EAAlB,EAAsB;AACpB,eAAOC,MAAM,CAACF,GAAG,CAACM,IAAJ,CAASD,KAAT,CAAD,CAAb;AACD;;AAEDL,MAAAA,GAAG,CAACO,MAAJ;AACD,KARD,CAQE,OAAOC,CAAP,EAAU;AACV,UAAIP,cAAc,EAAlB,EAAsB;AACpB,eAAOC,MAAM,CAACF,GAAG,CAACS,KAAJ,CAAUD,CAAV,CAAD,CAAb;AACD;;AAEDR,MAAAA,GAAG,CAACO,MAAJ;AACD;AACF,GApBD,CAD8G,CAuB9G;;;AACAL,EAAAA,MAAM,CAACF,GAAG,CAACM,IAAJ,EAAD,CAAN;AACD,CAzBM","sourcesContent":["export const shallowEquals = <T extends {}>(a: T, b: T) => {\n if (a === b) {\n return true\n }\n\n for (const key in b) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport const shallowEqualByKeys = <T extends {}>(a: T, b: T, keys: (keyof T)[]) => {\n if (a === b) {\n return true\n }\n\n for (const key of keys) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport const generatorIdFactory = () => {\n let latestId = 0\n const ids = new Set<number>()\n\n const switchToGenerator = (id: number) => () => {\n ids.clear()\n ids.add(id)\n }\n\n const newId = () => {\n const id = latestId++\n\n ids.add(id)\n\n return id\n }\n\n const isGeneratorRunning = (id: number) => ids.has(id)\n\n return {\n switchToGenerator,\n newId,\n isGeneratorRunning,\n }\n}\n\nexport const unwindGenerator = <T>(gen: Generator<Promise<T>, void, T>, shouldContinue: () => boolean): void => {\n const handle = async (ir: IteratorResult<Promise<T>>): Promise<void> => {\n if (ir.done) {\n return\n }\n\n try {\n const value = await ir.value\n\n if (shouldContinue()) {\n return handle(gen.next(value))\n }\n\n gen.return()\n } catch (e) {\n if (shouldContinue()) {\n return handle(gen.throw(e))\n }\n\n gen.return()\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handle(gen.next())\n}\n"],"file":"utils.js"}