{"_id":"signal-chain","_rev":"40-cef6c5442645380850a999ff98770af8","name":"signal-chain","dist-tags":{"latest":"0.12.6"},"versions":{"0.1.0":{"name":"signal-chain","version":"0.1.0","keywords":["signal","declarative","reactive","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.1.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"1c852424b86e1add71174c9ac38f01dab7393ec9","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.1.0.tgz","fileCount":61,"integrity":"sha512-d6+B8WKzzuYgO7uGUxNT0vgmG91n9wQMjH9qNcxk7E4ouFkiDpBpu5P3pG1wwnh4eGwTOXPLBqS/DMCsOh48kQ==","signatures":[{"sig":"MEUCIQDJl1k1/k47T6+RKcN9SwWM2lHL0T6DO7BXHvutmEqEzgIgVI99lRG7eJokkX06NRrGBIxd+LOHScmlbwZfIAzatMY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268441},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"51427cdfb584288bbf3490571d7ebc8cc409f127","scripts":{"test":"vitest","build":"tsc"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative reactive programming library","directories":{},"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.1.0_1710888756608_0.004089642254562875","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"signal-chain","version":"0.2.0","keywords":["signal","declarative","reactive","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.2.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"b45892772ce752d70b0fba538c2e4658193d64cb","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.2.0.tgz","fileCount":59,"integrity":"sha512-ktFLiX2qKduSgCp008DU0V3dnzjNcWr4lel7G5CCeX+vlKwPVwuNY2CYAjmYMpkUrNA0nRbEoJy2jOBeXuhu3A==","signatures":[{"sig":"MEQCIDjBiTzxANK7/xcazVdlQow9QL3ycOuRxoijAJXyoAP6AiAcK7+JHRtdZvbEZFJJAp9lrzA5NvmChHdAc5EFc7/sKA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270409},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"ca8fe21c36297494328d98d48d57cc8878936ee3","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative reactive programming library","directories":{},"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.2.0_1710903634643_0.4787688387534821","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"signal-chain","version":"0.3.0","keywords":["signal","declarative","reactive","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.3.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"2ec216fc564a1131b7b7ba9f50147070b6a89cee","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.3.0.tgz","fileCount":60,"integrity":"sha512-ZqvnkvqRPuR8+K2CoK+3qnoSvJ1O04Ul1+HTgZfj1cEr1/Vd7tgp6uyxRO+Ua7l3Eb5G+fFyZKv1kAZOvN0Z/Q==","signatures":[{"sig":"MEQCIGk5XHVB8MYkCmXyYcMM9/OBOZDZyPVLkVeyrZ/PQZIBAiBEbbHJt5CDDBCQAvOQV3jLrSvia3QjErycdT0/64k5Ng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":278440},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"6bf1876abbf1987fd0ea8d2c254244ece38a20f9","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative reactive programming library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.3.0_1710957600005_0.2365622674003207","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"signal-chain","version":"0.4.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.4.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"005aa6a04e1ce04c2f74ad6ab0b676cde4a2302c","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.4.0.tgz","fileCount":63,"integrity":"sha512-vBOuMeyir8F5c+I4vgWFo57yQR4xGvVHPbpO2mIrkKy0wL8p8ObtxP8993Fl5PJjn+nprz6z+iHWIngTnh8Oeg==","signatures":[{"sig":"MEQCIBNSFVs4uxc4KCdmFT5pSPYeJFIx2EmrdBJUvYixpNPdAiBsk3Zoig2Rh8As5R5PSKcBWckp8sux8gh3JA4/fqJOiA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":298770},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"5684c25c1f9d086c203f27a8d3a5f6611423e82f","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative reactive programming library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typescript":"^5.2.2"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.4.0_1710992813011_0.19337764770475419","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"signal-chain","version":"0.5.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.5.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"a69c7da78b864b4fee006bad56e8b4fe3d0956d6","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.5.0.tgz","fileCount":66,"integrity":"sha512-5r8HYAs7icyspMJUUhjl1bshpGslBBSCuPQGQophkGBXbqCqQsJeztK4mqq/E8QdqIBZUUi3EAPCux4kuQ/NNQ==","signatures":[{"sig":"MEUCIE6kKQlYWlecf3gGkoWnnigIqyDXuAP/EXAsK7wisU08AiEAo09Tj0OotrJurQ/1+78qlAN+aCLcFmWAzkkQw6FiRhg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":306006},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"54ad7579d9a44fda873a36d52f21da716fdfaf84","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.5.0_1711072064683_0.7861730315019095","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"signal-chain","version":"0.6.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.6.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"c051e3903c198e94079b84303cf8ac7f8f765ae6","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.6.0.tgz","fileCount":66,"integrity":"sha512-/dDeDG6mCiiNSchwq+jYQwr5kfl4qtpQg1ajOfObU63GyFYxY91WLeaxnM4fKiBJ0Knl0KdTkbr76gjS4hVyDA==","signatures":[{"sig":"MEUCICD/Wxe/B7mudWsUCHX4WmIogAsltYXdb8mcvbHdR2AgAiEAxR5KQ1VjUgllGEZjMn0kW2nlOSkQs6VQTwZaSLnv0+c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":297298},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"6af67035d19f36748bcf25f26a5b4bef781d1c14","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.6.0_1711126029552_0.38962659350040174","host":"s3://npm-registry-packages"}},"0.6.1":{"name":"signal-chain","version":"0.6.1","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.6.1","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"f01abc6e1229eb11bff6e956d848e6be2407bf7d","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.6.1.tgz","fileCount":66,"integrity":"sha512-LOYk/yGsHPQ86aa6cOmvxEtD+QkGv4BD0wQEIFD8pqfWNq7gSgbmU850ERzcJ+L+tcg8mMDV6TFojbtT9ZPnrQ==","signatures":[{"sig":"MEQCIA/73nsjA2wUsc1mY75ff+k1bn/6f/dL15b34UZ9qyyGAiA4oH4M3zwNt96NXhsIX8cvWFIGOrYPUOp7tm5SP2C0ZQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":300234},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"b5003470e62cc9c2b1c12d7711990e9ce988b13b","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.6.1_1711290687837_0.937446426540264","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"signal-chain","version":"0.7.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.7.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"4ec6a3844f5f86c3b59b7d8510c7bffbef47fd46","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.7.0.tgz","fileCount":69,"integrity":"sha512-IU06kagCmJ8NbKS/0+mR0CWt2wg9bs5N8iISXnRlAAjWzy6P4MHSPnd7zy7QZ5YoKFJx/2ETHv6S64q1IqTQlQ==","signatures":[{"sig":"MEYCIQCTaqLxCrIlRV4+ZE2echJBjihXDNHK2+UkIYz5hvGt9AIhAPW3k2Ov588KRBv2GmItBSusnx/hDZb3i9qDIL7nyx0e","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249077},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"c0731d27d8234b35eb167b2d7f06073bde59d64d","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.7.0_1711492605032_0.5300701897457776","host":"s3://npm-registry-packages"}},"0.7.1":{"name":"signal-chain","version":"0.7.1","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.7.1","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"c6b7102341704c29eb2d6fbbb34c7a7456249e12","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.7.1.tgz","fileCount":69,"integrity":"sha512-cGbRF6CR1urxWu68rHGSgy3o5v5qCPuFnKBsDQJdpylgPcoNkhG5p7zlbU442q488ljKEBZjDY4cAGcTfcmDTQ==","signatures":[{"sig":"MEUCIQCLAmSuY38hYrQ0AUbygEK9KdcWsBtTbr++RQNwdJPeOgIgFxo/PWE1GjK9SqcAMHrMcoMFYRG8TQiTKLdBlyH8msA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250520},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"f7b43e1bc46b785ca823b3d5d8a4786e661e42d3","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.7.1_1711503248430_0.6174443794629163","host":"s3://npm-registry-packages"}},"0.7.2":{"name":"signal-chain","version":"0.7.2","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.7.2","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"7b271492b8b7daa5d3c29196906417c535b3cfc5","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.7.2.tgz","fileCount":69,"integrity":"sha512-nw591YntCy3T4K6RRcJlFhYdpZvTedBmZHQUI7dhfwHQFNEtqJimkG9ugNFlHLg//CUnVwOCNa6CrT9/MGWp5w==","signatures":[{"sig":"MEUCIQCVU3u8tAKtGhHsjVzUUrgsH+MY8RIIyE0ORlfoaUzn3wIgSv9Xc4y7SHlbPlAz5TNFBwvn5Jx11Ozn/Miz4d0cW/Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250641},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"5f6d93de71ed027da711eff137c13a317f1ca702","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.7.2_1711508085845_0.8559330041322777","host":"s3://npm-registry-packages"}},"0.7.3":{"name":"signal-chain","version":"0.7.3","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.7.3","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"0dc27f92449156deafc4162bffbc86930ef10af3","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.7.3.tgz","fileCount":69,"integrity":"sha512-BqgzKw5VjWXTPWtuxdFZiiMTlJiLVUtFq5WXDiFJn8MXfs6y8Kck/BDnaI4jeMqZqvUmAM+JJc1z92zkV6mVAg==","signatures":[{"sig":"MEUCIQCJSOo2DVvGMFz+M1vZvMl/3+NWaRHYszlM9vJaJScsiwIgJ82Qc+FOakt8L7uMSmA5XqUa8EctynLvuIoltnKg/c0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250947},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"5f6d93de71ed027da711eff137c13a317f1ca702","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.7.3_1711509955185_0.6151546367580203","host":"s3://npm-registry-packages"}},"0.7.4":{"name":"signal-chain","version":"0.7.4","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.7.4","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"aafc12c1b2ac8cbf656b500627f0c228cddc03c9","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.7.4.tgz","fileCount":69,"integrity":"sha512-hKwBodZwFXkiDY+YiDaRrqN3uQvZSjGSO0qeoq8pnrG+zCDR5wvMGCwRH7AVB9ePliKE2IYlJGRzUfLnmjnfNg==","signatures":[{"sig":"MEUCIBuRrhecIR0NR971mYZGb00dnCBUUUwqBYQpFytRDcnfAiEA8hREJ/TS+MUJDfVYo+bR6EXR5m43RZQfojaL7dMRh9Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250994},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"cb9fdee7768fb2af6cda4e201c51ecba5106bf7b","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.7.4_1711594205436_0.25569366067471955","host":"s3://npm-registry-packages"}},"0.7.5":{"name":"signal-chain","version":"0.7.5","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.7.5","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"a171bc5ec771fa2eba48763712e5688cc5cf24a8","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.7.5.tgz","fileCount":69,"integrity":"sha512-rhYZlbzBgY+S2TGXYHajnu1FkDoNbRbAecGADOa5BLcOixfgKFoMZmDyXicr/ipFVEDOl9ze/QbDhiQQ8xPS1Q==","signatures":[{"sig":"MEUCIQCbft3dWH5MQJ8fORbxwcfpf0GvHGCrKW/jlqmZd3cPbwIgU2/NGYnJ78kDoXzDN8maBQnQrxFPofq3VfB32cVZ/o0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250994},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"2c4bdba2b32401376a8778401d2990277c375574","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.7.5_1711595800220_0.7536973331971222","host":"s3://npm-registry-packages"}},"0.7.6":{"name":"signal-chain","version":"0.7.6","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.7.6","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://christophfranke.github.io/signal-chain/","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"99825187d81c3f10e15c6c1338a9f8422b6fdddd","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.7.6.tgz","fileCount":69,"integrity":"sha512-JyGcw21HzQXqer+KpF1Ya+T6CVlFIGSLE+2c+yh6qxOmp57N4a99Kx4/dTYd4BdTRnadJbRatSrugyu1uxIMmw==","signatures":[{"sig":"MEYCIQDSrOV66VL4QQEGsrStJYxFjA9Fb1NBcRFyxSi3ox76GwIhALSs1fSF/Htu0d45gfxRcBU84c2lsbQGXT+LbF8kW8u/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250994},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"225071393b978bd3726597e6964f155701f66f1a","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.7.6_1711596392985_0.04013675142556972","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"signal-chain","version":"0.8.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.8.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"77e577f07e5e57107b60ea0d92cd1cd755a554bf","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.8.0.tgz","fileCount":69,"integrity":"sha512-OvYZI6Z4GWktUu4ECI5iz7puIu2Cn94TdtfyWnAsndmTBWGEKR5HPg0h/zsxvc1RBWmGpmT0LesS7q18b7bteA==","signatures":[{"sig":"MEQCICtNSlsOQzFCkNb5jL0ilYMOgiY5GkOQKHPk87RdRyB0AiAPAU1pOEGaW5gEZg1d54W4D4jReV37wpo7q1z/xUfByw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257135},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"45bcaf704f080af950c208b171108c5436becfc8","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.8.0_1711644548899_0.22525360920146564","host":"s3://npm-registry-packages"}},"0.8.1":{"name":"signal-chain","version":"0.8.1","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.8.1","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"4992d31fb012522c5e62b5170bc4230edd029021","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.8.1.tgz","fileCount":69,"integrity":"sha512-DsFWhUHzDL8Un4Wv6I4v6Qma13MXRSid1ESg7dAeCMvRkzcdgKVnC93F0BrxiwdwkYneYcKmLehpDmYrYSII4w==","signatures":[{"sig":"MEUCIQCHk4jmhJVNuO+Pu17Ql0Fxpf9BZ8q0cAMJh0o4teUgSwIgQtKvrfG8FgFHJnSVzyIONu1FZSA0610ElK0bG2IeE1M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257114},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"5b2a145a6e9d87dd0c3a05e64f91f9f09cd2f1b7","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.8.1_1711645192828_0.2295072359018051","host":"s3://npm-registry-packages"}},"0.8.2":{"name":"signal-chain","version":"0.8.2","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.8.2","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"e5fea703f6bd03cb0300bffca2e24c7bacfea092","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.8.2.tgz","fileCount":69,"integrity":"sha512-CIw8iY7mQi6B7UU+FRl/p6eqQmvRRNQqkACcOBMKhzJK4CDq6DP2WC2JzhGu2PT7cohmyZxMRx0BGxlvyD/DsQ==","signatures":[{"sig":"MEQCIF+GkILyszvIUQRjNqkgZSOQqBLJLBcmb2sJsT4bvOQbAiAOolK6cY9v3+bQqvrJQepVBqWBZX5DKS94D4hYKpVrvw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257145},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"f758ccc9c2c3cc5caae199445e5b7d6119252259","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.8.2_1711645776412_0.9424504943013658","host":"s3://npm-registry-packages"}},"0.8.3":{"name":"signal-chain","version":"0.8.3","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.8.3","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"14f7aa90bb098ed34716ef8bce2b2688c3120980","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.8.3.tgz","fileCount":69,"integrity":"sha512-Jl9xt2aUh1UWno4fZnZzJeJ3qzu4nqk+HXhCqkWcFaGG17BHQXTlsBFQwTFvtW3SxI3CJkcGfd5iMsbMjoKspQ==","signatures":[{"sig":"MEQCIDYm77Fiv+ilC5ML2dh1Lyx3R4gx6xaoG6NuIC0iHtGCAiB1JHwfBAx2Y0GFAMvaR4/acz0Fyoxo9pQy/HzhgMBayg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257206},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"f758ccc9c2c3cc5caae199445e5b7d6119252259","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.8.3_1711645938629_0.010497483397575502","host":"s3://npm-registry-packages"}},"0.9.0":{"name":"signal-chain","version":"0.9.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.9.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"e4f77fe31f061ba98a410e3a879498da78fff3aa","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.9.0.tgz","fileCount":66,"integrity":"sha512-oqigbPvIffxlbG+pLBca0pbDzPav6poUUdDf01nNb8ebbeLFe1xNMFrK+x7LqT89T+/g0Ed5b3me4ZnC6vH8wQ==","signatures":[{"sig":"MEQCIE5YIrNykITU2n5zOVyGTfCTTL5L2MysMSDWckaZlE3PAiBK5TEq8yY2GG0BiFx57KHlF44ky83iswKngVUeq37iPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":243408},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"bb21a885d14e449ca56c883db9d1f13e6f260d79","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.9.0_1711684715207_0.29705003811510067","host":"s3://npm-registry-packages"}},"0.10.0":{"name":"signal-chain","version":"0.10.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.10.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"df89846559e142be6f987945f5fb065df3c1c0d0","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.10.0.tgz","fileCount":66,"integrity":"sha512-4Ed86Rt0GTeZWca8P7sQIJ2ADv80o9mNfqd5RcYTOPiJ0XMm68X+Jb54AZRDLrA3pjFBc7zHM3fQbfd5mAT8hw==","signatures":[{"sig":"MEUCIDmQNmJOJ+x7es7jIwxdplZIn+PoZrOgtoCyBPderDizAiEA6nQUKuB0Me/M8QqrProaIWU7SCbqH/SYNQ0Ah9nbhNA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":297963},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"fe57ba3c2e8409a47a04b5ee4f7d49966761b313","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.10.0_1712040623481_0.7611334547621362","host":"s3://npm-registry-packages"}},"0.10.1":{"name":"signal-chain","version":"0.10.1","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.10.1","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"0a9c3abd435d7c6d1d5d6f94883efbc8f45a5521","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.10.1.tgz","fileCount":66,"integrity":"sha512-RaHRCy4zlSZM5c3qPpzekqdL7va7qsA1R8MTsRZtKnUaANucxkH9wccaYtV6KYD95RHK/IJ0Z6IWpOk9922DFA==","signatures":[{"sig":"MEQCICa/z3MxNESFt15H7LNjcmEuMvxy3BJunJyywXY0+EPYAiBxMSMjvUhNz4qbwPOMaFiIRLbB3+kFHHKIJtamgvM4ew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":300389},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"3d8351fa87ed74be4bd7fc0250dd8d2fdee68ad9","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.10.1_1712043066520_0.921932576223055","host":"s3://npm-registry-packages"}},"0.10.2":{"name":"signal-chain","version":"0.10.2","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.10.2","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"c06411c1f6f2c3d15b9959f3e99b03b2d9e83305","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.10.2.tgz","fileCount":66,"integrity":"sha512-xABM38CUobsdM3x1jJ9xUL6Zj4egBhSsDWjb7WZQP/CD9l4jwkDajgsHKaO0HzB/3g9D1ZYvQ6HdM1Ai0ZdbWA==","signatures":[{"sig":"MEQCIHEzku+qELAj//aD4rI/IegrR3xsIwdqGbYERNL/8tX0AiAHWU+qwaPRtnpeF/3G4H9cBXv9/OJPRzoL+/CBCuubaA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":300280},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"467ff4e162b33434fa7f25a818ac27d76c26f539","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.10.2_1712077490229_0.2028933883852473","host":"s3://npm-registry-packages"}},"0.10.3":{"name":"signal-chain","version":"0.10.3","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.10.3","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"9aa93bd011a9f0adfd9741e26c3c94f98496c78e","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.10.3.tgz","fileCount":66,"integrity":"sha512-ByaVZi0OpBPhciqKU5+0VsZZWdoBfVrrcOrW8DxlPQ4UoKnMiT4Cmu2J7ds56Xb2x22v7ytS3++CPA2azDGyvw==","signatures":[{"sig":"MEQCIQD9a5yefKM38Xe0lWt4GAFD6uQh2FhCevNFJDjE1IJgXQIfaFPxsz3R9Dbi/+X5gSYra7mkSyk4jXAP2wUoiDSOcQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":300289},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"467ff4e162b33434fa7f25a818ac27d76c26f539","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.10.3_1712078846056_0.9889523849940538","host":"s3://npm-registry-packages"}},"0.10.4":{"name":"signal-chain","version":"0.10.4","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.10.4","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"74f4e17a2f08d0123b6aeb88aede667923af71e3","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.10.4.tgz","fileCount":66,"integrity":"sha512-gsCgcfdf69Mzh17E690Fn6xKhPfWoth8z/3frnAOn8EK8BFWtKf3wn5QIH5nsDUXGODpIOgFBs2omwAlnnurkg==","signatures":[{"sig":"MEUCIQCLUH00DmqniABFUPtxmU+rAlUrR74lRSVnqXecsB2U1wIgRCW5s1LhiLb3rNN5M6LvWGarj991IajB0rF7Nwjlvqg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":300741},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"6e7c71cb99fed5be274546d35b7c05b8d8cd7233","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.10.4_1712246892070_0.04656088652151924","host":"s3://npm-registry-packages"}},"0.10.5":{"name":"signal-chain","version":"0.10.5","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.10.5","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"6f0392c0f6ff9b7636f643649002cee07a155a52","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.10.5.tgz","fileCount":69,"integrity":"sha512-RrEdXr8FIQPOvCFrQfG/WUtkTzu/dhCW3GBY47jrusZaz1jOZ71BKJpZitcNjVWoR5hWKjzPCXIerhkrK5Drxw==","signatures":[{"sig":"MEYCIQCCb7uXEIvHlDXhxRjE/3rUvyCB+4FtuWIpCSJ6BQbGmAIhAI8Ie/TxCP4td8j8tdf08kZQy5cPQd5hM32KdLp6sux6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302233},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"d354a0ec0c5d0dca077e4af3754945a2448596e7","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.10.5_1712378100539_0.6402186357148563","host":"s3://npm-registry-packages"}},"0.10.6":{"name":"signal-chain","version":"0.10.6","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.10.6","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"a57b813fe7974affb8e6fb7475af2f955342cdb4","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.10.6.tgz","fileCount":69,"integrity":"sha512-s1sTK+loA5Dj284wPzHwGomICnnTqEQE4FJuAODOKJyjFRaZhTKYq5GyvyVbp8zaBNxZTQFU9H/vIgFic5i0EQ==","signatures":[{"sig":"MEYCIQCaTxQXDjiiKAszAZFFNJmhrgw0ndV6VqDtoLGWF51kTgIhAOwPdEO1u32YFx77m0plmghidvB3lcnyIgq1by/4pKu+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302232},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"d354a0ec0c5d0dca077e4af3754945a2448596e7","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.10.6_1712378164665_0.9917475880559918","host":"s3://npm-registry-packages"}},"0.11.0":{"name":"signal-chain","version":"0.11.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.11.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"3533fb2a4e663e6be20b9d1a00b569cd5a3b0964","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.11.0.tgz","fileCount":69,"integrity":"sha512-HwLmVneeFLKvlCTw9MNeT4QDLY4jm17LeBmlyA408LQwT1N5tkEr7Im+B0yTonkR3Ali7EyZYMHdgyiCwgv45Q==","signatures":[{"sig":"MEUCIQDdIagNH5DPs7ewGZkx9X3e1i+dbafQY2f5lGb2icatzgIgLh5kujlXpgdQ8SkWA0yvrwzIICEbrW5iNAbGUh6Cc54=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":303084},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"d9ba4cb020f05b1be4ef7cc2a75c06d927a39b90","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.11.0_1712379418037_0.9414061365301807","host":"s3://npm-registry-packages"}},"0.11.1":{"name":"signal-chain","version":"0.11.1","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.11.1","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"cca3593a725358f5d6d3a5c1d279ba66b21d19ec","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.11.1.tgz","fileCount":69,"integrity":"sha512-deRjLPpikwxNkbFGWUehK8m76vdWOYcuJvya3mK+Fqj7eoimgxmODwLVOqyJei66lr46Wzar7vW6RkRLLzGKUw==","signatures":[{"sig":"MEYCIQCgIo6n6NoRfwE6BBbvpXniePAq0+oHgISsChr/gHHvBQIhALsEiZ8mDT5IC5S/w2SjYeiwUYqpi1PwFlQCCJYtLnJ4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":303190},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"d9ba4cb020f05b1be4ef7cc2a75c06d927a39b90","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.11.1_1712379526440_0.01036737516432984","host":"s3://npm-registry-packages"}},"0.11.2":{"name":"signal-chain","version":"0.11.2","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.11.2","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"450303fee6c5e5c8c500c156cd47d89258f4c643","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.11.2.tgz","fileCount":69,"integrity":"sha512-4ji8qxEHFaTmo621OJLSgbK7x3em565avP4aOMtTfDQq3KHYo6l+Afq8xAdPon7X6+t13EMr1I8Rtrug2vK6hw==","signatures":[{"sig":"MEQCIESVFOrnqOP+1l/xAKP5B/IhU/QhgaH08vmP0jKtBm22AiAwHrEWJPKvmXYICWLeniyDh8+m+ZbQXzkryllUOqH+fQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":303383},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"3d119ec03ddfee4ef0e0109860c56cbf74b21f09","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.11.2_1712411388889_0.3890644188952428","host":"s3://npm-registry-packages"}},"0.11.3":{"name":"signal-chain","version":"0.11.3","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.11.3","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"c0cc2fdd68c4513e37179e018cd61e7bb32ad799","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.11.3.tgz","fileCount":69,"integrity":"sha512-rxllHlx7Mstpx98e2NAOpl04m9obJBW7iTIjFwx2JxTtB2jHqOOLRK4p8QL3+1ZeW7iMoi0ckcSESBR4VpUUAw==","signatures":[{"sig":"MEUCIQDc3bTR4kH9DJgQTApTaSekQgxKwkHqA7KNF6d9E0JSQQIgGQO+j+fIk1vSnhLtGTnbLquwSsot2DoHLwYf1hBBHZ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":303437},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"0d615433bc040b33276f8752d58bf8fc9649f037","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.11.3_1712420446549_0.5367855059884878","host":"s3://npm-registry-packages"}},"0.11.4":{"name":"signal-chain","version":"0.11.4","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.11.4","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"9ee7efd840ca919b744c266b5bdc62f8e452587a","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.11.4.tgz","fileCount":69,"integrity":"sha512-alR/SCRGMB/CLDt+T0AOj3+sNpliTTnNRJhBxE3cHk1TiXKEumEntwWUJMkL4RXvgb5T9gGu7Oo/VxgcCvM0Bw==","signatures":[{"sig":"MEUCID9NIuLWOEBu6LOnzpdZ/0q8pcfngQxocjAHCatsHZSiAiEAlFpqZjF1spIBvTiGgx2Ye90Fk086D3a95Ve6Okd7nR4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":303469},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"dca3c1f8ac18f2a7073cceb52bb939d539a7f14b","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.11.4_1712422051854_0.07597861114378124","host":"s3://npm-registry-packages"}},"0.11.5":{"name":"signal-chain","version":"0.11.5","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.11.5","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"396fa1b7633fb73481ad423f16f15ae6df8a9910","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.11.5.tgz","fileCount":69,"integrity":"sha512-v63ctfpAjYGD44nSK7Vzw4+d4lzzVx9JC2qNp1+uZ+W4UtLxqIA7RuFS2p7Ma/SH+h+d/dO3hl5elLZ3Gp34pg==","signatures":[{"sig":"MEQCIA7UKD0Lm5B642kcxe0OnrnSCU9ZfvC2UIpQg7sh/hmXAiAEhASBzavNMxnbIoTlFgOWS5IRF68+R7LjkMhvrRGC8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":303471},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"7d2608eaafea003a83776540118665b687710b94","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.11.5_1712429295409_0.8917658441675032","host":"s3://npm-registry-packages"}},"0.11.6":{"name":"signal-chain","version":"0.11.6","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.11.6","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"41344403f553bb501395b106c90255ddab631c9b","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.11.6.tgz","fileCount":69,"integrity":"sha512-fKQxnVeG5/ljaSPRSJMmXYR/X6jdhGEPOhmRqfXhpu1zoYXC9/4B6eZTihwBFd9a759XK4x1oXHcPZLvGYCbwg==","signatures":[{"sig":"MEUCIDGzkIJ8lzupkBXafU9QITHLFFQ0FRYD2QOT/nVScHrJAiEAtlgTz0g2e3hOXdzfgIMioKP39IVdiwD/sNr5G5Kz8b0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":313059},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"a03c7b09a7daa6bdff9dd661332f8a9f22f61b5b","scripts":{"docs":"typedoc src/docs.ts","test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:w":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"9.8.0","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"20.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.11.6_1712589965235_0.9979233913849592","host":"s3://npm-registry-packages"}},"0.11.7":{"name":"signal-chain","version":"0.11.7","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.11.7","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"415b6cb7f2b162e1dc9c7d345d044f465e84e20e","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.11.7.tgz","fileCount":72,"integrity":"sha512-gQsWlooZF6ym2ekoW0K+9trugApu6eel4Wvi1icAUdPjCDro/Cg3MTh4JNfJaBzXxt5dtMOATNQa760cEOTFXw==","signatures":[{"sig":"MEUCICWLMEHkdbHer5eaRTFLkrdEv3GyURWh29VSwldPDwQ0AiEAlrf4tWFvjecW055YinjbD13N9BSUkXDWVb+6cVVU1tY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":304079},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"f22b0fb60ebf425c29ff8c7ed414b89a79c7cc11","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"10.8.3","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"22.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.11.7_1727741472224_0.5580384760046881","host":"s3://npm-registry-packages"}},"0.12.0":{"name":"signal-chain","version":"0.12.0","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.12.0","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"bd182ffa632599a2277058520ead96c5604d70e8","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.12.0.tgz","fileCount":72,"integrity":"sha512-4Wq0mDajRpAIVCedcaosfFLH3/MvwNvYk6hiTo29rfWrO8ChxAGjKK/ecmhC+R3GxUpogZV8GFqJbXrhFoXCrA==","signatures":[{"sig":"MEQCIA5C+6vgd+/JSOof3PEBvHHhP8JzOBzbD1jHSijTaSmBAiB2gKB7p4HwOr5PN9AcCBeL9QCB96FYTIzWKy2u4hwp4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":304079},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"f22b0fb60ebf425c29ff8c7ed414b89a79c7cc11","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"10.8.3","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"22.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.12.0_1727741527736_0.6712876084807271","host":"s3://npm-registry-packages"}},"0.12.1":{"name":"signal-chain","version":"0.12.1","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.12.1","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"40b1e15123388a536bc6e7e1c9395f65cd54b4f9","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.12.1.tgz","fileCount":72,"integrity":"sha512-0niwzKbqjkfofMHrZnGnhtt8Fbbq39q53NFSiOJhtsEiIvlVc/7Yy8MGrTVegdYNpQkqp0BWigaTZU1jX1xd9w==","signatures":[{"sig":"MEQCIGDvWswfx/IbmCI8l8HzA9SY5RqF4+d3sZq1p4fd5zQ6AiAFG32zGSuqMTxthQCwbNl3DIHc+pUG63dbyE6DWwjtpQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":304143},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"f22b0fb60ebf425c29ff8c7ed414b89a79c7cc11","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"10.8.3","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"22.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.12.1_1727741925167_0.8148792706172352","host":"s3://npm-registry-packages"}},"0.12.2":{"name":"signal-chain","version":"0.12.2","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.12.2","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"73c226c0e3aa3a0c982c7f5c0ec5f86a28fcb5ff","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.12.2.tgz","fileCount":72,"integrity":"sha512-IerdBvrdCx8F7S1zhxFezGvZnKkOJdOHb0/eKThqy4EPdo4QUWv7++yrdNMfLkB3g11SCn714Bm5nTwkqt2Z7Q==","signatures":[{"sig":"MEUCIQDSdSKk0apQ9ZqliE5/9+HfQXxC9x20M19vKAxiXHkzTgIgdDs0kf0hUDUXo0Ij+MObhl0hxVBUHUpbF6T+X2WJt6E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":306351},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"a03701f438517bbf069681d43b9d7a7140f0c71a","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"10.8.3","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"22.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.12.2_1727750324618_0.7874723187615404","host":"s3://npm-registry-packages"}},"0.12.3":{"name":"signal-chain","version":"0.12.3","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.12.3","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"d585c71e886ed2fb53fc8fe4fc753ee6696fcf75","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.12.3.tgz","fileCount":72,"integrity":"sha512-e2DXNWtLqXPXqa9pXUCAfoCST2Y533zvL3hFpN/Uvh3hD51LNGo42mZKnj+iTNhBrahFJ5Hwh4cMDiDexNtbug==","signatures":[{"sig":"MEQCICfjd0MnhmvuTeAep0xAmB8D7/NoTR6QbVWpvRITUkfWAiBYXyAMCTBkd4pfh15jCSKtUwAFP08ZgTWtBwyOCCc01w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":306395},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"3db64be917da07683ff20f03faed76eb7b9c8b29","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"10.8.3","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"22.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.12.3_1727774479153_0.7967752033198985","host":"s3://npm-registry-packages"}},"0.12.4":{"name":"signal-chain","version":"0.12.4","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.12.4","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"f511090b120f7f704fe0c7452fd047f9d6d9e112","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.12.4.tgz","fileCount":72,"integrity":"sha512-k+TVO24UvlCCfpi68wkQ1hgb4tzoua6vn8R0ZymeZL4Uz+QrLNIlVHAow1y91WfH+CuINGRtTULbWNFSMXNDcw==","signatures":[{"sig":"MEYCIQD7ibkD4SGtLd5s0S/NrPOgDFoUpauYE0o6iDeCZ/rF9AIhAMtMY3u4GLOKou5IBHdeZu2k0QfBqo2KF2mEmlMpSrua","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":485216},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"e064fbbc361b01e2f5b41fb1cd983c5b5c1eb3f3","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"10.8.3","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"22.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.12.4_1727801194553_0.2549662571059863","host":"s3://npm-registry-packages"}},"0.12.5":{"name":"signal-chain","version":"0.12.5","keywords":["signal","declarative","reactive","state","chain"],"author":{"name":"Christoph Franke"},"license":"MIT","_id":"signal-chain@0.12.5","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"homepage":"https://github.com/christophfranke/signal-chain#readme","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"dist":{"shasum":"56bb87f3d47ba5ade2682cb9a9003380aa68caab","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.12.5.tgz","fileCount":75,"integrity":"sha512-5HQ9+0FUOcod8Y7sFUfmvJIf7lZuv/7K76mBOUnrsZ1ZcZBvGKe8TvWkxuTmYqsPb9MRuC9fPGKstT0RO959Jw==","signatures":[{"sig":"MEYCIQDEug87VflWIwqXCnfRy97zAwfMFfOBbS3KmPbOKg8YvAIhAMWK8w7BZz3xEqgF+nOsjDM+sz3BKZRvdAmOqYzQVMtT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":488753},"main":"dist/signal-ts.js","type":"module","types":"dist/signal-ts.d.ts","gitHead":"cb9e0fca844792fa0240b478823670569c0e6cad","scripts":{"test":"tsc -p tsconfig.test.json && vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"repository":{"url":"git+https://github.com/christophfranke/signal-chain.git","type":"git"},"_npmVersion":"10.8.3","description":"Declarative Reactive Programming Library","directories":{},"sideEffects":false,"_nodeVersion":"22.9.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.4.0","typedoc":"^0.25.12","typescript":"^5.2.2","typedoc-plugin-rename-defaults":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/signal-chain_0.12.5_1728000086084_0.4886918955602386","host":"s3://npm-registry-packages"}},"0.12.6":{"name":"signal-chain","version":"0.12.6","author":{"name":"Christoph Franke"},"description":"Declarative Reactive Programming Library","license":"MIT","repository":{"type":"git","url":"git+https://github.com/christophfranke/signal-chain.git"},"sideEffects":false,"keywords":["signal","declarative","reactive","state","chain"],"main":"dist/signal-ts.js","types":"dist/signal-ts.d.ts","type":"module","scripts":{"build":"tsc","test:watch":"vitest","test":"tsc -p tsconfig.test.json && vitest run"},"devDependencies":{"typedoc":"^0.25.12","typedoc-plugin-rename-defaults":"^0.7.0","typescript":"^5.2.2","vitest":"^1.4.0"},"_id":"signal-chain@0.12.6","gitHead":"5292979c557477d9f45f29868390935e734dbce4","bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"homepage":"https://github.com/christophfranke/signal-chain#readme","_nodeVersion":"22.9.0","_npmVersion":"10.8.3","dist":{"integrity":"sha512-TBRGYOY9Nm9SJqZD9tJta0XtHiijegAW+d2SUrFJtUBKCjb15B89pxvc/RmssvZrCdFvnCefUUUaw++oVb01Pg==","shasum":"999c48892e7ed9b1d14a4e459eefa09e6123fdd4","tarball":"https://registry.npmjs.org/signal-chain/-/signal-chain-0.12.6.tgz","fileCount":75,"unpackedSize":496617,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDL5MunYmw3zPo08X/XB+GIMvh3ln/Y4aT5s9OQin8jVgIgc9Bwt4lKK0lIC9U5RwoORqNxgdgtnD0HZcmRz34638c="}]},"_npmUser":{"name":"christophfranke","email":"public@christophfranke.info"},"directories":{},"maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/signal-chain_0.12.6_1729718450492_0.4861742170920542"},"_hasShrinkwrap":false}},"time":{"created":"2024-03-19T22:52:36.607Z","modified":"2024-10-23T21:20:50.914Z","0.1.0":"2024-03-19T22:52:36.773Z","0.2.0":"2024-03-20T03:00:34.846Z","0.3.0":"2024-03-20T18:00:00.178Z","0.4.0":"2024-03-21T03:46:53.203Z","0.5.0":"2024-03-22T01:47:44.855Z","0.6.0":"2024-03-22T16:47:09.711Z","0.6.1":"2024-03-24T14:31:28.049Z","0.7.0":"2024-03-26T22:36:45.325Z","0.7.1":"2024-03-27T01:34:08.593Z","0.7.2":"2024-03-27T02:54:46.090Z","0.7.3":"2024-03-27T03:25:55.354Z","0.7.4":"2024-03-28T02:50:05.614Z","0.7.5":"2024-03-28T03:16:40.410Z","0.7.6":"2024-03-28T03:26:33.136Z","0.8.0":"2024-03-28T16:49:09.058Z","0.8.1":"2024-03-28T16:59:52.973Z","0.8.2":"2024-03-28T17:09:36.633Z","0.8.3":"2024-03-28T17:12:18.809Z","0.9.0":"2024-03-29T03:58:35.344Z","0.10.0":"2024-04-02T06:50:23.724Z","0.10.1":"2024-04-02T07:31:06.783Z","0.10.2":"2024-04-02T17:04:50.400Z","0.10.3":"2024-04-02T17:27:26.214Z","0.10.4":"2024-04-04T16:08:12.226Z","0.10.5":"2024-04-06T04:35:00.714Z","0.10.6":"2024-04-06T04:36:04.952Z","0.11.0":"2024-04-06T04:56:58.244Z","0.11.1":"2024-04-06T04:58:46.638Z","0.11.2":"2024-04-06T13:49:49.056Z","0.11.3":"2024-04-06T16:20:46.869Z","0.11.4":"2024-04-06T16:47:32.024Z","0.11.5":"2024-04-06T18:48:15.569Z","0.11.6":"2024-04-08T15:26:05.450Z","0.11.7":"2024-10-01T00:11:12.431Z","0.12.0":"2024-10-01T00:12:07.971Z","0.12.1":"2024-10-01T00:18:45.512Z","0.12.2":"2024-10-01T02:38:44.851Z","0.12.3":"2024-10-01T09:21:19.345Z","0.12.4":"2024-10-01T16:46:34.775Z","0.12.5":"2024-10-04T00:01:26.281Z","0.12.6":"2024-10-23T21:20:50.752Z"},"bugs":{"url":"https://github.com/christophfranke/signal-chain/issues"},"author":{"name":"Christoph Franke"},"license":"MIT","homepage":"https://github.com/christophfranke/signal-chain#readme","keywords":["signal","declarative","reactive","state","chain"],"repository":{"type":"git","url":"git+https://github.com/christophfranke/signal-chain.git"},"description":"Declarative Reactive Programming Library","maintainers":[{"name":"christophfranke","email":"public@christophfranke.info"}],"readme":"![size](https://deno.bundlejs.com/badge?q=signal-chain&treeshake=[{+default+as+$+}])\n![npm](https://badgen.net/npm/v/signal-chain)\n\n# Signal-Chain\n## A Declarative Reactive Programming Library\n\n**Signal-Chain** is a library for composing observables and asynchronous operations. It provides a core type, the Chain, several operators (select, effect, await, listen, combine, ...), and a reactive Primitive to combine declarative state management with asynchronous operations.\n\n> Signal-Chain is a small and simple RxJS.\n\nThe essential concepts of **Signal-Chain** are:\n\n- **Primitive**: Represents a single reactive value.\n- **Chain**: A series of operations. Can be connected to update a *primitive*.\n- **Operator**: Defines an operation in a *chain*. A *chain* itself can be an *operator* of another *chain*.\n- **Signal**: A value/state, that runs from top to bottom through a *connected chain*, being manipulated according to the *operators* of the *chain*.\n\nTaking these concepts together allows us to express complex behaviours in a declarative way:\n\n## Example\n\n```typescript\n// define a reactive primitive\nconst input = $.primitive.create('')\n\n// update the input value when user type\ndocument.getElementById('my-input')?.addEventListener('input', (event) => {\n   input.value = (event.target as HTMLInputElement).value\n})\n\n// fetchData is a Chain that can listen to the input field\n// and fetch data from the server when it changes.\n// Until it is connected, it will not do anything, similar to a function definition.\n// Once it is connected and a signal arrives,\n// the signal will traverse the chain from top to bottom producing a result\nconst fetchData = $.chain(\n   input.listen, // when the chain is connected, this will fire on every input change\n   $.if(input => input.length > 2,\n      $.await.latest( // will discard all fetch results but the latest\n         $.select( // make http request\n            input => fetch(`/api/search?q=${input}`).then(res => res.json() as Promise<string[]>)\n         ),\n      ),\n      $.emit([]) // fallback to empty array if input is too short\n   ),\n   $.error.handle(\n      $.error.log('API request failed:'),\n      $.effect(error => window.alert(`Error: ${error.toString()}`)),\n      $.stop() // stop execution of chain here\n   )\n)\n\n// serverData is a reactive primitive.\n// $.primitive.connect takes a chain and connects it.\n// It will immediately send a signal through the chain\n// and write the result to the serverData primitive until disconnected.\nconst serverData = $.primitive.connect(fetchData)\n\n// let's presume we have a filter string that can be changed by the user\nconst filter = $.primitive.create('some filter string')\n\n// We can combine the server data and the filter to produce filtered results\n// With $.primitive.connect we can define the chain inline,\n// It will be connected immediately.\nconst filteredResults = $.primitive.connect(\n   $.combine(serverData.listen, filter.listen),\n   $.select(([data, filter]) => data?.filter(elem => elem.includes(filter)))\n)\n\n// let's define a reactive timer\nconst timer = $.primitive.create(0)\nconst intervalId = setInterval(() => { timer.value += 1 }, 1000) // update every second\n\n// If we do not care about the resulting values\n// we can use $.connect to connect a chain.\n// Here we can also define the chain inline.\nconst disconnect = $.connect(\n   timer.listen,\n   $.await.parallel( // executes and resolves all promises as they come in\n      // post tracking data to server\n      $.select(() => fetch('/api/tracking/impressions', {\n         method: 'POST',\n         body: JSON.stringify(filteredResults.value)\n      })),\n   ),\n   $.error.discard(), // we want only success here\n   $.if(res => res?.status == 200,\n      $.effect(() => console.log('Impression request success'))\n   )\n)\n\nserverData.disconnect() // stop fetching\nfilteredResults.disconnect() // stop filtering\ndisconnect() // stop sending tracking data\nclearInterval(intervalId) // stop timer\n```\n\nWhen a *Chain* is *connected*, a *Signal* of runs from top to bottom through the *Chain*. Each *Operator* can change, delay, or stop the *Signal*. Some *Operators* can trigger a new *Signal*. *Chains* can have output data, that can be stored in a *Primitive*. *Chains* can also have input data, like a function or a procedure that needs some arguments to run. *Chains* can also be chained together into new *Chains*, making them flexible and reusable. *Primitives*, *Operators* and *Chains* are fully typed and types are automatically inferred, making it impossible to chain incompatible data.\n\nError handling in Javascript is difficult: All kinds of things can throw. When a *Chain* throws, it breaks. **Signal-Chain** provides *Error Handling Operators* to catch and handle errors effectively, following the principles of *Errors as Value*.\n\n## Documentation\n\n**Installation**:\n```sh\nnpm install signal-chain\n```\n\n### Primitives\n\nLet's define a primitive.\n```typescript\nimport $ from 'signal-chain'\n\nconst counter = $.primitive.create(0)\n```\n\nA primitive is a container holding a single reactive value. We can access and update the value directly.\n```typescript\ncounter.value = 1\nconsole.log(counter.value) // logs: 1\n```\n\n> While primitives theoretically work with Objects and Arrays, it is strongly discouraged to use those, because change is detected on assignment. There is no deep proxy that will listen for changes of the Object properties or Array elements. If you want to work with Objects and Arrays, use instead `$.listen.key` or `$.each`.\n\nWe can listen to changes of the counter.\n```typescript\nconst disconnect = counter.listen(newValue => {\n   console.log('new value:', newValue) // logs: new value: 1\n})\n\ncounter.value = 10 // logs: new value: 10\ndisconnect()\ncounter.value = 0 // silence\n```\n\nNote, that the listen fires immediately with the current value.\n\nWe can also return a cleanup function, that is being executed before the next value is passed in and on disconnect.\n```typescript\nconst el = document.createNode('p')\nconst disconnect = counter.listen(value => {\n   el.innerHTML = `Value is ${value}.`\n   body.appendChild(el)\n   return () => {\n      body.removeChild(el)\n   }\n})\n```\nWhenever the value changes, the paragraph will be updated. When the listener is disconnected, the paragraph will be removed from the body.\n\nThis example has a serious downside though: We remove and append the element each time a value is updated, which is inefficient. We can improve on this by using the parameter passed to the cleanup: A `boolean` that is true only on disconnect.\n\n```typescript\nconst el = document.createNode('p')\nbody.appendChild(el)\n\nconst disconnect = counter.listen(value => {\n   el.innerHTML = `Value is ${value}.`\n   return final => {\n      if (final) {\n         body.removeChild(el)\n      }\n   }\n})\n```\n\n### Chains\n\nNow that we have seen how *Primitives* work, we will use *Chains* to operate on *Primitives*. A *Chain* gives us the ability to define a series of operations that can be combined and reused. As opposed to the `listen` function of a *Primitive*, a *Chain* will not execute before it is connected.\n\nWe can use the `listen` function of a *Primitive* as an *Operator* in a *Chain* and combine it with a other *Operators*:\n- `$.select`: Maps the incoming value to a new value.\n- `$.effect`: Executes a side effect. Like in the `listen` function we can return a cleanup.\n\n```typescript\nconst counter = $.primitive.create(1)\n\nconst logSquare = $.chain(\n   counter.listen,\n   $.select(value => value * value),\n   $.effect(value => console.log(value))\n)\n```\n\nThe *Chain* type is broken down into four subtypes:\n- `SyncChain`: This *Chain* executes **synchronously** and will **complete**\n- `AsyncChain`: This *Chain* executes **asynchronously** and will **complete**\n- `WeakChain`: This *Chain* executes **synchronously**, but may **not complete**\n- `AsyncWeakChain`: This *Chain* executes **asynchronously** and may **not complete**\n\nThese types give static hints about the behaviour of the *Chain* and effect the result types of `$.evaluate` and `$.function`.\n\n> This is similar to **function coloring**: as soon as an Async Operator is inserted into the chain, the whole Chain becomes an *AsyncChain*, and with that immediately all other chains that use the now Async Chain. The same happens if you introduce an Operator that can stop the chain: It becomes a *WeakChain* and with it all its dependants. The good news is, that this happens **statically** in Typescript, so you know what to expect depending on the type. Of course, this is being **inferred** from the types of Operators uesd in the Chain and requires no manual adjustment.\n\nOnce we connect the chain, it will start listening to the counter. Note that it executes immediately and synchronously on connection.\n```typescript\nconst disconnect = $.connect(logSquare) // logs: 1\n\ncounter.value = 2 // logs: 4\ndisconnect()\ncounter.value = 3 // silence\n```\n\nWe can also store the result of the chain in a primitive.\n```typescript\nconst squared = $.chain(\n   counter.listen,\n   $.select(value => value * value)\n)\nconst squaredValue = $.primitive.connect(squared)\n\ncounter.value = 10\nconsole.log(squaredValue.value) // logs: 100\n```\n\nThe *Primitive* `squaredValue` behaves like a computed value. Its value will update whenever the *Signal* of its *Chain* reaches the end. Because it is a regular *Primitive*, it can be used in other *Chains*.\n\n> Updates follow a **push model**: A connected chain will run, no matter how many subscribers its computed primitive has.\n\n### Reusability\n\nIn the above example, we squared a counter value. Sometimes, we want to specify behaviour, but want to be able to apply it to different sources later. We can do that, by creating a chain that requires an **input value**.\n```typescript\nconst appleFormat = $.chain(\n   $.select<number>(x => Math.round(x)),\n   $.if(\n      x => x > 1,\n      $.select(x => `We have ${x} apples`),\n      $.if(\n         x => x === 1,\n         $.select(() => `We have an apple`),\n         $.if(\n            x => x === 0,\n            $.select(() => `We have no apples`),\n            $.chain(\n               $.effect(x => console.error(`Cannot have ${x} apples. Stop updates.`)),\n               $.stop()\n            )\n         ),\n      ),\n   ),\n)\n```\n\nHere we have created a *Chain*, that will format a number into a string. Let us look at the *Operators* and their **Types** specifically:\n\nThe first `$.select` has a type parameter `number`, which specifies that we expect a number as input. If we do not specify this, Typescript will infer `unknown` and complain about the `Math.round(x)` operation. This is the recommended approach of defining input types for chains. It is possible to use an empty select operation `$.select<ExpectedType>()`. If you pass a second type parameter for `$.select` it will define the output type. The typesystem is setup in a way to require minimum type annotations and infer as much as possible.\n\nThe `$.if` operator expects a condition function as first parameter, the second parameter is a chain if the condition is met, and the third parameter if the condition is not met. We can see that if `x > 1`, it will produce a `string`, otherwise go into the next statement `x === 1`, if met produce a `string`, if `x === 0` it will produce a `string`.\n\nIf none of the statements hold, it will call `$.stop`, which stops the *Signal*, and produces the type `never`.\n\nThis results in `appleFormat` being of type `WeakChain<number, string>`, a *Chain* that requires a `number` input and will produce a `string` output or not complete.\n\nWe can now use this chain to format a number.\n```typescript\nconst counter = $.primitive.create(0)\nconst formatted = $.primitive.connect(\n   counter.listen,\n   appleFormat,\n   $.effect(value => console.log(value)) // logs: We have no apples\n)\n\ncounter.value = 10 // logs: We have 10 apples\nconsole.log('formatted ->', formatted.value) // logs: formatted -> We have 10 apples\n\ncounter.value = -1 // logs error: I don't like -1 apples\nconsole.log('formatted ->', formatted.value) // logs: formatted -> We have 10 apples\n```\n\nWhen `counter.value = -1`, the *Chain* did not complete, and therefore not update the formatted value.\n\n### Asynchronous Operations\n\nAdmittedly, this type of formatting could have been done easily with a traditional function. Let us take this approach and combine it with some asynchronous logic. This is a main strength of **Signal-Chain**: It allows to define asynchronous reactive behaviour in a declaritive way.\n\nHere, we will implement an auto suggest feature, that fetches some data from an API and logs the result.\n```typescript\nimport $ from 'signal-chain'\n\n// store user input into a reactive primitive\nconst input = $.primitive.create('')\ndocument.getElementById('my-input')?.addEventListener('input', (event) => {\n   input.value = (event.target as HTMLInputElement).value\n})\n\n// resolves after ms with input\nconst wait = <T>(input: T, ms: number) => new Promise<T>(\n   resolve => setTimeout(\n      () => resolve(input),\n      ms\n   )\n)\n\nconst suggestions = $.primitive.connect(\n   input.listen,\n\n   // debounce 150ms\n   $.await.latest(\n      $.select(input => wait(input, 150)),\n   ),\n   $.error.discard(), // promises can be rejected, but our wait function never fails\n\n   // fetch if input is long enough, otherwise fall back to empty array\n   $.if(input => input?.length > 2,\n      $.chain(\n         $.select(input => `/api/suggest/${input}`),\n         $.await.latest(\n            $.select(url => fetch(url)),\n            $.select(async response => (await response).json() as Promise<string[]>),\n         ),\n         $.error.handle(\n            $.effect(err => console.error('Error fetching suggestions:', err)),\n            $.select(() => []) // fallback to empty array\n         ),\n      ),\n      $.emit([])\n   ),\n\n   $.log('Suggestions:') // Suggestions: ['So', 'many', 'suggestions', ...]\n)\n```\nIn this example we first store the user input in a reactive primitive. We use that primitive as a starting point to define the chain to fetch the suggestions.\n\nLet's have a look at the debounce part:\n- The `$.await.latest` operator will execute the *inner chain* whenever a new value arrives. It will pass on the latest resolved value. If a value is incoming while the previous promise is still pending, the previous promise will be discarded and the resolve of the new one is awaited instead.\n- Together with the wait function, this will effectively create a debounce, only passing on the input when there is no new input for 150 ms.\n\nThe `$.await.latest` operator will (like all promise resolvers) resolve the promise or pass on an `Error` if the promise is rejected. Its output type is `TypeOfPromiseResolve | Error`. In this case we know, that `wait` cannot reject, so we can safely discard the error.\n\nThis design follows the principle of **errors as values**. It reminds the developer that something can go wrong here and need be handled. If we remove the error handling code from the *Chain*, the resulting suggestion pimitive would have an inferred type of `string[] | Error`. Because the promise is being used inside `$.await.latest`, the rejection will be caught and passed on.\n\nThe `$.if` operator has a third parameter, which is the negative condition *Chain*: If the condition is not met, a fallback value will emitted. If there is no negative branch and the condition is not met, the input is being passed through unchanged.\n\nThe `$.await.latest` is also exactly what we want in fetching data. If a new input is given while the previous request is still pending, the previous request will be discarded. This is similar to the RxJS behviour of `switchMap`. For other scenarios there are 4 more await operators with different strategies:\n- `$.await.parallel`: Executes eager and passes on each resolved value as soon as it resolves.\n- `$.await.order`: Executes eager and passes on resolved values in the order they were requested.\n- `$.await.block`: Will not execute when a promise is already running. Incoming values will be ignored and discarded.\n- `$.await.queue`: Will execute one promise at a time. Incoming values will be queued and processed by the inner block once the currently pending promise is resolved.\n\n### Reactivity with Plain Objects\n\nIf you work with existing logic, or your state becomes big enough, you may prefer to store state in plain objects. **Signal-Chain** can listen to plain objects and arrays using proxies.\n\nLet's assumet we have a state object like this:\n```typescript\nconst state = {\n   filter: '',\n   elements: [\n      { age: 25, name: 'Alice' },\n      { age: 73, name: 'Bob' },\n      { age: 42, name: 'Charlie' },\n      { age: 18, name: 'David' },\n   ]\n}\n```\n\nWe can listen to changes of the filter and the elements like this:\n```typescript\nconst filter = $.primitive.connect(\n   $.emit(state), // emit the state object\n   $.listen.key('filter'), // listen to changes in the filter key\n)\nconst elements = $.primitive.connect(\n   $.emit(state),\n   $.listen.key('elements'),\n)\n```\n- The `$.emit` operator has no input and emits the passed argument.\n- The `$.listen.key` operator will listen to changes in the given key of the incoming object. Whenever an observed value changes, it will fire.\n\nThe `$.listen.key` listener is **semi-shallow**, that means: If the value of the key is a **Primitive value** (`string`, `number` etc...), changes will be detected. If it is an **Array of Primitives**, changes will be detected. If it is an **Object** or an **Array of Objects**, only reassignments will be detected, none of their property changes. To achieve that, use another `$.listen.key` and/or combine it with `$.each`, as done in the following examples.\n\n> The `$.listen.key` operator inserts a proxy in place of the object key resp. array. This allows normal read and write operations to the object keys and values.\n> There is currently no support for reactive Object iterators, like Object.keys, Object.entries etc.\n\n\nThis is how we could implement a reactive filter:\n```typescript\nconst filteredElements = $.primitive.connect(\n   $.combine(\n      elements.listen,\n      filter.listen,\n   ),\n   $.select(\n      ([elements, filter]) => elements.filter(\n         // Don't do this, this will NOT be fully reactive:\n         element => element.name.includes(filter)\n      )\n   )\n)\n```\nHere we use the `$.combine` operator, which takes a list of elements, and combines them into one element that emits an array. Whenever one of the elements fires with a new value, the combined element will fire with the latest values of all elements.\n\nThere is a subtle caveat in this example:\n```typescript\nstate.filter = 'Alice' // this will trigger the filter chain to update\nstate.elements.push({\n   age: 42,\n   name: 'Eve'\n}) // so will this\n\nstate.elements[0] = {\n   'Alicia',\n   age: 53\n} // and this\nstate.elements[0].name = 'Bob' // this will not trigger the chain\n```\n\nThe reason for that is, that although the `$.listen.key('elements')` listens to all array changes, the change to the name property of the array is not considered a change to the array itself. Also, `$.select` is not a reactive context. If we want to listen to changes to the keys of the objects, that are the elements of the array, we need to add another listener to the key:\n```typescript\nconst names = $.chain(\n   $.emit(state),\n   $.listen.key('elements'),\n   $.each(\n      $.listen.key('name')\n   )\n)\n\n```\n\nThe `$.each` operator is a higher order operator, that expects a chain as argument. It will apply the chain to each element of an array. In this case, it will listen to changes in the `name` key of each element in the `elements` array.\n\nIt is possible that future versions will have a `$.listen.select` operator, which is automatically reactive. For now, however, we have to subscribe manually, which on the other hand has the great benefit of being explicit.\n\n### Types and Inferrence\n\nWe have so far used code with minimal type information. *Signal-Chain* is fully typed and built with type inferrence in mind. In all the above examples we have complete inferrence. Typescript will also protect us from making any mistakes, like chaining the wrong chains together:\n\n```typescript\nconst hallo = $.primitive.create('welt') // inferred as string\nconst formatted = $.primitive.connect(\n   hallo.listen,\n   $.select(x => Math.round(x)) // <-- typescript error:\n   // Argument of type 'string' is not assignable to parameter of type 'number'.\n)\n\n\nconst squareRoot = $.chain(\n   $.select<number>(x => Math.sqrt(x))\n)\nconst toFixed = $.chain(\n   $.select((x: number) => x.toFixed(2))\n)\n\n$.chain(toFixed, squareRoot) // <-- typescript error:\n// toFixed returns a string, but squareRoot expects a number\n```\n\nSometimes we need to explicitly define the type of a chain, because it is impossible to infer.\n```typescript\nconst multiplicator = $.chain(\n   $.select(x => x * 5) // <-- typescript error: x is unknown\n)\n\nconst numberMultiplicator = $.chain(\n   $.select<number>(x => x * 5) // now we are good\n)\n```\n\nIn some cases, we would like the type to be inferred by usage. We can use Typescript *Generics* to achieve that. In order for this to work, we need to define a function, that returns a chain, because values cannot be generic in Typescript.\n```typescript\n// creates a chain from T -> boolean\nconst truthyness = <T>() => $.chain(\n   $.select((x: T) => !!x) // output type boolean inferred\n)\n\nconst counter = $.primitive.create(0)\nconst somechain = $.chain(\n   counter.listen,\n   truthyness() // T gets inferred to number\n) // somechain is inferred as Chain<void, boolean>\n```\n\n### Operators\n\nHere is a list of all operators available in **Signal-Chain**:\n\n**Basic Operators**\n- `$.emit`: Emits a value.\n- `$.select`: Selects a new value from an incoming value.\n- `$.maybe.select`: Selects if the value is not undefined or null.\n- `$.effect`: Executes a side effect.\n- `$.log`: Logs the incoming value.\n- `$.catch`: Catches errors in the *inner Chain* and passes them on as values.\n- `$.count`: Counts the number of incoming values.\n- `$.merge`: Merges multiple chains into a single one. Result is the latest value of the chain that fired, left is evaluated before right.\n- `$.combine`: Combines multiple chains into a single one. Result is an array of the latest value of each chain.\n\n**Async Operators**\n- `$.await.latest`: Waits for the latest promise to resolve.\n- `$.await.parallel`: Passes on each resolved value as soon as it resolves.\n- `$.await.order`: Passes on resolved values in the order they were requested.\n- `$.await.block`: Will only enter the inner block when no promise is pending. Incoming values will be discarded.\n- `$.await.queue`: Will only enter the inner block when no promise is pending. Incoming values will be queued and processed by the inner block once the pending promise is resolved.\n\n**Error Operators**\n- `$.error.log`: Logs a passing Error value.\n- `$.error.handle`: Enters the *inner Chain* when passing an Error value.\n- `$.error.discard`: Turns an Error value into and undefined.\n- `$.error.panik`: Throws incoming Error value and breaks the chain.\n\n**Array Operators**\n- `$.collect`: Collects all incoming values.\n- `$.buffer`: Buffers incoming values.\n- `$.window`: Collects incoming values showing a window of the last [n] values as array.\n- `$.each`: Applies a chain to each element of an array.\n\n**Reactive Operators**\n- `$.listen.key`: Listens to a key of an object.\n- `$.listen.event`: Listens to DOM Events.\n- `$.maybe.listen.key`: Listens to a key if the value is not undefined or null.\n\n**Flow Control Operators**\n- `$.stop`: Stops the chain.\n- `$.passIf`: Passes on the value if the condition is met.\n- `$.stopIf`: Stops the chain if the condition is met.\n- `$.if`: Conditional execution of a chain.\n- `$.ifNot`: Negation of `$.if`.\n- `$.debounce`: Debounces the incoming values. Incoming Errors will not be debounced.\n\n**Efficiency Operators**\n- `$.unique.select`: Select value, only pass on if mapped value is unique\n- `$.unique.pass`: Passes only unique values.\n- `$.uniqe.chain`: Only pass on if result of the *inner Chain* is unique. Fires always receives new value.\n\n**Type Operators**\n- `$.type.is`: Creates a custom type assertion from a type predicate function.\n- `$.type.not.is`: Creates a custom negated type assertion from a type predicate function.\n- `$.type.isNothing`: Enters *inner Chain* if type is `null` or `undefined`.\n- `$.type.isNumber`: Enters *inner Chain* if type is `number`.\n- `$.type.isArray`: Enters *inner Chain* if type is `Array`.\n- `$.type.isBoolean`: Enters *inner Chain* if type is `boolean`.\n- `$.type.isString`: Enters *inner Chain* if type is `string`.\n- `$.type.isFunction`: Enters *inner Chain* if type is `Function`.\n- `$.type.isObject`: Enters *inner Chain* if type is `Object`.\n- `$.type.isError`: Enters *inner Chain* if type is `Error`.\n- `$.type.not.isNothing`: Enters *inner Chain* if type is not `null` or `undefined`.\n- `$.type.not.isNumber`: Enters *inner Chain* if type is not `number`.\n- `$.type.not.isArray`: Enters *inner Chain* if type is not `Array`.\n- `$.type.not.isBoolean`: Enters *inner Chain* if type is not `boolean`.\n- `$.type.not.isString`: Enters *inner Chain* if type is not `string`.\n- `$.type.not.isFunction`: Enters *inner Chain* if type is not `Function`.\n- `$.type.not.isObject`: Enters *inner Chain* if type is not `Object`.\n- `$.type.not.isError`: Enters *inner Chain* if type is not `Error`.\n\n### Breaking out of the Chain\n\nFor compatibility with the rest of the Javascript world, there are two utility functions:\n\n`$.evaluate` evaluates a *Chain* as a one-shot.\n```typescript\nconst counter = $.primitive.create(0)\n\nconsole.log($.evaluate(counter.listen)) // logs: 0\ncounter.value = 10\nconsole.log($.evaluate(counter.listen)) // logs: 10\n```\n\n`$.function` creates a function that internally evaluates the *Chain*.\n```typescript\nconst double = $.chain(\n   $.select(x => x * 2)\n)\n\nconst doubleFunction = $.function(double)\nconsole.log(doubleFunction(5)) // logs: 10\n```\n\nDepending on the type of the chain, the result of `$.evaluate` and `$.function` will be slightly different:\n- `SyncChain`: Will return the value of the chain.\n- `AsyncChain`: Will return a promise that resolves to the value of the chain.\n- `WeakChain`: Will return the value of the chain, or `undefined` if the chain did not complete.\n- `AsyncWeakChain`: Will return a promise that resolves to the value or `undefined`, or `undefined` if the chain did not complete. This is because the chain may or may not complete before or after it becomes asynchronous.\n\n### Controlling Update Behaviour\n\nThe default behaviour for updating *Primitives* is to batch updates and execute them asynchronously as microtasks. For example:\n\n```typescript\nconst counter = $.primitive.create(0)\n$.connect(\n   counter.listen,\n   $.log('value') // logs: value 0\n)\n\ncounter.value = 1\ncounter.value = 2\ncounter.value = 3\n\n// stop execution and give a chance to run queued microtasks\nawait Promise.resolve()\n\n// logs: value 3\n```\n\nThis is desirable on most cases. However, there are cases where we want to execute updates synchronously. You can either change the behaviour globally using `$.config`\n```typescript\n$.config({ update: 'sync' }) // synchronous updates, batching turned off\n$.config({ update: 'timeout' }) // use macrotasks for updates\n$.config({ batch: false }) // turn off batching\n$.config({ update: 'microtask', batch: false }) // no batching, use microtasks for updates\nconsole.log($.config()) // log the current configuration\n```\n\nAlternatively, you can pass a config when creating a primitive, that will only affect this primitive:\n```typescript\nconst counter = $.primitive.create(0, { update: 'sync' })\n$.connect(\n   counter.listen,\n   $.log('value') // logs: value 0\n)\n\ncounter.value = 1 // logs: value 1\ncounter.value = 2 // logs: value 2\ncounter.value = 3 // logs: value 3\n```\n\nThis can be especially useful when you want to use the primitive as a queue to push in tasks.\n\n### Integration with Frontend Frameworks\n\n**Signal-Chain** can be used with SolidJS, using the wrapper `signal-chain-solid`:\nhttps://www.npmjs.com/package/signal-chain-solid\n\n### Documentation\n\nThis was a brief overview of the **Signal-Chain** library. There is an effort to create a comprehensive documentation to cover all operators and concepts. However, the current focus is on inlining the documentation, so it is available in the editor via Typescript LSP.\n\n### Known Issues\n\nThis is a very new library and there is no guarantee that the API is stable. Please use with caution and report any issues you encounter.\n\n- The interface design of `$.if` makes it impossible to infer the type of the condition, making it necessary to specify the type of the condition explicitly.\n- `$.passIf`, `$.stopIf` and `$.stop` can lead to unexpected cleanup behaviour, in some cases not correctly calling the final cleanup.\n\n### Roadmap\n\n- Some quality of life utilities like `$.throttle`\n- Operator `$.while` to repeat a chain until a condition is met (e.g. retry failed http request).\n- A `$.listen.select`, that is automatically reactive.\n- Add integration wrappers for VueJS and React.\n- `$.await.select` operator for more intuitive promise chaining.\n- Operator `$.cache` to cache the values using a key function.\n- `$.reactive` to create reactive objects that are also iteratable.\n- `$.list` to create reactive lists that have fine grained updates for add/remove/update operations\n","readmeFilename":"README.md"}