{"_id":"rettime","_rev":"4239245","name":"rettime","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","dist-tags":{"latest":"0.11.7"},"maintainers":[{"name":"kettanaito","email":""}],"time":{"modified":"2026-03-23T00:55:57.000Z","created":"2024-08-05T10:16:51.413Z","0.11.7":"2026-03-12T13:54:52.774Z","0.11.6":"2026-03-12T10:21:39.285Z","0.11.5":"2026-03-12T10:14:55.243Z","0.11.4":"2026-03-11T23:15:26.582Z","0.11.3":"2026-03-11T18:30:34.569Z","0.11.2":"2026-03-11T17:49:29.887Z","0.11.1":"2026-03-11T13:44:03.338Z","0.11.0":"2026-03-11T12:35:39.226Z","0.10.1":"2026-01-28T16:29:15.227Z","0.10.0":"2026-01-16T17:27:26.507Z","0.9.1":"2026-01-14T09:59:29.131Z","0.9.0":"2026-01-10T22:16:15.120Z","0.8.0":"2026-01-10T21:21:05.214Z","0.7.0":"2025-09-05T14:22:26.296Z","0.6.3":"2025-07-30T17:56:06.612Z","0.6.2":"2025-07-23T09:39:27.963Z","0.6.1":"2025-07-23T08:57:11.099Z","0.6.0":"2025-07-22T09:57:04.291Z","0.5.4":"2025-04-26T14:55:36.003Z","0.5.3":"2025-04-26T08:55:24.840Z","0.5.2":"2025-04-26T07:14:09.558Z","0.5.1":"2025-04-25T19:44:47.177Z","0.5.0":"2025-04-25T19:42:44.492Z","0.4.1":"2025-04-25T19:21:06.868Z","0.4.0":"2025-04-25T19:14:16.804Z","0.3.0":"2025-04-25T17:59:54.298Z","0.2.0":"2024-08-05T11:13:45.705Z","0.1.2":"2024-08-05T10:49:34.066Z","0.1.1":"2024-08-05T10:19:23.080Z","0.1.0":"2024-08-05T10:16:51.413Z"},"users":{},"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"repository":{"url":"git+https://github.com/kettanaito/rettime.git"},"versions":{"0.11.7":{"type":"module","name":"rettime","version":"0.11.7","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-rc.9","publint":"^0.3.18","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","lint":"publint","release":"release publish"},"_id":"rettime@0.11.7","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-DoAm1WjR1eH7z8sHPtvvUMIZh4/CSKkGCz6CxPqOrEAnOGtOuHSnSE9OC+razqxKuf4ub7pAYyl/vZV0vGs5tg==","_resolved":"/private/var/folders/t5/f77_gwnj6p95qxy9py3fckx00000gn/T/af725b06ebd97a708a378889603b7029/rettime-0.11.7.tgz","_from":"file:rettime-0.11.7.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"93ba5b4619aa19d18e9d21ea3a6b3b9845a4f071","size":19333,"noattachment":false,"key":"/rettime/-/rettime-0.11.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.11.7.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.11.7_1773323692628_0.24890452938712926"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-12T13:54:52.774Z","publish_time":1773323692774,"_source_registry_name":"default","_cnpm_publish_time":1773323692774},"0.11.6":{"type":"module","name":"rettime","version":"0.11.6","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-rc.9","publint":"^0.3.18","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","lint":"publint","release":"release publish"},"_id":"rettime@0.11.6","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-2Mp+0ie3Ql9ivj2BbdCboaaLzRoz8B2WEmEvJTKvOmDAnpH+gGb1/urWGJRG4KPIvA0wfYSPsbIj3TBFTfTxew==","_resolved":"/private/var/folders/t5/f77_gwnj6p95qxy9py3fckx00000gn/T/fb8838f50741d02ebb7c7a7e8cf01f6f/rettime-0.11.6.tgz","_from":"file:rettime-0.11.6.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"d617bed8499c144694b38ed32ebd5c0eec4dfa35","size":18551,"noattachment":false,"key":"/rettime/-/rettime-0.11.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.11.6.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.11.6_1773310899134_0.05183886215155398"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-12T10:21:39.285Z","publish_time":1773310899285,"_source_registry_name":"default","_cnpm_publish_time":1773310899285},"0.11.5":{"type":"module","name":"rettime","version":"0.11.5","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-rc.9","publint":"^0.3.18","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","lint":"publint","release":"release publish"},"_id":"rettime@0.11.5","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-ZI9KTgrf3E9aYJHt9cp14+9eQ7dtTN5K4r7yRQGiJdYvKDQo4FPZ9yQGNs45jUyUuSc0+OlCbc12RrViK78wzA==","_resolved":"/private/var/folders/t5/f77_gwnj6p95qxy9py3fckx00000gn/T/d822668b0ebf2afa8cb5183318857426/rettime-0.11.5.tgz","_from":"file:rettime-0.11.5.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"edc1e9e20eda0c002344916c834e029833addf3b","size":18153,"noattachment":false,"key":"/rettime/-/rettime-0.11.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.11.5.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.11.5_1773310495107_0.5431599122819983"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-12T10:14:55.243Z","publish_time":1773310495243,"_source_registry_name":"default","_cnpm_publish_time":1773310495243},"0.11.4":{"type":"module","name":"rettime","version":"0.11.4","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-rc.9","publint":"^0.3.18","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","lint":"publint","release":"release publish"},"_id":"rettime@0.11.4","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-qseCnRZaMcvD+4e5f6/lvt5EgRk4TFSmnvqCzDGl2FcI28J69DUjGjzYq7DlKwcuGwpgAmGJqUR48O8aGkvFDg==","_resolved":"/private/var/folders/t5/f77_gwnj6p95qxy9py3fckx00000gn/T/1b9d63a41ea16ad08ed6e80476498e29/rettime-0.11.4.tgz","_from":"file:rettime-0.11.4.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"d9dbdab2b21cb90a355390215735772830f488a1","size":17980,"noattachment":false,"key":"/rettime/-/rettime-0.11.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.11.4.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.11.4_1773270926408_0.7105007442782401"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-11T23:15:26.582Z","publish_time":1773270926582,"_source_registry_name":"default","_cnpm_publish_time":1773270926582},"0.11.3":{"type":"module","name":"rettime","version":"0.11.3","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","publint":"^0.3.18","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","lint":"publint","release":"release publish"},"_id":"rettime@0.11.3","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-omnQajPRj+xeVZX8HhFfeOmN8aCRumU1zkmYpKEb8LEWC32ynMU2W9PVCKhdCox+57t7ggO0i7PowvOhyMWhag==","_resolved":"/private/var/folders/t5/f77_gwnj6p95qxy9py3fckx00000gn/T/3116758f75d6b02d49b99ce317f365bf/rettime-0.11.3.tgz","_from":"file:rettime-0.11.3.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"7a99996111963a104bcbb9fe9f50f0c24123e14a","size":18019,"noattachment":false,"key":"/rettime/-/rettime-0.11.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.11.3.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.11.3_1773253834431_0.2576983078697199"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-11T18:30:34.569Z","publish_time":1773253834569,"_source_registry_name":"default","_cnpm_publish_time":1773253834569},"0.11.2":{"type":"module","name":"rettime","version":"0.11.2","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","publint":"^0.3.18","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","lint":"publint","release":"release publish"},"_id":"rettime@0.11.2","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-rX5XzQGTaB+McAs8b3WYDDaaGJ6IS2nwFLHl6skabCE373C5G+7KNTqbFbvXzrYViYcfDuKOVw1c9KnUuhey4w==","_resolved":"/private/var/folders/t5/f77_gwnj6p95qxy9py3fckx00000gn/T/099c5f9f3ed403f10a7c9aeced06d8b3/rettime-0.11.2.tgz","_from":"file:rettime-0.11.2.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"f72cbb49b4f31b1c0bd3c05d2465747f126799f3","size":17992,"noattachment":false,"key":"/rettime/-/rettime-0.11.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.11.2.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.11.2_1773251369713_0.7029487194160495"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-11T17:49:29.887Z","publish_time":1773251369887,"_source_registry_name":"default","_cnpm_publish_time":1773251369887},"0.11.1":{"type":"module","name":"rettime","version":"0.11.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","publint":"^0.3.18","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","lint":"publint","release":"release publish"},"_id":"rettime@0.11.1","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-I2HVQTm69PiYe1lIncxvj7C8FRE84xNoaB1L66UXiT6Od/Hb5X7dU+ymV3WtxMzA2rayJvTINwRN89r/m83X4g==","_resolved":"/private/var/folders/t5/f77_gwnj6p95qxy9py3fckx00000gn/T/4f36704512e3dd65193d9e129c8a36c9/rettime-0.11.1.tgz","_from":"file:rettime-0.11.1.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"73d43cf1af95accd8a121274befb364513c825e2","size":16925,"noattachment":false,"key":"/rettime/-/rettime-0.11.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.11.1.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.11.1_1773236643158_0.756919720575761"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-11T13:44:03.338Z","publish_time":1773236643338,"_source_registry_name":"default","_cnpm_publish_time":1773236643338},"0.11.0":{"type":"module","name":"rettime","version":"0.11.0","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","publint":"^0.3.18","tsdown":"^0.19.0","typescript":"^5.9.3","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","lint":"publint","release":"release publish"},"_id":"rettime@0.11.0","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-uZcfE9dddi8fFH7KhDmtlFOr38DvXKmrY7ZIxqXi5JG4ESWMYra4cTI9y5kq4JURxgOewitf3reLGFh0eGctbw==","_resolved":"/private/var/folders/t5/f77_gwnj6p95qxy9py3fckx00000gn/T/64691d41a17d675c3e334832046b9e49/rettime-0.11.0.tgz","_from":"file:rettime-0.11.0.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"4e6bdb71d770c67b165f3216e4c7fc92cde42331","size":17124,"noattachment":false,"key":"/rettime/-/rettime-0.11.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.11.0.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.11.0_1773232539041_0.4386532945459427"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-11T12:35:39.226Z","publish_time":1773232539226,"_source_registry_name":"default","_cnpm_publish_time":1773232539226},"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":{"shasum":"cc8bb9870343f282b182e5a276899c08b94914be","size":14902,"noattachment":false,"key":"/rettime/-/rettime-0.10.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.10.1.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.10.1_1769617755039_0.12443494159366031"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-28T16:29:15.227Z","publish_time":1769617755227,"_source_registry_name":"default","_cnpm_publish_time":1769617755227},"0.10.0":{"type":"module","name":"rettime","version":"0.10.0","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.0","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-C/Eiqz5Mm1QBMmeCOJrgLJrWxYH0hu0SrnnWMojEbyXOxIOXwNmRwdWB9lKZbUp2d09swibXxCmuUQcABGID6A==","_resolved":"/private/var/folders/kg/7q73ww8s3llgyl61c9z_j5g40000gn/T/486c648be58ae560c3e8b1b861237d1c/rettime-0.10.0.tgz","_from":"file:rettime-0.10.0.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"shasum":"ad456807249c22d4a5d45056f701789575f36014","size":14770,"noattachment":false,"key":"/rettime/-/rettime-0.10.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.10.0.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.10.0_1768584446356_0.16067392213537413"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-16T17:27:26.507Z","publish_time":1768584446507,"_source_registry_name":"default","_cnpm_publish_time":1768584446507},"0.9.1":{"type":"module","name":"rettime","version":"0.9.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.9.1","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-UszoaHy8mQkQZCbEYjw+J21ZZ+VhiTAYK47Tl+wm8VSbTRronhJiheSNlRo0ED/6zUG9vbIY7gRu7ZfColdVnw==","_resolved":"/private/var/folders/kg/7q73ww8s3llgyl61c9z_j5g40000gn/T/44b8bd97a3c705aefacc8903f04ab752/rettime-0.9.1.tgz","_from":"file:rettime-0.9.1.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"shasum":"b3ee2206abe6a75616ab0f25e46853ed3fb89e06","size":13827,"noattachment":false,"key":"/rettime/-/rettime-0.9.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.9.1.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.9.1_1768384768987_0.7639358899485489"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-14T09:59:29.131Z","publish_time":1768384769131,"_source_registry_name":"default","_cnpm_publish_time":1768384769131},"0.9.0":{"type":"module","name":"rettime","version":"0.9.0","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.9.0","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-mj6hOrwD8UA+jFqyCiSBxm8MI+qhYeSqS0aNcGfPkVmmCyHNFRr3hoQUTTZ3iBgk1x4ZNXnvSzluFZM4kcx/gA==","_resolved":"/private/var/folders/03/bcr7nd0x5lz0x5lkgq6vrh5w0000gn/T/6de8ec96c76e99426ca43dc2bf6e3ae2/rettime-0.9.0.tgz","_from":"file:rettime-0.9.0.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"shasum":"8cee07b4b61ed17ff80071a9500abb2bf372dc90","size":13730,"noattachment":false,"key":"/rettime/-/rettime-0.9.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.9.0.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.9.0_1768083374954_0.6956034591708664"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-10T22:16:15.120Z","publish_time":1768083375120,"_source_registry_name":"default","_cnpm_publish_time":1768083375120},"0.8.0":{"type":"module","name":"rettime","version":"0.8.0","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.0","@rolldown/binding-darwin-arm64":"1.0.0-beta.40","tsdown":"^0.19.0","typescript":"^5.9.2","vitest":"^3.2.4"},"scripts":{"dev":"tsdown -w","test":"vitest","benchmark":"vitest bench","build":"tsdown","release":"release publish"},"_id":"rettime@0.8.0","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"homepage":"https://github.com/kettanaito/rettime#readme","_integrity":"sha512-PAXVfnS6NSYNHf2m/LeYNgJa8jOQ/BpaUIMKwwqjjX7W2XOKDLstnfykOkpTPdmZPr2y3Ju0o6tWyyUeJ5phpA==","_resolved":"/private/var/folders/03/bcr7nd0x5lz0x5lkgq6vrh5w0000gn/T/bd09968e4cec12daaf786f47ac7c3117/rettime-0.8.0.tgz","_from":"file:rettime-0.8.0.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"shasum":"0e3c39aae7671904e168fb5419beaddf23b5b01b","size":13056,"noattachment":false,"key":"/rettime/-/rettime-0.8.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.8.0.tgz"},"_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":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.8.0_1768080065044_0.7100680291773098"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-10T21:21:05.214Z","publish_time":1768080065214,"_source_registry_name":"default","_cnpm_publish_time":1768080065214},"0.7.0":{"type":"module","name":"rettime","version":"0.7.0","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","main":"./build/index.js","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.7.0","_integrity":"sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==","_resolved":"/private/var/folders/x7/ch5v91h56_zbvbd1y2f600dm0000gn/T/d601beafd43945b11033b30ddc51bfe2/rettime-0.7.0.tgz","_from":"file:rettime-0.7.0.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"c040f1a65e396eaa4b8346dd96ed937edc79d96f","size":11516,"noattachment":false,"key":"/rettime/-/rettime-0.7.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.7.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.7.0_1757082146100_0.010545926308120679"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-05T14:22:26.296Z","publish_time":1757082146296,"_source_registry_name":"default","_cnpm_publish_time":1757082146296},"0.6.3":{"type":"module","name":"rettime","version":"0.6.3","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","main":"./build/index.js","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.6.3","_integrity":"sha512-9JZQchSQ+jf2QMr/2R+xn7nP9o1+oMZWtAUDjmXVdy4nG30uDUjA3Dpb5Xf5XeJHExDwvkXw1CJYTN0sfDoBAA==","_resolved":"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/875031fa5c862ab2ce064fb0a1b3b89a/rettime-0.6.3.tgz","_from":"file:rettime-0.6.3.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"687169913fa81a417685e41b66db5760acc3e962","size":11986,"noattachment":false,"key":"/rettime/-/rettime-0.6.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.6.3.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.6.3_1753898166350_0.887876382006602"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-30T17:56:06.612Z","publish_time":1753898166612,"_source_registry_name":"default","_cnpm_publish_time":1753898166612},"0.6.2":{"type":"module","name":"rettime","version":"0.6.2","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","main":"./build/index.js","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.6.2","_integrity":"sha512-0mHwLbBt6kLnt5UOiJWWcq0LiCSrBRpyANgIBP4CPE1pkbutGACXvLtdIjcltV4B0C3DffB7T1YN07gw2iEbag==","_resolved":"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/42b80a674b4658869e13781f5dc32480/rettime-0.6.2.tgz","_from":"file:rettime-0.6.2.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"2ed441315e92fcf471b40a8dee0b6a0d2e09bb89","size":12019,"noattachment":false,"key":"/rettime/-/rettime-0.6.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.6.2.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.6.2_1753263567740_0.240104142126508"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-23T09:39:27.963Z","publish_time":1753263567963,"_source_registry_name":"default","_cnpm_publish_time":1753263567963},"0.6.1":{"type":"module","name":"rettime","version":"0.6.1","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","main":"./build/index.js","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.6.1","_integrity":"sha512-AXtrVJJ/uQZA/b/k7C3cpmEq2QBHmdRPO6S9TXcynfXiV7nVpTZX2SzYwh36Y1DA7fE0k4kCTA1Y/K9P+nMVTQ==","_resolved":"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/ab4ce6dcc1188d1fd0693cdd4c1b95aa/rettime-0.6.1.tgz","_from":"file:rettime-0.6.1.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"30ae4312d29e4107708ae795de3ec3059d75e19f","size":12001,"noattachment":false,"key":"/rettime/-/rettime-0.6.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.6.1.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.6.1_1753261030928_0.908015165855458"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-23T08:57:11.099Z","publish_time":1753261031099,"_source_registry_name":"default","_cnpm_publish_time":1753261031099},"0.6.0":{"type":"module","name":"rettime","version":"0.6.0","description":"A type-safe marriage of `EventTarget` and `EventEmitter`.","main":"./build/index.js","types":"./build/index.d.ts","imports":{"#src/*":"./src/*"},"keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.6.0","_integrity":"sha512-8PCUFeUm2P7Ee8IeMGMzdM2vkYCymGk65WNxDiGyhmR0+H7KtsOAvFtayffAKdC5GhbctOgH9FNC3XEYAdfr1w==","_resolved":"/private/var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/3ad8df131640ca6f63c1e32eacedb062/rettime-0.6.0.tgz","_from":"file:rettime-0.6.0.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"9f158dbcafab9665de39d4928b64ba6945e63579","size":11994,"noattachment":false,"key":"/rettime/-/rettime-0.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.6.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.6.0_1753178224114_0.4814578581201472"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-22T09:57:04.291Z","publish_time":1753178224291,"_source_registry_name":"default","_cnpm_publish_time":1753178224291},"0.5.4":{"type":"module","name":"rettime","version":"0.5.4","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.5.4","_integrity":"sha512-coZO1PULmD+l6qPlSjAoNLEPNV0FXQ6aI44BkBdUN5M17CCG+1vH+stpIgAy7fpNMTu47kxMwiYLP/LBP49FxQ==","_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/b640c9ef98669214a965a9bd79a4a53a/rettime-0.5.4.tgz","_from":"file:rettime-0.5.4.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"a73766a39ee69c78ed6abad0bd97778d9e812572","size":12689,"noattachment":false,"key":"/rettime/-/rettime-0.5.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.5.4.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.5.4_1745679335814_0.7570916122826254"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-26T14:55:36.003Z","publish_time":1745679336003,"_source_registry_name":"default","_cnpm_publish_time":1745679336003},"0.5.3":{"type":"module","name":"rettime","version":"0.5.3","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.5.3","_integrity":"sha512-g+3WhRzKaLq4YD/Q3UtiF5r+u+e8VxDE8p1FmcZ0pjbU0cPZm0XA/KmqCXwwNc7/kN+fU8YppT/kMVm/ZQuU+Q==","_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/ad9fe58335b6e10260a1f826c38d21f9/rettime-0.5.3.tgz","_from":"file:rettime-0.5.3.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"4d93a1db01a1a19127ba15beb7ff57a258352b35","size":11730,"noattachment":false,"key":"/rettime/-/rettime-0.5.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.5.3.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.5.3_1745657724624_0.9184423336336918"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-26T08:55:24.840Z","publish_time":1745657724840,"_source_registry_name":"default","_cnpm_publish_time":1745657724840},"0.5.2":{"type":"module","name":"rettime","version":"0.5.2","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.5.2","_integrity":"sha512-316jWRwO6ThC/o43hy1Td/vDb1REL45z/AiH5RgQf1ygGKwdh4JqiHodk1iuHQKvxLr4cYPcg2jFlZCf8GdaOQ==","_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/da8fe53fe7a5517a94d0bca9da16a522/rettime-0.5.2.tgz","_from":"file:rettime-0.5.2.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"52a4578327af8d35b33b9a7d5acbd85d2619c400","size":10250,"noattachment":false,"key":"/rettime/-/rettime-0.5.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.5.2.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.5.2_1745651649381_0.335392916551128"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-26T07:14:09.558Z","publish_time":1745651649558,"_source_registry_name":"default","_cnpm_publish_time":1745651649558},"0.5.1":{"type":"module","name":"rettime","version":"0.5.1","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.5.1","_integrity":"sha512-7uRCcNUf3I1E6lmgrO1u/R03ra4I8U/Ifvd+J8uqLBiGXEU3eSf/jlD0sDNvHqf93fb0VL3lJLGz9qeNHJahEA==","_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/0dd60ceff443b8152a53142f3355821b/rettime-0.5.1.tgz","_from":"file:rettime-0.5.1.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"a98565a0cd894f78014f05330a2b06f3a219788f","size":10207,"noattachment":false,"key":"/rettime/-/rettime-0.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.5.1.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.5.1_1745610286991_0.9836243102174056"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-25T19:44:47.177Z","publish_time":1745610287177,"_source_registry_name":"default","_cnpm_publish_time":1745610287177},"0.5.0":{"type":"module","name":"rettime","version":"0.5.0","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.1.2"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.5.0","_integrity":"sha512-fKCxgxY0gepa5ZgCD3C6tmde2m9NLQPAYRWa2A4Quv4L+kMYG70BzK19NCp2zVCZkJ+itnhx9StkaLr8LCHJTQ==","_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/3d655f48aa7898a90dd2b976f86fa911/rettime-0.5.0.tgz","_from":"file:rettime-0.5.0.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"1d1f5353b0c12921066bf304753bbd7d0bc06450","size":10229,"noattachment":false,"key":"/rettime/-/rettime-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.5.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.5.0_1745610164303_0.42850401521649184"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-25T19:42:44.492Z","publish_time":1745610164492,"_source_registry_name":"default","_cnpm_publish_time":1745610164492},"0.4.1":{"type":"module","name":"rettime","version":"0.4.1","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.2.4","typescript":"^5.5.4","vitest":"^2.0.5"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.4.1","_integrity":"sha512-IKUpJKi8Msb5HbqV6CUZ4lP+Xc+N4yZFEQ9aK5HS0eiIJtPMJiVXzs0DE3i34Glh0SwuLuPpcHPy1P/Jdqp0zQ==","_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/07ab6d59653b6b5a28e5447ba0c29d66/rettime-0.4.1.tgz","_from":"file:rettime-0.4.1.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"b0689d5ba3399e49294018f25228b52e170ee90f","size":8402,"noattachment":false,"key":"/rettime/-/rettime-0.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.4.1.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.4.1_1745608866689_0.18306936603934054"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-25T19:21:06.868Z","publish_time":1745608866868,"_source_registry_name":"default","_cnpm_publish_time":1745608866868},"0.4.0":{"type":"module","name":"rettime","version":"0.4.0","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.2.4","typescript":"^5.5.4","vitest":"^2.0.5"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.4.0","_integrity":"sha512-sZoFtn84HPpag4l1fREqD0+wiU4ZY2NJmWOYgXSF4xw78QwYby/FQbdNbugrBCIpPA1/imjxKHJT09z0W4Dy7A==","_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/e82a217ff082402ce3859f0e57d013a6/rettime-0.4.0.tgz","_from":"file:rettime-0.4.0.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"666c0c4bd0c801fcd2cf2f3e6880cf825d1b667c","size":8398,"noattachment":false,"key":"/rettime/-/rettime-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.4.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.4.0_1745608456561_0.646667633326883"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-25T19:14:16.804Z","publish_time":1745608456804,"_source_registry_name":"default","_cnpm_publish_time":1745608456804},"0.3.0":{"type":"module","name":"rettime","version":"0.3.0","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.2.4","typescript":"^5.5.4","vitest":"^2.0.5"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.3.0","_integrity":"sha512-0L6LskLD5IFtUeHCe/6OeFysRQOW755L7wLZyJEe0vx/qL7d5N52Vg0wPUj2hYN/HT8W8mJdtzhptEQm4fh//g==","_resolved":"/private/var/folders/7g/cnfrzbd555q9lmpsr1byngs80000gn/T/840cc6733042fd5f353d31703d64b1ec/rettime-0.3.0.tgz","_from":"file:rettime-0.3.0.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"shasum":"9a34301c7a05124231c75974ad7df249bf9544b0","size":7906,"noattachment":false,"key":"/rettime/-/rettime-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.3.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rettime_0.3.0_1745603994075_0.6340454655494647"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-25T17:59:54.298Z","publish_time":1745603994298,"_source_registry_name":"default","_cnpm_publish_time":1745603994298},"0.2.0":{"type":"module","name":"rettime","version":"0.2.0","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.2.4","typescript":"^5.5.4","vitest":"^2.0.5"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.2.0","_integrity":"sha512-wpjT0uUZTu41YPIMLuzDQugF0D3hS8rFh5a7gFpiiZfKvj3PTiOKx8GlQ6+X+A1UquFsA8z8Pmxi7SnttU5MlQ==","_resolved":"/private/var/folders/zn/hj183dg15s713b47j2wlhwzw0000gn/T/180b1ce16acdee722dac47fdba7b0b61/rettime-0.2.0.tgz","_from":"file:rettime-0.2.0.tgz","_nodeVersion":"18.20.4","_npmVersion":"10.7.0","dist":{"shasum":"ae4691ba13fb7a0e1c7b7a29635563eda001369c","size":6915,"noattachment":false,"key":"/rettime/-/rettime-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.2.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rettime_0.2.0_1722856425423_0.41225775502931206"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-08-05T11:13:45.705Z","publish_time":1722856425705,"_source_registry_name":"default","_cnpm_publish_time":1722856425705},"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":""}],"dist":{"shasum":"be56bf31349451a9b801624504119fff13833c52","size":6706,"noattachment":false,"key":"/rettime/-/rettime-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.1.2.tgz"},"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"},"_cnpmcore_publish_time":"2024-08-05T10:49:34.066Z","publish_time":1722854974066,"_source_registry_name":"default","_cnpm_publish_time":1722854974066},"0.1.1":{"type":"module","name":"rettime","version":"0.1.1","description":"Type-safe dependency-free EventTarget-inspired event emitter for browser and Node.js","main":"./build/index.js","types":"./build/index.d.ts","keywords":["emitter","event","dispatcher","type-safe","strict","event-target"],"author":{"name":"Artem Zakharchenko","email":"me@kettanaito.com"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.8.1","tsup":"^8.2.4","typescript":"^5.5.4","vitest":"^2.0.5"},"scripts":{"test":"vitest","benchmark":"vitest bench","build":"tsup","release":"release publish"},"_id":"rettime@0.1.1","_integrity":"sha512-GBunkGXhsD+1PAhaz83KvwbZtVNZk8cFI8Y5J5gQstX2KZM4PLk38DVxXJjZI6ZtdgSe8zLGErlJ9EbS+1egCg==","_resolved":"/private/var/folders/zn/hj183dg15s713b47j2wlhwzw0000gn/T/34a41dfab207b5c5ccdf2f9480a12e41/rettime-0.1.1.tgz","_from":"file:rettime-0.1.1.tgz","_nodeVersion":"18.20.4","_npmVersion":"10.7.0","dist":{"shasum":"cc0f5c756063bef00430ff0b29183179faa6ce21","size":5845,"noattachment":false,"key":"/rettime/-/rettime-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.1.1.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rettime_0.1.1_1722853162930_0.9532131608468908"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-08-05T10:19:23.080Z","publish_time":1722853163080,"_source_registry_name":"default","_cnpm_publish_time":1722853163080},"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":""}],"dist":{"shasum":"411fe2db26b0bf5ff343946c2f42be3250d742b2","size":5150,"noattachment":false,"key":"/rettime/-/rettime-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rettime/download/rettime-0.1.0.tgz"},"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"},"_cnpmcore_publish_time":"2024-08-05T10:16:51.413Z","publish_time":1722853011413,"_source_registry_name":"default","_cnpm_publish_time":1722853011413}},"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<DataType, ReturnType, EventType>(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<string>()\n  cart: TypedEvent<CartItem[]>()\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<DataType, ReturnType, EventType> {\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<EventMap>()\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<string, number> }>()\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<string, string> }>()\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<void, number> }>()\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<string> }>()\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<void, number> }>()\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<string> }>()\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<number, Promise<number>> }>()\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<string, number> }>()\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 comes with a set of helper types for building absurdly strongly typed emitters.\n\n### `EventMap`\n\n#### `EventMap.EventTypes`\n\nReturns a union of all the event types from the given event map.\n\n```ts\ntype MyEventMap = { greeting: TypedEvent; handshake: TypedEvent }\n\ntype Events = EventMap.EventTypes<MyEventMap>\n// \"greeting\" | \"handshake\"\n```\n\n\n#### `EventMap.Events`\n\nReturns a union of all public events from the given event map.\n\n```ts\nclass GreetingEvent extends TypedEvent {}\n\ntype MyEventMap = { greeting: GreetingEvent; handshake: TypedEvent }\n\ntype Events = EventMap.Events<MyEventMap>\n// GreetingEvent | TypedEvent\n```\n\n#### `EventMap.Event`\n\nReturns the `Event` type (or its subtype) representing the given event type.\n\n```ts\nimport { EventMap, TypedEvent } from 'rettime'\n\ntype MyEventMap = { greeting: TypedEvent<'john'> }\ntype GreetingEvent = EventMap.Event<MyEventMap, 'greeting'>\n// TypedEvent<'john'>\n```\n\n#### `EventMap.EventData`\n\nReturns the data type of the given event type.\n\n```ts\nimport { EventMap, TypedEvent } from 'rettime'\n\ntype MyEventMap = { greeting: TypedEvent<'hello'> }\ntype GreetingData = EventMap.EventData<MyEventMap, 'greeting'>\n// \"hello\"\n```\n\n#### `EventMap.Listener`\n\nReturns the type of the given event's listener.\n\n```ts\nimport { EventMap, TypedEvent } from 'rettime'\n\ntype MyEventMap = { greeting: TypedEvent<string, number[]> }\ntype GreetingListener = EventMap.Listener<MyEventMap, 'greeting'>\n// (event: TypedEvent<string>) => number[]\n```\n\n#### `EventMap.ListenerReturnType`\n\nReturns the return type of the given event's listener.\n\n```ts\nimport { EventMap, TypedEvent } from 'rettime'\n\ntype MyEventMap = { getTotalPrice: TypedEvent<Cart, number> }\ntype CartTotal = EventMap.ListenerReturnType<MyEventMap, 'getTotalPrice'>\n// number\n```\n\n### `Emitter`\n\n#### `Emitter.AllEventTypes`\n\nReturns a union of all the event types, both public and reserved, for the given emitter.\n\n```ts\nconst emitter = new Emitter<{ greeting: TypedEvent, handshake: TypedEvent }>()\n\ntype Events = Emitter.AllEventTypes<typeof emitter>\n// \"*\" | \"greeting\" | \"handshake\"\n```\n\n#### `Emitter.PublicEventTypes`\n\nReturns a union of the public event types for the given emitter.\n\n```ts\nconst emitter = new Emitter<{ greeting: TypedEvent, handshake: TypedEvent }>()\n\ntype Events = Emitter.PublicEventTypes<typeof emitter>\n// \"greeting\" | \"handshake\"\n```\n\n> Public events exclude reserved events like `*`.\n\n#### `Emitter.Events`\n\nReturns a union of all public events for the given emitter.\n\n```ts\nclass GreetingEvent extends TypedEvent {}\n\nconst emitter = new Emitter<{ greeting: GreetingEvent, handshake: TypedEvent }>()\n\ntype Events = Emitter.Events<typeof emitter>\n// GreetingEvent | TypedEvent\n```\n\n#### `Emitter.Event`\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.Event<typeof emitter, 'greeting'>\n// TypedEvent<'john'>\n```\n\n#### `Emitter.Listener`\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<string, number[]> }>()\ntype GreetingListener = Emitter.Listener<typeof emitter, 'greeting'>\n// (event: TypedEvent<string>) => number[]\n```\n\n> The `Listener` 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<Cart, number> }>()\ntype CartTotal = Emitter.ListenerReturnType<typeof emitter, 'getTotalPrice'>\n// number\n```\n","_attachments":{},"homepage":"https://github.com/kettanaito/rettime#readme","bugs":{"url":"https://github.com/kettanaito/rettime/issues"},"license":"MIT"}