{"_id":"@astronautlabs/conduit","_rev":"28-59a5129907f2775c820371d96896aba6","name":"@astronautlabs/conduit","description":"> 🚧 **Beta Quality**  \r > This library is in a beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","dist-tags":{"latest":"0.8.0"},"versions":{"0.3.9":{"name":"@astronautlabs/conduit","version":"0.3.9","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.3.9","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"3b67ac6e610bcb31503a8cd337661a1e0197a84e","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.3.9.tgz","fileCount":183,"integrity":"sha512-3f+LlpakoTI79FZbdQ2By8JbRUbl/lv/ft9yVPZu2jaf+lgIwhMpy7i/rlcSbdJmstFK1mp0vmeZ5tTaBXsAXg==","signatures":[{"sig":"MEQCIEcP19GVNXRwh2kQswrL1ye+dsDvgr5ehfGBvwCh4Qz5AiAUP85P1RcHJs0h7xx84L1uwvJMMxUx/kZ6iq6l6RLI/A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":376383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj6ZehACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpEMA//Vru1CpeyFe58GNS5fNOKxe/rr+7yKctZa4azRAPCUbSXLeRY\r\nDVHs3dWvxIRUxh91YHSTE2/K2POGegHKvzKlkqgvZE0hxLowLPgrdigR3EyK\r\nojTJi1cyn/CQvZ31K2VCPhDGXhMaYx/5Roh81RsAmQWUeaPrbhVQnB6VqfK/\r\nlD76HDwLaDg6Kc1LaFQIGwyPvWyv0VIEsGK90g5YsoX5OkhiFMdUYMZWwsw5\r\nqvwxLEM9M8y7DqARclYsmQMaNsDAxJjpPwk3Wk3lAKHh8tLBrAEVFsyL18VW\r\nce6wvULqZTQKDSUqFd40PQNBBWgGp79L7E+lvqGYdeuGv/WYld2LdgbEDuCw\r\n2adrnoXEBVyiAAup7S5sbs4MJx5r0mkTKGeQtjdHPzJFNCv2WmyCJZVEWfny\r\njUXi1bkH9Z7EX5I/fZ+CkyolKERv6p5vQrcPVGfsFbEEnTTljeO7YAgRAFwV\r\naSOxT7Fa5oAWcuSE0L8B6aVp1LvmH4A6YPjN7xeHYaFKKsGxdw/V70YgSBDQ\r\nWF142a1thOWIiIftJ1DHTc5j3qdwMD+9Y03z4timhpW4WPVfG00d6zDHFuWh\r\nikqMO/bYxug8SIB7SRQhuGVowJ+xe5IHzSp8ipY+V91EypXoC0p2q7OZnHSu\r\n4KGh3F4fd0aMqG7ASwJoqGTWIPj1WyyoKS4=\r\n=XUQY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.13.0","dependencies":{"rxjs":"^6.6.7","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.3.9_1676253089639_0.3785922415470486","host":"s3://npm-registry-packages"}},"0.3.10":{"name":"@astronautlabs/conduit","version":"0.3.10","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.3.10","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"3c064fd749ea4963d09869cccc3477a4ee8c82f8","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.3.10.tgz","fileCount":183,"integrity":"sha512-kMBKLXRZ2J0JEIbZVaD4uOjee2VgVe0LSelzW3UBPelHb/VhEeXGkHzGJqzBvvRNj1dPPf1bdS0s7OsRkwcF7Q==","signatures":[{"sig":"MEUCIQCTmcpeAIZBp0Ksoa14b7201oN95vZZ11msAfehnb6PrQIgDq0sxYF5W/MztYWFeXS6M9PSq7u3XVk4BgLdHzKpBiU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":409376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj8WktACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmplvg/+N606OIly6KD9yJRbKMibNbHsrex260wVFgL8y1BnktzHpSIg\r\nTv3Bn8QRTSH4jEyxFTpRXUFzKGUV4HF1qmSSxpR5KF6pILKY8zS/Z5rhJw9L\r\nE76uJQNWUU7daLUbu90YGC5ewcZCNEGcAHoYqTb2SWlTtJqjMG/+ND7oaqwG\r\nvmNSs+HzfUsBKD6lx4nmLmI5xICS4gmWJYgVcecUSt8RkXMnJIo9TWqNnbT7\r\nyebLw8sKg5UOba15eU06SYDN60r9/uBBKe05N0VXAvu2aiJMtz8v2LMxpd6W\r\naZC4qV0eS5ItfUvDgqNLRu5dKG+D8uzGjmOGU+B9YghpfCqdN9z6IpcR+2E5\r\n8ehMcx3b3y6MYLLMmn09PNZqJUaX0g3UA36tjp6plBnRXspjIXMWL0fcLV32\r\nyPshvl6zTOqdcPetaKOpLaC+ucHowo9CNObstuJk71hhvyzDN7JUREWScvW8\r\nHawcu85OEtRLeNHbbvOWHZkhQQpuM8cOGRGe5aycEWTOZMKhCPLsN6UYWDdG\r\nX/HeMjo3ANADFI6ASZOZDO1fcZlIMWZe7BVByNvt5x1xy4jdJtBSJgg/SGBT\r\n4ri7nVpZkflc78NkTZwL7E2jB4EspQ0/frym1Cr2mILlUPIoQM7JC3oIsJqb\r\n1QeUeeq9VCogKGLYjJ8mQAJZSyh37w29LUs=\r\n=gkC/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.13.0","dependencies":{"rxjs":"^6.6.7","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.3.10_1676765484856_0.2710003828239562","host":"s3://npm-registry-packages"}},"0.3.11":{"name":"@astronautlabs/conduit","version":"0.3.11","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.3.11","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"4e394f373519d5836365b293925657b99a8dc821","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.3.11.tgz","fileCount":183,"integrity":"sha512-2ap+etXyZByyvceCRbpLfdStEPTZ68HFd2IfGzj563xO7PhL1Rz42A8XyEcYNxPV4/OEu+d8snsBjyI2PbAB1w==","signatures":[{"sig":"MEQCIGkgSH1pzrTcnfezOUJ7v38LiPUS9LHULoa3hf0lMntzAiBYU+jihFGdfG8nWkfkXUHpksCnFBxOb7bp2jBOzDv2ug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":411077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj8cKvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtxQ//Rxa/zXqpUSnjPjEguF+hbp5U8M345vEDZIUcIggM+uD2OAIv\r\ncALUF8OcNjuDYmV7rkdICAJdf7JqjTW25lj8NSZ06D9ibdMvGFz9BXTBgJ4V\r\nhYi2ZBcOoNkgHX4gn4RbvuWa2MLUNqgqIkCYm2ygS+gRj4AH5XYSLwZiYXcA\r\noa8j3JgzD3id+3M/rEol+0idw15tMf51QPM53+FCd492s1W1NlZShLgEBgsg\r\n1ZVq3NS3EXZDvbVs6aahWPupr3KNTBi4CDl5NeWPZNS/GUkz/i7+4E8cemNc\r\nWvzhJZ9SfKedkTGwi78LBYb1bhMRHvfxlbTcf/jsx7iDR8Pq0O/hYdxQkCx1\r\n37Q76IBhEZ4QeUQOao1uvC/vqefAuYNJSqkf35RwxvHPPyvobDbhLioH6N4R\r\nUPoMPbCcLEHMA8e5YVH11026uqz+5eqHPiCTVWkQKwR9SOqr9Dq934b8tqxv\r\nw5h21JmgNYAvxsufE/x+Dr8q1xgN6lotKcd/awGo1XThI5zVwGt0nQzq8BF0\r\nwgKi42N1RCj81LUd+a9sbllRyiG70jIqejFOZIYwVY2nkOtelrcUuTczFu0B\r\nQRlCNwBDoToOaKTza5uoBhmEKcQu+mW8t5zwQhwWJyIzBeLFpWllNRouY4hU\r\nmvPonIHvg7maK9cKv2siowbNkXp28e6MCgk=\r\n=NZv5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.13.0","dependencies":{"rxjs":"^6.6.7","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.3.11_1676788399189_0.33022668773548824","host":"s3://npm-registry-packages"}},"0.3.12":{"name":"@astronautlabs/conduit","version":"0.3.12","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.3.12","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"3574963ce9b84ed5e0b10709b9e709339783358f","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.3.12.tgz","fileCount":183,"integrity":"sha512-/ipXyP+GQpMS6S+pSzYU99+bZ2Yjm0SGeeOL5LnuoMvBOn6ez8qKPLxdGk+ePalKBwwaOxsF0msPW4aWOiY3Mw==","signatures":[{"sig":"MEYCIQCJ75j+0vkgq7VtCGlFbcq1lKe+9ewxAPV91TzYS4nYvQIhAPN8Tr+1/X3HLlcjtN6NMyljMcEPLHooagojudBm6hfP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":411330},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^6.6.7","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.3.12_1684988854444_0.2328203896090344","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@astronautlabs/conduit","version":"0.4.0","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.0","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"4cbbfcbb0c313fc89113cdf39252ac5ad19fe6b0","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.0.tgz","fileCount":183,"integrity":"sha512-phDK/ht4yVCrnnk32m2wa4geB7uMM5elWDtiur8j9NUFzCo5WyaA0WmpgjjT6cA1R0mM/U5+xE5QvUZ5wh0/dg==","signatures":[{"sig":"MEUCIDW6FZY+IqRBzI7F0kZ3zoyRIhjTeIHOIqrMGazajsw6AiEAq+s5P6GrUhhsOh73nOCQyBcDtsygR6ATaPlOnxrs23k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":411309},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.0_1685167068356_0.3511554280368725","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@astronautlabs/conduit","version":"0.4.1","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.1","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"29cd8d3c7f893112c539f1d69522829d34427c2c","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.1.tgz","fileCount":183,"integrity":"sha512-HB5PXe7C/TLvj3B+Q82V9yq759DCs5aFRawDlqdy4XtHXpg/1zGh3buhHnTaXag8a53yeEcFedtTPSxBDOsSJg==","signatures":[{"sig":"MEQCIHkXwaeOS0nAkX9ANPw8yhcrYIODhL84nGB7x/3MDxC+AiAyVjO5oQe646HDxK40tZvgFVsFgzWLvk9BPrRv4mimNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":415050},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.1_1685187899792_0.7779180818200853","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"@astronautlabs/conduit","version":"0.4.2","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.2","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"614a2e39be209c87cd91f099ac60b435edb3e8ea","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.2.tgz","fileCount":183,"integrity":"sha512-/SHOyt5CEPXjYdFcDcXXCITcdriaEOMt8u2TQ6mTCPON1b5v++pMXfGiXriRxUfE+j2c3+GGz5V00RTrfAm9Og==","signatures":[{"sig":"MEUCIQCu7XCXh0zIrGfx4H4WZDnO+vD6TLVldYfEbZRuOvL6hQIgBQ4x2WAt5eSaNmyBW8YRBCXWia08+rxjtG2H9tJHIKo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":414235},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.2_1685188057370_0.5144753986347461","host":"s3://npm-registry-packages"}},"0.4.3":{"name":"@astronautlabs/conduit","version":"0.4.3","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.3","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"9fa40c1121a837f3cc0ae76c4bf788dcf26b18ef","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.3.tgz","fileCount":183,"integrity":"sha512-NxKlbqtmrE/Z3YgKlLKCJeKPvGdstShC5k3geK+/RBy1I4x+faEeqS2+41k8+hCD0OF8gdTUeF0D5RI+AxSXLg==","signatures":[{"sig":"MEUCIEtrX9vFRHBa6aZ0/o0MM9o+KdViV8wZ3PlqcfR+0VXkAiEA/RkQpk6xGDoQyFq1YDG3UaJkIyv0JrSbMCv4hHKh8rc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":416108},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.3_1685250068711_0.8892712803546103","host":"s3://npm-registry-packages"}},"0.4.4":{"name":"@astronautlabs/conduit","version":"0.4.4","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.4","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"52b9f3a2adaa322505ccadd0e0014e28f7302a57","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.4.tgz","fileCount":183,"integrity":"sha512-TzHsfnoHl7XqZcTjVlqNgtetR1fYUqw5G2JISmjJveGUdl90vnRknCqjgrKO4rnnuSCnML392k8c7neIJFrCOA==","signatures":[{"sig":"MEUCIB/j0CNolW80SXz2J0AGdacNZpBfVgX0cV6CAFmGtH02AiEAnnRrz6etLIFUV9iTdl9LubR0B1t039Y0VDDEdSp8DKA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":422480},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.4_1685250947854_0.35713847807155963","host":"s3://npm-registry-packages"}},"0.4.5":{"name":"@astronautlabs/conduit","version":"0.4.5","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.5","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"fc3db9fdc9bfc01ca3e70967eab783782561fa6e","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.5.tgz","fileCount":183,"integrity":"sha512-UHX0LG861phKOQIpOjk1GBdaoEVrS1gZfIbosLR+Ponk9rFku1DMfk/XUct8K98BXa5DSlmPFpzrsar0a1b1xQ==","signatures":[{"sig":"MEYCIQCEDXIUIvsiHsiH96ZJuFoOuE9FOH4kYtJ9UC9UBR96swIhANDkE3czGmsgdOtvwkCJcPrAyuKBxr7FaIXOS4Zsx6RO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":433078},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.5_1685252148128_0.22987551100667258","host":"s3://npm-registry-packages"}},"0.4.6":{"name":"@astronautlabs/conduit","version":"0.4.6","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.6","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"57d084a40225e6b9e57473b2a614ecd56b40b4dd","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.6.tgz","fileCount":183,"integrity":"sha512-nWkG4vS0GpYiZQWgeWhzHglEA+sfCflxtDl+Jx8NNy9FGtBgcGgBe7TJ6tlFccUaFLQGNAQH2Rt43/Gp9eOajg==","signatures":[{"sig":"MEQCIHF3m/RK/DAIOp6C88MuEoOozr1cUU6m3nILH1JBL3wuAiBff5jHeFJxro5mnbf8aY7LZfXGyRDap1d2qlFizD9kmQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":435040},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.6_1685435249605_0.3456772832454802","host":"s3://npm-registry-packages"}},"0.4.7":{"name":"@astronautlabs/conduit","version":"0.4.7","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.7","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"7fd0fc7b061c2101364ceccae2eed455a5896d87","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.7.tgz","fileCount":183,"integrity":"sha512-arMs4rsL3mwLV9Lft1e6cRNojQGksyvvkJPoC6YTsO++gHV/iE2EkgvjPGsOwC89/EViwvwEUCVxy/4DjacqMA==","signatures":[{"sig":"MEUCIQDzamSFwCERR67yKHe+pWlDhg/uaRscR9EvtBJzi1nezgIgV+Vz0y6ITQLIutdI7/2Yatpg4JlPQwvzZtwjFFyVGHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":435246},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"8.19.1","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"16.19.1","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.7_1685435513832_0.9300862499795886","host":"s3://npm-registry-packages"}},"0.4.8":{"name":"@astronautlabs/conduit","version":"0.4.8","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.8","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"b84b60861f0596a1b8dae4c1b96cc97a22730e05","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.8.tgz","fileCount":186,"integrity":"sha512-KIJNox2S0v2IqNBbbZ35vjBE2fqiHGA1g2tl1zMIco2fR86zbjrQqvE3VrCrt3LXr2vlKhlTfFMxsBkzOJA31g==","signatures":[{"sig":"MEUCIQDYHpCXnC/T08D2J46/2spXjt0HXKl2d5ysQ9HX3Z0LFAIgQ/23ZoTAZWHB01LTgPEZOgku+H4sU+lpZqoqk8JQLFE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":446729},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.8_1703235046446_0.39123202630145926","host":"s3://npm-registry-packages"}},"0.4.9":{"name":"@astronautlabs/conduit","version":"0.4.9","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.9","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"c2dc8a29e710e1386f5952ee78454a03e3c3ca71","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.9.tgz","fileCount":186,"integrity":"sha512-Y1zCwpsJXWbGQZHzWEXT+ySpQVVxSDf6ti02cOwRvF3pSlKlsj9L1hevpQ3DVFB2X0EGiewhi0TPrFXqZAZ15Q==","signatures":[{"sig":"MEQCIG67A4GCLOJWUZ63S55snCPyi5zuBGyKESTv+YSCEOFeAiA0U1lvcvENQ5tWlTHcqpOZ+Pa7ERUh6Z3NRvryH1kjHA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":454439},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.9_1703301717558_0.47292596944407794","host":"s3://npm-registry-packages"}},"0.4.10":{"name":"@astronautlabs/conduit","version":"0.4.10","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.10","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"06a7bf13f998061c7f43d478e0d6527f5a601e92","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.10.tgz","fileCount":186,"integrity":"sha512-XlhFvxuRDWJMfr9g/fcsycyKBmLi2j606p22m0tXHuT2aXmomEDF6pANCxlktpYU08u5Gd1aG6ZUoJygLLtbVA==","signatures":[{"sig":"MEUCIQCOcKnTysnnHCqQxFnYf7mcADQ4ctsQGH3TSITs7DAVFgIgTePZiYbJ/8cLwEd5IaxjabDH2g2jGb+sH202Avvsbzw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":457761},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.10_1705352909531_0.3786133968687204","host":"s3://npm-registry-packages"}},"0.4.11":{"name":"@astronautlabs/conduit","version":"0.4.11","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.11","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"4fb1ecabd3215a4d01819b72ce7a411cb215035d","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.11.tgz","fileCount":186,"integrity":"sha512-2ochkGKNYobY+arQgJvOTLpk1iQSCm/Y4zPrjSBE10GFxA1Pkznogp0FQbcG2dtO307sBVvowiPSR53rM3m2jw==","signatures":[{"sig":"MEYCIQDP8btsZ4EloEwJOQ+DfF4cV0IpKRUwV4tM0zzfnRyGLgIhAMsD/etFwfe6sMkJK39dXygKFsk6fc/HkpzmcRT3hIuO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":456580},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.11_1705809873814_0.1866406074689757","host":"s3://npm-registry-packages"}},"0.4.12":{"name":"@astronautlabs/conduit","version":"0.4.12","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.12","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"1fdc20e4a257a7662d31d1b151d1855f20270305","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.12.tgz","fileCount":186,"integrity":"sha512-jc8yqcuOgyLmZAPzrpOHOELQsx/+pFFfFHr17wLe89l21QnHQMVfTdKgGqTCGMN++rFrQQaFp/c8fnsMVFfQRA==","signatures":[{"sig":"MEYCIQDTZxW+AecKLlAXHa/d/04i375XUtDmEvkhZORTG0f20AIhAPGY5WnbcFRsLrjwiAwvxKe/YpSZUJ/p8jABfU4nQB57","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":456826},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.12_1705812192882_0.3304710650941334","host":"s3://npm-registry-packages"}},"0.4.13":{"name":"@astronautlabs/conduit","version":"0.4.13","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.4.13","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"209274214b8d95315281ce5e614356edac6ecd15","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.4.13.tgz","fileCount":186,"integrity":"sha512-n3REXXFZXTEX9jZ1J7f6FHal8cMyEINwOGwHCMSQYBRE5bX4yYY1nEkHCR/3/GATBokOkOH1OiluMJ+Nl9GU7g==","signatures":[{"sig":"MEUCIHi5Ze0Kc5kblHjRiotQegVevuBMGZPpIaJgSiRNBI/HAiEAjVxzNcDrmjiliKnlcw5amkzIWcStsJAqYRApyWqDG0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":458353},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.0","zone.js":"^0.11.8","typescript":"^4.8.4","@types/chai":"^4.3.3","@types/node":"^18.7.14","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.4.13_1706156703160_0.47019616057277314","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@astronautlabs/conduit","version":"0.5.0","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.5.0","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"2fa0480b4ec369005a81e37ddf00537335c3193a","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.5.0.tgz","fileCount":234,"integrity":"sha512-1S9x7R3RCsbE8OOAGZWGy9EVXDhv5zE/HOBBl6KXGRp8oa7OFGeFtPEc7xFKY9X+0udTfs5xhJIVvXkEJF/IWg==","signatures":[{"sig":"MEUCIQCOEq5+j34ys1yJ+EjfOBYG/AuhDZ3Fl2utmHWgXNPNlgIgVRoVIY686qBieuUHlR2Wx/oJ2N7Zc6+FxI87hzI877Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":673178},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.5.0_1706608658586_0.2900774264233461","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"@astronautlabs/conduit","version":"0.6.0","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.6.0","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"f99dda8e35af784f5c35bdad2d09bd14aa9a7eb2","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.6.0.tgz","fileCount":234,"integrity":"sha512-B8ier6PyvUyNFuLF5mXgiJQjjjxlxmiCsJDJHYVxwH4zZycmI2JDTZEzAVc53KdXvbowljGeWyxvU+el86m/gw==","signatures":[{"sig":"MEQCIDIo72O0yO4yfRd+HrEDYsaFyujDTyWSBk4GsnbpWnSqAiAKvcYvGbVH128jGLf7se0m+0Go3Hwy1fryII7pH4cZgw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":681725},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.6.0_1711272882179_0.07187142797594848","host":"s3://npm-registry-packages"}},"0.6.1":{"name":"@astronautlabs/conduit","version":"0.6.1","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.6.1","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"33b5432bd5a24d42758223169b40dd74008bfc67","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.6.1.tgz","fileCount":234,"integrity":"sha512-ygtYxUuoCXijPeW41MvZ8KvwFN2Jjbhat99IOuhXAudbKSs3xHr8hN0VKi9qTl2OMdScX68tjBinJYrRlZ+I4Q==","signatures":[{"sig":"MEQCIBU7ZHBMMPVkR8oDu2vqA3AVxAUL3XWknJyTrUp7cHXoAiAnN+I52z+v/U6ppxavBHz/4EtXnxvXQJTkJ06vBj7QyA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":682774},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"npm run build:cjs && node --expose-gc --enable-source-maps dist/test","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Work In Progress**  \r > This library is in an alpha state. It is not yet ready for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","razmin":"^1.2.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.6.1_1711346561468_0.5933519307753756","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"@astronautlabs/conduit","version":"0.7.0","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.7.0","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"cea151e72561f80981b2d4c54aa62ff954a3ada6","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.7.0.tgz","fileCount":290,"integrity":"sha512-LOY2Z2BV1jkfdeD9ckHpDeLz8OPrHL4xMdUp1hMxH5Ts4bjP3cHIbz3fe4gkqF7oLAiZ/1StU+QuuLGYUVeN2w==","signatures":[{"sig":"MEQCIDx0x6v8JepUptNE2CB74khkzXy/w7KNlTQDV5BsVEWBAiBkHvT1VxM4U0uhnidoDPvIQOj5V6KlsuiZuxX48w92eA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1712311},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"node --expose-gc node_modules/jest/bin/jest.js --no-cache --runInBand","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Beta Quality**  \r > This library is in an beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^29.7.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","@jest/globals":"^29.7.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.7.0_1713044556473_0.6602953406953957","host":"s3://npm-registry-packages"}},"0.7.1":{"name":"@astronautlabs/conduit","version":"0.7.1","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.7.1","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"bd8297c17e450893c2edc474a5594768c02df8a0","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.7.1.tgz","fileCount":290,"integrity":"sha512-BPpMXnRiK5k7FTa1GPlsej+BI8PpNMgIOFnCufEIDQ+hxzolE3sLZr/9w4qS8yYitb2BVHOTcovWMBZOFSdHfw==","signatures":[{"sig":"MEQCIH7HqiRFDY135mvbf3utItJ1taAoycQlKuxbqBRUgckbAiBC2LvNyCh3l0H3dtqVQeFdh9tize2Bi4svSis5QGSlkg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1714847},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"node --expose-gc node_modules/jest/bin/jest.js --no-cache --runInBand","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Beta Quality**  \r > This library is in an beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^29.7.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","@jest/globals":"^29.7.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.7.1_1713047294250_0.6507897850509132","host":"s3://npm-registry-packages"}},"0.7.2":{"name":"@astronautlabs/conduit","version":"0.7.2","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.7.2","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"6279e07ef1c30a4b0b20641a8580374b54f872af","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.7.2.tgz","fileCount":290,"integrity":"sha512-L4E6Nh0BH4TiRWqkVAE6HC9gNEMRCM5NTovAsTaOSfD6ZO8Un87tSJifJ5t2xwI6hqroIPdQ5IrXZg9PluchKQ==","signatures":[{"sig":"MEQCICH7Lk6cGMbZts53a//yUJkqS/triAlaOhbVWe6XFKKNAiBcXI++AlrTSepGNTGo7nmL1l8EGx0mOUtJrRg30i53tg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1720540},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"node --expose-gc node_modules/jest/bin/jest.js --no-cache --runInBand","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Beta Quality**  \r > This library is in a beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^29.7.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","@jest/globals":"^29.7.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.7.2_1713066377743_0.7802615145563843","host":"s3://npm-registry-packages"}},"0.7.3":{"name":"@astronautlabs/conduit","version":"0.7.3","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.7.3","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"3016024d1e5447615c7a863b84d334dc380c11b3","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.7.3.tgz","fileCount":290,"integrity":"sha512-LaY54TEpeU5VR1BGsB5hySWZCIuU86j6MzvEviaSk0778mKA4ZAD631N6dc0k+3+dBVPHCt+0FYlK9crghmn/A==","signatures":[{"sig":"MEQCICc2tdwGSyQTShcjxEL91DDdNkBNFwc+j27Hj/XsWAQJAiAyxiqgb2WePbCl/glJyej+cV9wq1C7fxDx8GWHJVuptA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1724998},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"node --expose-gc node_modules/jest/bin/jest.js --no-cache --runInBand","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Beta Quality**  \r > This library is in a beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^29.7.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","@jest/globals":"^29.7.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.7.3_1719995279172_0.4167049128800715","host":"s3://npm-registry-packages"}},"0.7.4":{"name":"@astronautlabs/conduit","version":"0.7.4","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.7.4","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"63b6461a4ce74a58841cc7d0bf71f3e327adc3bf","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.7.4.tgz","fileCount":290,"integrity":"sha512-u60qqV5z4EfKmHdTdlDB1yAa08pMT6640QFFazIyjgL1nWgmc5TKgMv1KYNROFKdKSy5a2oBH5UzrDaGG0OrIQ==","signatures":[{"sig":"MEUCICk/q9dgPPg4mHpoKtE/Sjtk1W56VzdnDHUC/DB+CCT0AiEA4SVC8rmuzZa+sq1HaMcLTGEhmyBQWRPdZiGs5//zCTM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1724617},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"node --expose-gc node_modules/jest/bin/jest.js --no-cache --runInBand","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Beta Quality**  \r > This library is in a beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^29.7.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","@jest/globals":"^29.7.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.7.4_1720154494843_0.2896616505350169","host":"s3://npm-registry-packages"}},"0.7.5":{"name":"@astronautlabs/conduit","version":"0.7.5","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.7.5","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"e714dd12769e8c52277ebdda9f35dc5eabb82eb1","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.7.5.tgz","fileCount":290,"integrity":"sha512-lVY4YhYCATCInzFST8YunXWVrPbtUbnCp4azmAppz/WcrTErqEh5WX1aBwxiT7DdJHt/hk1d7lwzT2jj04hCRA==","signatures":[{"sig":"MEQCIDZzkbBYNToveYTEz486FoC6mRzn5BoWi3EOJB5ODKBpAiBiShfxr17m+CphoHex4tcsswpN1RTE3W7o/2e5EUuDzw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1725144},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"node --expose-gc node_modules/jest/bin/jest.js --no-cache --runInBand","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Beta Quality**  \r > This library is in a beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^29.7.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","@jest/globals":"^29.7.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.7.5_1720241481960_0.8444316864275239","host":"s3://npm-registry-packages"}},"0.7.6":{"name":"@astronautlabs/conduit","version":"0.7.6","author":{"name":"Astronaut Labs, LLC"},"license":"MIT","_id":"@astronautlabs/conduit@0.7.6","maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"dist":{"shasum":"2127986ec535ef4fbb7a29bae220e34b938c9723","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.7.6.tgz","fileCount":290,"integrity":"sha512-43r8O1hZQ0pW7pIEK/LmY/73sY6eT0NRbCvz3BsR1BjcZCfyyEIqoWNvuecqjie2Y1Duj0qKj8V8m13NXLzNtw==","signatures":[{"sig":"MEUCIEAmB03fIXPKiL3JT1cV8pp6HI4kriK5ty3CPShubZ/DAiEAjULh2D9qP1QiGDqfVlPPNSXfcwlhAT39wPHu4uruH2o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1728138},"main":"dist/index.js","types":"./dist/index.d.ts","module":"dist.esm/index.js","gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","scripts":{"test":"node --expose-gc node_modules/jest/bin/jest.js --no-cache --runInBand","build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"_npmVersion":"9.9.2","description":"> 🚧 **Beta Quality**  \r > This library is in a beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^29.7.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","zone.js":"^0.11.8","typescript":"^5.3.3","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","@jest/globals":"^29.7.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/conduit_0.7.6_1720242444596_0.6737185859743435","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"@astronautlabs/conduit","version":"0.8.0","description":"> 🚧 **Beta Quality**  \r > This library is in a beta state. It is stable and has been tested in many real world scenarios. \r > We do not yet recommend it for production use.","main":"dist/index.js","module":"dist.esm/index.js","publishConfig":{"access":"public"},"scripts":{"build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json","build":"npm run build:cjs && npm run build:esm","test":"node --expose-gc node_modules/jest/bin/jest.js --no-cache --runInBand","prepublishOnly":"npm run build && npm test"},"author":{"name":"Astronaut Labs, LLC"},"license":"MIT","dependencies":{"rxjs":"^7.8.1","uuid":"^3.4.0"},"peerDependencies":{"reflect-metadata":"^0.1.13"},"devDependencies":{"@jest/globals":"^29.7.0","@types/chai":"^4.3.3","@types/node":"^18.19.10","@types/uuid":"^3.4.10","chai":"^4.3.6","jest":"^29.7.0","reflect-metadata":"^0.1.13","ts-jest":"^29.1.2","ts-node":"^10.9.2","typescript":"^5.3.3","zone.js":"^0.11.8"},"gitHead":"d2cd94ce4f7c16445408ceadbef9a4cb7385a94f","_id":"@astronautlabs/conduit@0.8.0","types":"./dist/index.d.ts","_nodeVersion":"20.15.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-gPYE/7K0sWRKgAMgeCJf3+PCErk0F6+H0VoFxXeJBvoCZ6Rz9XAc4jBumbDw9O3wpWxLVaJ7FH5uyf0HHZTfAg==","shasum":"a35a029da5a0669add65f4a51e640006949cf048","tarball":"https://registry.npmjs.org/@astronautlabs/conduit/-/conduit-0.8.0.tgz","fileCount":297,"unpackedSize":1767895,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA1Xtbo3MnazLS7ckD2Rqa61Bjf3yn2yq2oPfzl04ijBAiEAwq/a4HmSoR7nBIzYhNNS92fsOTUAlnFZRxEA8BkMgjM="}]},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"directories":{},"maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/conduit_0.8.0_1720388735955_0.28132349232944254"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-13T01:51:29.566Z","modified":"2024-07-07T21:45:36.362Z","0.3.9":"2023-02-13T01:51:29.829Z","0.3.10":"2023-02-19T00:11:25.057Z","0.3.11":"2023-02-19T06:33:19.367Z","0.3.12":"2023-05-25T04:27:34.756Z","0.4.0":"2023-05-27T05:57:48.554Z","0.4.1":"2023-05-27T11:45:00.024Z","0.4.2":"2023-05-27T11:47:37.607Z","0.4.3":"2023-05-28T05:01:08.949Z","0.4.4":"2023-05-28T05:15:48.097Z","0.4.5":"2023-05-28T05:35:48.368Z","0.4.6":"2023-05-30T08:27:29.798Z","0.4.7":"2023-05-30T08:31:54.143Z","0.4.8":"2023-12-22T08:50:46.608Z","0.4.9":"2023-12-23T03:21:57.718Z","0.4.10":"2024-01-15T21:08:29.778Z","0.4.11":"2024-01-21T04:04:34.034Z","0.4.12":"2024-01-21T04:43:13.061Z","0.4.13":"2024-01-25T04:25:03.312Z","0.5.0":"2024-01-30T09:57:38.811Z","0.6.0":"2024-03-24T09:34:42.342Z","0.6.1":"2024-03-25T06:02:41.658Z","0.7.0":"2024-04-13T21:42:36.693Z","0.7.1":"2024-04-13T22:28:14.524Z","0.7.2":"2024-04-14T03:46:17.951Z","0.7.3":"2024-07-03T08:27:59.441Z","0.7.4":"2024-07-05T04:41:35.099Z","0.7.5":"2024-07-06T04:51:22.349Z","0.7.6":"2024-07-06T05:07:24.802Z","0.8.0":"2024-07-07T21:45:36.212Z"},"maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"author":{"name":"Astronaut Labs, LLC"},"license":"MIT","readme":"# ![@/conduit](./logo.svg)\r\n\r\n> 🚧 **Beta Quality**  \r\n> This library is in a beta state. It is stable and has been tested in many real world scenarios. \r\n> We do not yet recommend it for production use.\r\n\r\n[![NPM](https://img.shields.io/npm/v/@astronautlabs/conduit.svg)](https://www.npmjs.com/package/@astronautlabs/conduit) \r\n[![Build Status](https://circleci.com/gh/astronautlabs/conduit/tree/main.svg?style=shield)](https://circleci.com/gh/astronautlabs/conduit)\r\n\r\nA powerful way to do RPC on the web.\r\n\r\n# Installation\r\n\r\n```bash\r\nnpm install @astronautlabs/conduit\r\n```\r\n\r\n# Usage\r\n\r\nWe'll use Conduit for simple client/server RPC on the web. Conduit is not constrained to this use case, but it is \r\nthe most common, and the path we recommend considering first.\r\n\r\nFirst, create your interface layer. This will be consumed by both your client and server code:\r\n\r\n```ts\r\nimport * as conduit from '@astronautlabs/conduit';\r\n\r\n@conduit.Name('com.example.todo')\r\n@conduit.URL('wss://example.com')\r\nexport class TodoService extends Service {\r\n  abstract changed: Observable<Todo[]>;\r\n  abstract add(todoInit: TodoInit): Promise<Todo>;\r\n  abstract remove(todo: Todo): Promise<void>;\r\n  abstract markDone(todo: Todo): Promise<Todo>;\r\n}\r\n\r\nexport interface Todo {\r\n  id: number;\r\n  text: string;\r\n  createdAt: number;\r\n  done: boolean;\r\n}\r\n\r\nexport type TodoInit = Omit<Todo, 'createdAt' | 'done' | 'id'>;\r\n\r\n```\r\n\r\nIn your server:\r\n\r\n```ts\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport * as conduit from '@astronautlabs/conduit';\r\nimport * as Interface from '<my-service-interface>';\r\n\r\nclass TodoService extends Interface.TodoService {\r\n  private todos: Interface.Todo[] = [];\r\n\r\n  @conduit.Event() changed = new BehaviorSubject<Interface.Todo[]>();\r\n\r\n  @conduit.Method()\r\n  override add(todoInit: Interface.TodoInit) {\r\n    let todo: Todo = {\r\n      ...todoInit,\r\n      id: this.todos.length,\r\n      createdAt: Date.now(),\r\n      done: false\r\n    };\r\n\r\n    this.todos.push(todo);\r\n    this.changed.next(this.todos);\r\n  }\r\n\r\n  @conduit.Method()\r\n  override remove(todo: Todo) {\r\n    this.todos = this.todos.filter(x => x.id !== todo.id);\r\n    this.changed.next(this.todos);\r\n  }\r\n\r\n  @conduit.Method() \r\n  override markDone(todo: Todo): Promise<Todo> {\r\n    todo = this.todos.find(x => x.id === todo.id);\r\n    if (!todo)\r\n      conduit.raise(`No such Todo with ID ${todo.id}`);\r\n    todo.done = true;\r\n    this.changed.next(this.todos);\r\n  }\r\n}\r\n```\r\n\r\nIn your client:\r\n\r\n```ts\r\nimport { TodoService } from '<my-service-interface>';\r\n\r\nconst todos = TodoService.proxy();\r\n\r\ntodos.changed.subscribe(todos => {\r\n  console.log(`todos changed: `, todos);\r\n});\r\n\r\ntodos.add({ text: 'Finish the TODO app' });\r\n```\r\n\r\n## How should I structure my project?\r\n\r\nThere are many valid answers to the question of where your interface and server components should live within your \r\ncodebase. You can consider this section a light recommendation on how you might structure your project.\r\n\r\nGiven a project which has a frontend, an interface, and a backend, you might arrange your project like this:\r\n\r\n```\r\npackages/\r\n  frontend/\r\n    package.json   # named \"myproject-frontend\", depends on \"myproject\"\r\n    main.ts        # imports \"myproject\", which is the interface layer\r\n    ...\r\n  backend/\r\n    package.json   # named \"myproject\", entrypoint (\"main\"/\"module\") is dist/interface/index.js\r\n                   # start script runs your server\r\n    .npmignore     # (only if you are going to actually publish to NPM) ignore \"src/server\", \"dist/server\" etc\r\n    src/\r\n      interface/   # contains interface definitions\r\n        index.ts\r\n        ...\r\n      server/\r\n        main.ts    # contains your server, import \"../interface\"\r\n```\r\n\r\nIn the above we're assuming you are using `dist` as your Typescript output folder, obviously adjust as needed if you \r\nuse `build` or something else as your output folder.\r\n\r\nThe above structure has a few nice benefits:\r\n- The interface lives with the backend, which implements it\r\n- The frontend, which is never a \"library\" for another piece of software, is called \"PROJECT-frontend\", whereas the \r\n  backend, which *can* be a library for another piece of software (your frontend) is called \"PROJECT\" (without the \r\n  \"-backend\" suffix). This also extends to microservices: If you had a `users` package, it would have the NPM name `PROJECT-users`, and other services which needed to talk to it would import it as such.\r\n- If needed, this structure is prepared for publishing your API interfaces to NPM (you would simply configure `.npmignore` to omit your server side implementation and any other irrelevant content).\r\n\r\n# Low Level API\r\n\r\nConduit also provides a low-level API without asserting any opinions. Using this mode opens up many more use cases, but\r\ncan be difficult to use correctly and error-prone. Please do not use this for standard client/server RPC, as the \r\nConduit Services abstraction shown above handles a great deal of this difficulty for you.\r\n\r\n```ts\r\nimport * as conduit from '@astronautlabs/conduit';\r\n\r\nlet [channelA, channelB] = conduit.LocalChannel.makePair();\r\n\r\n@conduit.Name('com.example.randomNumber')\r\nclass MyService {\r\n    @conduit.Method()\r\n    getRandomNumber() {\r\n        return Math.random();\r\n    }\r\n}\r\n\r\nlet sessionA = new conduit.RPCSession(channelA);\r\nsessionA.registerService(MyService);\r\n\r\n// ---\r\n\r\nlet sessionB = new conduit.RPCSession(channelB);\r\nlet remoteObject = await session.getRemoteService(MyService);\r\n\r\nlet number = await remoteObject.getRandomNumber();\r\nconsole.log(number);\r\n```\r\n\r\n# Object References\r\n\r\nYou aren't limited to singleton services with `@/conduit`\r\n\r\n```typescript\r\nimport * as conduit from '@astronautlabs/conduit';\r\n\r\nlet [channelA, channelB] = conduit.LocalChannel.makePair();\r\n\r\n@conduit.Name('com.example.randomNumber')\r\nclass MyService {\r\n    @conduit.Method()\r\n    getRandomGenerator(min: number, max: number) {\r\n        return new RandomGenerator(min, max);\r\n    }\r\n}\r\n\r\n@conduit.Remotable()\r\nclass RandomGenerator {\r\n    constructor(readonly min: number, max: number) {\r\n    }\r\n\r\n    @conduit.Method()\r\n    random() {\r\n        return min + Math.random() * (max - min) | 0;\r\n    }\r\n}\r\n\r\nlet sessionA = new conduit.RPCSession(channelA);\r\nsessionA.registerService(MyService);\r\n\r\n// ---\r\n\r\nlet sessionB = new conduit.RPCSession(channelB);\r\nlet remoteObject = await session.getRemoteService(MyService);\r\n\r\nlet generator = await remoteObject.getRandomGenerator(4, 8);\r\nconsole.log(await generator.random()); // 6\r\nconsole.log(await generator.random()); // 4\r\nconsole.log(await generator.random()); // 7\r\nconsole.log(await generator.random()); // 5\r\n```\r\n\r\n# Events\r\n\r\n```typescript\r\nimport * as conduit from '@astronautlabs/conduit';\r\n\r\nlet [channelA, channelB] = conduit.LocalChannel.makePair();\r\n\r\n@conduit.Name('com.example.randomNumber')\r\nclass MyService {\r\n    constructor() {\r\n        setTimeout(() => this._timer.next(), 1000);\r\n    }\r\n\r\n    private _timer: Subject<void>;\r\n    private _timerObservable: Observable<void>;\r\n\r\n    @Event()\r\n    get timer() { return this._timerObservable; }\r\n}\r\n\r\nlet sessionA = new RPCSession(channelA);\r\nsessionA.registerService(MyService);\r\n\r\n// ---\r\n\r\nlet sessionB = new conduit.RPCSession(channelB);\r\nlet remoteObject = await session.getRemoteService(MyService);\r\n\r\nlet subscription = await remoteObject.timer.subscribe(() => console.log(`tick`));\r\nsetTimeout(async () => await subscription.unsubscribe(), 5*1000);\r\n\r\n// console: tick\r\n// console: tick\r\n// console: tick\r\n// console: tick\r\n// console: tick\r\n```\r\n\r\n# Channels\r\n\r\nYou can use any kind of communication channel underneath an RPCSession. Some channel types are included:\r\n\r\n* `SocketChannel` - Perform RPC over a WebSocket\r\n* `WindowChannel` - Perform RPC between the current window and a remote window, such as an `<iframe>` or a popup\r\n* `LocalChannel` - A simple two-sided in-memory channel that is good for testing.\r\n\r\nSince RPC over WebSockets is so common, it is made especially convenient:\r\n\r\n```typescript\r\nlet session = await RPCSession.connect(`wss://example.com/my/socket`);\r\n```\r\n\r\nWhen the promise returned by `connect()` resolves the connection is fully established and ready for communication. If a \r\nconnection error occurs, the promise will reject.\r\n\r\n---\r\n\r\nYou can implement your own custom channels by implementing the `RPCChannel` interface\r\n\r\n```typescript\r\nexport interface RPCChannel {\r\n    received: Observable<string>;\r\n    send(message: string);\r\n    close?();\r\n}\r\n```\r\n\r\n# Services\r\n\r\nThe primary purpose of Conduit is to expose service objects with well-known identities which have well-known interfaces.\r\nFrom a developer experience perspective, you need only use `registerService` and `getRemoteService()` to register \r\nservice classes of your own and consume methods of the remote service you are talking to. Remember that Conduit is \r\nbidirectional, and services can be registered on either side. It is totally possible (and sometimes desirable) for a \r\nWebSocket *client* to register a named service, and for the WebSocket *server* to acquire an instance of that service \r\nand call RPC methods on it.\r\n\r\nFor those interested in the mechanics of how this works, the local `RPCSession` implements \r\n`async getRemoteService(serviceName)` as `await this.remote.getLocalService(serviceName)`, where `this.remote` is the \r\nRPC proxy of the remote `RPCSession`. So there is no special mechanics for service discovery, these are just well known \r\nRPC calls of the `RPCSession` class.\r\n\r\n# Service Factories\r\n\r\nWhile it is possible for the pair of `RPCSession` instances to communicate over a Conduit channel without any \r\ncoordination because they use long-lived well-known object references, the potential ways you might want to manage \r\nthe object lifecycles related to actual \"service\" objects within the applications you build with Conduit may differ\r\ngreatly depending on your use case. By default service objects are created on-demand for a specific RPCSession \r\nand are not shared, but you might want to share service objects across multiple sessions (ie multiple connections in the\r\ncontext of Conduit over Websockets). Control of the lifecycle of service objects can be controlled using custom \r\n\"service factories\".\r\n\r\n```typescript\r\nsession.registerService(MyService, () => myServiceInstance); // where myServiceInstance is not specific to this session\r\n```\r\n\r\nService factories are passed a single argument, the `RPCSession` that is responsible for creating them. This allows you \r\neasy access to the related session if you need it.\r\n\r\n```typescript\r\nsession.registerService(MyService, session => new MyService(session));\r\n```\r\n\r\nSince service factories are just functions, you could use this to add dependency injection.\r\n\r\n# Services without registration, and other low-level customization\r\n\r\nIf you wish to dynamically create services with arbitrary logic, you can subclass `RPCSession`. \r\n\r\n```typescript\r\nclass MySession extends RPCSession {\r\n    @Method()\r\n    override getLocalService(identity: string) {\r\n        // Add arbitrary logic for creating service objects here\r\n        return new MyService();\r\n    }\r\n}\r\n```\r\n\r\nThis can be used to modify any part of the base APIs, or even add new top-level APIs. It is also how one might use \r\nwell-known references within an application, since the default implementation of `RPCSession` does not provide any \r\nmechanism for using well-known references (other than the `RPCSession` well known reference).\r\n\r\n# Web Workers\r\n\r\n> 🚧 _Experimental:_ The API for this feature may change in future minor/patch revisions.\r\n\r\nCommunicating with Web Workers requires message passing as they live in their own execution context separate from the \r\nprimary browser window. Conduit provides an ergonomic way to create and communicate with Web Workers. To get started,\r\ncreate a class decorated with `@WebWorker()`.\r\n\r\n> `my-web-worker.ts`\r\n```typescript\r\nimport * as conduit from '@astronautlabs/conduit';\r\n\r\n@conduit.WebWorker(() => new Worker(new URL('./my-web-worker', import.meta.url)))\r\nclass MyWebWorker {\r\n  async doSomeWork(a: number, b: number) {\r\n    return a + b;\r\n  }\r\n}\r\n```\r\n\r\n> `my-web-app.ts`\r\n```typescript\r\nimport * as conduit from '@astronautlabs/conduit';\r\nimport { MyWebWorker } from './my-web-worker';\r\n\r\nconst worker = conduit.WebWorker.start(MyWebWorker);\r\nconst result = await worker.doSomeWork(1, 2);\r\nconsole.log(result); // prints \"3\"\r\n```\r\n\r\nThe above is compatible with [Webpack's Web Workers support](https://webpack.js.org/guides/web-workers/#syntax). Other bundlers and dev servers such as Vite also support this convention.\r\n\r\nIf you are shipping ESM directly without bundling, or if your environment directly supports web workers, you may be able to use a simpler syntax:\r\n\r\n> `my-web-worker.ts`\r\n```typescript\r\n\r\nimport * as conduit from '@astronautlabs/conduit';\r\n\r\n@conduit.WebWorker(import.meta.url) // CAUTION: Not supported in most environments\r\nclass MyWebWorker {\r\n  async doSomeWork(a: number, b: number) {\r\n    return a + b;\r\n  }\r\n}\r\n```\r\n\r\nStarting the worker is done in the same way if you use this variant.\r\n\r\n# Logging\r\n\r\nThe `RPCSession` class logs certain information which may be important to the operation of your application. By default \r\nthe `console` global is used to do this, but you can override or suppress the logs `RPCSession` does by setting \r\n`RPCSession#logger`. It is expected that you would tie it into your application's standard logging system.\r\n\r\n# Exception Handling\r\n\r\nWhen an exception is thrown by the remote side of a Conduit RPC session it is handled specially. By default the error \r\nwill be logged using `RPCSession#logger` with a severity of `error`, and an `RPCInternalError` will be sent across the \r\nwire in the thrown error's place. This allows you to inspect your application's logs for diagnostic information when \r\nan exception occurs while handling RPC calls.\r\n\r\nOften it is desirable to intentionally throw a specific error to the caller. You can mark thrown errors specially so \r\nthat they are sent without being replaced by `RPCInternalError`. The simplest way to do this is to call the `raise()` \r\nfunction exported by Conduit instead of using the `throw` keyword. That function returns Typescript's `never` type as \r\ninternally it marks the passed error using the `org.webrpc.intentional-error` well-known symbol (see `Symbol.for()`) \r\nand performs a `throw`. If Conduit detects an exception thrown via `raise()` it will send it directly to the caller \r\nwithout replacing it with `RPCInternalError`. \r\n\r\nIf you wish to allow all exceptions to flow to the caller unimpeded, you can disable this behavior by setting \r\n`RPCSession#safeExceptionsMode` to `false`. Note that this may expose internals of your application and filesystem \r\nstructure to untrusted callers.\r\n\r\n## Server (callee) Stack Traces\r\n\r\nEven if an exception is intentionally returned via `raise()` (or when `safeExceptionsMode` is disabled), the stack \r\ntrace of the exception is removed to avoid exposing implementation details of your application. If you wish to allow \r\nfull stack traces to be received by the client you can set `RPCSession#maskStackTraces` to `false`.\r\n\r\n## Client (caller) Stack Traces\r\n\r\nSince stack traces of errors which originate from RPC calls can contain information from the remote side, stack traces \r\nmay not be useful if the caller is at fault. To improve this situation, Conduit automatically captures the stack trace \r\nat the call-site of an RPC method and includes this in any error received by the remote side when rethrowing it on the \r\nlocal side. In some cases this may be a better error than you would get if the error were directly thrown from the RPC \r\nimplementation. If you wish to disable injection of client-side stack traces, you can do so by setting \r\n`RPCSession#addCallerStackTraces` to `false`.\r\n\r\n# Discoverability\r\n\r\nConduit has a built-in service discovery mechanism. Call `RPCSession#discoverServices()` to retrieve the services being \r\nadvertised by the remote side. Services are discoverable by default. Each service can be configured to not be \r\ndiscoverable by applying the `@Discoverable(false)` decorator.\r\n\r\nYou can disable introspection for all services by setting `RPCSession#enableDiscovery` to `false`.\r\n\r\n# Introspection\r\n\r\nConduit can describe the methods and events available on a particular service via introspection. Call \r\n`RPCSession#introspectService()` to request information about a specific service. Services are introspectable by \r\ndefault. Each service can be configured to not be introspectable by applying the `@Introspectable(false)` decorator.\r\n\r\nDiscoverability and introspection are mutually independent operations. A service can be configured to be discoverable \r\nbut not introspectable, or introspectable but not discoverable, both or neither.\r\n\r\nThe type information available in introspection results is basic, roughly equivalent to what Typescript's \r\n`emitDecoratorMetadata` can provide. In the future more advanced type information will be supported.\r\n\r\nYou can disable introspection for all services by setting `RPCSession#enableIntrospection` to `false`.\r\n\r\n# Wire Format\r\n\r\n`@/conduit` encodes messages in JSON, making it ideal for use on the web. Each message has a type, identified by the \r\n`type` field. There are four types of message:\r\n\r\n- `request` -- Request a specific method to be called on a given object, with the given function parameters.\r\n- `response` -- Indicate that a method call has completed\r\n- `ping` -- Check if the connection is still working\r\n- `pong` -- Respond that the connection is indeed still working.\r\n\r\nSee below for details about these message types.\r\n\r\n## `request`\r\n```json\r\n{\r\n    \"type\": \"request\",\r\n    \"id\": \"da860252-ce2b-4182-9e8d-3bda07e9f228\",\r\n    \"receiver\": { /* object reference, see below */ },\r\n    \"method\": \"methodName\",\r\n    \"parameters\": [123, \"abcdef\"],\r\n    \"metadata\": { /* arbitrary data */ }\r\n}\r\n```\r\n\r\nThis type of method is sent whenever a remote procedure call is initiated.\r\n\r\n- `id` -- A UUIDv4 which is unique to this request. It will be used to identify the response which correlates with this \r\n  request.\r\n- `receiver` -- The remote object which should receive this message. This will be a Reference, see below for more \r\n  details on how references work.\r\n- `method` -- The string name of the method which is being called. If the method is not allowed, an error will be \r\n  returned in the response.\r\n- `parameters` -- An array of the positional parameters that should be passed to the method. Any valid JSON object is \r\n  allowed, and References are also supported (see below).\r\n- `metadata` -- Arbitary data that Conduit itself will not consider. Useful for passing useful information from the \r\n  sender to the receiver.\r\n\r\n## `response`\r\n```json\r\n{\r\n    \"type\": \"response\",\r\n    \"id\": \"da860252-ce2b-4182-9e8d-3bda07e9f228\",\r\n    \"error\": null,\r\n    \"value\": \"return value from the method\"\r\n}\r\n```\r\n\r\nA successful response will have `error` be null/undefined. A failure response will have `error` be anything other than \r\nnull or undefined. \r\n- Upon receiving a successful response, Conduit will resolve the promise corresponding to the method call with the \r\n  given `value`. \r\n- Upon receiving a failure response, Conduit will reject the promise correspondsing to the method call with the given \r\n  `error`.\r\n\r\n## `ping`\r\n```json\r\n{ \"type\": \"ping\" }\r\n```\r\n\r\nCan be sent to ensure that message passing is still working over the given channel. Not sent by Conduit by default, see \r\nthe included `DurableSocket` and `DurableSocketChannel` types for more information. When a Conduit session receives \r\nthis message, it always responds with a corresponding `pong` message (see below).\r\n\r\n## `pong`\r\n```json\r\n{ \"type\": \"pong\" }\r\n```\r\n\r\n## References\r\n\r\nConduit supports the ability to refer to remote objects (and local remotable objects) within the request/response \r\nmessages that make up RPC calls.\r\n\r\nIn fact, this capability is fundamental to how the mechanism works. Every RPC call specifies what object a method is \r\nbeing called on as the `receiver` object. The receiver is specified using a Reference.\r\n\r\n```json\r\n{ \r\n    \"Rε\": \"3f7204da-3ace-4edc-8bf3-0c841970c117\",\r\n    \"S\": \"L\", \r\n    \"Rid\": \"7a4ba201-fac1-4fda-b26b-270518549e6f\" \r\n}\r\n```\r\n\r\n- `Rε`: The ID of the object\r\n- `S`: The \"side\" that owns this object from the perspective of the sender of the reference object (`L` for \"local to \r\n  sender\", `R` for \"remote to sender\"). Since both sides have local and remote sides and these references are \r\n  interchanged, the context of where the reference was sent from is important for determining it's meaning. For \r\n  instance if a message is received which indicates \"local side\", then this means it is \"local to the sender\" and \r\n  \"remote to the receiver\". If a message is *sent* which indicates remote side, then this means it is \"remote to the \r\n  sender\" and \"local to the receiver\".\r\n- `Rid`: The ID of the reference itself. This is used for properly implementing remote garbage collection (see below).\r\n  Some well-known references do not support multi-referencing, in those cases this field will be omitted or empty (see \r\n  below).\r\n\r\n## Garbage Collection\r\n\r\nReferences to remote objects intelligently handle garbage collection. References on the remote side keep the objects \r\nthey refer to on the local side alive (they won't be garbage collected). When remote references are discarded and get \r\ngarbage collected, references on the server side are automatically discarded to allow objects to be garbage collected.\r\n\r\nEvery object reference sent within a Conduit message represents a unique reference to a specific object. While each of \r\nthose unique references are outstanding, the sender must not allow the referenced objects to be garbage collected. Each \r\none of those references must be finalized by the receiver before the referenced object may be collected. \r\n\r\nSince Conduit only keeps one proxy per remote object, most of the references created to a given object will be \r\nimmediately dismissed. As soon as Conduit resolves the references to an already existing proxy object, it will no \r\nlonger need the new reference. However if no proxy exists yet, the reference will *not* be finalized.\r\n\r\n## Well-Known References\r\n\r\nIf you've read all the above and you now understand that _every_ `request` must specify a valid object reference, you \r\nmight be wondering how an initial `request` would be possible since there are no other calls which might be used to \r\ntell you how to populate the `receiver` references. You might also wonder how references are finalized for the purposes \r\nof garbage collection.\r\n\r\nAll of the base machinery that enables this functionality is provided by the `RPCSession` class itself, _which is \r\nitself a remotable Conduit object_. There is always exactly 1 `RPCSession` object on each end of an RPC session (makes \r\nsense), and it is referred to with a special kind of reference called a \"well known reference\".\r\n\r\nWell known references are those where instead of a UUID, the object being referred to has a well-known ID which can be \r\npredicted by the other side of the conversation. The ID of the `RPCSession` object is always `org.webrpc.session`, so \r\nit is always possible to refer to this object even before any messages have been sent. Furthermore, the `RPCSession`'s \r\nlifespan is always at least as long as the lifetime of the channel which it services, which means there is no need to \r\nmanage references for it. Because of these factors, we can create the following reference for the remote's RPCSession \r\ninstance without knowing anything about the object iself, the channel, etc.\r\n\r\n```json\r\n{ \"Rε\": \"org.webrpc.session\", \"S\": \"R\" }\r\n```\r\n\r\nAPIs like service discovery, introspection, and reference finalization are all implemented as Conduit RPC calls to the \r\nremote side's `RPCSession` instance.\r\n\r\n","readmeFilename":"README.md"}