{"_id":"signal-utils","_rev":"4207630","name":"signal-utils","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","dist-tags":{"latest":"0.21.1"},"maintainers":[{"name":"nullvoxpopuli","email":""}],"time":{"modified":"2026-03-04T17:04:11.000Z","created":"2024-03-31T20:14:27.374Z","0.21.1":"2024-12-23T13:50:40.973Z","0.21.0":"2024-12-10T22:32:46.068Z","0.20.0":"2024-10-08T02:14:54.359Z","0.19.0":"2024-10-02T22:29:53.575Z","0.18.0":"2024-07-03T19:06:04.588Z","0.17.0":"2024-07-03T17:37:45.193Z","0.16.0":"2024-05-13T20:56:54.815Z","0.14.0":"2024-04-21T15:09:12.099Z","0.13.0":"2024-04-12T19:01:47.409Z","0.12.2":"2024-04-09T16:57:10.395Z","0.12.1":"2024-04-07T19:58:37.885Z","0.12.0":"2024-04-07T19:06:17.593Z","0.11.0":"2024-04-07T17:41:52.979Z","0.10.0":"2024-04-07T03:56:59.631Z","0.9.0":"2024-04-07T00:28:50.537Z","0.8.0":"2024-04-06T21:52:56.412Z","0.7.0":"2024-04-03T21:21:59.912Z","0.6.0":"2024-04-02T21:23:12.565Z","0.5.0":"2024-04-02T18:05:34.201Z","0.4.0":"2024-04-02T14:31:03.880Z","0.3.1":"2024-04-02T01:25:33.209Z","0.3.0":"2024-04-01T23:45:48.508Z","0.2.0":"2024-04-01T21:49:07.382Z","0.1.0":"2024-04-01T14:01:32.740Z","0.0.1":"2024-04-01T03:47:40.838Z","0.0.0":"2024-03-31T20:14:27.374Z"},"users":{},"author":{"name":"NullVoxPopuli"},"repository":{"type":"git","url":"git+ssh://git@github.com/proposal-signals/signal-utils.git"},"versions":{"0.21.1":{"name":"signal-utils","version":"0.21.1","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/proposal-signals/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"peerDependencies":{"signal-polyfill":"^0.2.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"volta":{"node":"22.0.0","pnpm":"9.0.6"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/proposal-signals/signal-utils/issues"},"homepage":"https://github.com/proposal-signals/signal-utils#readme","_id":"signal-utils@0.21.1","_integrity":"sha512-i9cdLSvVH4j8ql8mz2lyrA93xL499P8wEbIev3ldSriXeUwqh+wM4Q5VPhIZ19gPtIS4BOopJuKB8l1+wH9LCg==","_resolved":"/tmp/09a0b8e70fca1cfa803bd555f947fbc2/signal-utils-0.21.1.tgz","_from":"file:signal-utils-0.21.1.tgz","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"shasum":"1060703b4196e16cbf039c8b9eaa2cb5a99f58cd","size":90589,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.21.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.21.1.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/signal-utils_0.21.1_1734961840680_0.8040517074603271"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-12-23T13:50:40.973Z","publish_time":1734961840973,"_source_registry_name":"default","_cnpm_publish_time":1734961840973},"0.21.0":{"name":"signal-utils","version":"0.21.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/proposal-signals/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"peerDependencies":{"signal-polyfill":"^0.2.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"volta":{"node":"22.0.0","pnpm":"9.0.6"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/proposal-signals/signal-utils/issues"},"homepage":"https://github.com/proposal-signals/signal-utils#readme","_id":"signal-utils@0.21.0","_integrity":"sha512-YG60nBvF+jiEGfg6KqM6YeiB6jGibmJXu1xEByTCr8hd5uASf3xbEats5f0VJKOq8iFKK8U+CK5HCOc6+F2HXQ==","_resolved":"/tmp/79ee7af0ce59c2409b011dcf0a5bd64f/signal-utils-0.21.0.tgz","_from":"file:signal-utils-0.21.0.tgz","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"shasum":"29acbe322cb66bc4cf96529761f298fdb6ca197a","size":90387,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.21.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.21.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/signal-utils_0.21.0_1733869965883_0.03832138609251867"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-12-10T22:32:46.068Z","publish_time":1733869966068,"_source_registry_name":"default","_cnpm_publish_time":1733869966068},"0.20.0":{"name":"signal-utils","version":"0.20.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/proposal-signals/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"peerDependencies":{"signal-polyfill":"^0.2.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"volta":{"node":"22.0.0","pnpm":"9.0.6"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/proposal-signals/signal-utils/issues"},"homepage":"https://github.com/proposal-signals/signal-utils#readme","_id":"signal-utils@0.20.0","_integrity":"sha512-EH1pz4/hfwHOKX5Zdgo62RONuo0pHBWN0zxlBiQHmC1W2CffwNZdcNTvFcBT3QZppdfjx2MSmGYJWvCuLUN8FQ==","_resolved":"/tmp/c367810bcafccecac52318d7c562695e/signal-utils-0.20.0.tgz","_from":"file:signal-utils-0.20.0.tgz","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"shasum":"479d710ba9d94c488ef57e1f5f6deaf51c325696","size":86407,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.20.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.20.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.20.0_1728353694048_0.6401956141873517"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-10-08T02:14:54.359Z","publish_time":1728353694359,"_source_registry_name":"default","_cnpm_publish_time":1728353694359},"0.19.0":{"name":"signal-utils","version":"0.19.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/proposal-signals/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"peerDependencies":{"signal-polyfill":"^0.2.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"volta":{"node":"20.12.2","pnpm":"9.0.6"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/proposal-signals/signal-utils/issues"},"homepage":"https://github.com/proposal-signals/signal-utils#readme","_id":"signal-utils@0.19.0","_integrity":"sha512-8ok073w4s1LTGo6Ru4sEVmFmeUsRx276npqP3FoCkqZOMGEewRWW0JDeaQoz1AkXweEtJrV05K4zwQdSKxajMQ==","_resolved":"/tmp/ffc8e82a9ae9326f40d2c63f9aa394db/signal-utils-0.19.0.tgz","_from":"file:signal-utils-0.19.0.tgz","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"shasum":"4ddc02469c3fa9f7c81ee9ba62ccffe8bf1b8ce0","size":78903,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.19.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.19.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.19.0_1727908193335_0.11417025753064003"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-10-02T22:29:53.575Z","publish_time":1727908193575,"_source_registry_name":"default","_cnpm_publish_time":1727908193575},"0.18.0":{"name":"signal-utils","version":"0.18.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/proposal-signals/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"peerDependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"volta":{"node":"20.12.2","pnpm":"9.0.5"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/proposal-signals/signal-utils/issues"},"homepage":"https://github.com/proposal-signals/signal-utils#readme","_id":"signal-utils@0.18.0","_integrity":"sha512-qsUIfxv6pbXegnm6NCZ/+SzLlkE3jMvE5y9Nzj8nWifff3wUiteFOFgB/VdZT7oYQ1NpUuTQS0pfeiYRjEAFMg==","_resolved":"/tmp/003159eb2539ef3a519b7400b80b22ab/signal-utils-0.18.0.tgz","_from":"file:signal-utils-0.18.0.tgz","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"shasum":"78d847fac6ab22d52dde1285ccaecbf62c47a459","size":79084,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.18.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.18.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.18.0_1720033564374_0.9811683209574942"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-07-03T19:06:04.588Z","publish_time":1720033564588,"_source_registry_name":"default","_cnpm_publish_time":1720033564588},"0.17.0":{"name":"signal-utils","version":"0.17.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/proposal-signals/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"peerDependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"volta":{"node":"20.12.2","pnpm":"9.0.5"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/proposal-signals/signal-utils/issues"},"homepage":"https://github.com/proposal-signals/signal-utils#readme","_id":"signal-utils@0.17.0","_integrity":"sha512-KVcLQ4ALbe6hK2eWx3yDIMDY9lMOiGnksRpUezwj1YZx5YhgtEVs8kt3eEk52DgpxjlJEF5lIMh5mXbcZ8brhA==","_resolved":"/tmp/57542d38a3b911b6fac2fdf115a7c5d6/signal-utils-0.17.0.tgz","_from":"file:signal-utils-0.17.0.tgz","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"shasum":"a0fe08db3080a3fedf5acdeb6f28f291ce20e338","size":79602,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.17.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.17.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.17.0_1720028264888_0.9577110418887178"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-07-03T17:37:45.193Z","publish_time":1720028265193,"_source_registry_name":"default","_cnpm_publish_time":1720028265193},"0.16.0":{"name":"signal-utils","version":"0.16.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/proposal-signals/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"peerDependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"volta":{"node":"20.12.2","pnpm":"9.0.5"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/proposal-signals/signal-utils/issues"},"homepage":"https://github.com/proposal-signals/signal-utils#readme","_id":"signal-utils@0.16.0","_integrity":"sha512-aiTEiavGTxwYjZYeYSKuyjcLHZpWOm4KPKT1c9pxeGVj1sFB921TF49QEyg4LVFBavR2zChv3EQaaQgGYWTKAw==","_resolved":"/tmp/357ddad67739cc782cb38a756286e1c4/signal-utils-0.16.0.tgz","_from":"file:signal-utils-0.16.0.tgz","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"shasum":"286ffbc2bd74641bb9f925dc70e719d8868c25e8","size":75774,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.16.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.16.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.16.0_1715633814658_0.31982345504563137"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-05-13T20:56:54.815Z","publish_time":1715633814815,"_source_registry_name":"default","_cnpm_publish_time":1715633814815},"0.14.0":{"name":"signal-utils","version":"0.14.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.14.0","_integrity":"sha512-a+yBTDE0Nsw1p9WomeFkipz+ATmqTx/QXvluyPOqI+WJkNOH8dcjVPQzKGt2bU8WU7jLrLLJdRpLRxlacVFm3w==","_resolved":"/tmp/03e373d3451793ad5301d13901873947/signal-utils-0.14.0.tgz","_from":"file:signal-utils-0.14.0.tgz","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"shasum":"598e03de2453c9b429d635bcec436f595fcc6f97","size":61710,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.14.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.14.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.14.0_1713712151891_0.42716576536443474"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-21T15:09:12.099Z","publish_time":1713712152099,"_source_registry_name":"default","_cnpm_publish_time":1713712152099},"0.13.0":{"name":"signal-utils","version":"0.13.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.13.0","_integrity":"sha512-RZnElTMG6m0469F7+MpHHkxLY+h/Dv/ULqYDjmTIFTc7kOpqe9KiYuLsZipthI3OrlqYW8xhAyOK4rctqcFa8w==","_resolved":"/tmp/55b908d0a779fd9194ccfa6d9cd88730/signal-utils-0.13.0.tgz","_from":"file:signal-utils-0.13.0.tgz","_nodeVersion":"18.20.1","_npmVersion":"10.5.0","dist":{"shasum":"e48861425ef43f4d11c2bb034a78fce53f990939","size":52115,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.13.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.13.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.13.0_1712948507257_0.10379522730442625"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-12T19:01:47.409Z","publish_time":1712948507409,"_source_registry_name":"default","_cnpm_publish_time":1712948507409},"0.12.2":{"name":"signal-utils","version":"0.12.2","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","@vitest/browser":"^1.4.0","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.12.2","_integrity":"sha512-pUx9bYfpUsA0KO4lh+Wmk4evaKNDIKaf7gkW+ZxeOXYCXFAT6H4t8S88MYdf4Woi1ol5RdR99+tvIZlJOOuDag==","_resolved":"/tmp/e5ce89842b4d95ee86b8f3aeb0691a98/signal-utils-0.12.2.tgz","_from":"file:signal-utils-0.12.2.tgz","_nodeVersion":"18.20.1","_npmVersion":"10.5.0","dist":{"shasum":"0e491626dc4e77b0d564d7dd9bb6e6c77e688f31","size":52580,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.12.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.12.2.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.12.2_1712681830128_0.7851500045701278"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-09T16:57:10.395Z","publish_time":1712681830395,"_source_registry_name":"default","_cnpm_publish_time":1712681830395},"0.12.1":{"name":"signal-utils","version":"0.12.1","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.12.1","_integrity":"sha512-ECwMrr/qz4CMHcPlIDM6RCu7NZNs9pkpCKgFzi9fCSA0e+nOv7CAChQ05nj4cJnj1RLwLqXCPgb4IeRZIQoZtA==","_resolved":"/tmp/1b6fc376239fce00ad3d65129e18abc0/signal-utils-0.12.1.tgz","_from":"file:signal-utils-0.12.1.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"shasum":"8ad8f2400b1cb2620fa7726ef3ad7f8a754159be","size":52586,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.12.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.12.1.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.12.1_1712519917724_0.9845273662806064"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-07T19:58:37.885Z","publish_time":1712519917885,"_source_registry_name":"default","_cnpm_publish_time":1712519917885},"0.12.0":{"name":"signal-utils","version":"0.12.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.12.0","_integrity":"sha512-34TjaGNHe+FGdUN1NfTIXlTsvESAWA1DP7+FpS0x8Z8xBbd9y2/X6UO9oFwXsO65c5mJYdEl1BxOqdiEbzzX5Q==","_resolved":"/tmp/6b62450a82a657ffa9bea624562a1e11/signal-utils-0.12.0.tgz","_from":"file:signal-utils-0.12.0.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"shasum":"aa9e6dc9aebfbe827181ded54c8293b17e5a4758","size":52301,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.12.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.12.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.12.0_1712516777437_0.32095563988896947"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-07T19:06:17.593Z","publish_time":1712516777593,"_source_registry_name":"default","_cnpm_publish_time":1712516777593},"0.11.0":{"name":"signal-utils","version":"0.11.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.11.0","_integrity":"sha512-CWWpFn1cgZMxVYUM21sIzd87cMBybQ09OqC2I0a0pgVl583gEt19VS8Mn0jQTONpyuXxz1a+0m1lwY3xGoRriw==","_resolved":"/tmp/7f1178f9fc30d7fed49b8e16bc3928f7/signal-utils-0.11.0.tgz","_from":"file:signal-utils-0.11.0.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"shasum":"6aa46ba97b2d56ff7ae8a32c51b8c9300c025421","size":50672,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.11.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.11.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.11.0_1712511712815_0.14164800275282352"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-07T17:41:52.979Z","publish_time":1712511712979,"_source_registry_name":"default","_cnpm_publish_time":1712511712979},"0.10.0":{"name":"signal-utils","version":"0.10.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.10.0","_integrity":"sha512-YWG1BJe5IgpMkXPsEcZoClUZMARnfI00/Z72R/2/iABDUn90K8qqIJeW3HkALPZYqvd7pLJNL+8lEwUWRrUckw==","_resolved":"/tmp/f3fc6d4a85db5a8d1ce05fe2fdc63a1a/signal-utils-0.10.0.tgz","_from":"file:signal-utils-0.10.0.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"shasum":"cfd5fd00990fb5b8b561afce2753b717c0d85bf2","size":49479,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.10.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.10.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.10.0_1712462219479_0.443763152851433"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-07T03:56:59.631Z","publish_time":1712462219631,"_source_registry_name":"default","_cnpm_publish_time":1712462219631},"0.9.0":{"name":"signal-utils","version":"0.9.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.9.0","_integrity":"sha512-nuqKUc+suD9Pzxy8Waq4j5x9rfOuAwKzfEvPHh+EwXHh2DN6WgFREAYOkkdxE310Eewo8mvUSG/uWi49JtmxDA==","_resolved":"/tmp/5af986b79d8b5ee73bde1fac4f45afb4/signal-utils-0.9.0.tgz","_from":"file:signal-utils-0.9.0.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"23e0a4ab070f4957b61472beaac457382e8010c0","size":41484,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.9.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.9.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.9.0_1712449730298_0.11248755956270617"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-07T00:28:50.537Z","publish_time":1712449730537,"_source_registry_name":"default","_cnpm_publish_time":1712449730537},"0.8.0":{"name":"signal-utils","version":"0.8.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.8.0","_integrity":"sha512-V4EtsVJceOyw5o4+GBoFa70LVzHom/qDnH/WGZfBAk/AcmKrm8+dnQe7NpiFOw9XduMHLFwh/yuZhZKsqkoAng==","_resolved":"/tmp/0a11b787c3b5fc77bfdcde5f40698b2d/signal-utils-0.8.0.tgz","_from":"file:signal-utils-0.8.0.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"shasum":"11452786e7297ac1d70264f46ed836cfe9699da7","size":40233,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.8.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.8.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.8.0_1712440376253_0.11543360160975635"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-06T21:52:56.412Z","publish_time":1712440376412,"_source_registry_name":"default","_cnpm_publish_time":1712440376412},"0.7.0":{"name":"signal-utils","version":"0.7.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.4","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.4","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.8","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.7.0","_integrity":"sha512-smd1xOE97CT2vWA48nxiX/ESVoYAc44Axloon9MtKr6/YXZ/7fLfnD/5WKa6dRoOQ4JFyxbrEDUe/pO4RRmugg==","_resolved":"/tmp/6e9c33fa3b84dba537b65f812024633a/signal-utils-0.7.0.tgz","_from":"file:signal-utils-0.7.0.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"4af4a0d284686e8f38fc07c50d673337c408ae73","size":35016,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.7.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.7.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.7.0_1712179319702_0.003483108095402976"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-03T21:21:59.912Z","publish_time":1712179319912,"_source_registry_name":"default","_cnpm_publish_time":1712179319912},"0.6.0":{"name":"signal-utils","version":"0.6.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.3","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.1","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.7","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.6.0","_integrity":"sha512-0f6wUkV1Jp+9q9XFJvqJ9uBJSI4M1eTG5CrgmtyYaCxa88h8agbqWhOr2zGqVuVtRZ3mzwvASFqsyyVhl6uETg==","_resolved":"/tmp/a30ecd5d91699fccdf18628b8ac2140a/signal-utils-0.6.0.tgz","_from":"file:signal-utils-0.6.0.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"4f5a1a2bfc023edd9dac57feabfdf82904b2aab3","size":29135,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.6.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.6.0_1712092992357_0.007482960693003804"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-02T21:23:12.565Z","publish_time":1712092992565,"_source_registry_name":"default","_cnpm_publish_time":1712092992565},"0.5.0":{"name":"signal-utils","version":"0.5.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.3","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.1","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.7","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.5.0","_integrity":"sha512-/VZiDYmiKbj5gmlzSgQhGksAgrhaiaFNzOXWTgHpFCcUQ8YKdACSuW8C+N+MhyybzUAn0B9PDcFVtHhzu0rkSA==","_resolved":"/tmp/b86a4fb8cd79b76af0cc90979a9567ad/signal-utils-0.5.0.tgz","_from":"file:signal-utils-0.5.0.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"4ab2c7479313de818e0266ea515f572be4e9d200","size":28631,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.5.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.5.0_1712081134033_0.05414877945468222"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-02T18:05:34.201Z","publish_time":1712081134201,"_source_registry_name":"default","_cnpm_publish_time":1712081134201},"0.4.0":{"name":"signal-utils","version":"0.4.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.3","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.1","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.7","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.4.0","_integrity":"sha512-2ZdHJo44WHlVq7X5jwE0cUlXGODWFHgVpZtjWLZUKy7eCmkFE9yrhkOeDUqvqZZx6EJPfYMU9ZXz9JAaJn1Saw==","_resolved":"/tmp/e7e2d99c4c0497ac2f749e38bf16d509/signal-utils-0.4.0.tgz","_from":"file:signal-utils-0.4.0.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"62fb28ab045a4478686dd77a16ab52b61d7368a6","size":15351,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.4.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.4.0_1712068263720_0.2841573593005824"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-02T14:31:03.880Z","publish_time":1712068263880,"_source_registry_name":"default","_cnpm_publish_time":1712068263880},"0.3.1":{"name":"signal-utils","version":"0.3.1","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.ts.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.ts.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.3","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.1","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.7","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.3.1","_integrity":"sha512-BvTGiOHZOqTp8i8I7n624pggn4/uzvzh1yU2LEXg9A16kpoV71BxhCU8aymQktkL4QjEnNt/RR8RF2CinwsnUQ==","_resolved":"/tmp/0c13b11e40672f5d6c4cdd6ed55b69d3/signal-utils-0.3.1.tgz","_from":"file:signal-utils-0.3.1.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"0b76f84b5bbf5068800ae9cb292a064d4658f520","size":15099,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.3.1.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.3.1_1712021132976_0.9805355443184427"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-02T01:25:33.209Z","publish_time":1712021133209,"_source_registry_name":"default","_cnpm_publish_time":1712021133209},"0.3.0":{"name":"signal-utils","version":"0.3.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.3","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.1","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","expect-type":"^0.19.0","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.7","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit --emitDeclarationOnly false","lint:prettier":"prettier --check .","start":"vite build --watch","test":"vitest"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.3.0","_integrity":"sha512-xh37K/3C4JXQo+Ghn40SU1MdMQCmix2XOg/E2neGjIpaIgRBTcwoE7ZhTdbZLo0RoxDR0sZIGObbsxQFuKQYWQ==","_resolved":"/tmp/380edd1889ae3336a03abdc41bcd7705/signal-utils-0.3.0.tgz","_from":"file:signal-utils-0.3.0.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"a9f22fb213d958b90f14cfe1952c4b88e8297471","size":14472,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.3.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.3.0_1712015148309_0.02223384904243253"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-01T23:45:48.508Z","publish_time":1712015148508,"_source_registry_name":"default","_cnpm_publish_time":1712015148508},"0.2.0":{"name":"signal-utils","version":"0.2.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.js"},"./*":{"types":"./declarations/*.d.ts","default":"./dist/*.js"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.3","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.1","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.9.0","typescript":"^5.4.3","vite":"^5.2.7","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"scripts":{"build":"vite build","dev":"concurrently 'vite build --watch' 'cd tests && pnpm vitest'","format":"prettier --write .","lint":"concurrently 'npm:lint:*'","lint:types":"tsc --noEmit","lint:prettier":"prettier --check .","start":"pnpm build && pnpm dev","test":"cd tests && pnpm test"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.2.0","_integrity":"sha512-vWk643r5sHed+MemD7o+P+XJWKEoncQmJFTXO5AtioUbcrys7JK3N8KY+KXvV4XczE5Zj7K4pwfkQge52WkV2w==","_resolved":"/tmp/784badc198bba18c13a05afda1f48ae5/signal-utils-0.2.0.tgz","_from":"file:signal-utils-0.2.0.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"ebaa7b3d8cf16a74c6472fc0dd59a5359f09d397","size":6441,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.2.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.2.0_1712008147225_0.032008867310668654"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-01T21:49:07.382Z","publish_time":1712008147382,"_source_registry_name":"default","_cnpm_publish_time":1712008147382},"0.1.0":{"name":"signal-utils","version":"0.1.0","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"repository":{"type":"git","url":"git+ssh://git@github.com/NullVoxPopuli/signal-utils.git"},"license":"MIT","author":{"name":"NullVoxPopuli"},"type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.js"},"./*":{"types":"./declarations/*","default":"./dist/*"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"dependencies":{"signal-polyfill":"^0.1.0"},"devDependencies":{"@babel/core":"^7.24.3","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.1","@babel/preset-typescript":"^7.24.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","concurrently":"^8.2.2","globby":"^14.0.1","prettier":"^3.2.5","release-plan":"^0.8.0","typescript":"^5.4.3","vite":"^5.2.7","vite-plugin-dts":"^3.8.1"},"scripts":{"build":"vite build","dev":"concurrently 'vite build --watch' 'cd tests && pnpm vitest'","format":"prettier --write .","lint":"tsc --noEmit && prettier --check .","start":"pnpm build && pnpm dev","test":"cd tests && pnpm test"},"bugs":{"url":"https://github.com/NullVoxPopuli/signal-utils/issues"},"homepage":"https://github.com/NullVoxPopuli/signal-utils#readme","_id":"signal-utils@0.1.0","_integrity":"sha512-BgJBlkJP4lmVPSpz7+DXO5otte5Y09S4M/a1fzH6FXghx539boHzRRRWT75HKezYQPWskcvPBefdJXf6OWjlYA==","_resolved":"/tmp/844c512b61f783bc8117e901eaf107c1/signal-utils-0.1.0.tgz","_from":"file:signal-utils-0.1.0.tgz","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"shasum":"659222abf33b8f1cc9585313aa6864d662191b61","size":3878,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.1.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.1.0_1711980092578_0.8867337362765522"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-01T14:01:32.740Z","publish_time":1711980092740,"_source_registry_name":"default","_cnpm_publish_time":1711980092740},"0.0.1":{"name":"signal-utils","version":"0.0.1","description":"Utils for use with the Signals Proposal: https://github.com/proposal-signals/proposal-signals","type":"module","exports":{".":{"types":"./declarations/index.d.ts","default":"./dist/index.js"},"./*":{"types":"./declarations/*","default":"./dist/*"}},"typesVersions":{">=4.0.0":{"*":["declarations/*"]}},"keywords":["signals","signal","reactivity","tracked","rune","runes","ember","glimmer","svelte","vue","angular","solid","preact"],"author":{"name":"NullVoxPopuli"},"license":"MIT","devDependencies":{"@babel/core":"^7.24.3","@babel/plugin-proposal-decorators":"^7.24.1","@babel/plugin-syntax-decorators":"^7.24.1","@babel/plugin-transform-typescript":"^7.24.1","@babel/preset-typescript":"^7.24.1","@embroider/addon-dev":"^4.2.1","@rollup/plugin-babel":"^6.0.4","@tsconfig/strictest":"^2.0.5","globby":"^14.0.1","prettier":"^3.2.5","typescript":"^5.4.3","vite":"^5.2.7","vite-plugin-dts":"^3.8.1","vitest":"^1.4.0"},"dependencies":{"signal-polyfill":"^0.1.0"},"scripts":{"start":"vite build --watch","test":"vitest","build":"vite build"},"_id":"signal-utils@0.0.1","_integrity":"sha512-Pu+9mzayqLWQqlJ8nNbbpCBrQ6wCr6kt9aoO5pMf29n5tB7BvRWmt50PJqzAZ+NUsPDn7WXDyWeOxwJXDj2Hbw==","_resolved":"/tmp/36f9588610608985c89b02119f0661d2/signal-utils-0.0.1.tgz","_from":"file:signal-utils-0.0.1.tgz","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"6e6081d349edc868b2e67c8469adf1ed2f1b9aa2","size":2950,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.0.1.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.0.1_1711943260677_0.8324723686483637"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-01T03:47:40.838Z","publish_time":1711943260838,"_source_registry_name":"default","_cnpm_publish_time":1711943260838},"0.0.0":{"name":"signal-utils","version":"0.0.0","description":"","main":"index.js","keywords":[],"author":"","license":"ISC","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_id":"signal-utils@0.0.0","_integrity":"sha512-erv7oH3WgOTSyzGo+h5Al01UuLOrb48NRd92DBxDFz5d9Gt0g1CoX7IB2vg3Mdpx1D07p/VKpvfhp17eeXBYlw==","_resolved":"/tmp/dd7d969db2dfa25fce2be3ec6c0b05d0/signal-utils-0.0.0.tgz","_from":"file:signal-utils-0.0.0.tgz","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"e60296af98283aad36bb204f2c2b5fdd118631a5","size":252,"noattachment":false,"key":"/signal-utils/-/signal-utils-0.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/signal-utils/download/signal-utils-0.0.0.tgz"},"_npmUser":{"name":"nullvoxpopuli","email":"theprecognition+npm@gmail.com"},"directories":{},"maintainers":[{"name":"nullvoxpopuli","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-utils_0.0.0_1711916067227_0.37137525935917814"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-31T20:14:27.374Z","publish_time":1711916067374,"_source_registry_name":"default","_cnpm_publish_time":1711916067374}},"readme":"# signal-utils\n\nUtils for the [Signal's Proposal](https://github.com/proposal-signals/proposal-signals).\n\nTry it out on JSBin: https://jsbin.com/safoqap/edit?html,output\n\n------------\n\n_`signal-utils` is (currently) a place to experiment and see what works and what gaps there may be with the polyfill. Have an idea? feel free to submit a PR!_\n\nLike the [signals polyfill](https://github.com/proposal-signals/signal-polyfill), this library is not meant to be used in production[^versions].\n\n[^versions]: The releases and versions specified by this package and npm are not an indicator of production readiness, nor stabilitiy. But releases _do_ follow [semver](https://semver.org/).\n\n------------\n\n## Install\n\n```bash\nnpm add signal-utils signal-polyfill\n```\n\n> [!NOTE]\n> As of now, the Signals proposal isn't part of JavaScript, so you'll need to use a polyfill.\n> See [signal-utils's peerDependency section in the package.json](https://github.com/proposal-signals/signal-utils/blob/main/package.json#L59) for the supported version range.\n\n## APIs \n\n> [!NOTE]\n> All examples either use JavaScript or a mixed-language psuedocode[^syntax-based-off] to convey the reactive intention of using Signals. \n> These utilities can be used in any framework that wires up Signals to their rendering implementation.\n\n[^syntax-based-off]: The syntax is based of a mix of [Glimmer-flavored Javascript](https://tutorial.glimdown.com) and [Svelte](https://svelte.dev/). The main thing being focused around JavaScript without having a custom file format. The `<template>...</template>` blocks may as well be HTML, and `{{ }}` escapes out to JS. I don't have a strong preference on `{{ }}` vs `{ }`, the important thing is only to be consistent within an ecosystem.\n\n- data structures\n  - [Array](#array)\n  - [Object](#object)\n  - [Map](#map)\n  - [Set](#Set)\n  - [WeakMap](#weakmap)\n  - [WeakSet](#weakset)\n- general utilities\n  - [Promise](#promise)\n  - [async function](#async-function) \n  - [localCopy](#localcopy-function)\n  - [deep](#deep-function)\n- class utilities\n  - [@signal](#signal)\n  - [@localCopy](#localcopy)\n  - [@deepSignal](#deepSignal)\n- subtle utilities\n  - [effect](#leaky-effect-via-queuemicrotask)\n  - [reaction](#reaction)\n  - [Batched Effects](#batched-effects)\n  - [AsyncComputed](#asynccomputed)\n\n### `@signal`\n\nA utility decorator for easily creating signals \n\n```jsx\nimport { signal } from 'signal-utils';\n\nclass State {\n    @signal accessor #value = 3;\n\n    get doubled() {\n        return this.#value * 2;\n    }\n\n    increment = () => this.#value++;\n}\n\nlet state = new State();\n\n\n// output: 6\n// button clicked\n// output: 8\n<template>\n  <output>{{state.doubled}}</output>\n  <button onclick={{state.increment}}>+</button>\n</template>\n```\n\nThis utility decorator can also be used for caching getters in classes. Useful for caching expensive computations. \n\n```js\nimport { signal } from 'signal-utils';\n\nclass State {\n    @signal accessor #value = 3;\n\n    // NOTE: read-only because there is no setter, and a setter is not allowed.\n    @signal\n    get doubled() {\n        // imagine an expensive operation\n        return this.#value * 2;\n    }\n\n    increment = () => this.#value++;\n}\n\nlet state = new State();\n\n\n// output: 6\n// button clicked\n// output: 8\n<template>\n  <output>{{state.doubled}}</output>\n  <button onclick={{state.increment}}>+</button>\n</template>\n```\n\nNote that the impact of maintaining a cache is often more expensive than re-deriving the data in the getter. Use sparingly, or to return non-primitive values and maintain referential integrity between repeat accesses.\n\n### `@deepSignal`\n\nA utility decorator for recursively, deeply, and lazily auto-tracking JSON-serializable structures at any depth or size.\n\n```gjs\nimport { deepSignal } from 'signal-utils/deep';\n\nclass Foo {\n  @deepSignal accessor obj = {};\n}\n\nlet instance = new Foo();\nlet setData = () => instance.obj.foo = { bar: 3 };\nlet inc = () => instance.obj.foo.bar++;\n\n<template>\n  {{instance.obj.foo.bar}}\n\n  <button onclick={{setData}}>Set initial data</button>\n  <button> onclick={{inc}}>increment</button>\n</template>\n```\n\nNote that this can be memory intensive, and should not be the default way to reach for reactivity. Due to the nature of nested proxies, it's also much harder to inspect.\n\nInspiration for deep reactivity comes from:\n- [ember `@deepTracked`](https://github.com/NullVoxPopuli/ember-deep-tracked/blob/37c506d7f04c00c1f0ab31e740ef15a92bb99feb/ember-deep-tracked/src/-private/deep-tracked.ts#L1)\n- [solid `store`](https://github.com/solidjs/solid/blob/ae56299c8d4cdedc03b835fdcff1004355da742f/packages/solid/store/src/store.ts#L1)\n- [preact `deepSignal`](https://github.com/luisherranz/deepsignal?tab=readme-ov-file#deepsignal)\n- [vue `reactive`](https://github.com/vuejs/core/blob/6d066dd852f6dbd70eb221c7f3367665c081026e/packages/reactivity/src/reactive.ts#L139)\n\n### `deep` function\n\nA utility function for recursively, deeply, and lazily auto-tracking JSON-serializable structures at any depth or size.\n\n```gjs\nimport { deep } from 'signal-utils/deep';\n\nlet obj = deep({});\nlet setData = () => obj.foo = { bar: 3 };\nlet inc = () => obj.foo.bar++;\n\n<template>\n  {{obj.foo.bar}}\n\n  <button onclick={{setData}}>Set initial data</button>\n  <button> onclick={{inc}}>increment</button>\n</template>\n```\n\nNote that this can be memory intensive, and should not be the default way to reach for reactivity. Due to the nature of nested proxies, it's also much harder to inspect.\n\n### `@localCopy`\n\nA utility decorator for maintaining local state that gets re-set to a \"remote\" value when it changes. Useful for editable controlled fields with an initial remote data that can also change.\n\n```gjs\nimport { signal } from 'signal-utils';\nimport { localCopy } from 'signal-utils/local-copy';\n\nclass Remote {\n  @signal accessor value = 3;\n}\n\nclass Demo {\n  // pretend this data is from a parent component\n  remote = new Remote();\n  \n  @localCopy('remote.value') localValue;\n  \n  updateLocalValue = (inputEvent) => this.localValue = inputEvent.target.value;\n  \n  // A controlled input\n  <template>\n    <label>\n      Edit Name:   \n      <input value={{this.localValue}} oninput={{this.updateLocalValue}} />\n    </label>\n  </template>\n}\n```\n\nIn this demo, the localValue can fork from the remote value, but the `localValue` property will re-set to the remote value if it changes.\n\n#### `localCopy` function\n\n```js\nimport { Signal } from 'signal-polyfill';\nimport { localCopy } from 'signal-utils/local-copy';\n\nconst remote = new Signal.State(3);\n\nconst local = localCopy(() => remote.get());\nconst updateLocal = (inputEvent) => local.set(inputEvent.target.value);\n\n// A controlled input\n<template>\n  <label>\n    Edit Name:   \n    <input value={{local.get()}} oninput={{updateLocal}} />\n  </label>\n</template>\n```\n\nLive, interactive demos of this concept:\n- [Ember](https://limber.glimdown.com/edit?c=MQAgYg9gTg1glgOwOYgMoBcCG6CmIDuc6AFiAEo4C2EuIAqgA4Am2OAzgFAfHroNsAuAPRD0hXjigA6AMYRKQgPpQ2M4lDht0cTAiFbsAVzZCAjAHZzABgAcNgGwP7ATgDMAVlfnXzgCw2uAANgpAArNhAAGzgANxwOOEoGaHQQAG8oiBlMSIBhCAYATwBfEAAzKHkQAHJ0KEwZGBwmAFp0CAhIgCMIAA9qgG4EpJSQfJGEHARUiqrqgAEkaMpKSSE5Can0QeHkqFSMuoamphBS2coaxeXVqFF6xsQkHcS9g5AIBDPyysuFqi6a2oTDgZTgkh2HDkCC06RAAClUAB5ABy3wAvCAlhAujkACrETRDKGRTBsCIAESoEBAOF6uAQTAi42Sk2m6Q4IBA80iWRy%2BSKAApqpgoEg2FIYjlDDhqgBKTLZSIANWlOGJXMMzFYABk%2BSq1SBMZyuSBBYgGIZ0ABROLTBXogB8IBImikvKVqsiMqNIAtVttWykWDFOHQkrVGpAxF0TEiOFQhi6lCIvpNXMFbCTKZtdvQDudaXTpqzyaIgemUgYUBweapZUwhki6EFcqGptNrolovFUk%2BibLLYyUu9OAELsJEo9OS9PuKbeLxS4XJEIAAgiBoXVOvHTv70CaADy4JKk3CO4uHsrQS5pNKfGqlnPVCdumOM%2BMDnPFYoXjtcw9SUBSI-3-LlrRBVIUUwVZxy5YsO0PfcQBHGV0TvLt3X1WccB-dJ7y%2Bap9xfTCtRYXA9U9NU8KEUDEKEICcBA5d-0PLorXaBBHS-IhDyEdjeE%2BOiQD468oEoC9L2rHBHWnA1RzgsDTQwycsKo0cfzYqBHRrahaHmVCx3wgzqOKPjpMkxCtEKeNhK5ZCMh6KAmEkcdTAYXoQDYTo4CYAYzkvfR0BsmSj1EKgGDPUKlw4Ok3hAFyGybVIZFJcl1wYBhaXpKYmTGeRWS2DkuXmI5GmaFDDUxAAiABZBo8AAdUQJhDGq9tuTKk4EuwTAo2jWNP2zVNMUFcjMALV8JXG31xo6zd3yQHBoNWX1WyNZ1MMMkAAGpMWqABCSEAJPSLWGEw8qWoblDPQtIttM7l%2B2G9A7sw984wTF6aMs01D3UX6uVyRs2DwOlcCgBAcgW3QlrNShMEKQEvMSJtsCeEBMBAGsKnYUgIDKbHqVoca5QES8BM4-CH2qVK4EaEjVLUWHlpg3Df2B4w8GtHLIeh3JFpwPjKaEliAIB4sdTJVIeIkJgBC0i6LLvRFUSkLQNGQUFCimqQZoQJtIhAVxNKECywtOqKLyXYJAg4IA&format=glimdown)\n- [Preact](https://preactjs.com/repl?code=aW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAncHJlYWN0JzsKaW1wb3J0IHsgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdwcmVhY3QvaG9va3MnOwppbXBvcnQgeyBzaWduYWwsIGVmZmVjdCwgdXNlU2lnbmFsIH0gZnJvbSAnQHByZWFjdC9zaWduYWxzJzsKaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2h0bS9wcmVhY3QnOwoKZnVuY3Rpb24gdXNlTG9jYWxDb3B5KHJlbW90ZSkgewoJY29uc3QgbG9jYWwgPSB1c2VSZWYoKTsKCWlmICghbG9jYWwuY3VycmVudCkgewoJCWxvY2FsLmN1cnJlbnQgPSBzaWduYWwocmVtb3RlLnBlZWsoKSk7Cgl9CgoJdXNlRWZmZWN0KCgpID0%2BIHsKCSAgLy8gU3luY2hyb25vdXNseSB1cGRhdGUgdGhlIGxvY2FsIGNvcHkgd2hlbiByZW1vdGUgY2hhbmdlcy4KCSAgLy8gQ29yZSBlZmZlY3RzIGFyZSBqdXN0IGEgd2F5IHRvIGhhdmUgc3luY2hyb25vdXMgY2FsbGJhY2tzCgkgIC8vIHJlYWN0IHRvIHNpZ25hbCBjaGFuZ2VzIGluIGEgcHJldHR5IGVmZmljaWVudCB3YXkuCgkJcmV0dXJuIGVmZmVjdCgoKSA9PiB7CgkJCWxvY2FsLmN1cnJlbnQudmFsdWUgPSByZW1vdGUudmFsdWU7CgkJfSk7Cgl9LCBbcmVtb3RlXSk7CgoJcmV0dXJuIGxvY2FsLmN1cnJlbnQ7Cn0KCmZ1bmN0aW9uIERlbW8oeyBuYW1lLCBvblN1Ym1pdCB9KSB7CgkJY29uc3QgbG9jYWxOYW1lID0gdXNlTG9jYWxDb3B5KG5hbWUpOwoKICAgIGNvbnN0IHVwZGF0ZUxvY2FsTmFtZSA9IChpbnB1dEV2ZW50KSA9PiBsb2NhbE5hbWUudmFsdWUgPSBpbnB1dEV2ZW50LnRhcmdldC52YWx1ZTsKCiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoc3VibWl0RXZlbnQpID0%2BIHsKICAgICAgICBzdWJtaXRFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIG9uU3VibWl0KHsgdmFsdWU6IGxvY2FsTmFtZS52YWx1ZSB9KTsKICAgIH0KCiAgICByZXR1cm4gaHRtbGAKICAgICAgICA8Zm9ybSBvblN1Ym1pdD0ke2hhbmRsZVN1Ym1pdH0%2BCiAgICAgICAgICAgIDxsYWJlbD4KICAgICAgICAgICAgICAgIEVkaXQgTmFtZTogICAKICAgICAgICAgICAgICAgIDxpbnB1dCB2YWx1ZT0ke2xvY2FsTmFtZS52YWx1ZX0gb25JbnB1dD0ke3VwZGF0ZUxvY2FsTmFtZX0gLz4KICAgICAgICAgICAgPC9sYWJlbD4KCiAgICAgICAgICAgIDxidXR0b24%2BU3VibWl0PC9idXR0b24%2BCiAgICAgICAgPC9mb3JtPgoKICAgICAgICA8cHJlPmxvY2FsVmFsdWU6ICR7bG9jYWxOYW1lfTxiciAvPnBhcmVudCB2YWx1ZTogJHtuYW1lfTwvcHJlPmA7Cn0KCmV4cG9ydCBmdW5jdGlvbiBBcHAoKSB7CiAgICBjb25zdCBuYW1lID0gdXNlU2lnbmFsKCdNYWNlIFdpbmR1Jyk7CiAgICBjb25zdCBkYXRhID0gdXNlU2lnbmFsKCcnKTsKCiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoZCkgPT4gZGF0YS52YWx1ZSA9IGQ7CiAgICBjb25zdCBjaGFuZ2VOYW1lID0gKCkgPT4gbmFtZS52YWx1ZSArPSAnISc7CgogICAgcmV0dXJuIGh0bWxgCiAgICAgICAgPCR7RGVtb30gbmFtZT0ke25hbWV9IG9uU3VibWl0PSR7aGFuZGxlU3VibWl0fSAvPgoKICAgICAgICA8aHIgLz4KCiAgICAgICAgQ2F1c2UgZXh0ZXJuYWwgY2hhbmdlIChtYXliZSBzaW11bGF0aW5nIGEgcmVmcmVzaCBvZiByZW1vdGUgZGF0YSk6CiAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPSR7Y2hhbmdlTmFtZX0%2BQ2F1c2UgRXh0ZXJuYWwgQ2hhbmdlPC9idXR0b24%2BCgogICAgICAgIDxociAvPgogICAgICAgIExhc3QgU3VibWl0dGVkOjxiciAvPgogICAgICAgIDxwcmU%2BJHtKU09OLnN0cmluZ2lmeShkYXRhLnZhbHVlLCBudWxsLCAzKX08L3ByZT5gOwp9CgpyZW5kZXIoPEFwcCAvPiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcpKTsK)\n- [Solid](https://playground.solidjs.com/anonymous/0cf7972e-f55d-4483-909d-6c172c80d5ac)\n\n### `Array`\n\nA reactive Array.\nThis API mimics the built-in APIs and behaviors of [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array). \n\n```jsx\nimport { SignalArray } from 'signal-utils/array';\n\nlet arr = new SignalArray([1, 2, 3]);\n\n// output: 3\n// button clicked\n// output: 2\n<template>\n  <output>{{arr.at(-1)}}</output>\n  <button onclick={{() => arr.pop()}}>pop</button>\n</template>\n```\n\nOther ways of constructing an array:\n\n```jsx\nimport { SignalArray, signalArray } from 'signal-utils/array';\n\nSignalArray.from([1, 2, 3]);\nsignalArray([1, 2, 3]);\n```\n\nNote that [`.from`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from) gives you more options of how to create your new array structure.\n\n### `Object`\n\nA reactive Object.\nThis API mimics the built-in APIs and behaviors of [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object).\n\n```js\nimport { SignalObject } from 'signal-utils/object';\n\nlet obj = new SignalObject({\n    isLoading: true,\n    error: null,\n    result: null,\n});\n\n// output: true\n// button clicked\n// output: false\n<template>\n  <output>{{obj.isLoading}}</output>\n  <button onclick={{() => obj.isLoading = false}}>finish</button>\n</template>\n```\n\nIn this example, we could use a reactive object for quickly and dynamically creating an object of signals -- useful for when we don't know all the keys boforehand, or if we want a shorthand to creating many named signals.\n\nOther ways of constructing an object:\n\n```jsx\nimport { SignalObject, signalObject } from 'signal-utils/object';\n\nSignalObject.fromEntries([ /* ... */ ]);\nsignalObject({ /* ... */ } );\n```\n\nNote that [`.fromEntries`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries) gives you more options of how to create your new object structure.\n\n### `Map`\n\n\nA reactive Map\n\n```js\nimport { SignalMap } from 'signal-utils/map';\n\nlet map = new SignalMap();\n\nmap.set('isLoading', true);\n\n// output: true\n// button clicked\n// output: false\n<template>\n  <output>{{map.get('isLoading')}}</output>\n  <button onclick={{() => map.set('isLoading', false)}}>finish</button>\n</template>\n```\n\n\n\n### `WeakMap`\n\nA reactive WeakMap\n\n```js\nimport { SignalWeakMap } from 'signal-utils/weak-map';\n\nlet map = new SignalWeakMap();\n\nlet obj = { greeting: 'hello' };\n\nmap.set(obj, true);\n\n// output: true\n// button clicked\n// output: false\n<template>\n  <output>{{map.get(obj)}}</output>\n  <button onclick={{() => map.set(obj, false)}}>finish</button>\n</template>\n```\n\n\n\n### `Set`\n\nA reactive Set\n\n```js\nimport { SignalSet } from 'signal-utils/set';\n\nlet set = new SignalSet();\n\nset.add(123);\n\n// output: true\n// button clicked\n// output: false\n<template>\n  <output>{{set.has(123)}}</output>\n  <button onclick={{() => set.delete(123)}}>finish</button>\n</template>\n```\n\n\n### `WeakSet`\n\nA reactive WeakSet\n\n```js\nimport { SignalWeakSet } from 'signal-utils/weak-set';\n\nlet set = new SignalWeakSet();\n\nlet obj = { greeting: 'hello' };\n\nset.add(obj);\n\n// output: true\n// button clicked\n// output: false\n<template>\n  <output>{{set.has(obj)}}</output>\n  <button onclick={{() => set.delete(obj)}}>finish</button>\n</template>\n```\n\n\n### `Promise`\n\nA reactive Promise handler that gives your reactive properties for when the promise resolves or rejects.\n\n```js\nimport { SignalAsyncData } from 'signal-utils/async-data';\n\nconst response = fetch('...');\nconst signalResponse = new SignalAsyncData(response);\n\n// output: true\n// after the fetch finishes\n// output: false\n<template>\n  <output>{{signalResponse.isLoading}}</output>\n</template>\n```\n\nThere is also a `load` export which does the construction for you.\n\n```js\nimport { load } from 'signal-utils/async-data';\n\nconst response = fetch('...');\nconst signalResponse = load(response);\n\n// output: true\n// after the fetch finishes\n// output: false\n<template>\n  <output>{{signalResponse.isLoading}}</output>\n</template>\n```\n\nthe `signalResponse` object has familiar properties on it:\n- `value`\n- `error`\n- `state`\n- `isResolved`\n- `isPending`\n- `isRejected`\n\n\nThe important thing to note about using `load` / `SignalAsyncData`, is that you must already have a `PromiseLike`. For reactive-invocation of async functions, see the section below on `signalFunction`\n\n### `async` `function`\n\nA reactive async function with pending/error state handling\n\n```js\nimport { Signal } from 'signal-polyfill';\nimport { signalFunction } from 'signal-utils/async-function';\n\nconst url = new Signal.State('...');\nconst signalResponse = signalFunction(async () => {\n  const response = await fetch(url.get()); // entangles with `url`\n  // after an away, you've detatched from the signal-auto-tracking\n  return response.json(); \n});\n\n// output: true\n// after the fetch finishes\n// output: false\n<template>\n  <output>{{signalResponse.isLoading}}</output>\n</template>\n\n```\n\nthe `signalResponse` object has familiar properties on it:\n- `value`\n- `error`\n- `state`\n- `isResolved`\n- `isPending`\n- `isRejected`\n- `isError` (alias)\n- `isSettled` (alias)\n- `isLoading` (alias)\n- `isFinished` (alias)\n- `retry()`\n\n### `dedupe` + `@dedupe`\n\nwip\n\nutilities for the [dedupe](https://github.com/tracked-tools/tracked-toolbox?tab=readme-ov-file#dedupetracked) pattern.\n\n### Draft\n\nwip\n\nForking a reactive tree and optionally sync it back to the original -- useful for forms / fields where you want to edit the state, but don't want to mutate the reactive root right away.\n\nInspo: https://github.com/chriskrycho/tracked-draft\n\n### subtle utilities\n\nUtilities that can easily lead to subtle bugs and edge cases.\n\n#### Leaky Effect via queueMicrotask\n\n```js\nimport { Signal } from 'signal-polyfill';\nimport { effect } from 'signal-utils/subtle/microtask-effect';\n\nlet count = new Signal.State(0);\n\nlet callCount = 0;\n\neffect(() => console.log(count.get());\n// => 0 logs\n\ncount.set(1);\n// => 1 logs\n```\n\n#### Reactions\n\nA reaction tracks a computation and calls an effect function when the value of\nthe computation changes.\n\n```js\nimport { Signal } from 'signal-polyfill';\nimport { reaction } from 'signal-utils/subtle/reaction.js';\n\nconst a = new Signal.State(0);\nconst b = new Signal.State(1);\n\nreaction(\n  () => a.get() + b.get(), \n  (value, previousValue) => console.log(value, previousValue)\n);\n\na.set(1);\n// after a microtask, logs: 2, 1\n```\n\n#### Batched Effects\n\nSometimes it may be useful to run an effect _synchronously_ after updating signals. The proposed Signals API intentionally makes this difficult, because signals are not allowed to be read or written to within a watcher callback, but it is possible as long as signals are accessed after the watcher notification callbacks have completed.\n\n`batchedEffect()` and `batch()` allow you to create effects that run synchronously at the end of a `batch()` callback, if that callback updates any signals the effects depend on.\n\n```js\nconst a = new Signal.State(0);\nconst b = new Signal.State(0);\n\nbatchedEffect(() => {\n  console.log(\"a + b =\", a.get() + b.get());\n});\n\n// Logs: a + b = 0\n\nbatch(() => {\n  a.set(1);\n  b.set(1);\n});\n\n// Logs: a + b = 2\n```\n\nSynchronous batched effects can be useful when abstracting over signals to use them as a backing storage mechanism. In some cases you may want the effect of a signal update to be synchronously observable, but also to allow batching when possible for the usual performacne and coherence reasons.\n\n#### AsyncComputed\n\nThe `AsyncComputed` class reprents an _async_ computation that consumes other signals.\n\nWhile computing a value based on other signals _synchronously_ is covered by the core signals API, computing a value _asynchronously_ is not. (There is an ongoing [discussion about how to handle async computations](https://github.com/tc39/proposal-signals/issues/30 however).\n\n`AsyncComputed` is similar to `Signal.Computed`, except that it takes an async (or Promise-returning) function as the computation function.\n\nAll _synchronous_ access to signals within the function is tracked (by running it within a `Signal.Computed`), so that when the signal dependencies change, the computation is rerun. New runs of the async computation preempt pending runs of the computation.\n\n```ts\nimport {AsyncComputed} from 'signal-utils/async-computed';\n\nconst count = new Signal.State(1);\n\nconst asyncDoubled = new AsyncComputed(async () => {\n  // Wait 10ms\n  await new Promise((res) => setTimeout(res, 10));\n\n  return count.get() * 2;\n});\n\nconsole.log(asyncDoubled.status); // Logs: pending\nconsole.log(asyncDoubled.value); // Logs: undefined \n\nawait asyncDoubled.complete;\n\nconsole.log(asyncDoubled.status); // Logs: complete\nconsole.log(asyncDoubled.value); // Logs: 2\n```\n\nAn `AsyncComputed` instance tracks its \"status\", which is either `\"initial\"`,\n`\"pending\"`, `\"complete\"`, or `\"error\"`.\n\n##### AsyncComputed API\n\n- `constructor<T>(fn, options)`\n  - arguments:\n    - `fn: (abortSignal: AbortSignal) => Promise<T>`: The compute function.\n      Synchronous signal access (before the first await) is tracked.\n      \n      If a run is preempted by another run because dependencies change, the\n      AbortSignal will abort. It's recomended to call `signal.throwIfAborted()`\n      after any `await`.\n    - `options?: AsyncComputedOptions<T>`:\n      - `initialValue`: The initial value to return from `.value` before the\n        computation has yet run.\n- `status: \"initial\" | \"pending\" | \"complete\" | \"error\"`\n- `value: T | undefined`: The last value that the compute function resolved\n  with, or `undefined` if the last run of the compute function threw an error.\n  If the compute function has not yet been run `value` will be the value of the\n  `initialValue` or `undefined`.\n- `error: unknown`: The last error that the compute function threw, or\n  `undefined` if the last run of the compute function resolved successfully, or\n  if the compute function has not yet been run.\n- `complete: Promise<T>`: A promise that resolves when the compute function has\n  completed, or rejects if the compute function throws an error.\n   \n  If a new run of the compute function is started before the previous run has\n  completed, the promise will resolve with the result of the new run.\n- `run(): void`: Runs the compute function if it is not already running and its\n  dependencies have changed.\n- `get(): T | undefined`: Retruns the current `value` or throws if the last\n  completion result was an error. This method is best used for accessing from\n  other computed signals, since it will propagate error states into the other\n  computed signals.\n\n## Contributing\n\nSee: [./CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Is this bug free?\n\nLikely not, code (and tests!) are copied from pre-existing implementations, and those implementations change over time. If you find a bug, please file an issue or open a PR, thanks!!\n\n## Credits and Inspiration\n\nThis library could not have been developed so quickly without borrowing from existing libraries that already built these patterns. This library, signal-utils, is an adaptation and aggregation of utilities found throughout the community.\n\n\n- `tracked-built-ins`\n  - [`TrackedArray`](https://github.com/tracked-tools/tracked-built-ins/blob/25f886d3d60ea3876f3ceaf31756e9f06eda49d7/addon/src/-private/array.ts#L1)\n  - [`TrackedObject`](https://github.com/tracked-tools/tracked-built-ins/blob/master/addon/src/-private/object.js#L1) \n  - [`TrackedMap`](https://github.com/tracked-tools/tracked-built-ins/blob/25f886d3d60ea3876f3ceaf31756e9f06eda49d7/addon/src/-private/map.ts#L8)\n  - [`TrackedWeakMap`](https://github.com/tracked-tools/tracked-built-ins/blob/25f886d3d60ea3876f3ceaf31756e9f06eda49d7/addon/src/-private/map.ts#L134)\n  - [`TrackedSet`](https://github.com/tracked-tools/tracked-built-ins/blob/25f886d3d60ea3876f3ceaf31756e9f06eda49d7/addon/src/-private/set.ts#L8)\n  - [`TrackedWeakSet`](https://github.com/tracked-tools/tracked-built-ins/blob/25f886d3d60ea3876f3ceaf31756e9f06eda49d7/addon/src/-private/set.ts#L119) \n- `tracked-toolbox`\n  - [`@dedupeTracked`](https://github.com/tracked-tools/tracked-toolbox/blob/master/tracked-toolbox/src/index.js#L148) \n  - [`@localCopy`](https://github.com/tracked-tools/tracked-toolbox/blob/master/tracked-toolbox/src/index.js#L28) \n- `ember-async-data`\n  - [`TrackedAsyncData`](https://github.com/tracked-tools/ember-async-data/blob/1346f03c7fa677342408a9811916b916e3c4ad54/ember-async-data/src/tracked-async-data.ts#L31) \n- `reactiveweb`\n  - [`trackedFunction`](https://github.com/universal-ember/reactiveweb/blob/ba40c8a4417ec8b76bfb37754262f2829c6f7b26/reactiveweb/src/function.ts#L1) \n- `tracked-draft`\n  - [`draftFor`](https://github.com/chriskrycho/tracked-draft)\n\n## Related Projects \n\n- [Jotai](https://jotai.org/)\n- [Pota](https://pota.quack.uy) \n- [`@preact-signals/*`](https://github.com/XantreDev/preact-signals)\n- [Svelte's Runes](https://svelte-5-preview.vercel.app/docs/runes#$state-frozen-reactive-map-set-and-date)\n- [`@vue-reactivity/use`](https://github.com/vue-reactivity/use)\n- [Metron](https://github.com/robbiespeed/metron/tree/0.0.3/packages/core#list)\n- [Solid's Utils](https://www.solidjs.com/docs/latest/api#getters)\n","_attachments":{},"homepage":"https://github.com/proposal-signals/signal-utils#readme","bugs":{"url":"https://github.com/proposal-signals/signal-utils/issues"},"license":"MIT"}