合并GraphQL片段到父查询
项目描述
gql-defrag
你有由大量片段组成的复杂GraphQL查询吗?你想找出谁正在查询所有这些字段吗?那么gql-defrag可以帮到你。它接受你所有查询和片段的文本,并返回一个新的查询,其中内联所有片段并为字段标记其来源。
示例
>>> from gql_defrag import Defragmenter
>>> defrag = Defragmenter(["""
... query SomeQuery {
... field
... name
... ...SomeFragment
... }
...
... fragment SomeFragment on SomeType {
... fragmentField
... field
... }
... """])
>>> print(defrag.defragment("SomeQuery"))
query SomeQuery {
field @gql_defrag_source(name: "SomeQuery") @gql_defrag_source(name: "SomeQuery -> SomeFragment")
fragmentField @gql_defrag_source(name: "SomeQuery -> SomeFragment")
name @gql_defrag_source(name: "SomeQuery")
}
程序性使用
gql_defrag.Defragmenter(documents: Sequence[str])
实例化一个Defragmenter
以开始拆分查询。传递一系列GraphQL文档。每个文档可能包含一个或多个查询、片段或两者。
Defragmenter.add_document(document: str) -> None
向Defragmenter
添加文档。文档可以包含任意数量的查询或片段。
Defragmenter.defragment(query_name: str, *, add_source: bool = True) -> str
返回名为query_name
的操作(查询、变更或订阅)的拆分版本。如果add_source
为True,则添加@gql_defrag_source
指令,解释触发每个字段的片段序列。
Defragmenter.defragment_all(*, add_source: bool = True) -> Iterable[tuple[str, str]]
为Defragmenter
知道的全部操作生成(查询名称,拆分查询)对的迭代器。
命令行使用
$ python -m gql_defrag --help
usage: __main__.py [-h] [--js-dir JS_DIR] [--graphql-dir GRAPHQL_DIR] [--relay-dir RELAY_DIR] [--output-dir OUTPUT_DIR] [--include-source]
Defrag GraphQL queries
options:
-h, --help show this help message and exit
--js-dir JS_DIR Directory with JavaScript files containing GraphQL fragments and queries
--graphql-dir GRAPHQL_DIR
Directory with GraphQL files with .graphql extensions
--relay-dir RELAY_DIR
Directory with Relay files with .graphql.ts extensions
--output-dir OUTPUT_DIR
Directory to write defragmented queries to
--include-source Include verbose source information
命令行界面从一个或多个目录中收集GraphQL查询,并将拆分后的查询输出到输出目录。
有三种方法来查找GraphQL查询
--graphql-dir
查看包含包含GraphQL查询的.graphql
文件的目录--js-dir
用于检查包含以graphql
或gql
前缀的模板字符串中 GraphQL 片段的 JavaScript 或 TypeScript 文件所在的目录。代码会检查扩展名为.js
、.jsx
、.ts
和.tsx
的文件。--relay-dir
用于检查包含扩展名为.graphql.ts
的 Relay 生成的文件的目录。
已碎片化的文件放置在由 --output-dir
指定的目录中。如果目录不存在,则创建。文件名形式为 <查询名称>.graphql
。
如果提供了 --include-source
,将为每个字段添加精确源信息的 @gql_defrag_source
。
变更日志
版本 0.1.1 (2023年7月25日)
- 修复了处理名称中包含 "null" 的字段的问题
版本 0.1.0 (2023年5月3日)
首次公开发布。
关闭
gql_defrag-0.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 09e3f739fef01909ade7bb111f76990c8709b427f0e043833b44ed3b0400016c |
|
MD5 | ac092758c48ee89bee24ea3842e70a79 |
|
BLAKE2b-256 | d97425abcf983d6303f83d544d9c5dd6c06856d46b2ede1e8d96ca302ad2ef00 |
关闭
gql_defrag-0.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a575bc64a19d6ee9860ccb7ecc661e7e15a5c22eb1a39990882f3e5eed8ba6fd |
|
MD5 | 78a41942102220e5cd5ca5fe7d6ec53d |
|
BLAKE2b-256 | a54dc5b6d4663d48097945793b5fc2b86b894a3ad43dd88d51c61b1d6a26b55e |