-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix!: conform to Delegated Routing V1 HTTP spec #41
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for opening this, some comments inline
packages/client/src/index.ts
Outdated
@@ -41,7 +60,22 @@ export interface RoutingV1HttpApiClient { | |||
* Returns an async generator of PeerInfos that can provide the content | |||
* for the passed CID | |||
*/ | |||
getProviders(cid: CID, options?: AbortOptions): AsyncGenerator<PeerInfo> | |||
getProviders(cid: CID, options?: AbortOptions): AsyncGenerator<Record> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can the return type be guaranteed to be BitswapRecord
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@achingbrain we don't want BitswapRecords to be used, see https://specs.ipfs.tech/routing/http-routing-v1/#get-routing-v1-providers-cid - it should be a generic record. PeerRecords are recommended.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then can the return type be guaranteed to be PeerRecord
? What I'm getting at here is it makes the users life easier if they don't have to deal with a union type.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There could be other schemas than peer
. But in practice we can limit this to PeerRecord
responses: ignore unknown schemas unless they have ID
and Addrs
fields like the legacy bitswap
schema, and interpret them aspeer
schema.
For the wider context, the only /routing/v1
implementation (afaik) that returned bitswap schema was cid.contact (IPNI), and it had ID
and Addrs
just like peer schema does.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, sounds like we can just convert any BitswapRecord
s to PeerRecord
s and drop the union type then.
@achingbrain (or others on the Helia team):
|
@achingbrain I can't reproduce the failing test in ubuntu. Do you have any idea what might be causing it? Other than that, this PR is ready for review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hacdias fwiw I can reproduce error locally: the npm run test:node
is failing for me with the same error as CI (nodejs v20.6.1 on linux).
It looks like
returns some random bytes from memory instead of the valid ipns record:
> console.log(new TextDecoder('utf-8').decode(new Uint8Array(arrayBuffer)))
{"Providers":[{"Schema":"peer","Protocols":["transport-bitswap"],"ID":"12D3KooWSAPTftgtTWjvVYXVChuqXxkU8b7cx1dKbUoiHNQ9iJbc","Addrs":["/ip4/123.123.123.123/tcp/123"]},{"Schema":"peer","Protocols":�%�Z�%@port-bitswap"],"ID":"12D3KooWA6yLJzjuidJ8SCiQcESWdcfsLXdtwACsPU9iiSzZzwNh","Addrs":["/ip4/123.123.123.123/tcp/123"]}]}�֘% ��/�X-�c����3�C���VS
�%�Z�for= reamD{{{{V�֘%V{{{{{ +�r|Ȃ���`��s�Qx�C�%lQ����T��se@)-��Ҧ]��ŭ1��|#��>�Ec�]ʵ��9+�r|Ȃ���`��s�Qx�C�%lQ����T��%V���%V{{{{V{@V{{{{{{"Schema":"peer","Protocols":["transport-bitswap"],"ID":"12D3KooWRhjNhkGatKpVm7cLjC7u5oPqRsqU2sRoq2xd92daw8eP","Addrs":["/ip4/123.123.123.123/tcp/123"]}
{"Schema":"peer","Protocols":["transport-bitswap"],"ID":"12D3KooWBnEiZbtipzpfuSHtwjm52pXdSBDgJn4G6yLRpiPZsyS5","Addrs":["/ip4/123.123.123.123/tcp/123"]}
eadykpr{"Schema":"peer","Protocols":["transport-bitswap"],"ID":"12D3KooWRhjNhkGatKpVm7cLjC7u5oPqRsqU2sRoq2xd92daw8eP","Addrs":["/ip4/123.123.123.123/tcp/123"]}
{"Schema":"peer","Protocols":["transport-bitswap"],"ID":"12D3KooWBnEiZbtipzpfuSHtwjm52pXdSBDgJn4G6yLRpiPZsyS5","Addrs":["/ip4/123.123.123.123/tcp/123"]}
{"Schema":"peer","Protocols":["transport-bitswap"],"ID":"12D3KooWRhjNhkGatKpVm7cLjC7u5oPqRsqU2sRoq2xd92daw8eP","Addrs":["/ip4/123.123.123.123/tcp/123"]}
{"Schema":"peer","Protocols":["transport-bitswap"],"ID":"12D3KooWBnEiZbtipzpfuSHtwjm52pXdSBDgJn4G6yLRpiPZsyS5","Addrs":["/ip4/123.123.123.123/tcp/123"]}
�=\��n�LC��p�]�*�E$<%�h����&@@,j&.��OK�H��0lDP��o殐b��hqx;��0�}7\vZ�N��*�E$<%�h����& �� �pOoYo
{{{{{{{{{{"Peers":[{"Schema":"peer","Protocols":["transport-bitswap"],"ID":"12D3KooWLZreCQLmSjdwhA3jGXYZGwjtooMJ38qkrGdkxoP7fyJS","Addrs":["/ip4/123.123.123.123/tcp/123"]}] ��1���Ażȸ�d=""��
%@G%��O+W(��[�S̠4��fo�1b*�^���|�{��1���Ażȸ�d=""�� ��n��k�
�oQ�9�1c��z�au2K��0jS�Lf1�0�@F��������t[�2 WT�;�5�hc�oQ�9�1c��z�au2K��0jS�Lf1�0�J2023-10-19T00:59:05.157000000Z/ipfs/bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4�cTTL��eValueXA/ipfs/bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4hSequencehValidityX2023-10-19T00:59:05.157000000ZlValidityTypeipns-signature:ipns-signature:�cTTL��eValueXA/ipfs/bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4hSequencehValidityX2023-10-19T00:59:05.157000000ZlValidityTypeF��������t[�2 WT�;�5�hcEOL/ipfs/bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei42023-10-19T00:59:05.157000000ZEOLF��������t[�2 WT�;�5�hc/ipfs/bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei42023-10-19T00:59:05.157000000Z
A/ipfs/bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4@��Qm�Φ�ڷ-1x�_�-�D?��s��%Y5Q8�
%Kf������?=;�* ��s"2023-10-19T00:59:05.157000000Z(0���/B@���x��V������7:p�2�2�%��}� Y�`�J�x���3�;�^͇��5G�J��cTTL��eValueXA/ipfs/bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4hSequencehValidityX2023-10-19T00:59:05.157000000ZlValidityType/ipns/ �oQ�9�1c��z�au2K��0jS�Lf1�0�JH�֘%V*�������2�������K���f�����������
���q����������C�������������������P�֘%V��֘%V�֘%V�
�֘%V�֘%V��֘%V�.C�%V����%VP�֘%Vh�֘%V��֘%V�4 ��֘%V�֘%V�4 �֘%V��֘%V�a ر֘%V�֘%V��֘%VH�֘%VX/�����֘%`�֘%Vp�֘%V��֘%V���%V��֘%V��%V��֘%VX�֘%Vx�֘%��֘%V8�֘%VP�֘%V`�֘%V��������֘%V�4 ��֘%V��֘%V��G֘%V���֘%Vس֘%V��֘%V�2��֘%V� �֘%0C�%V����%VP�֘%V�֘%V�֘%V�-C�%V����8�֘%V��֘%V�֘%Vp�֘%V@�֘%V�֘%V�
�֘%Vp�֘%V�֘%V�.C�%V���������4 %V�֘%V8�֘%�֘%V��֘%V��֘%V!4 ��֘%V��֘%V'��ܲ�%V(,��֘%V�֘%V3)�/� �֘%V8�֘%VH�֘%VX/����֘%��֘%V��֘%V��֘%V6C%����ȷ֘%V�4 x�֘%V���,8�֘%V�4 h�֘%V�4 �֘%V����h�֘%V?�8ܲ�%V8��֘%VA%V�.C�%V����%V%V�֘%V8�֘%V��֘%Vж֘%V�֘%V�-C�%V����%V%V��֘%V��֘%V(�֘%Vж֘%V
H�֘%V��֘%V�֘%V�.C�%V6C����������֘%V��֘%Vp�֘%V��֘%Vt4 �֘%Vt�֘%V��֘%VH�֘%V�G֘%Vи֘%V~Y֘%V}))�֘%V@�֘%V} P�֘%V����G��֘%Vh�֘%V�4 и֘%V�и֘%Vx�֘%VH�֘%V�ܲ�%V��֘%V�Y֘%V�)��֘%V�֘%V� �֘%V����GX�֘%V(�֘%V�4 ��֘%V���֘%V8�֘%VH�֘%V�G֘%VP�֘%V�Y�)%V`�֘%V��֘%V� й֘%V����G�֘%V�֘%V�4 P�֘%V�P�֘%VȾ֘%VH�֘%V H֘%V`�֘%V�֘%V�4 ��֘%V(�֘%V���ܲ�%V�,��֘%V��֘%V �֘%V��֘%V� ��֘%V�����֘%Vغ֘%V���֘%V�֘%V�4 ��֘%V@�֘%V�4 P�֘%V��֘%V��(�֘%V@�֘%V��X�֘%V�4 ��֘%V��֘%V�4 ��֘%V��֘%V�,��֘%V��֘%V�)%V����֘%VȻ֘%V��֘%Vػ֘%Vh-C�%V��%�֘%V��֘%V��֘%V�֘%�֘%VH�֘%VX/���ȼ֘%x�֘%V��֘%V��֘%V�!��%V�)%V`�֘%�֘%V0�֘%V��;{����X�֘%V� ��֘%V�֘%$6��֘%V ��֘%V� �֘%V��֘%V$6�֘%V ��֘%V�-C�%V����%V��֘%V �֘%V��֘%V�֘%Vн֘%�֘%V�.C�%V�!�֘%V,��֘%V�֘%Vh�֘%Vp4`�֘%Vp`�֘%V��֘%V�H֘%V��֘%V�X�=��G֘%V��֘%V�q[?�H֘%V��֘%V�gY �E֘%V��֘%V�%V�G֘%V�֘%Vd�-%V H֘%VP�֘%V�,
%V�H֘%V��֘%Vgp�+%V�I֘%VQ�:�I֘%V��֘%V*Sd7%Vм֘%�֘%VHH֘%V`�֘%V��F %VI֘%V`�֘%V�~I
%V%VX�֘%V�ܲ�%Vи֘%V.��2%V�ݲ�%V0�֘%VM�)%VH�֘%VHH֘%V��֘%V�֘%Vy4 P�֘%V��֘%V�4 ��֘%V��֘%V~[��֘%V��֘%V�4 �֘%V��֘%V����֘%V��֘%V�)[����֘%�֘%V�)��֘%V0�֘%V��֘%V@�֘%Vw X�֘%V����G��֘%Vp�֘%V�4 ��֘%V
@lidel what is odd to me is that this is only happening on linux then, and looking at what you posted, it seems the odd bytes are also in other messages, not just the |
@hacdias I don't see windows and macos passing on CI – they get cancelled when linux fails, and linux is the fastest runtime. |
@lidel oh, I didn't notice. They all pass locally for me though so I'd assume at least macOS works well (Nodejs 18.18.2, same as CI) |
It is built in now, using https://github.com/nodejs/undici |
This is the cause of the CI failure: fastify/fastify#5118 |
Co-authored-by: Marcin Rataj <lidel@lidel.org>
## @helia/delegated-routing-v1-http-api-client-v1.0.0 (2023-10-25) ### ⚠ BREAKING CHANGES * method signatures have changed to be closer to the delegated http routing v1 API spec ### Features * initial import ([d49fff6](d49fff6)) ### Bug Fixes * conform to Delegated Routing V1 HTTP spec ([#41](#41)) ([41e7902](41e7902)) ### Trivial Changes * add project field to eslint config ([#40](#40)) ([7dac713](7dac713)) * fix deps ([9aa177d](9aa177d)) * **release:** 1.0.0 [skip ci] ([867feb8](867feb8)) * **release:** 1.0.1 [skip ci] ([7d3d708](7d3d708)), closes [#26](#26) [#8](#8) * **release:** 1.0.2 [skip ci] ([8760907](8760907)), closes [#39](#39) ### Documentation * update readmes and package descriptions ([11934bc](11934bc)) ### Dependencies * bump helia from 1.3.12 to 2.0.1 ([#26](#26)) ([9160281](9160281)) * **dev:** bump aegir from 39.0.13 to 40.0.8 ([#8](#8)) ([127bcc0](127bcc0)) * **dev:** bump aegir from 40.0.13 to 41.0.0 ([#39](#39)) ([c01a33e](c01a33e))
## @helia/delegated-routing-v1-http-api-server-v1.0.0 (2023-10-25) ### ⚠ BREAKING CHANGES * method signatures have changed to be closer to the delegated http routing v1 API spec ### Features * initial import ([d49fff6](d49fff6)) ### Bug Fixes * add CORS plugin ([5913f9d](5913f9d)) * conform to Delegated Routing V1 HTTP spec ([#41](#41)) ([41e7902](41e7902)) ### Trivial Changes * add project field to eslint config ([#40](#40)) ([7dac713](7dac713)) * fix deps ([9aa177d](9aa177d)) * **release:** 1.0.0 [skip ci] ([ed31f44](ed31f44)) * **release:** 1.0.1 [skip ci] ([4a7be80](4a7be80)) * **release:** 1.0.2 [skip ci] ([9b4b3e8](9b4b3e8)), closes [#26](#26) [#8](#8) * **release:** 1.0.3 [skip ci] ([1aa75e3](1aa75e3)), closes [#39](#39) ### Documentation * update readmes and package descriptions ([11934bc](11934bc)) ### Dependencies * bump helia from 1.3.12 to 2.0.1 ([#26](#26)) ([9160281](9160281)) * **dev:** bump aegir from 39.0.13 to 40.0.8 ([#8](#8)) ([127bcc0](127bcc0)) * **dev:** bump aegir from 40.0.13 to 41.0.0 ([#39](#39)) ([c01a33e](c01a33e)) * **dev:** bump sinon from 16.1.3 to 17.0.0 ([#42](#42)) ([43275c0](43275c0))
## 1.0.0 (2024-06-20) ### ⚠ BREAKING CHANGES * returns IPNS objects are from ipns@9.x.x * bump multiformats from 12.1.3 to 13.0.0 (#75) * method signatures have changed to be closer to the delegated http routing v1 API spec ### Features * add support for libp2p ContentRouting and PeerRouting ([#44](#44)) ([ddfff1b](ddfff1b)) * allow skipping IPNS record validation ([#101](#101)) ([ec0ba89](ec0ba89)) * initial import ([d49fff6](d49fff6)) ### Bug Fixes * add CORS plugin ([5913f9d](5913f9d)) * conform to Delegated Routing V1 HTTP spec ([#41](#41)) ([41e7902](41e7902)) * conform to peer schema ([35f47da](35f47da)) * handle unparsable peer ids ([#118](#118)) ([9bdbe46](9bdbe46)) * increase listeners to silence node warnings ([#112](#112)) ([13f4084](13f4084)) * increase shutdown controller signal listeners ([#62](#62)) ([ab7afa7](ab7afa7)) * mark package as side-effect free ([551e0f2](551e0f2)) * PeerRecord Addrs and Protocols do not need to be optional ([#43](#43)) ([ec62768](ec62768)) * remove @helia/interface dep ([#59](#59)) ([aa8ffb8](aa8ffb8)) ### Trivial Changes * add or force update .github/workflows/js-test-and-release.yml ([#19](#19)) ([1af4a7a](1af4a7a)) * add project field to eslint config ([#40](#40)) ([7dac713](7dac713)) * add typedoc entry point ([5b16a12](5b16a12)) * delete templates [skip ci] ([#18](#18)) ([e1771ee](e1771ee)) * fix deps ([9aa177d](9aa177d)) * fix package name ([841d8f1](841d8f1)) * fix package name ([cd172da](cd172da)) * fix package name ([2c13d74](2c13d74)) * **release:** 1.0.0 [skip ci] ([a5b8290](a5b8290)), closes [#41](#41) [#40](#40) [#26](#26) [#8](#8) [#39](#39) [#26](#26) [#8](#8) [#39](#39) [#42](#42) * **release:** 1.0.0 [skip ci] ([b027b54](b027b54)), closes [#41](#41) [#40](#40) [#26](#26) [#8](#8) [#39](#39) [#26](#26) [#8](#8) [#39](#39) * **release:** 1.0.0 [skip ci] ([fd4871b](fd4871b)) * **release:** 1.0.0 [skip ci] ([867feb8](867feb8)) * **release:** 1.0.0 [skip ci] ([ed31f44](ed31f44)) * **release:** 1.0.1 [skip ci] ([39c92a5](39c92a5)), closes [#47](#47) * **release:** 1.0.1 [skip ci] ([58d76be](58d76be)), closes [#43](#43) * **release:** 1.0.1 [skip ci] ([7d3d708](7d3d708)), closes [#26](#26) [#8](#8) * **release:** 1.0.1 [skip ci] ([4a7be80](4a7be80)) * **release:** 1.0.2 [skip ci] ([4214634](4214634)), closes [#48](#48) * **release:** 1.0.2 [skip ci] ([8760907](8760907)), closes [#39](#39) * **release:** 1.0.2 [skip ci] ([9b4b3e8](9b4b3e8)), closes [#26](#26) [#8](#8) * **release:** 1.0.3 [skip ci] ([e8d3243](e8d3243)), closes [#49](#49) * **release:** 1.0.3 [skip ci] ([1aa75e3](1aa75e3)), closes [#39](#39) * **release:** 1.0.4 [skip ci] ([7e2bb0b](7e2bb0b)), closes [#58](#58) * **release:** 1.0.5 [skip ci] ([5341fc1](5341fc1)), closes [#59](#59) * **release:** 1.1.0 [skip ci] ([4f593ec](4f593ec)), closes [#44](#44) [#47](#47) * **release:** 1.1.1 [skip ci] ([9ab3df4](9ab3df4)), closes [#58](#58) * **release:** 1.1.2 [skip ci] ([1db87c0](1db87c0)), closes [#62](#62) * **release:** 2.0.0 [skip ci] ([c9936ca](c9936ca)), closes [#75](#75) [#100](#100) [#75](#75) [#94](#94) * **release:** 2.0.0 [skip ci] ([81281b6](81281b6)), closes [#75](#75) [#100](#100) [#75](#75) [#73](#73) [#77](#77) [#94](#94) * **release:** 2.0.1 [skip ci] ([814f9ef](814f9ef)), closes [#91](#91) * **release:** 2.0.1 [skip ci] ([7e4f169](7e4f169)), closes [#91](#91) * **release:** 2.0.2 [skip ci] ([01f6b44](01f6b44)) * **release:** 2.0.3 [skip ci] ([0fdea42](0fdea42)) * **release:** 2.1.0 [skip ci] ([e3a2d8f](e3a2d8f)), closes [#101](#101) * **release:** 3.0.0 [skip ci] ([be52e79](be52e79)), closes [#102](#102) * **release:** 3.0.0 [skip ci] ([d2624dc](d2624dc)), closes [#102](#102) * **release:** 3.0.1 [skip ci] ([a2f715a](a2f715a)), closes [#112](#112) * **release:** 3.0.1 [skip ci] ([5f2faf6](5f2faf6)), closes [#104](#104) * **release:** 3.0.2 [skip ci] ([6933d34](6933d34)), closes [#108](#108) * **release:** 3.0.3 [skip ci] ([bfbba0f](bfbba0f)), closes [#112](#112) * remove extra ci file ([#46](#46)) ([b130c17](b130c17)) * remove release from interop ([a3be11b](a3be11b)) * Update .github/pull_request_template.md [skip ci] ([c4fb76f](c4fb76f)) * Update .github/workflows/stale.yml [skip ci] ([30d5d80](30d5d80)) * Update .github/workflows/stale.yml [skip ci] ([a958569](a958569)) * Update .github/workflows/stale.yml [skip ci] ([b4f59b6](b4f59b6)) * update aegir ([c7c81b5](c7c81b5)) * update project config ([29bf459](29bf459)) * update project config ([#100](#100)) ([0bc6284](0bc6284)) * update sibling dependencies ([0c21765](0c21765)) * update sibling dependencies ([85cc65e](85cc65e)) * update sibling dependencies ([3fcc332](3fcc332)) * update sibling dependencies ([1b5d5dc](1b5d5dc)) ### Documentation * update project config and readmes ([#47](#47)) ([31eb6f7](31eb6f7)) * update readme examples to import correct symbols ([#58](#58)) ([bcfc785](bcfc785)) * update readmes and package descriptions ([11934bc](11934bc)) ### Dependencies * bump @fastify/cors from 8.5.0 to 9.0.1 ([#108](#108)) ([851b40f](851b40f)) * bump @libp2p/interface from 0.1.6 to 1.1.1 ([#91](#91)) ([50e4864](50e4864)) * bump helia from 1.3.12 to 2.0.1 ([#26](#26)) ([9160281](9160281)) * bump multiformats from 12.1.3 to 13.0.0 ([#75](#75)) ([1dabe16](1dabe16)) * bump p-queue from 7.4.1 to 8.0.1 ([#73](#73)) ([d575f73](d575f73)) * bump uint8arrays from 4.0.10 to 5.0.1 ([#77](#77)) ([e966c99](e966c99)) * **dev:** bump @helia/ipns from 5.0.0 to 6.0.0 ([#107](#107)) ([c4d9c8f](c4d9c8f)) * **dev:** bump @helia/ipns from 6.0.1 to 7.1.0 ([#110](#110)) ([bb10bf7](bb10bf7)) * **dev:** bump @types/sinon from 10.0.20 to 17.0.0 ([#49](#49)) ([c2d5bfb](c2d5bfb)) * **dev:** bump aegir from 39.0.13 to 40.0.8 ([#8](#8)) ([127bcc0](127bcc0)) * **dev:** bump aegir from 40.0.13 to 41.0.0 ([#39](#39)) ([c01a33e](c01a33e)) * **dev:** bump aegir from 41.3.5 to 42.1.1 ([#94](#94)) ([e34a142](e34a142)) * **dev:** bump helia from 3.0.1 to 4.0.0 ([#104](#104)) ([23cd638](23cd638)) * **dev:** bump sinon from 16.1.3 to 17.0.0 ([#42](#42)) ([43275c0](43275c0)) * **dev:** bump sinon-ts from 1.0.2 to 2.0.0 ([#48](#48)) ([7e0c7d3](7e0c7d3)) * update ipns to v9 ([#102](#102)) ([1097cb6](1097cb6)) * update sibling dependencies ([c2f7470](c2f7470)) * update sibling dependencies ([7d9cb15](7d9cb15))
🎉 This PR is included in version 1.0.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
## @helia/delegated-routing-v1-http-api-interop-v1.0.0 (2024-09-15) ### ⚠ BREAKING CHANGES * upgrade to Helia 5.x.x and libp2p 2.x.x * returns IPNS objects are from ipns@9.x.x * bump multiformats from 12.1.3 to 13.0.0 (#75) * method signatures have changed to be closer to the delegated http routing v1 API spec ### Features * initial import ([d49fff6](d49fff6)) ### Bug Fixes * add CORS plugin ([5913f9d](5913f9d)) * conform to Delegated Routing V1 HTTP spec ([#41](#41)) ([41e7902](41e7902)) * handle unparsable peer ids ([#118](#118)) ([9bdbe46](9bdbe46)) * PeerRecord Addrs and Protocols do not need to be optional ([#43](#43)) ([ec62768](ec62768)) ### Trivial Changes * add project field to eslint config ([#40](#40)) ([7dac713](7dac713)) * add typedoc entry point ([5b16a12](5b16a12)) * fix deps ([9aa177d](9aa177d)) * fix package name ([841d8f1](841d8f1)) * fix package name ([cd172da](cd172da)) * fix package name ([2c13d74](2c13d74)) * **release:** 1.0.0 [skip ci] ([fd4871b](fd4871b)) * remove release from interop ([a3be11b](a3be11b)) * update aegir ([c7c81b5](c7c81b5)) * update sibling dependencies ([3fcc332](3fcc332)) * update sibling dependencies ([1b5d5dc](1b5d5dc)) ### Documentation * update project config and readmes ([#47](#47)) ([31eb6f7](31eb6f7)) * update readmes and package descriptions ([11934bc](11934bc)) ### Dependencies * bump @libp2p/interface from 0.1.6 to 1.1.1 ([#91](#91)) ([50e4864](50e4864)) * bump helia from 1.3.12 to 2.0.1 ([#26](#26)) ([9160281](9160281)) * bump multiformats from 12.1.3 to 13.0.0 ([#75](#75)) ([1dabe16](1dabe16)) * **dev:** bump @helia/ipns from 5.0.0 to 6.0.0 ([#107](#107)) ([c4d9c8f](c4d9c8f)) * **dev:** bump @helia/ipns from 6.0.1 to 7.1.0 ([#110](#110)) ([bb10bf7](bb10bf7)) * **dev:** bump aegir from 39.0.13 to 40.0.8 ([#8](#8)) ([127bcc0](127bcc0)) * **dev:** bump aegir from 40.0.13 to 41.0.0 ([#39](#39)) ([c01a33e](c01a33e)) * **dev:** bump aegir from 41.3.5 to 42.1.1 ([#94](#94)) ([e34a142](e34a142)) * **dev:** bump aegir from 43.0.3 to 44.1.1 ([#125](#125)) ([d01f77b](d01f77b)) * **dev:** bump helia from 3.0.1 to 4.0.0 ([#104](#104)) ([23cd638](23cd638)) * update ipns to v9 ([#102](#102)) ([1097cb6](1097cb6)) * update sibling dependencies ([c2f7470](c2f7470)) * update sibling dependencies ([7d9cb15](7d9cb15)) * upgrade to Helia 5.x.x and libp2p 2.x.x ([27101f3](27101f3))
🎉 This PR is included in version @helia/delegated-routing-v1-http-api-interop-v1.0.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Conform to Routing V1 HTTP spec: https://specs.ipfs.tech/routing/http-routing-v1/
I'm giving a talk on IPFS Connect about Delegated Routing. It would be useful to have some JavaScript library with the latest. I will definitely need some pointers from TS folks.