graphdoc 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
graphdoc 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
graphdoc 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT License
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 大数据数据查询
开源组织
地区 不详
投 递 者 首席测试
适用人群 未知
收录时间 2021-11-23

软件简介

Static page generator for documenting GraphQL Schema

build coverage npm tag

Demos

Install

  npm install -g @2fd/graphdoc

Use

Generate documentation from live endpoint

  > graphdoc -e http://localhost:8080/graphql -o ./doc/schema

Generate documentation from IDL file

  > graphdoc -s ./schema.graphql -o ./doc/schema

Generate documentation from for the "modularized schema" of graphql-tools

  > graphdoc -s ./schema.js -o ./doc/schema

./schema.graphql must be able to be interpreted with graphql-js/utilities#buildSchema

Generate documentation from json file

  > graphdoc -s ./schema.json -o ./doc/schema

./schema.json contains the result of GraphQL introspection query

Puts the options in your package.json

  // package.json

  {
    "name": "project",
    "graphdoc": {
      "endpoint": "http://localhost:8080/graphql",
      "output": "./doc/schema",
    }
  }

And execute

  > graphdoc

Help

  > graphdoc -h
  
    Static page generator for documenting GraphQL Schema v2.4.0

    Usage: node bin/graphdoc.js [OPTIONS] 

    
    [OPTIONS]:
    -c, --config                   Configuration file [./package.json].
    -e, --endpoint                 Graphql http endpoint ["https://domain.com/graphql"].
    -x, --header                   HTTP header for request (use with --endpoint). ["Authorization: Token cb8795e7"].
    -q, --query                    HTTP querystring for request (use with --endpoint) ["token=cb8795e7"].
    -s, --schema, --schema-file    Graphql Schema file ["./schema.json"].
    -p, --plugin                   Use plugins [default=graphdoc/plugins/default].
    -t, --template                 Use template [default=graphdoc/template/slds].
    -o, --output                   Output directory.
    -d, --data                     Inject custom data.
    -b, --base-url                 Base url for templates.
    -f, --force                    Delete outputDirectory if exists.
    -v, --verbose                  Output more information.
    -V, --version                  Show graphdoc version.
    -h, --help                     Print this help

Plugin

In graphdoc a plugin is simply an object that controls the content that is displayed on every page of your document.

This object should only implement the PluginInterface.

Make a Plugin

To create your own plugin you should only create it as a plain object or a constructor and export it as default

If you export your plugin as a constructor, when going to be initialized, will receive three parameters

  • schema: The full the result of GraphQL introspection query
  • projectPackage: The content of package.json of current project (or the content of file defined with --config flag).
  • graphdocPackage: The content of package.json of graphdoc.

For performance reasons all plugins receive the reference to the same object and therefore should not modify them directly as it could affect the behavior of other plugins (unless of course that is your intention)

Examples

  // es2015 export constructor

  export default class MyPlugin {

    constructor(schema, projectPackage, graphdocPackage) {}

    getAssets() {
      /* ... */
    }
  }
  // es2015 export plain object

  export default cost myPlugin = {
    getAssets() {
      /* ... */
    },
  }
  // export constructor

  function MyPlugin(schema, projectPackage, graphdocPackage) {
    /* ... */
  }

  MyPlugin.prototype.getAssets = function() {
    /* ... */
  };

  exports.default = MyPlugin;
  // export plain object

  exports.default = {
    getAssets: function() {
      /* ... */
    }
  };

Use plugin

You can use the plugins in 2 ways.

Use plugins with command line

  > graphdoc -p graphdoc/plugins/default \
  -p some-dependencies/plugin \
  -p ./lib/plugin/my-own-plugin \
  -s ./schema.json -o ./doc/schema

Use plugins with package.json

  // package.json

  {
    "name": "project",
    "graphdoc": {
      "endpoint": "http://localhost:8080/graphql",
      "output": "./doc/schema",
      "plugins": [
        "graphdoc/plugins/default",
        "some-dependencie/plugin",
        "./lib/plugin/my-own-plugin"
      ]
    }
  }

Build-in plugin

TODO

Template

TODO

Contributors

展开阅读全文

代码

评论

点击引领话题📣
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
lodash 命令注入漏洞
代码注入
lodash是一个提供模块化、性能和附加功能的现代 JavaScript 实用程序库。 4.17.21 之前的 Lodash 版本容易通过模板函数进行命令注入。
CVE-2021-23337 MPS-2021-2638
2022-08-08 20:23
github ws 资源管理错误漏洞
github ws是一个应用软件。一种易于使用,运行迅速且经过全面测试的WebSocket客户端和服务器实现的方法。 漏洞版本中“Sec-Websocket-Protocol”标头的一个特殊的值可以用来显著降低ws服务器的速度,从而导致拒绝服务漏洞。
CVE-2021-32640 MPS-2021-7109
2022-08-08 20:23
striptags 安全漏洞
使用不兼容类型访问资源(类型混淆)
striptags是一个软件包。 striptags 存在安全漏洞,该漏洞源于在3.2.0版本之前的striptags中,当一个类似数组的对象作为 html 参数传入时,类型混淆漏洞会导致 striptags 连接未经处理的字符串。攻击者可利用该漏洞输入的形状,查询参数被直接传递到函数中,这可能导致XSS。
CVE-2021-32696 MPS-2021-8580
2022-08-08 20:23
marked资源管理错误漏洞
拒绝服务
marked是美国Christopher Jeffrey个人开发者的一款使用JavaScript编写的Markdown解析器和编译器。 漏洞版本中通过3组或更多组奇数和偶数连续下划线 ( ___) 后跟一个字符会导致处理扩展,这回导致容易受到正则表达式拒绝服务 (ReDoS) 的攻击。
CVE-2021-21306 MPS-2021-9993
2022-08-08 20:23
uglify-js 存在ReDoS漏洞
ReDoS
uglify-js 是一个 JavaScript 解析器、压缩器、压缩器和美化工具包。此软件包的受影响版本容易通过 string_template 和 decode_template 函数受到正则表达式拒绝服务 (ReDoS) 的攻击。
MPS-2022-14112
2022-08-08 20:23
Mikaelbr Node-notifier 操作系统命令注入漏洞
命令注入
Mikaelbr Node-notifier是Mikaelbr个人开发者的一个基于Javascript的用于为Mac、Windows、Linux发送统治的代码库。 node-notifier 9.0.0之前版本存在安全漏洞,该漏洞允许攻击者可利用该漏洞在Linux机器上运行任意命令,因为在传递数组时,选项参数没有被清除。
CVE-2020-7789 MPS-2020-17637
2022-08-08 20:23
nodejs 安全漏洞
拒绝服务
nodejs是是一个基于ChromeV8引擎的JavaScript运行环境通过对Chromev8引擎进行了封装以及使用事件驱动和非阻塞IO的应用让Javascript开发高性能的后台应用成为了可能。 nodejs-tmpl存在安全漏洞,该漏洞源于网络系统或产品的代码开发过程中存在设计或实现不当的问题。
CVE-2021-3777 MPS-2021-31423
2022-08-08 20:23
handlebars 安全漏洞
handlebars是一款语义化的Web模板系统。 handlebars 4.7.7版本之前存在安全漏洞,该漏洞源于在选择某些编译选项来编译来自不受信任的源的模板时,handlebars容易受到远程代码执行(Remote Code Execution, RCE)的攻击。
CVE-2021-23369 MPS-2021-4548
2022-08-08 20:23
handlebars 安全漏洞
原型污染
handlebars是一款语义化的Web模板系统。 handlebars 4.7.7之前版本存在安全漏洞,该漏洞源于当选择某些编译选项来编译来自不可信源的模板时,容易受到原型污染的影响。
CVE-2021-23383 MPS-2021-6180
2022-08-08 20:23
istanbul-reports 存在通过 window.opener 访问使用指向不受信任目标的 Web 链接漏洞
通过 window.opener 访问使用指向不受信任目标的 Web 链接
由于指向 https://istanbul 的链接中没有 rel 属性,因此该软件包的受影响版本容易受到反向 Tabnabbing 的攻击。
MPS-2022-13797
2022-08-08 20:23
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
0 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部