js-IPFS 0.51.0添加类型定义并删除SECIO

2020-10-30 15:57:51

js-IPFS 0.51.0添加类型定义并删除SECIO

  亮点

  输入Defs!没有更多的SECIO!减少您的安装时间!

  js-IPFS@0.51.0 已从启动板起飞,并通过TypeScript支持,自定义DAG格式和一种新的,更简便的方式使用模块的方式,移至您的node_modules文件夹。


  类型

  TypeScript席卷了JS世界,它使开发人员可以在其所针对的接口不符合其预期的情况下得到警告,并可以启用大量有用的工具,例如准确的代码完成和内联文档查看。

  已经有几个社区领导的努力,为提供类型信息js-IPFS,但由于该项目移动这么快这是一场艰苦的斗争,以跟上,它们会在每个版本登陆变化的兼容性。

  现在,js-IPFS@0.51.0类型是代码库中的一等公民。该项目到目前为止还没有转换为TypeScript的程度-我们不希望将TypeScript的知识成为促进js-IPFS开发的先决条件,而是使用JSDoc注释定义所有类型,并在开发和持续集成期间构建和验证所有类型。

  今后将要求所有新代码都具有类型,以便帮助该aegir最近对JSDoc注释添加更严格的衬里,同时我们还添加了typecheck github操作,js-IPFS以便在PR中易于发现任何错误或缺失类型。


1030-1-1.png


  SECIO移除

  该过时的安全运输SECIO终于被去掉js-IPFS@0.51.0。它的后继者,Noise首次发布,js-IPFS@0.47.0现在是libp2p使用的默认安全传输。

  go-IPFS@0.7.0最近在噪音引入后也被删除SECIO支持go-IPFS@0.6.0,其手段js-IPFS@0.51.0和go-IPFS@0.7.0只能跟其他节点上运行go-IPFS@0.6.0或js-IPFS@0.47.0以上版本。

  如果您使用的是不同范围的版本运行IPFS节点你要他们全部升级到go-IPFS@0.6.0或更高版本,并js-IPFS@0.47.0在最低限度,否则,你将开始与网络的其余部分将失去连接为SECIO停止对同行的支持。


  自定义DAG格式

  IPFS的核心是文件,这意味着UnixFS,而IPLD格式则意味着dag-pb和ipld-raw。

  IPFS使您可以访问所有底层组件,从而允许您使用dag-cbor将数据结构连接在一起,并使它们可以通过libp2p在Internet上进行访问和分发。

  但是,如果这些编解码器不符合您的要求,又想开发新的编解码器或使用不太常见的编解码器(如dag-jose)怎么办?

  我们不会将每个可用的编解码器都与默认js-IPFS安装捆绑在一起,因为其中一些会引入大型依赖树,这对于不必要使用它们的人来说会不必要地减慢安装速度。

  以前,你已经能够使用自定义的IPLD格式与ipfs-http-client运行时ipfs作为一个进程节点作为应用程序的一部分,但现在你可以在运行的后台程序使用它们。

  请参阅回购中新的custom-ipld-formats示例,以js-IPFS获取有关如何进行设置的更多信息。


  ipfs-core-适用于应用程序作者的新型轻量级IPFS

  当您npm install ipfs获得核心IPFS节点以及运行守护程序,HTTP API服务器和CLI的工具时。如果您要全局安装该组件以在命令行上使用以与IPFS Desktop一起使用,或者只是要在网络上运行某个节点,那么这很好,因为您希望额外的工具能够与您的节点进行通信。

  这些需要花费一些时间来安装和使用硬盘空间,如果您要在顶部构建应用程序,js-IPFS则不一定需要它们。

  现在,您npm install ipfs-core只需获取运行进程内节点所需的IPFS堆栈部分即可。js-IPFS通过不安装所有不需要的额外依赖项,这使安装量大致减少了一半。

  您可以像以前一样使用模块,只需更改依赖项名称/版本并更新需求名称即可:

  const IPFS = require('ipfs')async function () {

  const node = await IPFS.create()

  node.add(...)

  await node.stop()

  }

  对此:

  const IPFS = require('ipfs-core')async function () {

  const node = await IPFS.create()

  node.add(...)

  await node.stop()

  }

  一切就绪!这是尝试使代码库更加模块化,并允许交换组件,并且可能不会一直提取所有内容,从而使高级用户可以创建仅包含所需功能的最小节点。观看此空间了解更多!


  现在默认情况下禁用CORS

  跨源资源共享是一种浏览器安全措施,可防止在网络上受感染网站上运行的恶意JavaScript导致未经授权访问API。

  js-IPFS之前的版本0.51.0具有非常宽松的CORS设置,允许来自任何地方的请求,尽管这使得针对API的开发非常简单,但在安全性方面却有一些不足之处。

  从那时0.51.0起,默认情况下将禁用CORS,因此,如果您打算针对HTTP RPC API进行请求,则需要在启动节点配置之前将要使用的相关来源和方法添加到节点配置中。

  有关完整的概述,请参见自述文件的CORS部分。


  新功能

  •从jsdoc输入检查并生成定义(#3281)(bbcaf34)

  •为dag put和get(#3347)(3250ff4)启用自定义格式

  •Node.js 15支持(#3339)(66f2081)

  •在message-port-client(#3322)(f642f1d)上实现ipfs.ls

  •webui v2.11.4(#3317)(7f32f7f)


  changes重大变化

  •对SECIO的支持已删除(#3295)(5f5ef7e)

  •默认情况下禁用CORS(#3275)(3ff833d)

  •从ipfs-core(#3348)(5cc6dfe)删除缓冲区导出

  •文件ls应该返回字符串(#3352)(16ecc74)

  •修复了“ interface-ipfs-core”链接(#3334)(3e7e222)

  •包/ipfs-core/src/index.js尝试导出未定义的缓冲区(#3312)(5cc6dfe)

  •HTTP客户端工厂:React Navtive(#3331)(4eb196c)中的URL无效

  •cli引脚添加/ rm(#3306)(69757f3)中触发了无效的版本错误

  •在worker中加载ipfs-js捆绑失败,并出现ReferenceError:未定义窗口(#2349)(3f72e50)


  接下来是什么?

  查看js-IPFS项目路线图,其中包含标题功能,这些标题功能按我们希望它们登陆的顺序进行了组织。

  路线图中只标注了较大的功能,期望在路线图项目之间发布许多小的错误修正!


  想贡献吗?

  您想为IPFS项目做贡献,又不知道如何做吗?好吧,有几个地方可以开始使用:

  •检查js-IPFS存储库中help wanted标签的问题。

  •加入IPFS的“全力以赴”,自我介绍,并让我们知道您想在哪里做出贡献:https : //github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands

  •用IPFS破解并向我们展示您的成就!All Hands呼叫也是进行演示的理想场所,请加入并向我们展示您创建的内容。

  •通过https://discuss.ipfs.io/加入讨论,并帮助用户找到答案。

  •加入并参与其中!


  ⁉️你有问题吗?

  最好的地方要问你关于IPFS的问题,它是如何工作的,以及你可以用它做的是在discuss.ipfs.io。我们也可以在#ipfsFreenode上的频道上找到。


最新推荐