{"_id":"rettime","_rev":"22-7f42bd3639f8b2d520e645c21766a313","name":"rettime","dist-tags":{"latest":"0.10.1"},"versions":{"0.1.0":{"name":"rettime","version":"0.1.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.1.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"411fe2db26b0bf5ff343946c2f42be3250d742b2","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.1.0.tgz","fileCount":13,"integrity":"sha512-8TwNY4HMOYblQpai0IEBZ4JlvWefutfaySKMqLMFvFe3yCfV3GDfWPCHQGfMWOT9tqQC3z/xguH8huvA0qfitQ==","signatures":[{"sig":"MEQCIHIx1+NP5H+ui3c+3ab34WC2JsO4ClLBb7j4WM+iNFUXAiA6GrxU9mc5nbUmsNU1nBsBzSVOhZArdmPWAJ2hseG51A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21360},"main":"./build/index.js","type":"module","_from":"file:rettime-0.1.0.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/zn/hj183dg15s713b47j2wlhwzw0000gn/T/b42121d5af06fc82915e5654c7a3a552/rettime-0.1.0.tgz","_integrity":"sha512-8TwNY4HMOYblQpai0IEBZ4JlvWefutfaySKMqLMFvFe3yCfV3GDfWPCHQGfMWOT9tqQC3z/xguH8huvA0qfitQ==","_npmVersion":"10.7.0","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vitest":"^2.0.5","typescript":"^5.5.4","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.1.0_1722853011272_0.25042884371658314","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"rettime","version":"0.1.1","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.1.1","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"cc0f5c756063bef00430ff0b29183179faa6ce21","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.1.1.tgz","fileCount":6,"integrity":"sha512-GBunkGXhsD+1PAhaz83KvwbZtVNZk8cFI8Y5J5gQstX2KZM4PLk38DVxXJjZI6ZtdgSe8zLGErlJ9EbS+1egCg==","signatures":[{"sig":"MEUCIQDRPd0Ul5BqSC2Mq704Idx/8auce84/VMAKnQjoc0+uTgIgYG4fs7qQPt0RpgKtMfrtTqnolMf77fOI+yUxndvVYUQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30789},"main":"./build/index.js","type":"module","_from":"file:rettime-0.1.1.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/zn/hj183dg15s713b47j2wlhwzw0000gn/T/34a41dfab207b5c5ccdf2f9480a12e41/rettime-0.1.1.tgz","_integrity":"sha512-GBunkGXhsD+1PAhaz83KvwbZtVNZk8cFI8Y5J5gQstX2KZM4PLk38DVxXJjZI6ZtdgSe8zLGErlJ9EbS+1egCg==","_npmVersion":"10.7.0","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vitest":"^2.0.5","typescript":"^5.5.4","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.1.1_1722853162930_0.9532131608468908","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"rettime","version":"0.1.2","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.1.2","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"be56bf31349451a9b801624504119fff13833c52","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.1.2.tgz","fileCount":6,"integrity":"sha512-RsMHoGcVQfDaXn2XawjJXB9/k9inT0eIwG7WkOpi5ZpmDsXob/zmzpFfd8r0npnT52TijotOcT9ISJ2kC6hW5Q==","signatures":[{"sig":"MEYCIQDT3MFDAXvyzmkfXqsK0zk9Jq0KJUbORQJIR6VNRd7AMgIhAIRANAuihJgCeVpUOk8flrySMEtGNqB/jTND1zhx25Wa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35013},"main":"./build/index.js","type":"module","_from":"file:rettime-0.1.2.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/zn/hj183dg15s713b47j2wlhwzw0000gn/T/287d0841307ee97ceff70fda23196e2e/rettime-0.1.2.tgz","_integrity":"sha512-RsMHoGcVQfDaXn2XawjJXB9/k9inT0eIwG7WkOpi5ZpmDsXob/zmzpFfd8r0npnT52TijotOcT9ISJ2kC6hW5Q==","_npmVersion":"10.7.0","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vitest":"^2.0.5","typescript":"^5.5.4","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.1.2_1722854973910_0.741495988411428","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"rettime","version":"0.2.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.2.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"ae4691ba13fb7a0e1c7b7a29635563eda001369c","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.2.0.tgz","fileCount":6,"integrity":"sha512-wpjT0uUZTu41YPIMLuzDQugF0D3hS8rFh5a7gFpiiZfKvj3PTiOKx8GlQ6+X+A1UquFsA8z8Pmxi7SnttU5MlQ==","signatures":[{"sig":"MEUCIGXkyIPLor/ZCIxGd3gH5d7ngzfP36TEZJU7UNr5Uv4xAiEA51fQf90hCtojUfoi2qGyudeKDLDw0lucx3GqqEmIg2M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36220},"main":"./build/index.js","type":"module","_from":"file:rettime-0.2.0.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/zn/hj183dg15s713b47j2wlhwzw0000gn/T/180b1ce16acdee722dac47fdba7b0b61/rettime-0.2.0.tgz","_integrity":"sha512-wpjT0uUZTu41YPIMLuzDQugF0D3hS8rFh5a7gFpiiZfKvj3PTiOKx8GlQ6+X+A1UquFsA8z8Pmxi7SnttU5MlQ==","_npmVersion":"10.7.0","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vitest":"^2.0.5","typescript":"^5.5.4","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.2.0_1722856425423_0.41225775502931206","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"rettime","version":"0.3.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.3.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"9a34301c7a05124231c75974ad7df249bf9544b0","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.3.0.tgz","fileCount":6,"integrity":"sha512-0L6LskLD5IFtUeHCe/6OeFysRQOW755L7wLZyJEe0vx/qL7d5N52Vg0wPUj2hYN/HT8W8mJdtzhptEQm4fh//g==","signatures":[{"sig":"MEUCIQCgUtEgJ0QydoRpxAxxF0QeYCUblPdIr3BY/bJqFdNYSAIgfNrx+el9ZkvemzyprdHEcdSsb2pC5PxqT8LDGT/jJkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45225},"main":"./build/index.js","type":"module","_from":"file:rettime-0.3.0.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/840cc6733042fd5f353d31703d64b1ec/rettime-0.3.0.tgz","_integrity":"sha512-0L6LskLD5IFtUeHCe/6OeFysRQOW755L7wLZyJEe0vx/qL7d5N52Vg0wPUj2hYN/HT8W8mJdtzhptEQm4fh//g==","_npmVersion":"10.8.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vitest":"^2.0.5","typescript":"^5.5.4","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.3.0_1745603994075_0.6340454655494647","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"rettime","version":"0.4.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.4.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"666c0c4bd0c801fcd2cf2f3e6880cf825d1b667c","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.4.0.tgz","fileCount":6,"integrity":"sha512-sZoFtn84HPpag4l1fREqD0+wiU4ZY2NJmWOYgXSF4xw78QwYby/FQbdNbugrBCIpPA1/imjxKHJT09z0W4Dy7A==","signatures":[{"sig":"MEUCIQDB9UcUQ7t/S5uvkXUuaJaQfj4Wi9zvmz/mxUJnl47uvQIgTZduUxtYorHI7EN3ZmL/dH8sYQdQ1PVKMc9gxiGlWwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49904},"main":"./build/index.js","type":"module","_from":"file:rettime-0.4.0.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/e82a217ff082402ce3859f0e57d013a6/rettime-0.4.0.tgz","_integrity":"sha512-sZoFtn84HPpag4l1fREqD0+wiU4ZY2NJmWOYgXSF4xw78QwYby/FQbdNbugrBCIpPA1/imjxKHJT09z0W4Dy7A==","_npmVersion":"10.8.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vitest":"^2.0.5","typescript":"^5.5.4","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.4.0_1745608456561_0.646667633326883","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"rettime","version":"0.4.1","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.4.1","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"b0689d5ba3399e49294018f25228b52e170ee90f","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.4.1.tgz","fileCount":6,"integrity":"sha512-IKUpJKi8Msb5HbqV6CUZ4lP+Xc+N4yZFEQ9aK5HS0eiIJtPMJiVXzs0DE3i34Glh0SwuLuPpcHPy1P/Jdqp0zQ==","signatures":[{"sig":"MEUCIFyxI6AOS9PiDMtPXSJf+k8vBG09PGRkk78L7ij4ub6FAiEA+zlVBndLD81WPglCPoT9UOaWSd9QbsCnVjjuBv7eElQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50124},"main":"./build/index.js","type":"module","_from":"file:rettime-0.4.1.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/07ab6d59653b6b5a28e5447ba0c29d66/rettime-0.4.1.tgz","_integrity":"sha512-IKUpJKi8Msb5HbqV6CUZ4lP+Xc+N4yZFEQ9aK5HS0eiIJtPMJiVXzs0DE3i34Glh0SwuLuPpcHPy1P/Jdqp0zQ==","_npmVersion":"10.8.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.4","vitest":"^2.0.5","typescript":"^5.5.4","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.4.1_1745608866689_0.18306936603934054","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"rettime","version":"0.5.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.5.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"1d1f5353b0c12921066bf304753bbd7d0bc06450","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.5.0.tgz","fileCount":7,"integrity":"sha512-fKCxgxY0gepa5ZgCD3C6tmde2m9NLQPAYRWa2A4Quv4L+kMYG70BzK19NCp2zVCZkJ+itnhx9StkaLr8LCHJTQ==","signatures":[{"sig":"MEUCIQCtlzco72E5Z+MNogRqq1LPXkqFAB7QnctNgNxXFa6XwwIgUEUUVIOOM4ffSt9dhIfS691QTCTPQhfH8uQs97sfV2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53631},"main":"./build/index.js","type":"module","_from":"file:rettime-0.5.0.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/3d655f48aa7898a90dd2b976f86fa911/rettime-0.5.0.tgz","_integrity":"sha512-fKCxgxY0gepa5ZgCD3C6tmde2m9NLQPAYRWa2A4Quv4L+kMYG70BzK19NCp2zVCZkJ+itnhx9StkaLr8LCHJTQ==","_npmVersion":"10.8.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.5.0_1745610164303_0.42850401521649184","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"rettime","version":"0.5.1","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.5.1","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"a98565a0cd894f78014f05330a2b06f3a219788f","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.5.1.tgz","fileCount":7,"integrity":"sha512-7uRCcNUf3I1E6lmgrO1u/R03ra4I8U/Ifvd+J8uqLBiGXEU3eSf/jlD0sDNvHqf93fb0VL3lJLGz9qeNHJahEA==","signatures":[{"sig":"MEUCIAg/+Op+evngllHYH/8hLzsWqcnGP0MsXXMbvvq13tgMAiEAz6tbxcTozMffRnImQ7EmSa1Lq9taCNRfz5j0Vfn3QI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53418},"main":"./build/index.js","type":"module","_from":"file:rettime-0.5.1.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/0dd60ceff443b8152a53142f3355821b/rettime-0.5.1.tgz","_integrity":"sha512-7uRCcNUf3I1E6lmgrO1u/R03ra4I8U/Ifvd+J8uqLBiGXEU3eSf/jlD0sDNvHqf93fb0VL3lJLGz9qeNHJahEA==","_npmVersion":"10.8.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.5.1_1745610286991_0.9836243102174056","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"rettime","version":"0.5.2","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.5.2","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"52a4578327af8d35b33b9a7d5acbd85d2619c400","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.5.2.tgz","fileCount":7,"integrity":"sha512-316jWRwO6ThC/o43hy1Td/vDb1REL45z/AiH5RgQf1ygGKwdh4JqiHodk1iuHQKvxLr4cYPcg2jFlZCf8GdaOQ==","signatures":[{"sig":"MEUCIQDaXGV6QBAJqMtvsVvyr+vskwc9EBj+3QfpK+xtLYMqTgIgG2XDFRPm93S1Z0wMK7L1GYyB0I9YucYvogtQMluSIck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53997},"main":"./build/index.js","type":"module","_from":"file:rettime-0.5.2.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/da8fe53fe7a5517a94d0bca9da16a522/rettime-0.5.2.tgz","_integrity":"sha512-316jWRwO6ThC/o43hy1Td/vDb1REL45z/AiH5RgQf1ygGKwdh4JqiHodk1iuHQKvxLr4cYPcg2jFlZCf8GdaOQ==","_npmVersion":"10.8.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.5.2_1745651649381_0.335392916551128","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"rettime","version":"0.5.3","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.5.3","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"4d93a1db01a1a19127ba15beb7ff57a258352b35","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.5.3.tgz","fileCount":7,"integrity":"sha512-g+3WhRzKaLq4YD/Q3UtiF5r+u+e8VxDE8p1FmcZ0pjbU0cPZm0XA/KmqCXwwNc7/kN+fU8YppT/kMVm/ZQuU+Q==","signatures":[{"sig":"MEUCIGuSshGe2UPnklMfRYAhinKQxeSBoBg5ZWi1DQRYiS8XAiEA3Eo2z0VvbDGlTWtkkoBrVk1BQ1mCJDwsJB/A81R2aN8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65921},"main":"./build/index.js","type":"module","_from":"file:rettime-0.5.3.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/ad9fe58335b6e10260a1f826c38d21f9/rettime-0.5.3.tgz","_integrity":"sha512-g+3WhRzKaLq4YD/Q3UtiF5r+u+e8VxDE8p1FmcZ0pjbU0cPZm0XA/KmqCXwwNc7/kN+fU8YppT/kMVm/ZQuU+Q==","_npmVersion":"10.8.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.5.3_1745657724624_0.9184423336336918","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"rettime","version":"0.5.4","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","_id":"rettime@0.5.4","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"a73766a39ee69c78ed6abad0bd97778d9e812572","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.5.4.tgz","fileCount":7,"integrity":"sha512-coZO1PULmD+l6qPlSjAoNLEPNV0FXQ6aI44BkBdUN5M17CCG+1vH+stpIgAy7fpNMTu47kxMwiYLP/LBP49FxQ==","signatures":[{"sig":"MEQCIFMzOmxQZ73uxewqh0qP50MUOIPywfKZkYOQnW14OxJfAiA7YAGvRnYYPIWktDRlgtX66tj/LxrWCWi0WFQbNLpurA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68176},"main":"./build/index.js","type":"module","_from":"file:rettime-0.5.4.tgz","types":"./build/index.d.ts","scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/b640c9ef98669214a965a9bd79a4a53a/rettime-0.5.4.tgz","_integrity":"sha512-coZO1PULmD+l6qPlSjAoNLEPNV0FXQ6aI44BkBdUN5M17CCG+1vH+stpIgAy7fpNMTu47kxMwiYLP/LBP49FxQ==","_npmVersion":"10.8.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.5.4_1745679335814_0.7570916122826254","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"rettime","version":"0.6.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.6.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"9f158dbcafab9665de39d4928b64ba6945e63579","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.6.0.tgz","fileCount":7,"integrity":"sha512-8PCUFeUm2P7Ee8IeMGMzdM2vkYCymGk65WNxDiGyhmR0+H7KtsOAvFtayffAKdC5GhbctOgH9FNC3XEYAdfr1w==","signatures":[{"sig":"MEUCIQDqp5pkvG3WU0NZZxaYMmy5cscHjO7te5Xy7FQLN4SbdwIgAlcxTCVB+uNG0dMCRP+YvIwHSW/+7gR32VEmqwTndqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63057},"main":"./build/index.js","type":"module","_from":"file:rettime-0.6.0.tgz","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/3ad8df131640ca6f63c1e32eacedb062/rettime-0.6.0.tgz","_integrity":"sha512-8PCUFeUm2P7Ee8IeMGMzdM2vkYCymGk65WNxDiGyhmR0+H7KtsOAvFtayffAKdC5GhbctOgH9FNC3XEYAdfr1w==","_npmVersion":"10.8.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.6.0_1753178224114_0.4814578581201472","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"rettime","version":"0.6.1","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.6.1","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"30ae4312d29e4107708ae795de3ec3059d75e19f","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.6.1.tgz","fileCount":7,"integrity":"sha512-AXtrVJJ/uQZA/b/k7C3cpmEq2QBHmdRPO6S9TXcynfXiV7nVpTZX2SzYwh36Y1DA7fE0k4kCTA1Y/K9P+nMVTQ==","signatures":[{"sig":"MEQCIAiVJaes6R2KfQMw8xoWX4rTOK9cs7Lt0FRmc/BcjySPAiANRnUNQ0lIOJlpDwlCfCgvBvMOd9NG0Ak031yXdHh++A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63142},"main":"./build/index.js","type":"module","_from":"file:rettime-0.6.1.tgz","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/ab4ce6dcc1188d1fd0693cdd4c1b95aa/rettime-0.6.1.tgz","_integrity":"sha512-AXtrVJJ/uQZA/b/k7C3cpmEq2QBHmdRPO6S9TXcynfXiV7nVpTZX2SzYwh36Y1DA7fE0k4kCTA1Y/K9P+nMVTQ==","_npmVersion":"10.8.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.6.1_1753261030928_0.908015165855458","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"rettime","version":"0.6.2","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.6.2","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"2ed441315e92fcf471b40a8dee0b6a0d2e09bb89","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.6.2.tgz","fileCount":7,"integrity":"sha512-0mHwLbBt6kLnt5UOiJWWcq0LiCSrBRpyANgIBP4CPE1pkbutGACXvLtdIjcltV4B0C3DffB7T1YN07gw2iEbag==","signatures":[{"sig":"MEQCIDtWbTKNQ+F9rmQaAuWl/ugogYu71mpdGlRt5DvNN+q+AiA8pSEcTaF5h06ZKPei2hLzxY+8R8iXU2CxzKvWogt8lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63170},"main":"./build/index.js","type":"module","_from":"file:rettime-0.6.2.tgz","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/42b80a674b4658869e13781f5dc32480/rettime-0.6.2.tgz","_integrity":"sha512-0mHwLbBt6kLnt5UOiJWWcq0LiCSrBRpyANgIBP4CPE1pkbutGACXvLtdIjcltV4B0C3DffB7T1YN07gw2iEbag==","_npmVersion":"10.8.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.6.2_1753263567740_0.240104142126508","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"rettime","version":"0.6.3","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.6.3","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"687169913fa81a417685e41b66db5760acc3e962","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.6.3.tgz","fileCount":7,"integrity":"sha512-9JZQchSQ+jf2QMr/2R+xn7nP9o1+oMZWtAUDjmXVdy4nG30uDUjA3Dpb5Xf5XeJHExDwvkXw1CJYTN0sfDoBAA==","signatures":[{"sig":"MEUCIECio4+O59MKzdHt6rtonM3v+mUoaa5Hnu2q2mi5ZvVqAiEA/y6CcTyaAvCXT2jNRN3ZPFv2R4otgreLPhDvlJDBCOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62645},"main":"./build/index.js","type":"module","_from":"file:rettime-0.6.3.tgz","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/875031fa5c862ab2ce064fb0a1b3b89a/rettime-0.6.3.tgz","_integrity":"sha512-9JZQchSQ+jf2QMr/2R+xn7nP9o1+oMZWtAUDjmXVdy4nG30uDUjA3Dpb5Xf5XeJHExDwvkXw1CJYTN0sfDoBAA==","_npmVersion":"10.8.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.6.3_1753898166350_0.887876382006602","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"rettime","version":"0.7.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.7.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"dist":{"shasum":"c040f1a65e396eaa4b8346dd96ed937edc79d96f","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.7.0.tgz","fileCount":7,"integrity":"sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==","signatures":[{"sig":"MEQCIDZibcju7g7tdPMPthQ7Ds0+f2xy979ZaaODV2NayhSyAiBBTwUmCmBMBO9M2YyeLh7A15nWlEZ53zrt5Bt4F1IXgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56777},"main":"./build/index.js","type":"module","_from":"file:rettime-0.7.0.tgz","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"scripts":{"test":"vitest","build":"tsup","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"_resolved":"/private/var/folders/x7/ch5v91h56_zbvbd1y2f600dm0000gn/T/d601beafd43945b11033b30ddc51bfe2/rettime-0.7.0.tgz","_integrity":"sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==","_npmVersion":"10.8.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vitest":"^3.1.2","typescript":"^5.8.3","@ossjs/release":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.7.0_1757082146100_0.010545926308120679","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"rettime","version":"0.8.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.8.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"homepage":"https://github.com/kettanaito/rettime#readme","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"dist":{"shasum":"0e3c39aae7671904e168fb5419beaddf23b5b01b","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.8.0.tgz","fileCount":7,"integrity":"sha512-PAXVfnS6NSYNHf2m/LeYNgJa8jOQ/BpaUIMKwwqjjX7W2XOKDLstnfykOkpTPdmZPr2y3Ju0o6tWyyUeJ5phpA==","signatures":[{"sig":"MEQCIE8cCSBwPJdH3e4cH9bP4/9nIWeZK2HQNmkvXEgZr91dAiBFk7d9S1KsX3YkZy9u9/WbGxNDScbxXcKsfkqEjqVhgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/rettime@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73782},"main":"./build/index.mjs","type":"module","_from":"file:rettime-0.8.0.tgz","types":"./build/index.d.mts","exports":{".":{"types":"./build/index.d.mts","default":"./build/index.mjs"}},"imports":{"#src/*":"./src/*"},"scripts":{"dev":"tsdown -w","test":"vitest","build":"tsdown","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b747c247-a5f6-44b3-af5e-74efc73997bf"}},"_resolved":"/private/var/folders/03/bcr7nd0x5lz0x5lkgq6vrh5w0000gn/T/bd09968e4cec12daaf786f47ac7c3117/rettime-0.8.0.tgz","_integrity":"sha512-PAXVfnS6NSYNHf2m/LeYNgJa8jOQ/BpaUIMKwwqjjX7W2XOKDLstnfykOkpTPdmZPr2y3Ju0o6tWyyUeJ5phpA==","repository":{"url":"git+https://github.com/kettanaito/rettime.git"},"_npmVersion":"11.6.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.19.0","vitest":"^3.2.4","typescript":"^5.9.2","@ossjs/release":"^0.10.0","@rolldown/binding-darwin-arm64":"1.0.0-beta.40"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.8.0_1768080065044_0.7100680291773098","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"rettime","version":"0.9.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.9.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"homepage":"https://github.com/kettanaito/rettime#readme","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"dist":{"shasum":"8cee07b4b61ed17ff80071a9500abb2bf372dc90","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.9.0.tgz","fileCount":7,"integrity":"sha512-mj6hOrwD8UA+jFqyCiSBxm8MI+qhYeSqS0aNcGfPkVmmCyHNFRr3hoQUTTZ3iBgk1x4ZNXnvSzluFZM4kcx/gA==","signatures":[{"sig":"MEUCIDzwM39plN0UI/XwWX0sP/qIUExGPIxseRD0OCof8fjUAiEA2wfCZsTKmPy11XgPKrEoK5lNN3FJLEPgZhyN/dJkSls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/rettime@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76082},"main":"./build/index.mjs","type":"module","_from":"file:rettime-0.9.0.tgz","types":"./build/index.d.mts","exports":{".":{"types":"./build/index.d.mts","default":"./build/index.mjs"}},"imports":{"#src/*":"./src/*"},"scripts":{"dev":"tsdown -w","test":"vitest","build":"tsdown","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b747c247-a5f6-44b3-af5e-74efc73997bf"}},"_resolved":"/private/var/folders/03/bcr7nd0x5lz0x5lkgq6vrh5w0000gn/T/6de8ec96c76e99426ca43dc2bf6e3ae2/rettime-0.9.0.tgz","_integrity":"sha512-mj6hOrwD8UA+jFqyCiSBxm8MI+qhYeSqS0aNcGfPkVmmCyHNFRr3hoQUTTZ3iBgk1x4ZNXnvSzluFZM4kcx/gA==","repository":{"url":"git+https://github.com/kettanaito/rettime.git"},"_npmVersion":"11.6.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.19.0","vitest":"^3.2.4","typescript":"^5.9.3","@ossjs/release":"^0.10.1","@rolldown/binding-darwin-arm64":"1.0.0-beta.40"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.9.0_1768083374954_0.6956034591708664","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"rettime","version":"0.9.1","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.9.1","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"homepage":"https://github.com/kettanaito/rettime#readme","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"dist":{"shasum":"b3ee2206abe6a75616ab0f25e46853ed3fb89e06","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.9.1.tgz","fileCount":7,"integrity":"sha512-UszoaHy8mQkQZCbEYjw+J21ZZ+VhiTAYK47Tl+wm8VSbTRronhJiheSNlRo0ED/6zUG9vbIY7gRu7ZfColdVnw==","signatures":[{"sig":"MEUCIQDVcK7CSB5v534Wbp0JcsdiwtJwiEc/I06ItzqXp5NDFgIgZzs1tH8tJsIkyjrEdp24bUYItDMUe1RTZoJr0IiAUzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/rettime@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76537},"main":"./build/index.mjs","type":"module","_from":"file:rettime-0.9.1.tgz","types":"./build/index.d.mts","exports":{".":{"types":"./build/index.d.mts","default":"./build/index.mjs"}},"imports":{"#src/*":"./src/*"},"scripts":{"dev":"tsdown -w","test":"vitest","build":"tsdown","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b747c247-a5f6-44b3-af5e-74efc73997bf"}},"_resolved":"/private/var/folders/kg/7q73ww8s3llgyl61c9z_j5g40000gn/T/44b8bd97a3c705aefacc8903f04ab752/rettime-0.9.1.tgz","_integrity":"sha512-UszoaHy8mQkQZCbEYjw+J21ZZ+VhiTAYK47Tl+wm8VSbTRronhJiheSNlRo0ED/6zUG9vbIY7gRu7ZfColdVnw==","repository":{"url":"git+https://github.com/kettanaito/rettime.git"},"_npmVersion":"11.6.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.19.0","vitest":"^3.2.4","typescript":"^5.9.3","@ossjs/release":"^0.10.1","@rolldown/binding-darwin-arm64":"1.0.0-beta.40"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.9.1_1768384768987_0.7639358899485489","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"rettime","version":"0.10.0","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"rettime@0.10.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"homepage":"https://github.com/kettanaito/rettime#readme","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"dist":{"shasum":"ad456807249c22d4a5d45056f701789575f36014","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.10.0.tgz","fileCount":11,"integrity":"sha512-C/Eiqz5Mm1QBMmeCOJrgLJrWxYH0hu0SrnnWMojEbyXOxIOXwNmRwdWB9lKZbUp2d09swibXxCmuUQcABGID6A==","signatures":[{"sig":"MEUCIQDlegDEz/zumDWzLc44ITVs9Y8XJby9vVteXugQwtHKBgIgRhZ/bHQjliqbnHKP5TVHTep1jQrvdjXrSSI9rIejVn4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/rettime@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":70685},"main":"./build/index.mjs","type":"module","_from":"file:rettime-0.10.0.tgz","types":"./build/index.d.mts","exports":{".":{"types":"./build/index.d.mts","default":"./build/index.mjs"}},"imports":{"#src/*":"./src/*"},"scripts":{"dev":"tsdown -w","test":"vitest","build":"tsdown","release":"release publish","benchmark":"vitest bench"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b747c247-a5f6-44b3-af5e-74efc73997bf"}},"_resolved":"/private/var/folders/kg/7q73ww8s3llgyl61c9z_j5g40000gn/T/486c648be58ae560c3e8b1b861237d1c/rettime-0.10.0.tgz","_integrity":"sha512-C/Eiqz5Mm1QBMmeCOJrgLJrWxYH0hu0SrnnWMojEbyXOxIOXwNmRwdWB9lKZbUp2d09swibXxCmuUQcABGID6A==","repository":{"url":"git+https://github.com/kettanaito/rettime.git"},"_npmVersion":"11.6.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.19.0","vitest":"^3.2.4","typescript":"^5.9.3","@ossjs/release":"^0.10.1","@rolldown/binding-darwin-arm64":"1.0.0-beta.40"},"_npmOperationalInternal":{"tmp":"tmp/rettime_0.10.0_1768584446356_0.16067392213537413","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"type":"module","name":"rettime","version":"0.10.1","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","main":"./build/index.mjs","types":"./build/index.d.mts","imports":{"#src/*":"./src/*"},"exports":{".":{"types":"./build/index.d.mts","default":"./build/index.mjs"}},"keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","repository":{"url":"git+https://github.com/kettanaito/rettime.git"},"devDependencies":{"@ossjs/release":"^0.10.1","@rolldown/binding-darwin-arm64":"1.0.0-beta.40","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","release":"release publish"},"_id":"rettime@0.10.1","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==","_resolved":"/private/var/folders/yz/zr09txvs5dn18vt4cn21kzl40000gn/T/c0e9ec366f53aded5d809f816b034aab/rettime-0.10.1.tgz","_from":"file:rettime-0.10.1.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==","shasum":"cc8bb9870343f282b182e5a276899c08b94914be","tarball":"https://registry.npmjs.org/rettime/-/rettime-0.10.1.tgz","fileCount":11,"unpackedSize":71052,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/rettime@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC0NdPn/0/X1XJ81W5n5IfOeFkaluyFaRJwL8kE87KvMQIgJdfoKB4IWohihPIJkN50fj2swkA4m5DV8YHFislSucE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b747c247-a5f6-44b3-af5e-74efc73997bf"}},"directories":{},"maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.10.1_1769617755039_0.12443494159366031"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-05T10:16:51.271Z","modified":"2026-01-28T16:29:15.474Z","0.1.0":"2024-08-05T10:16:51.413Z","0.1.1":"2024-08-05T10:19:23.080Z","0.1.2":"2024-08-05T10:49:34.066Z","0.2.0":"2024-08-05T11:13:45.705Z","0.3.0":"2025-04-25T17:59:54.298Z","0.4.0":"2025-04-25T19:14:16.804Z","0.4.1":"2025-04-25T19:21:06.868Z","0.5.0":"2025-04-25T19:42:44.492Z","0.5.1":"2025-04-25T19:44:47.177Z","0.5.2":"2025-04-26T07:14:09.558Z","0.5.3":"2025-04-26T08:55:24.840Z","0.5.4":"2025-04-26T14:55:36.003Z","0.6.0":"2025-07-22T09:57:04.291Z","0.6.1":"2025-07-23T08:57:11.099Z","0.6.2":"2025-07-23T09:39:27.963Z","0.6.3":"2025-07-30T17:56:06.612Z","0.7.0":"2025-09-05T14:22:26.296Z","0.8.0":"2026-01-10T21:21:05.214Z","0.9.0":"2026-01-10T22:16:15.120Z","0.9.1":"2026-01-14T09:59:29.131Z","0.10.0":"2026-01-16T17:27:26.507Z","0.10.1":"2026-01-28T16:29:15.227Z"},"bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","homepage":"https://github.com/kettanaito/rettime#readme","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"repository":{"url":"git+https://github.com/kettanaito/rettime.git"},"description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"readme":"# Rettime\n\nA type-safe marriage of `EventTarget` and `EventEmitter`.\n\n## Features\n\n- ๐ŸŽฏ **Event-based**. Control event flow: prevent defaults, stop propagation, cancel events. Something your common `Emitter` can't do.\n- ๐Ÿ—ผ **Emitter-inspired**. Emit event types and data, don't bother with creating `Event` instances. A bit less verbosity than a common `EventTarget`.\n- โ›‘๏ธ **Type-safe**. Describe the exact event types and payloads accepted by the emitter. Never emit or listen to unknown events.\n- ๐Ÿงฐ **Convenience methods** like `.emitAsPromise()` and `.emitAsGenerator()` to build more complex event-driven systems.\n- ๐Ÿ™ **Tiny**. 700B gzipped.\n\n> [!WARNING]\n> This library **does not** have performance as the end goal. In fact, since it operates on events and supports event cancellation, it will likely be _slower_ than the emitters that don't do that.\n\n## Motivation\n\n### Why not just `EventTarget`?\n\nThe `EventTarget` API is fantastic. It works in the browser and in Node.js, dispatches actual events, supports cancellation, etc. At the same time, it has a number of flaws that prevent me from using it for anything serious:\n\n- Complete lack of type safety. The `type` in `new Event(type)` is not a type argument in `lib.dom.ts`. It's always `string`. It means it's impossible to narrow it down to a literal string type to achieve type safety.\n- No concept of `.prependListener()`. There is no way to add a listener to run _first_, before other existing listeners.\n- No concept of `.removeAllListeners()`. You have to remove each individual listener by hand. Good if you own the listeners, not so good if you don't.\n- No concept of `.listenerCount()` or knowing if a dispatched event had any listeners (the `boolean` returned from `.dispatch()` indicates if the event has been prevented, not whether it had any listeners).\n- (Opinionated) Verbose. I prefer `.on()` over `.addEventListener()`. I prefer passing data than constructing `new MessageEvent()` all the time.\n\n### Why not just `Emitter` (in Node.js)?\n\nThe `Emitter` API in Node.js is great, but it has its own downsides:\n\n- Node.js-specific. `Emitter` does not work in the browser.\n- Lacks any type safety.\n- No concept of `.stopPropagation()` and `.stopImmediatePropagation()`. Those methods are defined but literally do nothing.\n\n## Install\n\n```sh\nnpm install rettime\n```\n\n## API\n\n### `TypedEvent`\n\n`TypedEvent` is a subset of `MessageEvent` that allows for type-safe event declaration.\n\n```ts\nnew TypedEvent(type: EventType, { data: DataType })\n```\n\n> The `data` argument depends on the `DataType` of your event. Use `void` if the event must not send any data.\n\n\n#### Reserved events\n\n_Reserved events_ refer to event types reserved for specific behaviors by the library.\n\n#### `*`\n\nUsing a wildcard (`*`) event type allows you to listen to _any_ events emitted on the emitter. This is similar to methods like `.onAny()` you might find in the wild.\n\n```ts\nconst emitter = new Emitter<{\n greeting: TypedEvent()\n cart: TypedEvent()\n}>()\n\nemitter\n .on('*', (event) => {\n event.type // \"greeting\" | \"cart\"\n console.log(`Caught: ${event.type}, ${event.data}`)\n })\n .on('greeting', (event) => {\n console.log(`Hello, ${event.data}!`)\n })\n\nemitter.emit('greeting', 'John')\n// \"Caught: greeting, John\"\n// \"Hello, John!\"\n````\n\nWildcard listeners are supported by all subscription methods, like `.on()`, `.once()`, `.earlyOn()`, and .`earlyOnce()`, are type-safe and fully support the listener order sensitivity.\n\n#### Custom events\n\nYou can implement custom events by extending the default `TypedEvent` class and forwarding the type arguments that it expects:\n\n```ts\nclass GreetingEvent<\n DataType = void,\n ReturnType = any,\n EventType extends string = string,\n> extends TypedEvent {\n public id: string\n}\n\nconst emitter = new Emitter<{ greeting: GreetingEvent<'john'> }>()\n\nemitter.on('greeting', (event) => {\n console.log(event instanceof GreetingEvent) // true\n console.log(event instanceof TypedEvent) // true\n console.log(event instanceof MessageEvent) // true\n\n console.log(event.type) // \"greeting\"\n console.log(event.data) // \"john\"\n console.log(event.id) // string\n})\n```\n\n### `Emitter`\n\n```ts\nnew Emitter()\n```\n\nThe `EventMap` type argument allows you describe the supported event types, their payload, and the return type of their event listeners.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ hello: TypedEvent }>()\n\nemitter.on('hello', () => 1) // โœ…\nemitter.on('hello', () => 'oops') // โŒ string not assignable to type number\n\nemitter.emit(new TypedEvent('hello', { data: 'John' })) // โœ…\nemitter.emit(new TypedEvent('hello', { data: 123 })) // โŒ number is not assignable to type string\nemitter.emit(new TypedEvent('hello')) // โŒ missing data argument of type string\n\nemitter.emit(new TypedEvent('unknown')) // โŒ \"unknown\" does not satisfy \"hello\"\n```\n\n#### Describing events\n\nThe `Emitter` class requires a type argument that describes the event map. If you do not provide that argument, adding listeners or emitting events will produce a type error as your emitter doesn't have an event map defined.\n\nAn event map is an object of the following shape:\n\n```ts\n{\n [type: string]: TypedEvent\n}\n```\n\nThe `type` is a string indicating the event type (e.g. `greet` or `ping`). The array it accepts has two members: `args` describes the arguments accepted by this event (can also be `never` for events without arguments) and `returnValue` is an optional type for the data returned from the listeners for this event.\n\nLet's say you want to define a `greet` event that expects a user name as data and returns a greeting string:\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ greet: TypedEvent }>()\n\nemitter.on('greet', (event) => {\n console.log(`Hello, ${event.data}!`)\n})\nemitter.emit(new TypedEvent('greet', { data: 'John' }))\n// \"Hello, John!\"\n```\n\nHere's another example where we define a `ping` event that has no arguments but returns a timestamp for each ping:\n\n```ts\nconst emitter = new Emitter<{ ping: TypedEvent }>()\n\nemitter.on('ping', () => Date.now())\n\nconst results = await emitter.emitAsPromise(new TypedEvent('ping'))\n// [1745658424732]\n```\n\n> [!IMPORTANT]\n> When providing type arguments to your `TypedEvents`, you **do not** need to provide the `EventType` argumentโ€”it will be inferred from your event map.\n\n### `.on(type, listener[, options])`\n\nAdds an event listener for the given event type.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ hello: TypedEvent }>()\n\nemitter.on('hello', (event) => {\n // `event` is a `TypedEvent` instance derived from `MessageEvent`.\n console.log(event.data)\n})\n```\n\nAll methods that add new listeners return an `AbortController` instance bound to that listener. You can use that controller to cancel the event handling, including mid-air:\n\n```ts\nconst controller = emitter.on('hello', listener)\ncontroller.abort(reason)\n```\n\nAll methods that add new listeners also accept an optional `options` argument. You can use it to configure event handling behavior. For example, you can provide an existing `AbortController` signal as the `options.signal` value so the attached listener abides by your controller:\n\n```ts\nemitter.on('hello', listener, { signal: controller.signal })\n```\n\n> Both the public controller of the event and your custom controller are combined using `AbortSignal.any()`.\n\n### `.once(type, listener[, options])`\n\nAdds a one-time event listener for the given event type.\n\n### `.earlyOn(type, listener[, options])`\n\nPrepends a listener for the given event type.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ hello: TypedEvent }>()\n\nemitter.on('hello', () => 1)\nemitter.earlyOn('hello', () => 2)\n\nconst results = await emitter.emitAsPromise(new TypedEvent('hello'))\n// [2, 1]\n```\n\n### `.earlyOnce(type, listener[, options])`\n\nPrepends a one-time listener for the given event type.\n\n### `.emit(type[, data])`\n\nEmits the given event with optional data.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ hello: TypedEvent }>()\n\nemitter.on('hello', (event) => console.log(event.data))\n\nemitter.emit(new TypedEvent('hello', 'John'))\n```\n\n### `.emitAsPromise(type[, data])`\n\nEmits the given event and returns a Promise that resolves with the returned data of all matching event listeners, or rejects whenever any of the matching event listeners throws an error.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ hello: TypedEvent> }>()\n\nemitter.on('hello', async (event) => {\n await sleep(100)\n return event.data + 1\n})\nemitter.on('hello', async (event) => event.data + 2)\n\nconst values = await emitter.emitAsPromise(new TypedEvent('hello', { data: 1 }))\n// [2, 3]\n```\n\n> Unlike `.emit()`, the `.emitAsPromise()` method _awaits asynchronous listeners_.\n\n### `.emitAsGenerator(type[, data])`\n\nEmits the given event and returns a generator function that exhausts all matching event listeners. Using a generator gives you granular control over what listeners are called.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ hello: TypedEvent }>()\n\nemitter.on('hello', () => 1)\nemitter.on('hello', () => 2)\n\nfor (const listenerResult of emitter.emitAsGenerator(\n new TypedEvent('hello', { data: 'John' }),\n)) {\n // Stop event emission if a listener returns a particular value.\n if (listenerResult === 1) {\n break\n }\n}\n```\n\n### `.listeners([type])`\n\nReturns the list of all event listeners matching the given event type. If no event `type` is provided, returns the list of all existing event listeners.\n\n### `.listenerCount([type])`\n\nReturns the number of the event listeners matching the given event type. If no event `type` is provided, returns the total number of existing listeners.\n\n### `.removeListener(type, listener)`\n\nRemoves the event listener for the given event type.\n\n### `.removeAllListeners([type])`\n\nRemoves all event listeners for the given event type. If no event `type` is provided, removes all existing event listeners.\n\n## Types\n\nThis library also comes with a set of helper types to make your life easier.\n\n### `Emitter.EventType`\n\nReturns the `Event` type (or its subtype) representing the given listener.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ greeting: TypedEvent<'john'> }>()\ntype GreetingEvent = Emitter.EventType\n// TypedEvent<'john'>\n```\n\n### `Emitter.ListenerType`\n\nReturns the type of the given event's listener.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ greeting: TypedEvent }>()\ntype GreetingListener = Emitter.ListenerType\n// (event: TypedEvent) => number[]\n```\n\n> The `ListenerType` helper is in itself type-safe, allowing only known event types as the second argument.\n\n### `Emitter.ListenerReturnType`\n\nReturns the return type of the given event's listener.\n\n```ts\nimport { Emitter, TypedEvent } from 'rettime'\n\nconst emitter = new Emitter<{ getTotalPrice: TypedEvent }>()\ntype CartTotal = Emitter.ListenerReturnType\n// number\n```\n","readmeFilename":"README.md"}