{"_id":"@caldwell619/data-loader","_rev":"11-4d4231b294387695267c219d911e378b","name":"@caldwell619/data-loader","dist-tags":{"latest":"0.0.9-alpha.0"},"versions":{"0.0.1":{"name":"@caldwell619/data-loader","version":"0.0.1","license":"MIT","_id":"@caldwell619/data-loader@0.0.1","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"ffdf53ceba6698d38fe22041b20c8d47dccd4d99","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.1.tgz","fileCount":16,"integrity":"sha512-d/p9+S3LMtdxgHnIscPj+L2530zSZ1L56A5XTbuX9fQ9dlkVyEiqsiWs8Ua7gLA+OMoJtjlgi7tCTq5tV+pArw==","signatures":[{"sig":"MEYCIQDJE1sodpqi0hqdvXIEd/M899HZC81lhIIY+ySVrMVvfgIhAPcXNnC+VnBE2rPVY/jfz6XhqswYBfPNmNdNN3rXrSW+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuUlPCRA9TVsSAnZWagAAcC4P/A+6pIa90D5uFycZxZxE\nWoycdIJ8vwK2NgOlFGlbkCCXnTcdH/rG2ZSVGp2Uqx9FEWzCuKlfydeH17Hh\ns+ff9/IVVjPwzFyNJrfb4DZQASzJcgXRAUK8KSXFHbeZfgHkcorb9dFNoVRD\nSfQyDBc36nUiscxLIhiDmeOV9UlvfbkVxzzPANqPdDDtraxV/51dOcOLOREl\n+FxStaAEEj9OGH/gcyCLDoSXPW4ZzjYEpJL7KSt+M6JtJXXECOcg905wOIxm\n+Ha3mHJCbfjQlip1AZsF1DtXVvo8aVyA5SVb57c6i4ZTQL8KIa+x7bT1+4NQ\nN4UOBWABO00mkhsvCG+tx+zbLvdfhJbaxuJ0QRA+UjpahrfDPLStnYeLzwzg\n1Ro+AaLihAqot/In77in2rSnmUeseF1w8ZIgGTHeY1cGk7EX5vwvrNiEWYkI\nlUR0XbL1vnshHObIO29StRvEPO1oOCwn9VfapcGlWlAsy85hmxFu6c8tZ2W4\n6AQVEkBX2y1RxVgicUk2PDhG1QXCuV1Ui7kYqssFRpANj5P4q0m/GUDZ2lBA\nYrNhLi3cXteb6BjTyF3I4J/NSHocQfeWUcDFXZ2Yu8/Ju89wK/AfvFST5Z3X\n+i8Yr3wl49Vbd3BaDpLRuGM0wXYoGg7G610V6vMn/iLf77H6d4cMC/lg8Qfi\nlQ5Z\r\n=RPy6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","start":"ts-node src/index.ts","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Calddwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.2","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.1_1639532879596_0.5379974640367791","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@caldwell619/data-loader","version":"0.0.2","license":"MIT","_id":"@caldwell619/data-loader@0.0.2","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"c64cf1ebe5c59df7b59a6225f4f80f4c9770980c","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.2.tgz","fileCount":17,"integrity":"sha512-fmSKbz3xudfUurJ1OEn71hR9uao2IM2fn3uOED4EQChYodPnBC0J/gfjRAqUNjMMYco0fAwPgaIwl5lPzwvGDw==","signatures":[{"sig":"MEMCIHyDBCMX7Hn+mEzFZ9DrqnfF2YFhVMOGkZItus+aQP14Ah9C+mhPrCH1aIc3bOAu10uH6oJ/RY6fkZ9iutnO6fIp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61984,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuqKBCRA9TVsSAnZWagAAH+kQAJ2OKbNU7iIy/kjhA+lS\nx2+31V5Kqt2irrr2cRs5rLKglxaT15seRhBoiUs2Bq4tKyN7StbrYW84tjVd\nhE3S9BbfCaRSUL/jxCgM5N4oXmSglgq5GwF1tnipkg3ovnMm9VMF7K++wAHR\nx4FIsSJmomgOKF19Rwjpk6AwxCwzAihtIX+oJdFoGEDkY4BCpFad0IdCAEWL\nx+J3BFJ55aVz4AkXbD7VGA2VWuQwGodkQ/enUtAE8DdMLrdKsEg+YdrHr7Lb\n0oNOj8xUA7ux+PE81bJzwzlHwdapl+OU5E2b8OUT84uy/w+Gk6J5tp9f1UBn\nfB5pDXkg/CtYiyOafxTCIpLFmBFAmoW06Rh1BvAbJYFVbX4Srr0DgS+hITAp\n2EQmPccho+zII06xkaBC5+pvDHIeNUFkss1EjDFkywEFg1808KuVrDi5WzD5\noJ9OilVmT8FzNT/bMRzxPh/zH18bvk4m4xcAMcLzXGSvtnjn+LgPI+HfDp6/\nWCQfzT2ncW9r1WJmkAshuRzmCQjGOifkJBie75GjvuH5ux6N9O4V9yjdd2Q4\n/PALM6KMh5KP2UAK+KwRxmsjDrM9K1PZuoOvNxrT4YPTDR0mrxRBnHxrYlT/\nqbOWiweASxzAY2QbAK1FuSBSMyk0yq1ZJ3Z4sBdnxy9iYAy7AlEVe/zcfWBp\nXvID\r\n=zLIn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","start":"ts-node src/index.ts","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Calddwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.2","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.2_1639621249044_0.3477594826879964","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@caldwell619/data-loader","version":"0.0.3","license":"MIT","_id":"@caldwell619/data-loader@0.0.3","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"09beb4da5eaa5fa61587bbadeb9edf60e7357194","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.3.tgz","fileCount":17,"integrity":"sha512-/fugdecdLhhwU8n9FRhjyeAZfYLu+vVOn+CjwqrZEYJ1M3+b0YRUett7dplhRq4GCFRAhC0kjhjsiNseQk8vGA==","signatures":[{"sig":"MEUCIQCwM/SAZ3NrXUjneC8/xb9uAK6Ouv5gKFePKN4+i1o+DAIgQJ46Soip1U0b7aEAxrp/xB8o72pF5Rl43BInNXPcpGo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhustjCRA9TVsSAnZWagAAIzMP/RJBLTsFsW8zKp49V2u9\nDQk8OlhLhmGMidF/H3ZiJqU0qCGihQYEZAvWzEZUz0pDNYBepEf+o5+Fe8FI\nUP9CIOwEKs0nsBzZ8VSDldS5tDrc4xsV5BEa17wWTKRZaZYdRFcNIV5ZkzKw\nfaXatmo6d280IdpbtpvMedC3LhT7slXaoRk8FdQ3ueUcyIDV1ys30E6csnPA\nz6oQp3FBUPHmE8DoQk6DcL2TR5pxBCAG31dADKYwn9N1DFzQAb1PFLolVN0w\nGEBmKMHeng07QzXvFixA7xBTCQp+TPGPXjH3OvcDRVHhzGxrLdvaLIWmg/cE\nIcSrkArkAbU6dy3V6mQsEiUDNql3L3p6lm8h3m2rsnBoHaTtrdgdmsHgz4Lo\nANYOJQEjzJpG75tbSZCbP0dXhLV2Rg6QQsk3l+KmAwnNlfmsvGb3PxV0L5St\nit++9juUd5oSwpRFQi0QJTO0Hly1VsOSOFWJ1zJK3dzcjC3XdJ0WTCKfYZTm\nKnbXvbVvscZGm1FYlLTgaGWp16tSGPylrurz7vRHQs6I87J53zztgcouOvA1\nVCeKznU8iyjE+fEZ/9+S9AERCmHf124Ny3ouxmi8bMpNEgNiXRZub1PiWIir\nH3ebnWbXzBOKtennlU21FYtv+h7ulR4q17a2aMsmx5U4Tq5TTtcCouzGGRYz\ntvI6\r\n=P0JP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","start":"ts-node src/index.ts","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.2","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.3_1639631715701_0.5461983840742821","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@caldwell619/data-loader","version":"0.0.4","license":"MIT","_id":"@caldwell619/data-loader@0.0.4","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"8b6e66350bc02837cfff9e930d7916e51ff40f58","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.4.tgz","fileCount":17,"integrity":"sha512-pAZcTOKOFe/MZBFjYt+NObWqG0Gap+NyVRGdy5VfqTZiMuVRh6jaADxaEGXt0x3kzZ8yA/A2pNaV4/4Dn7aDlQ==","signatures":[{"sig":"MEQCIGjoabd88sESmuo/5cgb7QMksiXOrLXvKEC0jHc66feXAiB0lZLHnBffQ+pk1Vn0gbVdtgK+YJLMH2G/5TG5LeS0NQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxA4DCRA9TVsSAnZWagAAQmAP/3xHVPy/KITr9N9pS3us\nCGXF3X3XaUDy3vsr7BCQMty9/0Xhiw2ePJSp6ptNjhmFcy4OPDH2Ff0Z12+/\nHaykcC5TH4+MeNbmtAnKi9KJv8FYgUJ04rG9UF0LqISgjAyqX77HPO1bLWey\nfw+IOYCf4ZyyLMmge0EiIf83ouZLf5SKugGwVWscAyskNBiOPYmHnLwuTc7l\nWRnCHJ9i+H0GJ0rcSyOrInbD/b1Pwzy8P49ziSNYSTQQzbbl6PDfMyEcmK8D\nqUcmOr2wOTN4jlN7e6FmrEmMTar6MSh2ZNygkKg19vI86uP5gzq758cJaOK9\nrZm/MQKCEB88267JvJfCmqKe1bG045H8bfiPRXoTN+PErnzkdhcTY9JnnCIj\nwBTd+ilPzryttyij4YZnwE5AJy/OoRFqFXCwYGHpqssQpi8ow1SVC85Ava18\nQs60euDHVVNGzzQmpJ2kn3QmqKqcyDeRQGzkPfSWkl0EstpcBKViSyBpvlXh\nXxAuD85XmdQwLkgcIVmvo9I4HyRGPBGdrp4xJbWSHNGsIQ++iHsvfgh1EeXg\n/wJvRyzWjYHphwtTGzv+VDZQ7kpCJAxSUeJSJHdLAuDbQXHPB+omOlqAl945\n3JBPU51jD/pD36xIVWAXpIcEZWoy2C9zXW4XcaoxrV5v6ldQPo7SKtA6fiPn\nUaaL\r\n=aeL2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","start":"ts-node src/index.ts","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"repository":{"url":"https://github.com/christopher-caldwell/dedupe-data-loader.git","type":"git"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.2","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.4_1640238594785_0.8926623234648741","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@caldwell619/data-loader","version":"0.0.5","license":"MIT","_id":"@caldwell619/data-loader@0.0.5","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"5d699ccf0c7184e2ce90d1cf26308b3198b5f37c","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.5.tgz","fileCount":19,"integrity":"sha512-IDqpI1lq6IUTm2LvWXDBoQt+BINILFOtA+NEsBwc0Rebn1dgPm2CXFJ8v+8gvkAZo7D5OcNNDv6U6eXCNObvyA==","signatures":[{"sig":"MEQCIDk2LNvBZXs1fZ3y0hi8E3T8hKXoqqf0bxlkyThqtykGAiB4iquQPUIAT3B8DKv2mGswYlItXtakqTYtVZa0ML0u2Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":71481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLal+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpEjw//TZfrCz+Tu5hafWT/KGPZSJfSKQOlcqCDah1zyJr3rIvhXgz4\r\nTA3k8XScc1saeNapQAxaZBalz5NlvI6ElsBJ64OG/i8csxeHnv64nk9+vMlZ\r\nSpLMjvj6G3hKegeZJLz/GntEx5yrQSY6cV0iot2EMcMlGUdF9Q0GwCCpnw+N\r\nfCUcyVTPS9ej+5xSTG7+kBAMR+zcJNL5sEZg6YCPyH0za+cAQlG7SdmJJsBn\r\nXoUiUzqtzm/5AcavBQBeSk/BqskiXgFdItSnJV5t26bUkkYgLcE/MRRE5DNQ\r\nREe689ai/W3zypY+LNmlzLwvxtYNteI+LIhcWPfoud+P2RCnUdpuufPsAeo6\r\n1ENm1Z9/7MhB56EaAWDQzH39aArWWnzA4QcdWbuseVkIp3GtUTl2NI/+LmBF\r\nVQPSMp3X3i67qtD2F/dvE8r596LRJCkIBHrfYRWkFCW4eyoVqaO1PHTwAKTj\r\nt9bIPP0Ou39aSXcMQvhxyjME2X3+B2683wAQBYW9thnSK13A5c8/o3XyAl1T\r\noJ2wanCCuprJ8vVsidAdTreh8ukPVcJ1frJS/mCEgiDk7bo+dMfYTYodZ42Q\r\nJgQXswqV8p/zcfVSRvPndd2uTBlp3m2bzFhHpTjkCtl/Nb1y8UeR8Fo/rw1X\r\nPOA/A7NQS9mKkDlaXYFJEchc5GuRdJeljhg=\r\n=BrQB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","start":"ts-node src/index.ts","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"repository":{"url":"https://github.com/christopher-caldwell/dedupe-data-loader.git","type":"git"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","adze":"^1.9.1","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"optionalDependencies":{"ioredis":">=4"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.5_1680714110651_0.5413248814882248","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@caldwell619/data-loader","version":"0.0.7","license":"MIT","_id":"@caldwell619/data-loader@0.0.7","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"a45102969c70486608c3e6c7b5e2b06eb57a5f28","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.7.tgz","fileCount":19,"integrity":"sha512-dHmlR7HuFsuVFdcIPz1WnFmgc0S2T2T33e4ollAEsaQl86mXlVIPguRAXZ5rHRCgDO8tkYsT3y0hrubjqL3e3g==","signatures":[{"sig":"MEUCIQC/Xh0KysTENG9h+Aqp4IMyrjueviz65YLLM+t7cf/mhAIgGkvYltxGFGg4aI13tnIr37pmGguNLsKjsTx2luzyRFY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":72994,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLdlgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmozvg//ZnDNeJBEIToaZX+zXAIG9pcjKpi/E/G5XjeoVtz+1IjrDW0X\r\nayK3UDWQv55lZJQiO+ZWI7q5cx9wTvhPUC4vdBpu2fMpKS4kW0eEy52FiHM6\r\npH0l0AQ+mipu36+fpK/zOeppSs9Ww0VbpZg58GYwDznLnM09sQtzE2tS9zhH\r\nUtQPofu/qBgAE9EHV9yRVgOCyIsSNK/hW9siv4Ai4kgSy4dgX9erMNNY/r+x\r\nWCkch+5FREL8sOmybDQQdbKCBA0tTr5No8NYk7g4/DsaysmHr3/C9F8ot2cs\r\nL6muT2oEFt5UPy1+mv/cWQR4m9rhxrdTbH0jo6nbn89LPUCkJeTrgO4weOh9\r\n5IskvmE1Vy3QRSIxkTc1RoOkngAtbTIZpHXSxNY29cxI1d4FVxlMOB+b2Nzx\r\nnTDgf9R0Fei5sKBVjEGp5jh4ipq5qjOq2pxC7qiIAdW2G82EYkulHpP41tHU\r\nkg4Ds8kZl4SslKz1M/pPeIzoM6M7h2SVvduA9K2m6wL67fhKdshH9GSKB5e7\r\nNmxOhDtd5QyS4gp7WtNC733vtrYb+QuCrDK0k6dEdnlunqxGYp+gVn4ovICF\r\n8dnV6usfY/xqqJUDXvZ8z2EaZ+bF9XO1x8gxL7luXVFYSExqr1IjJch4pZW2\r\nbsJUV9t0hNGi4g9Di7etuXBzgyNu1EfdlGw=\r\n=tSVb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"repository":{"url":"https://github.com/christopher-caldwell/dedupe-data-loader.git","type":"git"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","adze":"^1.9.1","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.5","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.9.5","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"peerDependencies":{"ioredis":">=4"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.7_1680726367804_0.9345623962050564","host":"s3://npm-registry-packages"}},"0.0.8-alpha.0":{"name":"@caldwell619/data-loader","version":"0.0.8-alpha.0","license":"MIT","_id":"@caldwell619/data-loader@0.0.8-alpha.0","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"972f258b5fed74f94dc350d780cb3c32caed7327","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.8-alpha.0.tgz","fileCount":19,"integrity":"sha512-m+ZuZGNZTh9fCOCCZ+/CH5L3Uje7eE7BukxMEHXm4/+1jZfeU7BvlqGlQ9lcIt0zFP1UWdn/31MUQiquS5J8Og==","signatures":[{"sig":"MEUCIAFKN1fpnzto7OHxrM9qmyULyo2UFwnhIzwiuDgh63jrAiEAnSYE8L5nPersdcpsVs7RMxjuZM1elY5eEciaO0nvRCE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLefJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp7pA//TfWKQXZ+ZvrUMna7tBCBnnPNOliFy8uF60iLtQsgH9OXz9OT\r\n9J1dR7IEQXnhzvQsAmnRI7QQz/XC8VwZ+J1Ad/mK61fycY0PtbLO+dfBgpQE\r\nvhxZRWC8zKuGb+KBOV9zWEGWWOa478raaU+eBiQSdNFt+8pujkqjz5Xt/GM1\r\nK3WfR4FcwhTHU8Odn4hqb0U+579IiDrf3EcyNJf5bwttsa+Qx30iCsBWgeAF\r\nVp2W2smS76RxZn1sZOBGM+XC5uwUDX3gLfyCBknz5ajWtMFO4bCp2aPv4Hqy\r\n7nyPbVHVWMLxTOoCAvAo1aqZbzTJvLATI2nytzfijiqCvmMhywPPJ3Srcpnd\r\nLtb4i1jlqyN0WTbDoDYSiM64gaYucs/W4TLap8uupcfUp+4ffjbowii1dkfS\r\nCzUyg4UImNkc1o53Gc6AOw029gj2XGCdkZYEMSRFAYVqXz7bCDh4NeaS77Gv\r\nnTyXesL+gbgtyeqvEv4IR3+TKdePOQ/Ec/bOCfmYA6BHk+xb3+nAt52wp4r2\r\nVw2hdsOx6cmfmjHNuOhLn7HXIDJ1KQZGVR0wZGyrtgSUKJI+BDErvRSTF+l3\r\nLaN8M4pkw14BDl1TsbOTcUrBOVB2uMquwz2XeHs2iFNH75APwprN9jkYZI5d\r\nZS8n/cwAJrdMGrhlwQ52Ab2XIaSOWrSFIFw=\r\n=Iu9r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"repository":{"url":"https://github.com/christopher-caldwell/dedupe-data-loader.git","type":"git"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","adze":"^1.9.1","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.5","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.9.5","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"peerDependencies":{"ioredis":">=4"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.8-alpha.0_1680730056884_0.1972106470484274","host":"s3://npm-registry-packages"}},"0.0.8-alpha.1":{"name":"@caldwell619/data-loader","version":"0.0.8-alpha.1","license":"MIT","_id":"@caldwell619/data-loader@0.0.8-alpha.1","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"6a6a24e7c8c17c6c6e8241350a02355a702dc50c","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.8-alpha.1.tgz","fileCount":78,"integrity":"sha512-9xbJZoe1gt4qxtANY66HUHsuYdgog7zK3HoV0nXFKHvFJIecv2YGkznP3X0qOB8THqQ6RuW90zDv4qWL3Py9ZA==","signatures":[{"sig":"MEYCIQDm83QAKAzND/CZ58Ai0rHcPgmmP+IV1MH/0gUR0v86wwIhALUcxL4dTYA7eex/xxK9PhMYWyodgTFWzhBPNgRbVFVI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLehIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpfvA//dUEtYL7DCPWp546dfvZRwx+yVLGYThNU2+wfrxN/ydI+u7Go\r\nl6GOZnWlA4LDJblfSkJfxFMsFmIICgweK/TFp9duqhTGQ0zEw8ePs8D3uJjD\r\ni3OB/KoVl5ygOB9RZvhO7q11Hnr4HhWRovdFpLoGWg/sKSCnOOZWf6na0JzG\r\njhVIxkhcAQCbcZe91rAauPEBnjXQl32Y3qL7tdNJobjyk4YvQFiyqRvawuXI\r\nN2a+z8Aw7wdjBErqY4CKc0+q163b3cosYl/ITiaeu22o3exvn0Yh4dfRV3kb\r\nPK1lRwGUTfB/aEAVxnLnIK67bLMSaY7yYnrv0bIaWUqA9Va5zWBVTYMK6rR0\r\n6wEciv8edUpDu3ZkndqTMy7UEFXaldZ3CQAer0kHPPJLyYrwRo3R3AT9muqH\r\nBlZy6UN2JXOk7SFwOq+ofDPy7oiPei78mAyfs2vjfUuNLeOAaSiZHbzOvC0u\r\nv2iExI2qgcrsTWeC7mJtPIiJZQCamw59SLxZCY+9xRXoHo3CPKxRS+l+YJoV\r\npRFjQXXP5QTWhVRqGeTDy6pMbvkfbm4gq7aj2JUwPtJ0tnHYNBNGoYzQJgsP\r\n2PrqUdP/dJVXxxihY8poW2kHF3hd1RcPQpEerlo8dahfTwFNy8m36T2TLC1t\r\nr1rxQWgTQZ1/EdXdef1AWj7Ek8mwDYlCM9A=\r\n=57EL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"repository":{"url":"https://github.com/christopher-caldwell/dedupe-data-loader.git","type":"git"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","adze":"^1.9.1","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.5","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.9.5","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"peerDependencies":{"ioredis":">=4"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.8-alpha.1_1680730183973_0.2651549519966725","host":"s3://npm-registry-packages"}},"0.0.8-alpha.2":{"name":"@caldwell619/data-loader","version":"0.0.8-alpha.2","license":"MIT","_id":"@caldwell619/data-loader@0.0.8-alpha.2","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"c03db086ff914d397d59cd59780050946da1c45a","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.8-alpha.2.tgz","fileCount":78,"integrity":"sha512-jphQt6QQysaZzMq8nE2j1IBLbpk6XuzWwp/y5fMt4eHZpZNyRhfvkscQq8QklslH7pOkyNZNPHm0ZKcbxquy4A==","signatures":[{"sig":"MEQCIEi1HeRrfQ4olG4fGCh/khBer+vrVfRBDRgWMJUpNRk1AiBDi3C3al6g/sZqSnIBYhJYVZFRi/C4NcLkCUvgzXat6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLfXkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqs4hAAjonmqIMydSV2uE3yw6CfNjRkdA3mUSTzoGSbDbHFGKgdUpdr\r\n/OgadXwfJFMJFbZmtOIC7ao8rvrHw9JiqRRTZ7B4Qt/bAx/rjqQZBX79SHg2\r\n1gcBp6sEprMtByRX66z15U55ss/bpr1HvdTiEBJS0GuzIoIznWmY7ORDVinE\r\ni9xExPIBUeBbqSC6IsPK4YOcfQwmEVz/qsRqBKvo9Msa1YplMRorUaR3s0cz\r\nHdUiQCRMS3S7B+5Zfbyeck517NN0EYl2ZSpnzoCxHTDMl0WpltNpd5XdiVN8\r\ninhn05S/X04baW/BTpRpJ3wPRqGHeuH7eBHS9SB4UweF/TIcBuVJCHKB5Zsw\r\nfZ03TMTL4dZZcuaBFDm9ib/0fTKE6mcbnZi2Uun83hm/d3W/kJwR84V86XFK\r\nR+CD6zlAHUNYJcH2CNCrZcBTkv27O2JK8xXOltGWN8xFV5sbPMcu6AOHGeHz\r\nOGF2HqG9f7ofn+zu+b5/O77meQhX0OXneD0CsB6g6p1/JFEHJw2jajjwKr3p\r\n8C6WDI3Pf1K+w0pSV+u8TzcAhUOy9fV09JtACV7WzELgJdXNyO89BFI0DXhj\r\n4R74U4oEfN7BGYvfXLEAavGiSbNfbSsDOVq2tmkpM/mcLr3BkY4zAYfBQZO/\r\n0k3zRcrmHcYGn8SPyX4E2+q+ZgjhmbBGoQM=\r\n=EyNn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","format":"prettier --write src && prettier --write tests && prettier --write examples","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"repository":{"url":"https://github.com/christopher-caldwell/dedupe-data-loader.git","type":"git"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","adze":"^1.9.1","jest":"^27.4.4","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.5","ts-jest":"^27.1.1","ts-node":"^10.4.0","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.9.5","@types/jest":"^27.0.3","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"peerDependencies":{"ioredis":">=4"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.8-alpha.2_1680733668350_0.14305820907832834","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"@caldwell619/data-loader","version":"0.0.8","license":"MIT","_id":"@caldwell619/data-loader@0.0.8","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"dist":{"shasum":"9347bf45a597b3fb08f0d36f00965f3b466292b3","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.8.tgz","fileCount":19,"integrity":"sha512-GF4SxE0Jz+59s9S2w8P445BF0TjrIAeIPR5yt6KyrVuk2Nfe6yiQVCdEOazrn1XvQuPgv9wZfBfDSisusTDdtw==","signatures":[{"sig":"MEQCIEXO4FUDsx5ibJ+z67Gz+yMbdbv0Chg5f5NM/4Wg6w9HAiBZq00PWBQgSCNYJO+RHnWsNbX5MNwRG6Lq/uPA9r02NQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":74832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLf6xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIBA//TkmB/dVxhcTW77seC44EvT1FmRHBes+GtjmxqwxbIgteD/Pn\r\nGXGW7BJl/iZh9/2F6Gp5hzKCX8WZi9nJguuy9PyNoHviw+5OCdolpKm5hmwj\r\nn1Vzgaz6oD3pQb+ATIPMN+W5xJsSWtMTOk8jUnrRoiYUeGxaOkzVchYjoVEY\r\n97RfWYtBOerAYyNSE9B6twpcL7z54xSXzf8ht2VOiRTzVbbRoEoBYuatkF6b\r\nlNj5Ykr8InDkKAPLosAcx116mXcu0JC/RmNVB1go2hf6IuBqgjCvKRViNw8d\r\nTQWhg0ZL3zch9q/ZgMszgN3oNndHNXiPitlHOc/aM1CDExF7/H6Ib8fiFyGI\r\n+HaAbU1JrhN7cIqN6B4Aplvk2JKWwjAP7pxk54OiF0BeCn80Zcm8PLXaGO0r\r\ngsKdStGrY+9YmnKt6pBL3qhD0hS0AnWTe/dIN6AXeXYDEw6TZtDU8arJ/qR0\r\n4ZuSwBSTo6ARtjL8qyjZZP1n0OXXZGOTre3NK8+/GuGmSPbx2RUgtQIhXqSx\r\nHcrO8Ra70uehHo5/HnLgj43tm21XKkb49BChYlkhK/wSCMM+xrfKla+bWfFc\r\nFYt2RF3LT/jvBB28D7H95mCDnVPJNHzVJEVTLCzyKYTQqHh5l8unqA4nVKHO\r\nLWWMb60dsoMf0lrlkLe90RJN4R6B/wVVNtk=\r\n=Wx+9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","source":"src/index.ts","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","format":"prettier --write .","pretest":"tsc --noEmit","release":"standard-version","test:all":"jest","test:unit":"jest unit --detectOpenHandles","type-check":"tsc --noEmit","test:graphql":"jest integration/graphql --detectOpenHandles","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh","test:integration":"jest integration --detectOpenHandles"},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"repository":{"url":"https://github.com/christopher-caldwell/dedupe-data-loader.git","type":"git"},"description":"De-duping data loader for fetching relationships","directories":{},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","dependencies":{"node-cache":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"rc":"^1.2.8","adze":"^1.9.1","jest":"^29.5.0","eslint":"^8.4.1","graphql":"^16.1.0","ioredis":"^4.28.5","ts-jest":"^29.1.0","ts-node":"^10.9.1","prettier":"^2.5.1","tscpaths":"^0.0.9","typescript":"^4.9.5","@types/jest":"^29.5.0","@types/node":"^16.11.12","microbundle":"^0.13.3","@types/ioredis":"^4.28.3","standard-version":"^9.3.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.6.0","@typescript-eslint/eslint-plugin":"^5.6.0"},"peerDependencies":{"ioredis":">=4"},"_npmOperationalInternal":{"tmp":"tmp/data-loader_0.0.8_1680735920912_0.11886231088424015","host":"s3://npm-registry-packages"}},"0.0.9-alpha.0":{"name":"@caldwell619/data-loader","version":"0.0.9-alpha.0","description":"De-duping data loader for fetching relationships","scripts":{"lint":"eslint --ext .tsx,.ts,.js src","type-check":"tsc --noEmit","format":"prettier --write .","pretest":"tsc --noEmit","test:unit":"jest unit --detectOpenHandles","test:integration":"jest integration --detectOpenHandles","test:graphql":"jest integration/graphql --detectOpenHandles","test:all":"jest","build":"microbundle --target node --compress --tsconfig tsconfig.build.json","release":"standard-version","publish-release":"git push --follow-tags origin master && yarn publish","publish:version":"sh scripts/publish.sh"},"dependencies":{"node-cache":"^5.1.2"},"peerDependencies":{"ioredis":">=4"},"devDependencies":{"@types/ioredis":"^4.28.3","@types/jest":"^29.5.0","@types/node":"^16.11.12","@typescript-eslint/eslint-plugin":"^5.6.0","@typescript-eslint/parser":"^5.6.0","adze":"^1.9.1","eslint":"^8.4.1","eslint-plugin-prettier":"^4.0.0","graphql":"^16.1.0","ioredis":"^4.28.5","jest":"^29.5.0","microbundle":"^0.13.3","prettier":"^2.5.1","rc":"^1.2.8","standard-version":"^9.3.2","ts-jest":"^29.1.0","ts-node":"^10.9.1","tscpaths":"^0.0.9","typescript":"^4.9.5"},"repository":{"type":"git","url":"https://github.com/christopher-caldwell/dedupe-data-loader.git"},"main":"dist/index.js","source":"src/index.ts","license":"MIT","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Christopher Caldwell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"@caldwell619/data-loader@0.0.9-alpha.0","dist":{"shasum":"4c5e817e6e17a0002fca6d5d926e24822a319afd","integrity":"sha512-8hDKq2dx3ugGegN61pHoT1vk/71n7d2QVT4r+1dP8CzBz/nxzVc0SHpj4Ffk3zQXFHk9S3vuWgFccuUSrECHvA==","tarball":"https://registry.npmjs.org/@caldwell619/data-loader/-/data-loader-0.0.9-alpha.0.tgz","fileCount":19,"unpackedSize":75828,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5iO717hrdq4IuQjbjG6L+VNoMfM3/3YIzo+5RyJOALgIhANHCerbXeUu3FzU0t7c9X/FDmwNyPlDrTJoAf3yzEzAt"}]},"_npmUser":{"name":"caldwell619","email":"caldwell8814@gmail.com"},"directories":{},"maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-loader_0.0.9-alpha.0_1723905161683_0.6598595633286584"},"_hasShrinkwrap":false}},"time":{"created":"2021-12-15T01:47:59.539Z","modified":"2024-08-17T14:32:42.137Z","0.0.1":"2021-12-15T01:47:59.781Z","0.0.2":"2021-12-16T02:20:49.234Z","0.0.3":"2021-12-16T05:15:15.876Z","0.0.4":"2021-12-23T05:49:55.171Z","0.0.5":"2023-04-05T17:01:50.875Z","0.0.7":"2023-04-05T20:26:08.059Z","0.0.8-alpha.0":"2023-04-05T21:27:37.093Z","0.0.8-alpha.1":"2023-04-05T21:29:44.137Z","0.0.8-alpha.2":"2023-04-05T22:27:48.516Z","0.0.8":"2023-04-05T23:05:21.183Z","0.0.9-alpha.0":"2024-08-17T14:32:41.936Z"},"license":"MIT","repository":{"type":"git","url":"https://github.com/christopher-caldwell/dedupe-data-loader.git"},"description":"De-duping data loader for fetching relationships","maintainers":[{"name":"caldwell619","email":"caldwell8814@gmail.com"}],"readme":"# De-duping Data Loader\n\nMulti use data loader, with built in de-duped caching. This is heavily influenced by the original [data loader](https://github.com/graphql/dataloader), with the ability to introduce your own caching middleware.\n\n[![NPM](https://img.shields.io/npm/v/@caldwell619/data-loader.svg)](https://www.npmjs.com/package/@caldwell619/data-loader) [![NPM](https://img.shields.io/bundlephobia/min/@caldwell619/data-loader)](https://bundlephobia.com/package/@caldwell619/data-loader) [![](https://img.shields.io/github/last-commit/christopher-caldwell/dedupe-data-loader)]() [![](https://img.shields.io/npm/types/typescript)]()\n\nIf you're wonder what is a data loader, the TL;DR is that it efficiently fetches your data in batches rather than sending n number of requests. For a more detailed explanation, keep reading.\n\n## Why Another Data Loader?\n\nTo be short, because the one from GraphQL doesn't have the ability to inject your own caching strategy. If you wanted to use Redis with that loader, it would be more work than this. We're all interested in less work.\n\nSecondly, I personally wanted to see if I could. It's an insanely popular package, but I wanted my own done exactly the way I wanted. Also one that was natively written in TypeScript.\n\n## Installation\n\nFor the copy / paste.\n\n```shell\nyarn add @caldwell619/data-loader\n```\n\n## Usage\n\nThere is only one required argument to the constructor, and that is a way to get your data. It is one of 2 options, a [caching strategy](#caching-strategy) or a [fetcher](#fetcher).\n\n### Fetcher\n\nThe fetcher is the core of your usage with the data loader. It's your persistence layer. This can be anything, SQL, Dynamo, Mongo, JSON DB, whatever.\n\nYou are given an array of IDs and it's up to you to get the data relevant to those IDs. If you provide a `fetcher` in this manner, the data loader will use the default caching strategy.\n\n```ts\n// Using a simple fetcher, built in caching\nconst AuthorLoader = new DataLoader({\n  fetcher: async (ids) => {\n    // do something with IDs, return the result to be cached.\n  },\n})\n```\n\n### Typing Fetcher with Generics\n\n`DataLoader` accepts 2 generics, the type of the return, and the type of the keys.\n\n```ts\nconst AuthorLoader = new DataLoader<Author, Buffer>({\n  // `ids ` will be typed as `Buffer[]`\n  fetcher: async (ids) => {\n    // do something with IDs, return the result to be cached. will need to be returned as type `Author[]`\n  },\n})\n```\n\n### Caching Strategy\n\nThis library comes with a caching strategy using [node-cache](https://github.com/node-cache/node-cache). Each instance of the data loader will have a separate cache. Meaning if you create 2 loaders, they will each have their own cache.\n\nIf you have your own caching method, you can inject it into the data loader via the `cachingStrategy`. There is an example of this for [Redis](./tests/integration/redis/redisCachingStrategy.test.ts) and a [no-cache approach](./tests/integration/no-cache/noCache.test.ts) in the examples.\n\n```ts\n// Using a simple fetcher, built in caching\nconst AuthorLoader = new DataLoader({\n  cachingStrategy: async (ids) => {\n    // Your own solution, completely custom. Here you would define how your data is cached.\n    // This can be Redis, or even no caching. You just need to run your fetcher and be on with it.\n  },\n})\n```\n\n#### Built-in Strategies\n\nSome strategies are provided outside of the main bundle. The most common use case being Redis. Below is an example of how to use the built-in strategy with the loader.\n\n<details>\n  <summary>Redis</summary>\n\n```ts\nimport { redisCachingStrategy } from '@caldwell619/dist/caching-strategies/redis'\nimport RedisClient from 'ioredis'\n\nconst Redis = new RedisClient()\nconst getByIds = async (ids: Key[]): Promise<MyItem[]> => {\n  // get items from DB based on IDs array provided\n  return itemsFromDb\n}\n\nconst RedisEnabledDataLoader = new DataLoader({\n  cachingStrategy(keys) {\n    return redisCachingStrategy(keys, Redis, getByIds)\n  },\n})\n```\n\n</details>\n\n### Manipulating the Built In Cache\n\nThere are at least 2 ways to approach using the built in caching. You can instantiate the loader each request to ensure there is no stale data, or you can do it outside of the request and manipulate the cache when necessary\n\n<details>\n<summary>\nBusting the cache when an item is updated\n</summary>\n\n```ts\nconst AuthorLoader = new DataLoader<Author>({\n  fetcher: async (ids) => { ... }\n})\n\napp.get('/books', () => {\n  // Do books logic, see express example\n})\n\napp.patch('/book/:id', (req, res) => {\n  const id = req.params.id\n  // book gets updated\n  const newBook = await updateBook()\n  AuthorLoader.set(id, newBook)\n})\n\napp.delete('/book/:id', (req, res) => {\n  const id = req.params.id\n  // book gets deleted\n  AuthorLoader.delete(id)\n})\n```\n\n</details>\n<br/>\n\nThis is an additional layer of overhead, and it's up to your use case whether or not you choose to cache.\n\n### Options\n\n| Name              | Type                                                                                                                        | Description                                                                                                                                                                               | Required? |\n| ----------------- | --------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------: |\n| `fetcher`         | <code>\\<TData>(ids: (string \\| number)[]) => Promise<TData[]></code>                                                        | Function to fetch your data based on the array of IDs given. The result will be cached for you.                                                                                           | :warning: |\n| `cachingStrategy` | <code>\\<TData>(ids: (string \\| number)[]) => Promise<TData[]></code>                                                        | Function to override default caching behavior. With this, you will be responsible for caching and fetching your own data.                                                                 | :warning: |\n| `cacheOptions`    | [CacheOptions](https://github.com/node-cache/node-cache/blob/1e5c75e84f91d47728655f0976ee6246a7ed8664/index.d.ts#L149-L228) | The options given to [node-cache](https://github.com/node-cache/node-cache). Only used if **not** using your own `cachingStrategy`                                                        |    :x:    |\n| `delayInterval`   | `number`                                                                                                                    | The amount of time alloted between the last `load` call and the execution of the `fetcher`. Defaults to **10ms**. This means that 10ms after the last call to load, the fetcher will run. |    :x:    |\n\n### Caveats :warning:\n\nYou **cannot** provide nothing to the constructor. If you omit both the `fetcher` and the `cachingStrategy`, an error will be thrown.\n\nIf you provide a `fetcher`, you should not be providing a `cachingStrategy` and vice versa. They are an either / or, rather than both.\n\nIf this is ignored and both are provided, the `cachingStrategy` will take priority.\n\n```ts\nconst AuthorLoader = new DataLoader({\n  cachingStrategy: async (ids) => {\n    ...\n  },\n  fetcher: ❌ <-- NO!\n})\n```\n\n```ts\nconst AuthorLoader = new DataLoader({\n  fetcher: async (ids) => {\n    ...\n  },\n  cachingStrategy: ❌ <-- NO!\n})\n```\n\n### Default Caching Strategy\n\nIf a `cachingStrategy` is not provided, the data loader will use the default one.\nIt's a de-duped way of caching the IDs, singularly rather than at the meta request level.\n\nFor example, if you have 5 IDs, 1,2,3,4,5 and request them, they will all be cached as individual keys, rather than the totality of the cumulative list.\n\nThis means that if you add an ID and request 1,2,3,4,5,6, your fetcher will only be given `[6]` to lighten the load on your data store. This is done to reduce the potential strain on the fetcher, as the request would have been passed 6 IDs rather than 1.\n\nIf this is not for you, you can easily roll your own with the `cachingStrategy` argument.\n\n## Cons of Usage\n\nFor the first version, a drawback is that your items need to have IDs, in the form of `id`. Your items need to have the property `id` on them for caching.\n\nThis is annoying, and will be worked on in the future.\n\n## Loading Data\n\nThe core functionality of a data loader is to batch many calls into one efficient one. An example of this is when there is an ID stored on an entity, and you would then have to fetch this ID, via SQL or whatever.\n\nWithout any intervention, you have an [N+1 problem](https://youtu.be/uCbFMZYQbxE). This is primarily found in GraphQL, but can be applicable in REST as well.\n\nSay for example, you fetch a list of books, with an `authorId` on them. You can iterate through the books, fetch the author by ID and call it a day. This would leave you with as many queries as there are books, as you would need to know the author of each book.\n\nThis is where the loader comes in. Instead of waiting for each query, you `.load()` the ID into the loader. See [this one](tests/unit/batching/batching.test.ts) for a non-GraphQL example, and this section on [usage with GraphQL](#usage-with-graphql)\n\n<details>\n  <summary>Express Example</summary>\n\n```ts\ninterface Author {\n  id: number\n  name: string\n}\ninterface Book {\n  id: number\n  name: string\n  authorId: number\n  author?: Author\n}\n\nconst AuthorLoader = new DataLoader<Author>({\n  fetcher: async (ids) => { ... },\n})\n\napp.get('/books', async (req, res) => {\n  const books: Book[] = await getBooks()\n  const authorPromises: Promise<Author>[] = []\n  books.forEach(book => {\n    // Do not await this load call.\n    const authorPromise = AuthorLoader.load(book.authorId)\n    /** Add the promise resolving to an author into the array of author promises.\n     * This does not mean that each `load` call will result in a DB call. It just means you can resolve the promise\n     * when you are ready.\n     * */\n    authorPromises.push(authorPromise)\n  })\n\n  const authors = await Promise.all(authorPromises)\n\n  // You could also do this based on the index on book, as it _should_ be the same as the author\n  const booksWithAuthors = books.map(book => {\n    const thisBooksAuthor = authors.find((author) => author.id === book.authorId)\n    return {\n      ...book,\n      // Keep in mind this can be undefined in this example.\n      author: thisBooksAuthor\n    }\n  })\n\n  res.send(booksWithAuthors)\n})\n\n```\n\n</details>\n\n## Using the Caching Strategy as a Standalone\n\nThe primary use case for a data loader is with GraphQL. However the loader, and the caching strategy can be used independently of GraphQL.\n\nFor a detailed example, look at the [Express example](./examples/express/README.md).\n\n```ts\nconst AuthorDataLoader = new DataLoader({\n  fetcher: async (ids) => {\n    // Some sort of persistence logic, a DB call, etc\n    return getAuthorsByIds(ids)\n  },\n})\n\nconst result = await AuthorDataLoader.defaultCachingStrategy(['1', '2', '3'], AuthorDataLoader.fetcher!)\n\nexpect(result).toHaveLength(3)\n```\n\nBy using this, you get all the benefits of simplified, de-duped caching. This can be useful in a REST API where you're fetching a list of items that have entities on them via an ID. Checkout an [example of this](./examples/express/src/routes/book.ts). It's not a \"super clean, slick\" solution, but it really helps the issue of over fetching.\n\nIn summary: If your list of 20 items has the same relationship ID 6 times, this tool does the work for you to not make 5 redundant requests, but rather 1 necessary request for the 6th ID so you can give all of them back to the entity without making unnecessary persistence calls.\n\n## Usage with GraphQL\n\nThe main purpose of this loader is to fetch relationships during a GraphQL query.\n\nUsing the books again, if someone requests that book's author in the query, you don't want to have to run n ( # of books ) number requests to your persistence layer asking for n authors.\n\n### Without the Loader\n\nWithout a loader, you would have to make a query for each ID. This leads to the n+1 issue previously mentioned, as you need to make as many queries as you have items.\n\n<details>\n<summary>\nA query to get the books\n</summary>\n\n```graphql\n# The query to get books\n{\n  query\n  Books {\n    books {\n      id\n      name\n      author {\n        id\n        name\n      }\n    }\n  }\n}\n```\n\n</details>\n<details>\n<summary>\nThe books resolver without a loader\n</summary>\n\nUsing pseudo syntax for the [pg](https://node-postgres.com/) library here.\n\n```ts\n// A Book resolver without a data loader\n\nconst getAuthor = async (authorId: number): Promise<Author> => {\n  const { rows } = await dq.query<Author>('select * from author where id = $1', [authorId])\n\n  return rows[0]\n}\n\nconst books = () => {\n  return [\n    {\n      id: 1,\n      name: 'Goblet of Fire',\n      author: () => getAuthor(1), // <-- This will run once for every book\n    },\n    {\n      id: 1,\n      name: 'Order of the Phoenix',\n      author: () => getAuthor(1), // <-- This will run once for every book\n    },\n  ]\n}\n```\n\n</details>\n\n### Using the Loader\n\nIntroducing the loader. Now instead of running the query once per book, you write a `fetcher` that will use all of the IDs to make one query, returning all you need.\n\n<details>\n<summary>\nThe above example, subbing for a data loader\n</summary>\n\n```ts\n// A Book resolver without a data loader\n\nconst getAuthors = async (authorIds: number[]): Promise<Author[]> => {\n  const { rows } = await dq.query<Author>(`select * from author where 'id' in ( unnest($1) )`, [authorIds])\n  return rows\n}\n\n/** This would normally be passed down via context. For an example, see the GraphQL- tests */\nconst AuthorLoader = new DataLoader({\n  fetcher: getAuthors,\n})\n\nconst books = () => {\n  return [\n    {\n      id: 1,\n      name: 'Goblet of Fire',\n      /** This function will still run once per book, but your DB query will only run once, after all the IDs have been collected */\n      author: () => AuthorLoader.load(1),\n    },\n    {\n      id: 1,\n      name: 'Order of the Phoenix',\n      author: () => AuthorLoader.load(1),\n    },\n  ]\n}\n```\n\n</details>\n<br/>\n\nUsing a loader for a single item works the same way as many items.\n","readmeFilename":"README.md"}