{"_id":"loops","_rev":"48-9986e72594cfca6337bbc4ac4f80cce2","name":"loops","dist-tags":{"latest":"6.3.0"},"versions":{"1.0.9":{"name":"loops","version":"1.0.9","_id":"loops@1.0.9","maintainers":[{"name":"jimbobmcgee","email":"npmjs.org@jimbobmcgee.com"}],"dist":{"shasum":"8bdde6a1188ea66ecd14f3827b1d4094af019890","tarball":"https://registry.npmjs.org/loops/-/loops-1.0.9.tgz","integrity":"sha512-6tlInBHzsidTTH8C80B92ZnxxqbFNAsNsXhuPaOMkQTZG4+Xy/TOWRXIP8R3LVmJDtvaD2/7QnjaS46NIRrNPQ==","signatures":[{"sig":"MEYCIQDsGrqfOueZGXT+sqkPSKeFZpIZ0PH14FHosrlUoXbOeAIhAMRtFk2njS0134rCpiz1o14B3RO830Z+UMxNSiy89l6w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","notes":"There were no uncommitted modifications in this build","engines":{"node":"*"},"_npmUser":{"name":"jimbobmcgee","email":"npmjs.org@jimbobmcgee.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"http://xp-dev.com/svn/jimbobmcgee-nodejs/loops/trunk","type":"svn","revision":"9","commit_date":"2011-11-04T20:19:45"},"_npmVersion":"1.0.103","description":"Basic, non-blocking loop functions for NodeJS","directories":{},"_nodeVersion":"v0.5.10","dependencies":{},"_defaultsLoaded":true,"devDependencies":{},"_engineSupported":true},"0.1.0":{"name":"loops","version":"0.1.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.1.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"84b625761d6f53fa4d121e22abbe184d8e35cb51","tarball":"https://registry.npmjs.org/loops/-/loops-0.1.0.tgz","fileCount":7,"integrity":"sha512-Ps04PL5DLnbHuB+IJ8hu5dplA/LKlVyB5ibIO0vn0oD0kpNzOBhUPvu+QBM7ZPGooAy1PCpyJKtASohs6SZ7yA==","signatures":[{"sig":"MEYCIQC4r6FrwZJHmnLAyJtsJlrYIYeHK+zkeqACLp2lyzKGBAIhAJhY7fFxQVoPZxeWiz9OwsFywh67mhxsB5L2mALrWGHX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28473},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":"./dist/index.js","gitHead":"8a3db17f2ffef5a75150ab0676023e6a5505405c","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.1.0_1698652991669_0.9890510152377552","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"loops","version":"0.1.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.1.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"b864bc5ff4381f9b0cfc9f305fc7e56c8c435ded","tarball":"https://registry.npmjs.org/loops/-/loops-0.1.1.tgz","fileCount":7,"integrity":"sha512-JxJJn2kxdCxR6enyU/8QH3toy5E+aZBzPnQupgvHuHABjd2jGh2HyT8ekv7PsB5zPKWhQnAVkAgvKHlRZWMMNw==","signatures":[{"sig":"MEYCIQD9UADIwlWgnt71g2eldPtRfHJdrRKv1vlgoQNQ0MikHgIhAIWFOBDu+VO+YlB+yMHtmOm25Cy9kgsf46BGk8XR4xuU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30821},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":"./dist/index.js","gitHead":"18d4161258ec55b2453e3921159e978b7c935c6e","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.1.1_1698824796487_0.9219454662477902","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"loops","version":"0.1.2","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.1.2","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"45ff3a7475c4971d07776a31f664f0dc4107ea3c","tarball":"https://registry.npmjs.org/loops/-/loops-0.1.2.tgz","fileCount":7,"integrity":"sha512-/crwxWl8gihXWlYTYOhCUWe5giAmZtjN8raKn9D3QxRVqT6gPE4Kwbw+3/nMgzzogCJ8FD6PbyeGJ3Bg7cyD2Q==","signatures":[{"sig":"MEUCIHFzzV3pR3uQ+b4cT906bwYsjScUgxWszh154pdvfOWQAiEAy6aXVKyQCLpMQsX5kYSYhbl30SViNB94NY1lP3MoaBA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33150},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":"./dist/index.js","gitHead":"566260e86d09242fc88e31e866ac765e9de38787","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.1.2_1701887780379_0.7348558918229497","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"loops","version":"0.1.3","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.1.3","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"07083ab5548024241c06adb35a53204cf7447630","tarball":"https://registry.npmjs.org/loops/-/loops-0.1.3.tgz","fileCount":7,"integrity":"sha512-IJh1Se/wExb1bwkZ4oYEffnGP7l/PV7K/dC5htX6/Vs6Q8XO5XsqNTedbiPVvJjjkS374mtw7cjYTcqWeC+31g==","signatures":[{"sig":"MEQCIEW8jzPC3KmgzWRIRB3e4TvAnKQILgyG3P6FhfMRdSYfAiBHrZn1fKDwfZ5GTWRmI7zfBcZUPjkgLHNvQXaV2ag8zA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34991},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":"./dist/index.js","gitHead":"5a3cdc2ff93e4adf1ccabfa4be0c675a4b45079b","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.1.3_1702024836729_0.32508049516291737","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"loops","version":"0.1.4","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.1.4","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"b5cd1139de7bb775598044843e89796ab452f556","tarball":"https://registry.npmjs.org/loops/-/loops-0.1.4.tgz","fileCount":7,"integrity":"sha512-LrIInL/oFum6FGtF2eg6Iivo3Y9IZDX5ijLkLRvoWwHYA/zr29UypjNdhJwbFj/kcr+qcpp2iG1biq1lvT0OjQ==","signatures":[{"sig":"MEUCIQDll4yyKiybh15ykHdEzk8FESUvH3qc4rsQ7Dfek+G03wIgC1QsT7/i1cmXjL4cL5BkNsPWsxOb/is9+lAH1Vyfi2M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40705},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":"./dist/index.js","gitHead":"7bb1e155620c486c6ae2fe7a233cc050515d3f7b","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.1.4_1706190005890_0.3917796991892284","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"loops","version":"0.1.5","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.1.5","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"4d173cc3af37988a0581793bd36475bb963189a3","tarball":"https://registry.npmjs.org/loops/-/loops-0.1.5.tgz","fileCount":7,"integrity":"sha512-hePun4m8g5hmoDpNhWuoNltBKqijjTt/aoHXig+wvBH3o4ccBL1fVt78HDmRGiCP/1sb3kr446BPM+oYRHsmPA==","signatures":[{"sig":"MEYCIQCKmZGX2hChAvESGu18R5bu14xgkQXp40spepE+GBvIrgIhAMfgUrppcKUufjYe0VWP7U++bMedE3K9FIeN1N5dXzSv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41236},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":"./dist/index.js","gitHead":"cc4e1bcbf03ca39d70f7790a3880a8127f91f838","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.1.5_1706273058425_0.9178561210954927","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"loops","version":"0.2.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.2.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"585012eef398ea0060862dea128bdc9009525a71","tarball":"https://registry.npmjs.org/loops/-/loops-0.2.0.tgz","fileCount":7,"integrity":"sha512-yIvZx4Z44wW5nXEySR7rEjErFsRIl9OG8AR8e+LB6GYWgaZEIiJ2d10SEhp7wYT4Bp8iHC/RGc4dOY7p8kVgdw==","signatures":[{"sig":"MEUCIEzl4O1L6iUJ4Nm/nzXXNdJD4dCCxWedoGTB8VV2OtgfAiEA2JP+/SvQh3TKya/NPMVRa+NOKMtsW/07hlOs8nGiXeI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41397},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"6a9842c8213176923a2e07a038f46cd1d185a88d","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.2.0_1706777456385_0.7067737389871629","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"loops","version":"0.2.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.2.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"e5ecaf1f1e4842e491ae5150d1825ec74a4446bb","tarball":"https://registry.npmjs.org/loops/-/loops-0.2.1.tgz","fileCount":7,"integrity":"sha512-rqBfI9vvmtP4OJrUS+7CiZg2NW+nr7oAhUof1/czuzD/ShHPM8om7fdAYf90JFTAEumNrIVL+0cMl7WlTxcCtQ==","signatures":[{"sig":"MEYCIQCwzVPfVwR7DfjAtLtJj/yxc0B/CepkByQtEZHhG26uJgIhANGDq2qqPZIhaeAqq+4J1JPmlXqdlDrmk73weZBGWOfw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41526},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.cts","import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"97adf978881d8aba19ffb7dfa47e4264bef9c998","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.2.1_1707204396786_0.6974967583106537","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"loops","version":"0.3.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.3.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"1fa98ac3d0c3c683fa30bd91009b3ad3c7869896","tarball":"https://registry.npmjs.org/loops/-/loops-0.3.0.tgz","fileCount":7,"integrity":"sha512-XBB5dKQHFn+liHRVNNLHTcwYRIyUGccfy3ZM0l7NclRDHf3J0hbRchIPus8q2tqFE5SQYnil959kPtQOLUgRcg==","signatures":[{"sig":"MEUCIQDn9541Mb/nU7hXtalnf8ZTCm1TwnxBHzZb/K99GbXbAwIgKCUb96Rva7qXkGD/r/MvAzx9N7QyJW9d5SrZdHDckdY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41561},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.cts","import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"6c4c163ad3958e25c30267e0501987af03ddefe6","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.3.0_1708591640738_0.3502608638119902","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"loops","version":"0.4.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.4.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"af00222056ebbc366b31327d520003cb1236cead","tarball":"https://registry.npmjs.org/loops/-/loops-0.4.0.tgz","fileCount":7,"integrity":"sha512-mymmNU2XbZz7cRFrRYEBqvyN3+0+CX4SysGbMHwYEs8yenj70OHFggUUHKsgSU+90r2zagdDlRF/ZxxPCZsi8Q==","signatures":[{"sig":"MEUCIAnOz1uZqvpgtoA8pkcsxorUwk5x0bMWk+dun2G4wjNQAiEAo1aRFUjwe/+jEDOFwzMusNqN65d/w+GZ2ZxkQ+s218E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42168},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.cts","import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"1bf1e05594af5ccbcad40d7fb5983f5e3a6f32ec","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.4.0_1711102013574_0.2786228139757003","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"loops","version":"0.4.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@0.4.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"ea4364176d61439efe51265f035b0f7385c70a0c","tarball":"https://registry.npmjs.org/loops/-/loops-0.4.1.tgz","fileCount":7,"integrity":"sha512-ppv4YT+YpZvoYupRSQ+TVSQf8N1vmkiFtS7JJtqkQZGgu1vhU4Ls9jXQaIZQleph4YcCMBwHfHnoQopCZdzLQw==","signatures":[{"sig":"MEUCIQDgIogm4TGuocokWcvA7SK1KNLpeXWclAN92vDxyInxlQIgLIfGNUTH9sBufjR+KRcwgL2NhQhftmw+qZMDxMygJFM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42313},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"598b20767ed7ba3202698bb532af13e96cf47d07","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"deprecated":"Deprecating in favor of v1.0.0","repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_0.4.1_1711641787112_0.08517568729863156","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"loops","version":"1.0.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@1.0.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"78889c8dea8986caf694a5f5306122f4b0852a5d","tarball":"https://registry.npmjs.org/loops/-/loops-1.0.0.tgz","fileCount":7,"integrity":"sha512-d29ZkiWucQWCSj+ZogLVZDmsFYxbqxhHBbVg/6u/CDnUABWakp/g4Zplki/KcZQJSMYFNkS/deTRcuI/YO8AUw==","signatures":[{"sig":"MEQCIA454QrnxrZCJfy1z55Y8H1HkuZ+aWaMSM3Oy7Hf9TwWAiAZrM8dukMwajOizDrGReZnnbzGiSWqHob5HgTHSBHS1g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42313},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"56728a5bd10442d749b5b5f5a853f0cb0e8192ab","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_1.0.0_1711709476305_0.4005678178322145","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"loops","version":"1.0.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@1.0.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"bb652a85afc60b7fb90ba788c9cb04c13d50b5c2","tarball":"https://registry.npmjs.org/loops/-/loops-1.0.1.tgz","fileCount":7,"integrity":"sha512-Nd8vRvYj+BFVLHSQmODsLQ+GFHsS/rcFlwAWdmwtuANMd1aqBpiCFq1snlryXWlgtPilLsjZyz1THaU4b2vtwg==","signatures":[{"sig":"MEUCIGYIv03w7+dSJ6hfpM8pmhs97pt4G4IOhR/y+GwOvcngAiEAhHVMHQlDFTTHFOvtb0QGz0wKqz6FfhuWUvlZum5VdXA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44265},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"729818e7fc0e3cb6bedeaedefc138847103a79df","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_1.0.1_1711955405702_0.9729010419285964","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"loops","version":"2.0.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@2.0.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"1bcaa7b1a4f74d2e52d7ec84fee1a9099725eb21","tarball":"https://registry.npmjs.org/loops/-/loops-2.0.0.tgz","fileCount":7,"integrity":"sha512-9kgk4FgGZ8lDlX65AppVJH/Z63mWTjcBCmq8Dw064Q9EIPi6PaNY8XmBfKKBKO+DpcQB4Hnxz4w8g67XSUPUnA==","signatures":[{"sig":"MEUCIDvEOE7ZHvauji5l/MPKuWhmRWe/GGD2No4rggNLY4QVAiEAjUsuP5FMT+N5n4grIKn7lzVT5NeNiZTR/Jjn4LnxQAQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":45781},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"dff0d5e2d2e3386ae2fe6fb734ab3097ede5258f","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_2.0.0_1713526163058_0.5698184020500168","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"loops","version":"2.1.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@2.1.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"06ece4977e60a4d2b196829d908a63f04e36d3c3","tarball":"https://registry.npmjs.org/loops/-/loops-2.1.0.tgz","fileCount":7,"integrity":"sha512-Tet61GhpZGYKu52R2eVWmV7bqKlUcB15XM0OTv7hfKrUMH+v/mKxn35PXdc20uXrigoCeh/A1WBZmNXetJ9i5Q==","signatures":[{"sig":"MEQCIFKd2P0CKZzdsnSXE09PIo3ZzueHeK7AXU6hiwLNr7YwAiAQPwUU6TmzsJaNcGN9m+6DuFxPqUsGxdb+lAxo/qt6gQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":48592},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"b5ba99cf005fcb4d60bfc8349eab4195b781f8a8","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_2.1.0_1718789577361_0.34738292906111545","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"loops","version":"2.1.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@2.1.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"3abb8d83b39db1d274d1585871caaa9efcaf115b","tarball":"https://registry.npmjs.org/loops/-/loops-2.1.1.tgz","fileCount":7,"integrity":"sha512-+cFs6He1nPGsK5f5/lJbxujEFWcmK4Bt78F4cYem3TaMMBcD906a/WU0rUBb1zp813T5z++E0USr1wKzuTVm7A==","signatures":[{"sig":"MEUCIQDBJLJanDRdG/9DSi7725ijLhTWMo2esl/QaxBG2nt4vwIgCk0ZZOmxfLmFk28TAGQFi6BRQgJHcxnOsnai88fjpy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50777},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"d45bdcadb4361c8a5ca74a486b6edaaa277063e1","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_2.1.1_1718879568534_0.6658470474419178","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"loops","version":"2.2.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@2.2.0","homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"c3e3aa9acd5c5ea454f8a7cff5622f364973857d","tarball":"https://registry.npmjs.org/loops/-/loops-2.2.0.tgz","fileCount":7,"integrity":"sha512-5sNBW/levY7IkQUO828bFAUES2Av3RiZgxAAcOVM9o5GxG8sEQ7RpthwPwFo1xp68WPWtUK+8RlWlEnPtVci0Q==","signatures":[{"sig":"MEQCIBiitZY7ZGugOcVSFoTuUxc0267ERgSKUh6cQkOAbT8iAiBs0LknKrrAzu49JJiok+HI7VpK9Yx13dhqWSvrufly1g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52323},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"9fd06a0a3c1ba75b2c4e69f1bce073e66ad49366","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"deprecated":"Version contains an issue with transactional email parameters.","repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_2.2.0_1719910979350_0.2761435361151696","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"loops","version":"3.0.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@3.0.0","homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"eb04c681ca4a352f1275ecc2372510e067cca947","tarball":"https://registry.npmjs.org/loops/-/loops-3.0.0.tgz","fileCount":7,"integrity":"sha512-LVXHkxHqhHujZlgM0IADitGyEo3lT4e8DG/ltAU58Z4Ik0EMoj0wz+vzrtiH7Jv9tGshMQPnpBIDhzcgw5srbg==","signatures":[{"sig":"MEQCICunoxyZsHsLtSzmRG9m6zIM3+La+3D2wSXqn8dW6U2zAiBwtVwAY3BEVWJzSGKWX17Svr0IEm+3rJoHWJuuCHaCqA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52966},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"88328733e533fda382ca57b2b3ba8e7e857c4504","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_3.0.0_1719924636740_0.16002946141237584","host":"s3://npm-registry-packages"}},"3.1.0":{"name":"loops","version":"3.1.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@3.1.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"e17a56ba93281d3ade29ba7d11120df14a86a6ba","tarball":"https://registry.npmjs.org/loops/-/loops-3.1.0.tgz","fileCount":7,"integrity":"sha512-B4OdwRm3nmThAsnIIVpcnfwF1Wc11rVlJIEXq+FoHf7Jm5m7OSYc/llwq+jFg8gkGjwuWrlqpS9mTcyCTmI3OQ==","signatures":[{"sig":"MEYCIQDlLPm9Co9icPHjpaDvipsIXK7zmPveRU6fdfcrHCJNxwIhAKTIHgRT6PbYHNzKMqkYyeYGwLRvtbg22y8NGBtJ1CoC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53727},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"02aab915ab475c5d3ee472d5b6ac40d13a5a25ba","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_3.1.0_1723458455537_0.43049610583871667","host":"s3://npm-registry-packages"}},"3.1.1":{"name":"loops","version":"3.1.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@3.1.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"ed0ab5b5e4284108920af870a8ebb84d52201596","tarball":"https://registry.npmjs.org/loops/-/loops-3.1.1.tgz","fileCount":7,"integrity":"sha512-CjDBe6+Qshi43+tptr8+J+f+PJdCcoUZ7VvztQEkEXCs5DgHorgFm0MQCTUfcQ2rkMVkWcqFz7kOn2eniFLCLw==","signatures":[{"sig":"MEUCIGm9qfBmQkIXi+0YmjzBXv/MZ3GDEpQ6FynvzvVCbC6XAiEA0JT8mCKnE9ooYTq9PLRbL2lhIYBwAHgUbesenmhgTxA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54519},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"0e9c0384c3afb8b081f3a12b1c54f4967e409760","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_3.1.1_1723803391637_0.2781386424922836","host":"s3://npm-registry-packages"}},"3.2.0":{"name":"loops","version":"3.2.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@3.2.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"d0fda82949d4f75b10a32c967ff61dcfe1adaf5f","tarball":"https://registry.npmjs.org/loops/-/loops-3.2.0.tgz","fileCount":7,"integrity":"sha512-A/azP4soJLCUdZeb6s8kmaQwEjUTNVsk0DnHRUiPzbYiNtYZt0IP0MA+6GmrlG96Hix0jLc5qTZRDSN6B2rjAQ==","signatures":[{"sig":"MEUCIQCDSZRXKc2qpxnqodrfnX/Ew6DfprzXAKNyRuIw1WJUHwIgH9MaT4NIHxsH8+uwirdcc2upBwICTwBPHOyFzgU2jDY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55017},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"9e3eced0094cace0b5a52e2b7fab31e7f50ae6da","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_3.2.0_1724416384324_0.3525901839906467","host":"s3://npm-registry-packages"}},"3.3.0":{"name":"loops","version":"3.3.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@3.3.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"485d8767b3d0d1dd096de7f676f2e1311cae1c84","tarball":"https://registry.npmjs.org/loops/-/loops-3.3.0.tgz","fileCount":7,"integrity":"sha512-jAVPzzz0+OH6X+lml1TTY5EkZjYGN0CiC5O8Ibx3okkepKAokXTwqpwcEZt0Np6a5EAQ/raeM59LROIYmeKpXg==","signatures":[{"sig":"MEYCIQDtQyIajWzC5MLYTrGrDqUvHuLKFUGxtwDjMQ8Y6d1TvQIhAJA+iPsJ4x+YpgQ7bLEjPNBXJgAMEMGuig4la9EN8wE/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56824},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"73f213b9dfaaf2a5a05a0532967c36dfa633cf64","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"9.8.1","description":"## Introduction","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_3.3.0_1725869830154_0.6514968967881625","host":"s3://npm-registry-packages"}},"3.4.0":{"name":"loops","version":"3.4.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@3.4.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"4fa529cf3c459caf3c6ce194a3b781b83a965805","tarball":"https://registry.npmjs.org/loops/-/loops-3.4.0.tgz","fileCount":10,"integrity":"sha512-5iseiVxG43tdNJPHdD6DdCZBnanIA+WWbu0/+q6e+smnFZaT57Gsw1quFtgFXqyRqW0GZzLRGlVaSiEik8QLJw==","signatures":[{"sig":"MEUCIQDD8JusrYedjInaJKFHm4F1e7SR/FAHJLvPic++UkpeWAIgfl2s9TFTCe33IgBgZpNYpk89x9ywp5sNSIxoQ6ZVBWo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":68684},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"8401152263b545c84a863da0fe277a842c5d8919","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"8.19.2","description":"## Introduction","directories":{},"_nodeVersion":"18.12.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_3.4.0_1730199720260_0.8606891392715619","host":"s3://npm-registry-packages"}},"3.4.1":{"name":"loops","version":"3.4.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@3.4.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"05027b5242948d45b4ffd2a4c875b30cbbe29c88","tarball":"https://registry.npmjs.org/loops/-/loops-3.4.1.tgz","fileCount":10,"integrity":"sha512-7PEdG+Tf9yYL8lOOg4OvnVP38UzKsBGBu+SQH24QHAyVSyWWrQtzZ2HWUCLgPXB7adRkVbSNdANjsRxkjLOsFQ==","signatures":[{"sig":"MEUCIFeqDkdgEP/LeSAX3Stbri/MrBhTAsHTClC/fm8gDrDaAiEA2bZ2lKD7Y8v2LygoN/jcDGURX74upDCB2QXFl25UuDo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":69031},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"1a90154f9086b5bf18b0a7f6e54b2cdf9c84d53c","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"8.19.2","description":"## Introduction","directories":{},"_nodeVersion":"18.12.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_3.4.1_1734517317877_0.39038169257793487","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"loops","version":"4.0.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@4.0.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"e87a4110b033b2a08ef9ee1f630ac9b7a723bc4f","tarball":"https://registry.npmjs.org/loops/-/loops-4.0.0.tgz","fileCount":10,"integrity":"sha512-fLcdqtkAohpOGaYYnzdxs2eswG5wvfFMLn62csz/l8WOu3WznbvVC2Cvdx8kVVU38GQ+RxPXAt43uqY0hWvHSA==","signatures":[{"sig":"MEUCIFXTYGEbpS9nqBDrrj3YJXiBPOzEN5GrKIbmCsjoyL7DAiEA4H5rbZflnqsXVM+0rxmRWaEuyAspM6Dra3F4h6vHdbw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76820},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"9c8e2be92cf87a3ce53dbd08f3ed0fe0b288890e","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"8.19.2","description":"## Introduction","directories":{},"_nodeVersion":"18.12.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_4.0.0_1737112580451_0.7749942721846013","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"loops","version":"4.1.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@4.1.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"959312394f9b4df13e80e94533573fbd5ce0c721","tarball":"https://registry.npmjs.org/loops/-/loops-4.1.0.tgz","fileCount":10,"integrity":"sha512-KUiRuRZjqRgq17dQNKODkGQ26NWr8aP6MPMoBzzd0xXUJci8HWbT31Y2GETiVE6cl+I7oXOHStA+dE8+p6oyLA==","signatures":[{"sig":"MEUCIBMREHm8v9MHSCzx5MGDqw17KJ+iWQjziMWCTGw82GoyAiEAriB66w0oTewZI/l3/k2gERAjxcQlF1uU+3X7SoN6EFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84176},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"901229407eae937e4ea85c35c99c78856aeae94a","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"8.19.2","description":"## Introduction","directories":{},"_nodeVersion":"18.12.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/loops_4.1.0_1741776537289_0.774324959431594","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"loops","version":"5.0.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@5.0.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"04a17b75180f97a583f0702003d32add395f5fba","tarball":"https://registry.npmjs.org/loops/-/loops-5.0.0.tgz","fileCount":10,"integrity":"sha512-5SsoKOYwsSbxmfVfKPkuHDwu4yc1Olal36DwlECjq9X5LjJ5+B2iJ7k2YAyvBvCm3rb7uQqo0aeD+5bCXnRicQ==","signatures":[{"sig":"MEUCIQDH65ichA/Qfd7qLuIGSPrjpQYTeaq0Y8RXBrUx0aRJfgIgTHuATa8HWZmuts6Cccxn0cjuRudSxAzrmI8ex3gvQ04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86902},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"c5fa3f4d0eaf877065a19a33de01719ce1666cb0","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"10.8.2","description":"[![](https://img.shields.io/npm/dt/loops?style=social&label=Downloads)](https://www.npmjs.com/package/loops)","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","ts-jest":"^29.1.2","typescript":"^5.2.2","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/loops_5.0.0_1745914569749_0.3697836080907444","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"loops","version":"5.0.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@5.0.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"ebad3354166c3f34c7ee1c500a81a3b149ed2074","tarball":"https://registry.npmjs.org/loops/-/loops-5.0.1.tgz","fileCount":10,"integrity":"sha512-xM1c9mnlr8Hr4cHW944TQoK6ApynjinUWOgYZd9/B0/3lwTThq24BQ7+XLjgbFAP5kJzqDTRDQi3t+Diy51Udw==","signatures":[{"sig":"MEUCIQCCIKqFPPR6/jN+XpJVJMtrCja/vytx8nHPK3dhhu3IrgIgXgFx7bxajEYxsHJcccvJWXgkQwLodG9/ZevdGf3XWp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89675},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"c7a71e85befb3e6535a3444041b2e1f570bd9550","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"10.8.2","description":"[![](https://img.shields.io/npm/dt/loops?style=social&label=Downloads)](https://www.npmjs.com/package/loops)","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","ts-jest":"^29.1.2","typescript":"^5.2.2","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/loops_5.0.1_1747131762416_0.9722193587152175","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"loops","version":"6.0.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@6.0.0","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"8eeb84c7d550a5b69aa3722afd2bc6c62c8eeba4","tarball":"https://registry.npmjs.org/loops/-/loops-6.0.0.tgz","fileCount":10,"integrity":"sha512-ekhzowXogU+8O/uKWydmx3f7wlKLkYBONcGreTHEienZFyEbKphjL0RqcJ1yNIQqwXoDPhocKWsVlyqfQfB7/A==","signatures":[{"sig":"MEYCIQD4RokuPMIMKG/n3j8f/JtpB7eoBMcBv7q8va40WWtPgAIhAJpVrhpLwN5asX6j6cTLAiqo2LTtQpuoA5HskYAsaMxp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92928},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"c9782df059edac9a4f55f400343f43d192b5b85b","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"11.4.1","description":"This is the official JavaScript SDK for [Loops](https://loops.so), with full TypeScript support.","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","ts-jest":"^29.1.2","typescript":"^5.2.2","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/loops_6.0.0_1755859968432_0.41884543371730265","host":"s3://npm-registry-packages-npm-production"}},"6.0.1":{"name":"loops","version":"6.0.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@6.0.1","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"2b28feb71a5da92a9efd0cddfb00d6ae9289381e","tarball":"https://registry.npmjs.org/loops/-/loops-6.0.1.tgz","fileCount":10,"integrity":"sha512-ds2CwBA2WuAv50yyHmIpTAzWa4dbVyuSwR9NWtqnlE+78FINILCaxJjDgqNqVYLU1rYioj7mRJNkb6k2/L1EtQ==","signatures":[{"sig":"MEQCIBgWNLUxm3LxzT9SSJXRk5pByFejQs/iRMFsJU7aA8P9AiBg8VzVDH5Vzq1x06R8CBxVvlx9+jaAlbtMN095JTTMaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93532},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"44019d17dac401a8dc0f6365410c4c7220ed5614","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"10.9.3","description":"This is the official JavaScript SDK for [Loops](https://loops.so), with full TypeScript support.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","ts-jest":"^29.1.2","typescript":"^5.2.2","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/loops_6.0.1_1760508062369_0.7967577557142917","host":"s3://npm-registry-packages-npm-production"}},"6.1.2":{"name":"loops","version":"6.1.2","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@6.1.2","maintainers":[{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"e4fc1264f45bf2201bd6872033751a98b18d90bc","tarball":"https://registry.npmjs.org/loops/-/loops-6.1.2.tgz","fileCount":12,"integrity":"sha512-iCDWWYRF+UMidlGBjxaXfQU2ySA3f26ZVq2+Eq1/ssC7pQFjZ6DbqmgosYWvVMVIaLWoXxFbuQWq8I3JCybVfQ==","signatures":[{"sig":"MEUCIQCwM4hW0YkvhLDuTPH6blNSOKy4r4M7oOXWVpn5O+xpywIgd3XQW4A+gXpJwkxXNc/3pdsWLW9AfhCoxPMyKf/QrcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94653},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"a4dcf98597eba093f820ab1172a8bc79917ed7e9","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"10.9.3","description":"This is the official JavaScript SDK for [Loops](https://loops.so), with full TypeScript support.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","ts-jest":"^29.1.2","typescript":"^5.2.2","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/loops_6.1.2_1769695036586_0.16568090364479882","host":"s3://npm-registry-packages-npm-production"}},"6.2.0":{"name":"loops","version":"6.2.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@6.2.0","maintainers":[{"name":"fantactuka","email":"fantactuka@gmail.com"},{"name":"notnmeyer","email":"nmeyer@gmail.com"},{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"54079e5d483c966a7af700c0543b83a0fdd0e691","tarball":"https://registry.npmjs.org/loops/-/loops-6.2.0.tgz","fileCount":10,"integrity":"sha512-POMOdaktMpF8VSeKnTjdh9A1a02MFDOL3fyl6/VVxROSltVzgkRB9CSKVspgQ6cLVFzm/Wd27opNN3wHs0YKaw==","signatures":[{"sig":"MEUCIQCwtOqoQ2Cc924HgI2aJSY78MqH6BHmP+T/xZDus+IgrAIgPk+1bBAXoQYGmk05Js3IEJw32zAtNbrSC+q1zUkxLlE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94645},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"36eca3828c72b27f5040f455dc75f88ca6b32799","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"fantactuka","email":"fantactuka@gmail.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"11.6.1","description":"This is the official JavaScript SDK for [Loops](https://loops.so), with full TypeScript support.","directories":{},"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","ts-jest":"^29.1.2","typescript":"^5.2.2","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/loops_6.2.0_1770631362340_0.7149197743109703","host":"s3://npm-registry-packages-npm-production"}},"6.2.1":{"name":"loops","version":"6.2.1","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","_id":"loops@6.2.1","maintainers":[{"name":"fantactuka","email":"fantactuka@gmail.com"},{"name":"notnmeyer","email":"nmeyer@gmail.com"},{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"homepage":"https://github.com/Loops-so/loops-js#readme","bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"dist":{"shasum":"a8542ca36e5aeb0c1a6edf8d70b9c1bfe0a6f452","tarball":"https://registry.npmjs.org/loops/-/loops-6.2.1.tgz","fileCount":10,"integrity":"sha512-UF321fEmlX7KeGlbjxXnL49hk8gVyMqHB2sbeEiEbHyacHYJN20NRh0f2FQSvW2r9X9/xpKBwO5gFYqy5ztauQ==","signatures":[{"sig":"MEUCIQD4bGdMIz6xKRTOmKTaCxQLQISKKCzuK2NgBJG16sRQ2AIgEqMv5O0iwxvO/MCrNvi0gf7QktWO2JjRaGjefufPWQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94645},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18"},"exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"gitHead":"12cec08c631a1ff825b9b635b126015b049a385a","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"repository":{"url":"git+https://github.com/Loops-so/loops-js.git","type":"git"},"_npmVersion":"10.9.3","description":"This is the official JavaScript SDK for [Loops](https://loops.so), with full TypeScript support.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.1.2","typescript":"^5.2.2","@types/jest":"^29.5.12"},"_npmOperationalInternal":{"tmp":"tmp/loops_6.2.1_1771224470027_0.47579653680952694","host":"s3://npm-registry-packages-npm-production"}},"6.3.0":{"name":"loops","version":"6.3.0","author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","main":"./dist/index.cjs","module":"./dist/index.esm.js","exports":{".":{"types":{"import":"./dist/index.d.ts","require":"./dist/index.d.cts"},"import":"./dist/index.esm.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"repository":{"type":"git","url":"git+https://github.com/Loops-so/loops-js.git"},"bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"type":"module","devDependencies":{"tsup":"^8.5.1","typescript":"^5.2.2","jest":"^29.7.0","@types/jest":"^29.5.12","ts-jest":"^29.1.2"},"engines":{"node":">=18"},"gitHead":"41bc579ef4e303a143f908e4bbda4709cf86505f","types":"./dist/index.d.ts","_id":"loops@6.3.0","description":"This is the official JavaScript SDK for [Loops](https://loops.so), with full TypeScript support.","homepage":"https://github.com/Loops-so/loops-js#readme","_nodeVersion":"24.14.0","_npmVersion":"11.11.1","dist":{"integrity":"sha512-T5oc66bM90LS+yHxTv9WoYtsadJC94QIax25Avl/XCq/DTonqtNd3g1nmOfuAqDKhkZzXE8GuXmSRvSFIgq0Xg==","shasum":"83c0e6781a0a2a7d74d98d82b4e974c34189c36a","tarball":"https://registry.npmjs.org/loops/-/loops-6.3.0.tgz","fileCount":10,"unpackedSize":105132,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCR7TOdtR71/1rAI/vRGKHXdfptV/IWen6cFermlKpI9AIhAM7d17S9PU+35iOj03AeqPfOqyT/W/YhLJP0rc+wmUfW"}]},"_npmUser":{"name":"danrowden","email":"hello@danrowden.com"},"directories":{},"maintainers":[{"name":"fantactuka","email":"fantactuka@gmail.com"},{"name":"notnmeyer","email":"nmeyer@gmail.com"},{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/loops_6.3.0_1775738902108_0.7935985101993639"},"_hasShrinkwrap":false}},"time":{"created":"2011-11-04T20:19:53.781Z","modified":"2026-04-09T12:48:22.345Z","1.0.9":"2011-11-04T20:19:55.891Z","0.1.0":"2023-10-30T08:03:11.898Z","0.1.1":"2023-11-01T07:46:36.713Z","0.1.2":"2023-12-06T18:36:20.541Z","0.1.3":"2023-12-08T08:40:37.009Z","0.1.4":"2024-01-25T13:40:06.056Z","0.1.5":"2024-01-26T12:44:18.569Z","0.2.0":"2024-02-01T08:50:56.607Z","0.2.1":"2024-02-06T07:26:36.985Z","0.3.0":"2024-02-22T08:47:20.901Z","0.4.0":"2024-03-22T10:06:53.711Z","0.4.1":"2024-03-28T16:03:07.330Z","1.0.0":"2024-03-29T10:51:16.472Z","1.0.1":"2024-04-01T07:10:05.870Z","2.0.0":"2024-04-19T11:29:23.229Z","2.1.0":"2024-06-19T09:32:57.506Z","2.1.1":"2024-06-20T10:32:48.719Z","2.2.0":"2024-07-02T09:02:59.578Z","3.0.0":"2024-07-02T12:50:36.943Z","3.1.0":"2024-08-12T10:27:35.700Z","3.1.1":"2024-08-16T10:16:31.772Z","3.2.0":"2024-08-23T12:33:04.507Z","3.3.0":"2024-09-09T08:17:10.307Z","3.4.0":"2024-10-29T11:02:00.465Z","3.4.1":"2024-12-18T10:21:58.043Z","4.0.0":"2025-01-17T11:16:20.618Z","4.1.0":"2025-03-12T10:48:57.547Z","5.0.0":"2025-04-29T08:16:09.911Z","5.0.1":"2025-05-13T10:22:42.627Z","6.0.0":"2025-08-22T10:52:48.637Z","6.0.1":"2025-10-15T06:01:02.575Z","6.1.2":"2026-01-29T13:57:16.734Z","6.2.0":"2026-02-09T10:02:42.503Z","6.2.1":"2026-02-16T06:47:50.183Z","6.3.0":"2026-04-09T12:48:22.247Z"},"bugs":{"url":"https://github.com/Loops-so/loops-js/issues"},"author":{"name":"Dan Rowden","email":"dan@loops.so"},"license":"MIT","homepage":"https://github.com/Loops-so/loops-js#readme","repository":{"type":"git","url":"git+https://github.com/Loops-so/loops-js.git"},"description":"This is the official JavaScript SDK for [Loops](https://loops.so), with full TypeScript support.","maintainers":[{"name":"fantactuka","email":"fantactuka@gmail.com"},{"name":"notnmeyer","email":"nmeyer@gmail.com"},{"name":"adamloops","email":"adam@loops.so"},{"name":"danrowden","email":"hello@danrowden.com"}],"readme":"# Loops JavaScript/TypeScript SDK\n\n## Introduction\n\nThis is the official JavaScript SDK for [Loops](https://loops.so), with full TypeScript support.\n\nIt lets you easily integrate with the Loops API in any JavaScript project.\n\n## Installation\n\nYou can install the package [from npm](https://www.npmjs.com/package/loops):\n\n```bash\nnpm install loops\n```\n\nMinimum Node version required: 18.0.0.\n\nYou will need a Loops API key to use the package.\n\nIn your Loops account, go to the [API Settings page](https://app.loops.so/settings?page=api) and click \"Generate key\".\n\nCopy this key and save it in your application code (for example as `LOOPS_API_KEY` in an `.env` file).\n\nSee the API documentation to learn more about [rate limiting](https://loops.so/docs/api-reference#rate-limiting) and [error handling](https://loops.so/docs/api-reference#debugging).\n\n## Usage\n\n```javascript\nimport { LoopsClient, APIError } from \"loops\";\n\nconst loops = new LoopsClient(process.env.LOOPS_API_KEY);\n\ntry {\n  const resp = await loops.createContact(\"email@provider.com\");\n  // resp.success and resp.id available when successful\n} catch (error) {\n  if (error instanceof APIError) {\n    // JSON returned by the API is in error.json and the HTTP code is in error.statusCode\n    // error.json may be null if the response was not valid JSON (e.g., from a load balancer)\n    // In that case, the raw response text is available in error.rawBody\n    console.log(error.json);\n    console.log(error.statusCode);\n    console.log(error.rawBody);\n  } else {\n    // Non-API errors\n  }\n}\n```\n\n## Handling rate limits\n\nIf you import `RateLimitExceededError` you can check for rate limit issues with your requests.\n\nYou can access details about the rate limits from the `limit` and `remaining` attributes.\n\n```javascript\nimport { LoopsClient, APIError, RateLimitExceededError } from \"loops\";\n\nconst loops = new LoopsClient(process.env.LOOPS_API_KEY);\n\ntry {\n  const resp = await loops.createContact(\"email@provider.com\");\n} catch (error) {\n  if (error instanceof RateLimitExceededError) {\n    console.log(`Rate limit exceeded (${error.limit} per second)`);\n    // Code here to re-try this request\n  } else {\n    // Handle other errors\n  }\n}\n```\n\n## Default contact properties\n\nEach contact in Loops has a set of default properties. These will always be returned in API results.\n\n- `id`\n- `email`\n- `firstName`\n- `lastName`\n- `source`\n- `subscribed`\n- `userGroup`\n- `userId`\n- `optInStatus`\n\n## Custom contact properties\n\nYou can use custom contact properties in API calls. Please make sure to [add custom properties](https://loops.so/docs/contacts/properties#custom-contact-properties) in your Loops account before using them with the SDK.\n\n## Methods\n\n- [testApiKey()](#testapikey)\n- [createContact()](#createcontact)\n- [updateContact()](#updatecontact)\n- [findContact()](#findcontact)\n- [deleteContact()](#deletecontact)\n- [checkContactSuppression()](#checkcontactsuppression)\n- [removeContactSuppression()](#removecontactsuppression)\n- [createContactProperty()](#createcontactproperty)\n- [getContactProperties()](#getcontactproperties)\n- [getMailingLists()](#getmailinglists)\n- [sendEvent()](#sendevent)\n- [sendTransactionalEmail()](#sendtransactionalemail)\n- [getTransactionalEmails()](#gettransactionalemails)\n\n---\n\n### testApiKey()\n\nTest that an API key is valid.\n\n[API Reference](https://loops.so/docs/api-reference/api-key)\n\n#### Parameters\n\nNone\n\n#### Example\n\n```javascript\nconst resp = await loops.testApiKey();\n```\n\n#### Response\n\n```json\n{\n  \"success\": true,\n  \"teamName\": \"My team\"\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 401 Unauthorized\n{\n  \"error\": \"Invalid API key\"\n}\n```\n\n---\n\n### createContact()\n\nCreate a new contact.\n\n[API Reference](https://loops.so/docs/api-reference/create-contact)\n\n#### Parameters\n\n| Name           | Type   | Required | Notes                                                                                                                                                                                                                                                                                                                                                                                                                |\n| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `email`        | string | Yes      | If a contact already exists with this email address, an error response will be returned.                                                                                                                                                                                                                                                                                                                             |\n| `properties`   | object | No       | An object containing default and any custom properties for your contact.<br />Please [add custom properties](https://loops.so/docs/contacts/properties#custom-contact-properties) in your Loops account before using them with the SDK.<br />Values can be of type `string`, `number`, `null` (to reset a value), `boolean` or `date` ([see allowed date formats](https://loops.so/docs/contacts/properties#dates)). |\n| `mailingLists` | object | No       | An object of mailing list IDs and boolean subscription statuses.                                                                                                                                                                                                                                                                                                                                                     |\n\n#### Examples\n\n```javascript\nconst resp = await loops.createContact({ email: \"hello@gmail.com\" });\n\nconst contactProperties = {\n  firstName: \"Bob\" /* Default property */,\n  favoriteColor: \"Red\" /* Custom property */,\n};\nconst mailingLists = {\n  cm06f5v0e45nf0ml5754o9cix: true /* Subscribe */,\n  cm16k73gq014h0mmj5b6jdi9r: false /* Unsubscribe */,\n};\nconst resp = await loops.createContact({\n  email: \"hello@gmail.com\",\n  properties: contactProperties,\n  mailingLists,\n});\n```\n\n#### Response\n\n```json\n{\n  \"success\": true,\n  \"id\": \"id_of_contact\"\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"message\": \"An error message here.\"\n}\n```\n\n---\n\n### updateContact()\n\nUpdate a contact. This method will create a contact if one doesn't already exist.\n\nNote: To update a contact's email address, the contact requires a `userId` value. Then you can make a request with their `userId` and an updated email address.\n\n[API Reference](https://loops.so/docs/api-reference/update-contact)\n\n#### Parameters\n\n| Name           | Type   | Required | Notes                                                                                                                                                                                                                                                                                                                                                                                                                |\n| -------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `email`        | string | No       | The email address of the contact to update. If there is no contact with this email address, a new contact will be created using the email and properties in this request. Required if `userId` is not present.                                                                                                                                                                                                       |\n| `userId`       | string | No       | The contact's unique user ID. If you use `userId` without `email`, this value must have already been added to your contact in Loops. Required if `email` is not present.                                                                                                                                                                                                                                             |\n| `properties`   | object | No       | An object containing default and any custom properties for your contact.<br />Please [add custom properties](https://loops.so/docs/contacts/properties#custom-contact-properties) in your Loops account before using them with the SDK.<br />Values can be of type `string`, `number`, `null` (to reset a value), `boolean` or `date` ([see allowed date formats](https://loops.so/docs/contacts/properties#dates)). |\n| `mailingLists` | object | No       | An object of mailing list IDs and boolean subscription statuses.                                                                                                                                                                                                                                                                                                                                                     |\n\n#### Example\n\n```javascript\nconst resp = await loops.updateContact({\n  email: \"hello@gmail.com\",\n  properties: {\n    firstName: \"Bob\" /* Default property */,\n    favoriteColor: \"Blue\" /* Custom property */,\n  },\n});\n\n/* Updating a contact's email address using userId */\nconst resp = await loops.updateContact({\n  userId: \"1234\",\n  email: \"newemail@gmail.com\",\n});\n\n/* Subscribe a contact to a mailing list */\nconst resp = await loops.updateContact({\n  email: \"hello@gmail.com\",\n  mailingLists: {\n    cm06f5v0e45nf0ml5754o9cix: true,\n  },\n});\n```\n\n#### Response\n\n```json\n{\n  \"success\": true,\n  \"id\": \"id_of_contact\"\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"message\": \"An error message here.\"\n}\n```\n\n---\n\n### findContact()\n\nFind a contact.\n\n[API Reference](https://loops.so/docs/api-reference/find-contact)\n\n#### Parameters\n\nYou must use one parameter in the request.\n\n| Name     | Type   | Required | Notes |\n| -------- | ------ | -------- | ----- |\n| `email`  | string | No       |       |\n| `userId` | string | No       |       |\n\n#### Examples\n\n```javascript\nconst resp = await loops.findContact({ email: \"hello@gmail.com\" });\n\nconst resp = await loops.findContact({ userId: \"12345\" });\n```\n\n#### Response\n\nThis method will return a list containing a single contact object, which will include all default properties and any custom properties.\n\nIf no contact is found, an empty list will be returned.\n\n```json\n[\n  {\n    \"id\": \"cll6b3i8901a9jx0oyktl2m4u\",\n    \"email\": \"hello@gmail.com\",\n    \"firstName\": \"Bob\",\n    \"lastName\": null,\n    \"source\": \"API\",\n    \"subscribed\": true,\n    \"userGroup\": \"\",\n    \"userId\": \"12345\",\n    \"mailingLists\": {\n      \"cm06f5v0e45nf0ml5754o9cix\": true\n    },\n    \"optInStatus\": null,\n    \"favoriteColor\": \"Blue\" /* Custom property */\n  }\n]\n```\n\n---\n\n### deleteContact()\n\nDelete a contact, either by email address or `userId`.\n\n[API Reference](https://loops.so/docs/api-reference/delete-contact)\n\n#### Parameters\n\nYou must use one parameter in the request.\n\n| Name     | Type   | Required | Notes |\n| -------- | ------ | -------- | ----- |\n| `email`  | string | No       |       |\n| `userId` | string | No       |       |\n\n#### Example\n\n```javascript\nconst resp = await loops.deleteContact({ email: \"hello@gmail.com\" });\n\nconst resp = await loops.deleteContact({ userId: \"12345\" });\n```\n\n#### Response\n\n```json\n{\n  \"success\": true,\n  \"message\": \"Contact deleted.\"\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"message\": \"An error message here.\"\n}\n```\n\n```json\nHTTP 404 Not Found\n{\n  \"success\": false,\n  \"message\": \"An error message here.\"\n}\n```\n\n---\n\n### checkContactSuppression()\n\nCheck whether a contact is suppressed, either by email address or `userId`.\n\n[API Reference](https://loops.so/docs/api-reference/check-contact-suppression)\n\n#### Parameters\n\nYou must use one parameter in the request.\n\n| Name     | Type   | Required | Notes |\n| -------- | ------ | -------- | ----- |\n| `email`  | string | No       |       |\n| `userId` | string | No       |       |\n\n#### Example\n\n```javascript\nconst resp = await loops.checkContactSuppression({ email: \"hello@gmail.com\" });\n\nconst resp = await loops.checkContactSuppression({ userId: \"12345\" });\n```\n\n#### Response\n\n```json\n{\n  \"contact\": {\n    \"id\": \"cll6b3i8901a9jx0oyktl2m4u\",\n    \"email\": \"adam@loops.so\",\n    \"userId\": null\n  },\n  \"isSuppressed\": true,\n  \"removalQuota\": {\n    \"limit\": 100,\n    \"remaining\": 4\n  }\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"message\": \"An email or userId is required.\"\n}\n```\n\n```json\nHTTP 404 Not Found\n{\n  \"success\": false,\n  \"message\": \"This contact was not found.\"\n}\n```\n\n---\n\n### removeContactSuppression()\n\nRemove suppression for a contact, either by email address or `userId`.\n\n[API Reference](https://loops.so/docs/api-reference/remove-contact-suppression)\n\n#### Parameters\n\nYou must use one parameter in the request.\n\n| Name     | Type   | Required | Notes |\n| -------- | ------ | -------- | ----- |\n| `email`  | string | No       |       |\n| `userId` | string | No       |       |\n\n#### Example\n\n```javascript\nconst resp = await loops.removeContactSuppression({ email: \"hello@gmail.com\" });\n\nconst resp = await loops.removeContactSuppression({ userId: \"12345\" });\n```\n\n#### Response\n\n```json\n{\n  \"success\": true,\n  \"message\": \"Email removed from suppression list.\",\n  \"removalQuota\": {\n    \"limit\": 100,\n    \"remaining\": 4\n  }\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"message\": \"This contact is not suppressed.\"\n}\n```\n\n```json\nHTTP 404 Not Found\n{\n  \"success\": false,\n  \"message\": \"This contact was not found.\"\n}\n```\n\n---\n\n### createContactProperty()\n\nCreate a new contact property.\n\n[API Reference](https://loops.so/docs/api-reference/create-contact-property)\n\n#### Parameters\n\n| Name   | Type   | Required | Notes                                                                                  |\n| ------ | ------ | -------- | -------------------------------------------------------------------------------------- |\n| `name` | string | Yes      | The name of the property. Should be in camelCase, like `planName` or `favouriteColor`. |\n| `type` | string | Yes      | The property's value type.<br />Can be one of `string`, `number`, `boolean` or `date`. |\n\n#### Examples\n\n```javascript\nconst resp = await loops.createContactProperty(\"planName\", \"string\");\n```\n\n#### Response\n\n```json\n{\n  \"success\": true\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"message\": \"An error message here.\"\n}\n```\n\n---\n\n### getContactProperties()\n\nGet a list of your account's contact properties.\n\n[API Reference](https://loops.so/docs/api-reference/list-contact-properties)\n\n#### Parameters\n\n| Name   | Type   | Required | Notes                                                           |\n| ------ | ------ | -------- | --------------------------------------------------------------- |\n| `list` | string | No       | Use \"custom\" to retrieve only your account's custom properties. |\n\n#### Example\n\n```javascript\nconst resp = await loops.getContactProperties();\n\nconst resp = await loops.getContactProperties(\"custom\");\n```\n\n#### Response\n\nThis method will return a list of contact property objects containing `key`, `label` and `type` attributes.\n\n```json\n[\n  {\n    \"key\": \"firstName\",\n    \"label\": \"First Name\",\n    \"type\": \"string\"\n  },\n  {\n    \"key\": \"lastName\",\n    \"label\": \"Last Name\",\n    \"type\": \"string\"\n  },\n  {\n    \"key\": \"email\",\n    \"label\": \"Email\",\n    \"type\": \"string\"\n  },\n  {\n    \"key\": \"notes\",\n    \"label\": \"Notes\",\n    \"type\": \"string\"\n  },\n  {\n    \"key\": \"source\",\n    \"label\": \"Source\",\n    \"type\": \"string\"\n  },\n  {\n    \"key\": \"userGroup\",\n    \"label\": \"User Group\",\n    \"type\": \"string\"\n  },\n  {\n    \"key\": \"userId\",\n    \"label\": \"User Id\",\n    \"type\": \"string\"\n  },\n  {\n    \"key\": \"subscribed\",\n    \"label\": \"Subscribed\",\n    \"type\": \"boolean\"\n  },\n  {\n    \"key\": \"createdAt\",\n    \"label\": \"Created At\",\n    \"type\": \"date\"\n  },\n  {\n    \"key\": \"favoriteColor\",\n    \"label\": \"Favorite Color\",\n    \"type\": \"string\"\n  },\n  {\n    \"key\": \"plan\",\n    \"label\": \"Plan\",\n    \"type\": \"string\"\n  }\n]\n```\n\n---\n\n### getMailingLists()\n\nGet a list of your account's mailing lists. [Read more about mailing lists](https://loops.so/docs/contacts/mailing-lists)\n\n[API Reference](https://loops.so/docs/api-reference/list-mailing-lists)\n\n#### Parameters\n\nNone\n\n#### Example\n\n```javascript\nconst resp = await loops.getMailingLists();\n```\n\n#### Response\n\nThis method will return a list of mailing list objects containing `id`, `name`, `description` and `isPublic` attributes.\n\nIf your account has no mailing lists, an empty list will be returned.\n\n```json\n[\n  {\n    \"id\": \"cm06f5v0e45nf0ml5754o9cix\",\n    \"name\": \"Main list\",\n    \"description\": \"All customers.\",\n    \"isPublic\": true\n  },\n  {\n    \"id\": \"cm16k73gq014h0mmj5b6jdi9r\",\n    \"name\": \"Investors\",\n    \"description\": null,\n    \"isPublic\": false\n  }\n]\n```\n\n---\n\n### sendEvent()\n\nSend an event to trigger an email in Loops. [Read more about events](https://loops.so/docs/events)\n\n[API Reference](https://loops.so/docs/api-reference/send-event)\n\n#### Parameters\n\n| Name                | Type   | Required | Notes                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| ------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `email`             | string | No       | The contact's email address. Required if `userId` is not present.                                                                                                                                                                                                                                                                                                                                                                                              |\n| `userId`            | string | No       | The contact's unique user ID. If you use `userId` without `email`, this value must have already been added to your contact in Loops. Required if `email` is not present.                                                                                                                                                                                                                                                                                       |\n| `eventName`         | string | Yes      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| `contactProperties` | object | No       | An object containing contact properties, which will be updated or added to the contact when the event is received.<br />Please [add custom properties](https://loops.so/docs/contacts/properties#custom-contact-properties) in your Loops account before using them with the SDK.<br />Values can be of type `string`, `number`, `null` (to reset a value), `boolean` or `date` ([see allowed date formats](https://loops.so/docs/contacts/properties#dates)). |\n| `eventProperties`   | object | No       | An object containing event properties, which will be made available in emails that are triggered by this event.<br />Values can be of type `string`, `number`, `boolean` or `date` ([see allowed date formats](https://loops.so/docs/events/properties#important-information-about-event-properties)).                                                                                                                                                         |\n| `mailingLists`      | object | No       | An object of mailing list IDs and boolean subscription statuses.                                                                                                                                                                                                                                                                                                                                                                                               |\n| `headers`           | object | No       | Additional headers to send with the request.                                                                                                                                                                                                                                                                                                                                                                                                                   |\n\n#### Examples\n\n```javascript\nconst resp = await loops.sendEvent({\n  email: \"hello@gmail.com\",\n  eventName: \"signup\",\n});\n\nconst resp = await loops.sendEvent({\n  email: \"hello@gmail.com\",\n  eventName: \"signup\",\n  eventProperties: {\n    username: \"user1234\",\n    signupDate: \"2024-03-21T10:09:23Z\",\n  },\n  mailingLists: {\n    cm06f5v0e45nf0ml5754o9cix: true,\n    cm16k73gq014h0mmj5b6jdi9r: false,\n  },\n});\n\n// In this case with both email and userId present, the system will look for a contact with either a\n//  matching `email` or `userId` value.\n// If a contact is found for one of the values (e.g. `email`), the other value (e.g. `userId`) will be updated.\n// If a contact is not found, a new contact will be created using both `email` and `userId` values.\n// Any values added in `contactProperties` will also be updated on the contact.\nconst resp = await loops.sendEvent({\n  userId: \"1234567890\",\n  email: \"hello@gmail.com\",\n  eventName: \"signup\",\n  contactProperties: {\n    firstName: \"Bob\",\n    plan: \"pro\",\n  },\n});\n\n// Example with Idempotency-Key header\nconst resp = await loops.sendEvent({\n  email: \"hello@gmail.com\",\n  eventName: \"signup\",\n  headers: {\n    \"Idempotency-Key\": \"550e8400-e29b-41d4-a716-446655440000\",\n  },\n});\n```\n\n#### Response\n\n```json\n{\n  \"success\": true\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"message\": \"An error message here.\"\n}\n```\n\n---\n\n### sendTransactionalEmail()\n\nSend a transactional email to a contact. [Learn about sending transactional email](https://loops.so/docs/transactional/guide)\n\n[API Reference](https://loops.so/docs/api-reference/send-transactional-email)\n\n#### Parameters\n\n| Name                        | Type     | Required | Notes                                                                                                                                                                                                         |\n| --------------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `transactionalId`           | string   | Yes      | The ID of the transactional email to send.                                                                                                                                                                    |\n| `email`                     | string   | Yes      | The email address of the recipient.                                                                                                                                                                           |\n| `addToAudience`             | boolean  | No       | If `true`, a contact will be created in your audience using the `email` value (if a matching contact doesn’t already exist).                                                                                  |\n| `dataVariables`             | object   | No       | An object containing data as defined by the data variables added to the transactional email template.<br />Values can be of type `string`, `number`, or an array of objects with `string` or `number` values. |\n| `attachments`               | object[] | No       | A list of attachments objects.<br />**Please note**: Attachments need to be enabled on your account before using them with the API. [Read more](https://loops.so/docs/transactional/attachments)              |\n| `attachments[].filename`    | string   | No       | The name of the file, shown in email clients.                                                                                                                                                                 |\n| `attachments[].contentType` | string   | No       | The MIME type of the file.                                                                                                                                                                                    |\n| `attachments[].data`        | string   | No       | The base64-encoded content of the file.                                                                                                                                                                       |\n| `headers`                   | object   | No       | Additional headers to send with the request.                                                                                                                                                                  |\n\n#### Examples\n\n```javascript\nconst resp = await loops.sendTransactionalEmail({\n  transactionalId: \"clfq6dinn000yl70fgwwyp82l\",\n  email: \"hello@gmail.com\",\n  dataVariables: {\n    loginUrl: \"https://myapp.com/login/\",\n  },\n});\n\n// Example with Idempotency-Key header\nconst resp = await loops.sendTransactionalEmail({\n  transactionalId: \"clfq6dinn000yl70fgwwyp82l\",\n  email: \"hello@gmail.com\",\n  dataVariables: {\n    loginUrl: \"https://myapp.com/login/\",\n  },\n  headers: {\n    \"Idempotency-Key\": \"550e8400-e29b-41d4-a716-446655440000\",\n  },\n});\n\n// Please contact us to enable attachments on your account.\nconst resp = await loops.sendTransactionalEmail({\n  transactionalId: \"clfq6dinn000yl70fgwwyp82l\",\n  email: \"hello@gmail.com\",\n  dataVariables: {\n    loginUrl: \"https://myapp.com/login/\",\n  },\n  attachments: [\n    {\n      filename: \"presentation.pdf\",\n      contentType: \"application/pdf\",\n      data: \"JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPD...\",\n    },\n  ],\n});\n```\n\n#### Response\n\n```json\n{\n  \"success\": true\n}\n```\n\nError handling is done through the `APIError` class, which provides `statusCode` and `json` properties containing the API's error response details. For implementation examples, see the [Usage section](#usage).\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"path\": \"dataVariables\",\n  \"message\": \"There are required fields for this email. You need to include a 'dataVariables' object with the required fields.\"\n}\n```\n\n```json\nHTTP 400 Bad Request\n{\n  \"success\": false,\n  \"error\": {\n    \"path\": \"dataVariables\",\n    \"message\": \"Missing required fields: login_url\"\n  },\n  \"transactionalId\": \"clfq6dinn000yl70fgwwyp82l\"\n}\n```\n\n---\n\n### getTransactionalEmails()\n\nGet a list of published transactional emails.\n\n[API Reference](https://loops.so/docs/api-reference/list-transactional-emails)\n\n#### Parameters\n\n| Name      | Type    | Required | Notes                                                                                                                         |\n| --------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------- |\n| `perPage` | integer | No       | How many results to return per page. Must be between 10 and 50. Defaults to 20 if omitted.                                    |\n| `cursor`  | string  | No       | A cursor, to return a specific page of results. Cursors can be found from the `pagination.nextCursor` value in each response. |\n\n#### Example\n\n```javascript\nconst resp = await loops.getTransactionalEmails();\n\nconst resp = await loops.getTransactionalEmails({ perPage: 15 });\n```\n\n#### Response\n\n```json\n{\n  \"pagination\": {\n    \"totalResults\": 23,\n    \"returnedResults\": 20,\n    \"perPage\": 20,\n    \"totalPages\": 2,\n    \"nextCursor\": \"clyo0q4wo01p59fsecyxqsh38\",\n    \"nextPage\": \"https://app.loops.so/api/v1/transactional?cursor=clyo0q4wo01p59fsecyxqsh38&perPage=20\"\n  },\n  \"data\": [\n    {\n      \"id\": \"clfn0k1yg001imo0fdeqg30i8\",\n      \"lastUpdated\": \"2023-11-06T17:48:07.249Z\",\n      \"dataVariables\": []\n    },\n    {\n      \"id\": \"cll42l54f20i1la0lfooe3z12\",\n      \"lastUpdated\": \"2025-02-02T02:56:28.845Z\",\n      \"dataVariables\": [\n        \"confirmationUrl\"\n      ]\n    },\n    {\n      \"id\": \"clw6rbuwp01rmeiyndm80155l\",\n      \"lastUpdated\": \"2024-05-14T19:02:52.000Z\",\n      \"dataVariables\": [\n        \"firstName\",\n        \"lastName\",\n        \"inviteLink\"\n      ]\n    },\n    ...\n  ]\n}\n```\n\n---\n\n## Version history\n\n- `v6.3.0` (Apr 8, 2026) - Added [`checkContactSuppression()`](#checkcontactsuppression) and [`removeContactSuppression()`](#removecontactsuppression) methods.\n- `v6.2.0` (Feb 9, 2026) - Support for the new arrays feature in sendTransactionalEmail.\n- `v6.1.2` (Jan 29, 2026) - Added `rawBody` to `APIError` in the case no JSON is received from the server (thanks to [@leipert](https://github.com/leipert)).\n- `v6.0.1` (Oct 15, 2025) - Added `optInStatus` to contact object in [`findContact()`](#findcontact) for the new double opt-in feature.\n- `v6.0.0` (Aug 22, 2025) - [`createContact()`](#createcontact) and [`updateContact()`](#updatecontact) now have a single object parameter instead of named parameters (breaking change). This allows support for using either `email` or `userId` when updating contacts.\n- `v5.0.1` (May 13, 2025) - Added a `headers` parameter for [`sendEvent()`](#sendevent) and [`sendTransactionalEmail()`](#sendtransactionalemail), enabling support for the `Idempotency-Key` header.\n- `v5.0.0` (Apr 29, 2025)\n  - Types are now exported so you can use them in your application.\n  - `ValidationError` is now thrown when parameters are not added correctly.\n  - `Error` is now returned if the API key is missing.\n  - Added tests.\n- `v4.1.0` (Feb 27, 2025) - Support for new [List transactional emails](#gettransactionalemails) endpoint.\n- `v4.0.0` (Jan 16, 2025)\n  - Added `APIError` to more easily understand API errors. [See usage example](#usage).\n  - Added support for two new contact property endpoints: [List contact properties](#listcontactproperties) and [Create contact property](#createcontactproperty).\n  - Deprecated and removed the `getCustomFields()` method (you can now use [`listContactProperties()`](#listcontactproperties) instead).\n- `v3.4.1` (Dec 18, 2024) - Support for a new `description` attribute in [`getMailingLists()`](#getmailinglists).\n- `v3.4.0` (Oct 29, 2024) - Added rate limit handling with [`RateLimitExceededError`](#handling-rate-limits).\n- `v3.3.0` (Sep 9, 2024) - Added [`testApiKey()`](#testapikey) method.\n- `v3.2.0` (Aug 23, 2024) - Added support for a new `mailingLists` attribute in [`findContact()`](#findcontact).\n- `v3.1.1` (Aug 16, 2024) - Support for a new `isPublic` attribute in [`getMailingLists()`](#getmailinglists).\n- `v3.1.0` (Aug 12, 2024) - The SDK now accepts `null` as a value for contact properties in `createContact()`, `updateContact()` and `sendEvent()`, which allows you to reset/empty properties.\n- `v3.0.0` (Jul 2, 2024) - [`sendTransactionalEmail()`](#sendtransactionalemail) now accepts an object instead of separate parameters (breaking change).\n- `v2.2.0` (Jul 2, 2024) - Deprecated. Added new `addToAudience` option to [`sendTransactionalEmail()`](#sendtransactionalemail).\n- `v2.1.1` (Jun 20, 2024) - Added support for mailing lists in [`createContact()`](#createcontact), [`updateContact()`](#updatecontact) and [`sendEvent()`](#sendevent).\n- `v2.1.0` (Jun 19, 2024) - Added support for new [List mailing lists](#getmailinglists) endpoint.\n- `v2.0.0` (Apr 19, 2024)\n  - Added `userId` as a parameter to [`findContact()`](#findcontact). This includes a breaking change for the `findContact()` parameters.\n  - `userId` values must now be strings (could have also been numbers previously).\n- `v1.0.1` (Apr 1, 2024) - Fixed types for `sendEvent()`.\n- `v1.0.0` (Mar 28, 2024) - Fix for ESM types. Switched to named export.\n- `v0.4.0` (Mar 22, 2024) - Support for new `eventProperties` in [`sendEvent()`](#sendevent). This includes a breaking change for the `sendEvent()` parameters.\n- `v0.3.0` (Feb 22, 2024) - Updated minimum Node version to 18.0.0.\n- `v0.2.1` (Feb 6, 2024) - Fix for ESM imports.\n- `v0.2.0` (Feb 1, 2024) - CommonJS support.\n- `v0.1.5` (Jan 25, 2024) - `getCustomFields()` now returns `type` values for each contact property.\n- `v0.1.4` (Jan 25, 2024) - Added support for `userId` in [`sendEvent()`](#sendevent) request. Added missing error response type for `sendEvent()` requests.\n- `v0.1.3` (Dec 8, 2023) - Added support for transactional attachments.\n- `v0.1.2` (Dec 6, 2023) - Improved transactional error types.\n- `v0.1.1` (Nov 1, 2023) - Initial release.\n\n---\n\n## Tests\n\nRun tests with `npm run test`.\n\n---\n\n## Contributing\n\nBug reports and pull requests are welcome. Please read our [Contributing Guidelines](CONTRIBUTING.md).\n","readmeFilename":"README.md"}