{"_id":"@archastro/channel-harness","_rev":"17-2e415a2879bd8acc32ce3e6d09d3b2d5","name":"@archastro/channel-harness","dist-tags":{"latest":"0.7.1"},"versions":{"0.1.0":{"name":"@archastro/channel-harness","version":"0.1.0","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.1.0","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"}],"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"df6c7cfbc2dccd79149735d39a0cf21cc5227653","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.1.0.tgz","fileCount":62,"integrity":"sha512-dIhhOoO22c4UCudOs/zETQ6if1Ip/8NCjyjCGtCVtJKoM9tDZQQ54KXPhCg2wETMtUScZ++6wqj47M4gTuyb1A==","signatures":[{"sig":"MEYCIQCADuqdP0jXbG1JWKggh2LI7ePCDqzTH3b6znjbJgLMJQIhAJu6u7VbWlIcr50SljO2zBOZ8qVm90Ine6zerPB/5snC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181812},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"f84d60f7d501bccfb9b37759164c2f04207eb91c","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"calvin.grunewald","email":"calvin@archastro.ai"},"_npmVersion":"11.12.1","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.1.0_1776458830517_0.015630184847210904","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@archastro/channel-harness","version":"0.1.1","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.1.1","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"159ab63fadc9d8d83fff2cc0d853ef99ff72c007","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.1.1.tgz","fileCount":62,"integrity":"sha512-pCxtdEwDUddg7OM6Aahd6NJQaS/29RVTfsqNDweMJputWROnAsfYSU+OSX6bwdoTg5BsunRI61USm+9TKZw+Xw==","signatures":[{"sig":"MEUCIQDJXf3t8oIZBJtE0NE+xqOfDyGdnfzC1u04F7Bw/NNlUQIgMbq0e4Wk5MsN1cHLE9/upQqZx8YhRcwKUvzDCy9YD3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"0ccb022d09aa183495448c0d0c9b3867198c5577","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.11.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.1.1_1777046472998_0.5061858284631506","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@archastro/channel-harness","version":"0.1.2","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.1.2","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"927f2d4f298b032655c84dff2157c0b09383c234","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.1.2.tgz","fileCount":62,"integrity":"sha512-yV+tWw4l23XGpyGwL6zZWV6MIQWAn8bJLb6w1iOsAnKUIsOriVWzL4reaoyrBqIxFkNTyHNu8z32ivfVCS2LOg==","signatures":[{"sig":"MEUCIEMTHXs63wRBmLgZKpubFONHkjwd8LJPSnsjgdQbax4AAiEA3CMz/zZ6YqjKRNzPMJ9cXbAFmVtBZ+VYnoSJed9xV4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"b4752279fc433488940092fd7ff5b75fd4a6c866","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.1.2_1781207688977_0.16829034090802963","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@archastro/channel-harness","version":"0.2.0","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.2.0","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"6ac06532908b5584a3a618dea5421a379cf8d9c1","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.2.0.tgz","fileCount":62,"integrity":"sha512-a/ycbtPbSNmdV30KRJD4AWE/8kg/S8qn4UJEXXDnCvH3MGCetPZw+zmxtH+GWW64uw1wjtn+EkDDVrxzHiebXQ==","signatures":[{"sig":"MEYCIQC3O1tQ1MyHHOrRQPSygFIqVqqkqiLht2iOmtNM6uSkEQIhAOKxtJmvnJ1Ly2uuN8w1zET5l6ccUWo9VEn+xKY3P6gi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"56574ed2a667012aacb1750e49df5cff50e1a357","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.2.0_1781294358558_0.5217064320839506","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@archastro/channel-harness","version":"0.2.1","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.2.1","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"fef51a22e123abcfce9d546328ed182215ff8d6e","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.2.1.tgz","fileCount":62,"integrity":"sha512-H4c3/LHOuj6Q1/WcKPv3VyU/VzquoK8IBo+/P7PGGb6dU8cnoHjiRAXLllQwc05dI0GtqUA6dIyyPuaY74apGg==","signatures":[{"sig":"MEYCIQD0+U15VJCCJsAbjemscYvHuuL7bFqWHVchv2phe7r+rAIhAKa77zFIaWnOEDIlH5MBvn1tdDpEZOgAmfKvrpgVUPs6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"b225cdb21428d274b6285d7d73a6a32333c5d365","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.2.1_1781308458905_0.2058028537679053","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@archastro/channel-harness","version":"0.2.2","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.2.2","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"811ef2d55f8b38af794c8adfbd0a9aa2f97975f4","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.2.2.tgz","fileCount":62,"integrity":"sha512-cTxpeRR9lWgesxgRvuDB2VxBVQteyDIuSPmfCd+JBSO92YuNjgFD8XP8V1ReIWdcMpc1RNMUYWPhtmsX9SVfBg==","signatures":[{"sig":"MEQCIGqeNOPr8HCOakkjy9oqV2GMkEwrm3ORTu3+bfZebF1EAiAE4lYoZmcFU11NwUr5Y3Fu5G+m4FoAwG55lArVw5HRPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"aca9aa7c4d6db9147fe0ab5628d1b412c5b86aba","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.2.2_1781732159893_0.81295016675816","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@archastro/channel-harness","version":"0.2.3","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.2.3","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"66ef10bbb5ec47e2e010f6b08d27ba22c294ebf8","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.2.3.tgz","fileCount":62,"integrity":"sha512-2pMK57GJdPSJhYdsTzzYJ63qODeLzyJ+Ca3apymwBDwdoww5jmcfgg0E3JA0q/5yOd/4mV+I1pXEqRkzr3+8ew==","signatures":[{"sig":"MEUCIDcHYcYxa+mmlKq8b3fLBLWudWKRg0GnZ/lT1cL4ocnCAiEAqHptin7pP1U/sp7oR2HC7Tc2ZZE5pKEyMUSJBalPldU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"cadc5dddb96b5377315aba14c9eac650fdc24cd9","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.2.3_1781893030682_0.932521810674527","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@archastro/channel-harness","version":"0.2.4","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.2.4","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"30f5dc75c9ef13fff78baf93ca0b3a50f0ebe832","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.2.4.tgz","fileCount":62,"integrity":"sha512-6TYPJEfZS2TkYd3AaIBGrMZQn88l7mcUWnVtZ6+XvV8EN9dAJiKy7l5I3lt4Ih1psDXEylg96Drwib2hYeXeww==","signatures":[{"sig":"MEYCIQDnhsw84Sss8Lah8scJeexpb+lqFFZca20llG2jQU/VVQIhAPfgsX45g4xXEBhVDvk0jJDxDD3Jm+JDDRoqimTZvXIj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"9941c879bcc87675ec92c7860d9c519d1ad0302b","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.2.4_1781899950300_0.05407962291559665","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@archastro/channel-harness","version":"0.2.5","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.2.5","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"ebf02de6165926042f88b00145fae3e2b09fa3a9","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.2.5.tgz","fileCount":62,"integrity":"sha512-lQrrwnNNzgck4WBR84hz0gAczJyb5UeBolY5kqmwFVCHsI9mTNUT+70btuTSxilXxD5BWo6JN+FvqGDW+17HBQ==","signatures":[{"sig":"MEMCICd3llMfp4EghddZ70yW0pHHNRFJVzZOpUO9HL34HJPTAh8ku46isKkiny2EKHxhjIKMYbi8jMVIkTWtimOKC+Rk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"443d25d36a675cf0bfb318efe5aba98d9e114f67","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.2.5_1781901356939_0.06911192105706165","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@archastro/channel-harness","version":"0.3.0","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.3.0","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"4a524327310a1060d5217611408565b3acaf6a52","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.3.0.tgz","fileCount":74,"integrity":"sha512-/wLf5sHQHPVEW8LAczfBbxyFJskfFm2YQWY0HMZVBme9Ag3B7gJ3ijgiNeFxAv6dlhcIP9uWxnbl1EGaBYJ5zA==","signatures":[{"sig":"MEYCIQDC30hSFUuAfZigSkcHoZ60oxzkoyLIT/JdFcaw4IGhDQIhAIOkAlVvfrlnWBYq2bal78zb0/L8RdJ67+UK5xU5NtNs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":221702},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"69f9f14a1f0894e7337ce867cfa403df4918f012","scripts":{"test":"vitest run","build":"tsc","pretest":"node ./__tests__/setup/regenerate-sample-sdk.mjs","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.3.0_1782778383560_0.27123563415458474","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@archastro/channel-harness","version":"0.4.0","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.4.0","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"b96ea3db589e1ba667fe6db35b4e40310b52f82e","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.4.0.tgz","fileCount":74,"integrity":"sha512-9IlEXrxXtH5fANxmYkAy4UvqWVYkeazdyzw+flHBrBgSXtJsWNdvCQDp71Ug0ZnatA0Hy0ke9a3LzkIpHtGHjg==","signatures":[{"sig":"MEUCIAdfQM7HJqagi055Cjed3bVdOdonbC9kfbAqJRyg7DucAiEAxsYHGN9sTNycIPPONX/x7cOwXsIey3jhSE5O3caLOBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":221702},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"82bebb08100af78c8deeda5dba4abfabcb7fe641","scripts":{"test":"vitest run","build":"tsc","pretest":"node ./__tests__/setup/regenerate-sample-sdk.mjs","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.4.0_1782841393647_0.7725741634834835","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@archastro/channel-harness","version":"0.4.1","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.4.1","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"ba90a58ec76cf2f8339a78e4c6a6c795e052d905","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.4.1.tgz","fileCount":74,"integrity":"sha512-lYnDmJIhtv00fn8Rl2wkpl7i9xi1dV5Oqx3mBUkS7iC9/nmDr+S7l5lD1KHXDee8NDYxnByjscXxAVZvpAwy6w==","signatures":[{"sig":"MEUCIQDZax0CGPVOEm/5S5R8R5WLcOkEmHGdW48QcXLZ+DRx9AIgcgJNzEfDCS+SfcU1x3er/NcNjanA7xt5NGTcn3Qtnq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":221702},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"0ea3e85ba4ed11197a193d348d73eeb070de0d2b","scripts":{"test":"vitest run","build":"tsc","pretest":"node ./__tests__/setup/regenerate-sample-sdk.mjs","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.13.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.4.1_1782845227865_0.42365493961089284","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@archastro/channel-harness","version":"0.5.0","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.5.0","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"5c17a0d680751d886116337372fe5616c6d51511","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.5.0.tgz","fileCount":74,"integrity":"sha512-CDzR+UG1eLpep2cBr1ZJD+B17paSh3+G1U7ZuLo8dCD4IhXum75Iu1DeW0eHDr6w/i1eApV32u9/zXAsSBmFYg==","signatures":[{"sig":"MEUCIGzNA4FTjWR1s7wM1gfhXurdKiOtX9uOlhuYrEOhBNHYAiEAyoUcsxIXPBJtOOle5rLGaupJOR26jCshsA5gInVvMx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":221702},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"330cd0e36c3ca3f02ad3b72b3dad9f3c1cabbcb1","scripts":{"test":"vitest run","build":"tsc","pretest":"node ./__tests__/setup/regenerate-sample-sdk.mjs","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.16.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.5.0_1784931658961_0.3304946798178525","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@archastro/channel-harness","version":"0.6.0","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.6.0","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"61dc2f0e3afb41c3080c134441ae937a5118e191","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.6.0.tgz","fileCount":74,"integrity":"sha512-XSb5pz3WTlJKxmgvw90n/cDRmTfFwh6G9K3K8WDTT+77vKUpgz0lMzCyfqxGN+pZp8O+AWZq4nyM51qAHWj6xA==","signatures":[{"sig":"MEUCICSAUkDcHTg9S3Mz2WzXOw6TPmhUJKsYfcozd/akEB/eAiEA9bK7aHMH05xpkNCJ3cYHGUGfyDNpfKDy4gLkUkkf7NM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228952},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"4236cc16dec447a4bd75fec970b3b4071f96dc5b","scripts":{"test":"vitest run","build":"tsc","pretest":"node ./__tests__/setup/regenerate-sample-sdk.mjs","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.16.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.6.0_1786129760198_0.03492720337030608","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@archastro/channel-harness","version":"0.7.0","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","_id":"@archastro/channel-harness@0.7.0","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"bin":{"channel-harness":"dist/bin.js"},"dist":{"shasum":"dcc1cebc82a85ee1a6b30434f6f461f85632c189","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.7.0.tgz","fileCount":74,"integrity":"sha512-jQsyzCuqzirzeT7846Y9/la9PfC8hyC1IOEqLIuOJR5CyhExuSY9ZfqYyjE1kuyq73A9/44I+SQmOVtK8dKgcA==","signatures":[{"sig":"MEUCIQCHh1USgUF/5YUBcbQ8qKwpAQYhHkv7qNob0pIrLRU2/wIgfKgzyGuwKzPO7/Bny2EtxI19bg13khUuSMde2o+PIzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228952},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"gitHead":"0ba08a4b000ab28cd4091086748aa17c1258ae8d","scripts":{"test":"vitest run","build":"tsc","pretest":"node ./__tests__/setup/regenerate-sample-sdk.mjs","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"repository":{"url":"git+https://github.com/ArchAstro/archastro-openapi.git","type":"git","directory":"packages/channel-harness"},"_npmVersion":"11.17.0","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.18.0","ajv":"^8.12.0","yaml":"^2.4.0","ajv-formats":"^3.0.1","@archastro/sdk-generator":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","@types/ws":"^8.5.12","typescript":"^5.4.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/channel-harness_0.7.0_1786580501418_0.9285945284586437","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@archastro/channel-harness","version":"0.7.1","description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ArchAstro/archastro-openapi.git","directory":"packages/channel-harness"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./bin":"./dist/bin.js"},"bin":{"channel-harness":"dist/bin.js"},"scripts":{"build":"tsc","prepublishOnly":"tsc","pretest":"node ./__tests__/setup/regenerate-sample-sdk.mjs","test":"vitest run","test:watch":"vitest"},"dependencies":{"@archastro/sdk-generator":"^0.9.0","ajv":"^8.12.0","ajv-formats":"^3.0.1","ws":"^8.18.0","yaml":"^2.4.0"},"devDependencies":{"@types/node":"^22.0.0","@types/ws":"^8.5.12","typescript":"^5.4.0","vitest":"^4.1.3"},"engines":{"node":">=20"},"gitHead":"f41a22d3985d0c6f631d41b3d40955f93deab101","_id":"@archastro/channel-harness@0.7.1","bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"homepage":"https://github.com/ArchAstro/archastro-openapi#readme","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-/rBMtxEVNdzfB9q/gntRVuYwrYNRP5BD6PgLMTcCWSEAWA06a0nfhY1siJmhzK/XEtbv8ejWTPtnGkV2o2m8dA==","shasum":"c94428b45ebc03a441aacba836d26a7dc3a3bbfb","tarball":"https://registry.npmjs.org/@archastro/channel-harness/-/channel-harness-0.7.1.tgz","fileCount":74,"unpackedSize":234379,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@archastro%2fchannel-harness@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBUsE/BOWkEqLFtK3isig3Y+SynxiaFdW8Vu17rBWM3HAiEAueVz9hFwNt2Q2R1WOIs2V536eR5HTO1XNV7aDnDzwl8="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36fa74e9-c1ad-4902-a09b-94c7641e62c2"}},"directories":{},"maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/channel-harness_0.7.1_1787009697093_0.34366505725949037"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-17T20:47:10.396Z","modified":"2026-08-17T23:34:57.586Z","0.1.0":"2026-04-17T20:47:10.719Z","0.1.1":"2026-04-24T16:01:13.157Z","0.1.2":"2026-06-11T19:54:49.116Z","0.2.0":"2026-06-12T19:59:18.706Z","0.2.1":"2026-06-12T23:54:19.052Z","0.2.2":"2026-06-17T21:36:00.061Z","0.2.3":"2026-06-19T18:17:10.901Z","0.2.4":"2026-06-19T20:12:30.491Z","0.2.5":"2026-06-19T20:35:57.213Z","0.3.0":"2026-06-30T00:13:03.692Z","0.4.0":"2026-06-30T17:43:13.782Z","0.4.1":"2026-06-30T18:47:08.056Z","0.5.0":"2026-07-24T22:20:59.098Z","0.6.0":"2026-08-07T19:09:20.348Z","0.7.0":"2026-08-13T00:21:41.571Z","0.7.1":"2026-08-17T23:34:57.265Z"},"bugs":{"url":"https://github.com/ArchAstro/archastro-openapi/issues"},"license":"MIT","homepage":"https://github.com/ArchAstro/archastro-openapi#readme","keywords":["openapi","phoenix","channels","websocket","contract-testing","archastro"],"repository":{"type":"git","url":"git+https://github.com/ArchAstro/archastro-openapi.git","directory":"packages/channel-harness"},"description":"Runtime contract-testing harness for Phoenix channels declared in an OpenAPI spec (via x-channels).","maintainers":[{"name":"calvin.grunewald","email":"calvin@archastro.ai"},{"name":"vks-archastro","email":"vks@archastro.ai"},{"name":"tore-archastro","email":"tore@archastro.ai"}],"readme":"# @archastro/channel-harness\n\nRuntime contract-testing harness for Phoenix `x-channels` declared in an\nOpenAPI spec. Boot a `ContractServer` from a spec, register per-topic\nscenarios, and exercise them through either an in-process transport or a\nreal WebSocket server. A built-in HTTP control API lets Python (or any\nother language) drive the same server that backs the TypeScript tests.\n\n## Install\n\n```bash\n# ad-hoc\nnpx @archastro/channel-harness ./openapi.json\n\n# global\nnpm install -g @archastro/channel-harness\nchannel-harness ./openapi.json --ws-port 0 --control-port 0\n```\n\nOn startup the CLI prints one JSON line on stdout:\n\n```json\n{\"wsUrl\":\"ws://127.0.0.1:51234/socket/websocket\",\"controlUrl\":\"http://127.0.0.1:51235\"}\n```\n\nTest harnesses parse this to discover the ephemeral ports. The service\nhandles `SIGTERM` / `SIGINT` for clean shutdown.\n\n## Programmatic API\n\n```ts\nimport {\n  startHarnessService,\n  HarnessServiceClient,\n} from \"@archastro/channel-harness\";\n\nconst service = await startHarnessService({ spec: \"./openapi.json\" });\n\nconst client = new HarnessServiceClient({\n  wsUrl: service.wsUrl,\n  controlUrl: service.controlUrl,\n});\nawait client.reset();\n\n// Register a scenario via HTTP …\nawait fetch(`${service.controlUrl}/scenarios`, {\n  method: \"POST\",\n  headers: { \"content-type\": \"application/json\" },\n  body: JSON.stringify({\n    topic: \"doc:doc_42\",\n    onJoin: { reply: { ok: true, payload: { version: 1 } } },\n  }),\n});\n\n// … open a socket and run the SDK channel class.\nconst socket = await client.openSocket();\n\n// shutdown\nclient.closeAllSockets();\nawait service.stop();\n```\n\nFor in-process usage (same-process TS tests), import `ContractServer` and\n`createInProcessPair` directly — no WebSocket needed.\n\n## SSE streaming routes\n\nThe harness also mocks **Server-Sent Events** routes declared with\n`x-sdk-streaming` (the SSE analogue of `x-channels`). The same service serves\nthem over HTTP at `sseUrl` (which equals `controlUrl` — streaming paths like\n`/api/v1/...` never collide with control paths). Point the SDK under test at\n`sseUrl` and register a per-route scenario describing the events to emit:\n\n```ts\nconst service = await startHarnessService({ spec: \"./openapi.json\" });\n\n// Register an SSE scenario via the control API …\nawait fetch(`${service.controlUrl}/stream-scenarios`, {\n  method: \"POST\",\n  headers: { \"content-type\": \"application/json\" },\n  body: JSON.stringify({\n    route: \"POST /api/v1/ai/chat/completions/stream\",\n    actions: [\n      { type: \"emit\", event: \"message_delta\", data: { delta: \"Hi\" } },\n      { type: \"emit\", event: \"done\", data: { finish_reason: \"stop\" } },\n    ],\n  }),\n});\n\n// … then call the SDK's stream() method against `service.sseUrl`.\n```\n\nStream actions mirror the channel push surface:\n\n| Action | Effect |\n| --- | --- |\n| `emit` | Emit a named SSE event; payload is validated against the event schema. |\n| `autoEmit` | Emit a named event with a synthesized, contract-valid payload. |\n| `emitRaw` | Emit without outbound validation (fault injection). |\n| `status` | Respond with a plain HTTP error (e.g. `401`/`402`) instead of a stream. |\n| `disconnect` | Drop the connection mid-stream. |\n\nThe request body is validated against the route's `requestBody` schema (an\ninvalid body is a `400` before the stream opens), and is recorded in\n`/observations` keyed by the route. With no scenario registered, the route\nsynthesizes a contract-valid payload for each declared event. Programmatic\ncallers use `server.streamScenario(routeKey, actions)` instead of the HTTP API.\n\n## CLI options\n\n```\nchannel-harness <spec-path> [--ws-port N] [--control-port M] [--host H]\n```\n\n| Flag | Default | Notes |\n| --- | --- | --- |\n| `--ws-port` | `0` (ephemeral) | WebSocket listen port |\n| `--control-port` | `0` (ephemeral) | HTTP control listen port |\n| `--host` | `127.0.0.1` | Bind address for both listeners |\n\n## Development\n\nThis package lives inside the\n[`archastro-openapi`](https://github.com/archastro/archastro-openapi)\nworkspace. Its integration tests regenerate a sample SDK via\n`@archastro/sdk-generator` and then drive the generated channels through\nthe harness end-to-end. See the root README for details.\n","readmeFilename":"README.md"}