{"id":20564540,"url":"https://github.com/tarantool/graphqlide","last_synced_at":"2026-02-28T20:44:06.685Z","repository":{"id":39744309,"uuid":"256732352","full_name":"tarantool/graphqlide","owner":"tarantool","description":"Tarantool Cartridge WebUI GraphiQL IDE module","archived":false,"fork":false,"pushed_at":"2023-10-06T19:42:15.000Z","size":3572,"stargazers_count":6,"open_issues_count":4,"forks_count":1,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-09-09T21:11:08.346Z","etag":null,"topics":["cartridge","graphql","lua","tarantool","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tarantool.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-04-18T11:07:03.000Z","updated_at":"2022-07-25T20:40:18.000Z","dependencies_parsed_at":"2025-04-14T15:13:12.860Z","dependency_job_id":"546bce6d-327f-4e77-9885-36efd8b5a486","html_url":"https://github.com/tarantool/graphqlide","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/tarantool/graphqlide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fgraphqlide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fgraphqlide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fgraphqlide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fgraphqlide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tarantool","download_url":"https://codeload.github.com/tarantool/graphqlide/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tarantool%2Fgraphqlide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29951659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T18:42:55.706Z","status":"ssl_error","status_checked_at":"2026-02-28T18:42:48.811Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cartridge","graphql","lua","tarantool","typescript"],"created_at":"2024-11-16T04:27:36.478Z","updated_at":"2026-02-28T20:44:06.668Z","avatar_url":"https://github.com/tarantool.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tarantool Cartridge WebUI GraphQL IDE module\n\n- [Tarantool Cartridge WebUI GraphQL IDE module](#tarantool-cartridge-webui-graphql-ide-module)\n  - [Main menu](#main-menu)\n  - [Install pre-built rock](#install-pre-built-rock)\n  - [Lua API](#lua-api)\n    - [Init](#init)\n    - [Stop](#stop)\n    - [Set endpoint](#set-endpoint)\n    - [Get endpoints](#get-endpoints)\n    - [Remove endpoints](#remove-endpoints)\n    - [Front init](#front-init)\n    - [Set default schema](#set-default-schema)\n    - [Add Tarantool Cartridge GraphQL API schema endpoint](#add-tarantool-cartridge-graphql-api-schema-endpoint)\n    - [Remove Tarantool Cartridge GraphQL API schema endpoint](#remove-tarantool-cartridge-graphql-api-schema-endpoint)\n    - [Version](#version)\n  - [Adding GraphQL IDE to your Tarantool Cartridge App](#adding-graphql-ide-to-your-tarantool-cartridge-app)\n  - [Use GraphQL IDE with pure Tarantool (without Tarantool Cartridge)](#use-graphql-ide-with-pure-tarantool-without-tarantool-cartridge)\n  - [Build from sources](#build-from-sources)\n    - [Prerequisites](#prerequisites)\n    - [Clone repo and install nodejs modules](#clone-repo-and-install-nodejs-modules)\n    - [Build rock](#build-rock)\n    - [Install built rock](#install-built-rock)\n  - [Development](#development)\n\nGraphQL IDE module is used to add GraphQL IDE functionality into Tarantool Cartridge WebUI or pure Tarantool (without Tarantool Cartridge). Module it self and Cartridge role are hot-reloadable.\n\nBased on:\n\n- [Tarantool 1.10.x or 2.x.x](https://www.tarantool.io/en/download/)\n- [Tarantool Cartridge 2.7.4+](https://github.com/tarantool/cartridge) (optional, module can work without Tarantool Cartridge)\n- [Tarantool Frontend Core 8+](https://github.com/tarantool/frontend-core)\n- [Tarantool Http 1.1.0+](https://github.com/tarantool/http)\n- [GraphiQL 1.8.10](https://github.com/graphql/graphiql)\n- [GraphiQL Explorer 0.6.3+](https://github.com/OneGraph/graphiql-explorer)\n\nGraphQL IDE interface:\n\n![GraphQL IDE](https://github.com/tarantool/graphqlide/blob/master/resources/GraphQLIDE.png \"GraphQL IDE\")\n\n## Main menu\n\nGraphQL IDE main menu contains the following items:\n\n\n![GraphQL IDE main menu with Copy opened](https://github.com/tarantool/graphqlide/blob/master/resources/main_menu_1.png \"GraphQL IDE menu with Copy item opened\")\n\n![GraphQL IDE main menu with Save opened](https://github.com/tarantool/graphqlide/blob/master/resources/main_menu_2.png \"GraphQL IDE menu with Save item opened\")\n\nItems description:\n\n- `Play` - execute request. Keyboard shortcut: `Ctrl-Enter`;\n- `Explorer` - toggle Explorer window. Keyboard shortcut Windows/Linux: `Alt-Shift-E`, MacOS: `Option-Shift-E`;\n- `History` - toggle History window. Keyboard shortcut Windows/Linux: `Alt-Shift-H`, MacOS: `Option-Shift-H`;\n- `Prettify` - prettify request.  Keyboard shortcut Windows/Linux: `Alt-Shift-P`, MacOS: `Option-Shift-P`;\n- `Merge` - merge request fragments. Keyboard shortcut Windows/Linux: `Alt-Shift-M`, MacOS: `Option-Shift-M`;\n- `Copy` - group of copy to clipboard items:\n  - `Query` - copy query to clipboard. Keyboard shortcut Windows/Linux: `Alt-Shift-C`, MacOS: `Option-Shift-C`;\n  - `Response` - copy response to clipboard. Keyboard shortcut Windows/Linux: `Alt-Shift-X`, MacOS: `Option-Shift-X`;\n- `Save` \n  - `Query` - save query to *.graphql file. Keyboard shortcut Windows/Linux: `Alt-Shift-Q`, MacOS: `Option-Shift-Q`;\n  - `Response` - save response to *.json file. Keyboard shortcut Windows/Linux: `Alt-Shift-R`, MacOS: `Option-Shift-R`;\n- `Doc` - toggle Documentation Explorer. Keyboard shortcut Windows/Linux: `Alt-Shift-D`, MacOS: `Option-Shift-D`.\n\n## Install pre-built rock\n\nSimply run from the root of Tarantool Cartridge App root the following:\n\n```sh\n    cd \u003ctarantool-cartridge-application-dir\u003e\n    tarantoolctl rocks install graphqlide\n```\n\n## Lua API\n\nNote: **This module is still under heavy development. API may be changed in further versions without notice and may be not backward compatible. Use in production environments at your own risk.**\n\n### Init\n\n`init()` - used to initialize graphqlide module for non-Cartridge Tarantool Applications.\n\n### Stop\n\n`stop()` - used to deinitialize graphqlide module for non-Cartridge Tarantool Applications.\n\n### Set endpoint\n\n`set_endpoint(endpoint)` - used to set GraphQL Web UI schema endpoint in runtime.\n\nwhere:\n\n- `endpoint` (`table`) - mandatory, endpoint of GraphQL API description with the following options:\n  - `name` (`string`) - mandatory, schema display name;\n  - `path` (`string`) - mandatory, URI-path to graphql endpoint;\n  - `default` (`boolean`) - optional, flag to indicate that this endpoint is default, false - if not;\n  - `options` (`table`) - optional, set of flags to enable or disable extended graphql schema fields,\n    where:\n    - `descriptions` (`boolean`) - optional, option to request or not for input fields `descriptions`, default is `true`;\n    - `specifiedByUrl` - optional, option to request or not for `specifiedByUrl` field for `Scalars`, default is `true`;\n    - `directiveIsRepeatable` - optional, option to request or not for `directiveIsRepeatable` field of `Directives`, default is `true`;\n    - `schemaDescription` - optional, option to request or not for `schemaDescription` field for `schema`, default is `false`;\n    - `inputValueDeprecation` - optional, option to deprecate or not for deprecated input fields, default is `false`;\n\nExample:\n\n```lua\n    graphqlide.set_endpoint({ name = 'Spaces', path = '/admin/graphql', default = true })\n    graphqlide.set_endpoint({\n        name = 'Admin',\n        path = '/admin/api',\n        options = {\n            specifiedByUrl = false,\n            directiveIsRepeatable = false,\n        }\n    })\n```\n\nNote: **Since Tarantool Cartridge WebUI doesn't support sending notifications to WebUI front after any changes feel free to reload page in browser**\n\n### Get endpoints\n\n`get_endpoints()` - method is used to get schemas endpoints.\n\nMethod returns `endpoints` (`table`) with the following structure:\n\n```lua\n    {\n        [\"\u003cendpoint_name\u003e\"] = { \n            default = true/false,\n            path = \"\u003cendpoint_path\u003e\", \n            options = {\n                descriptions = true/false,\n                specifiedByUrl = true/false,\n                directiveIsRepeatable = true/false,\n                schemaDescription = true/false,\n                inputValueDeprecation = true/false,\n            } \n        },\n        ...\n    }\n```\n\n### Remove endpoints\n\n`remove_endpoint(name)` - method is used to remove schema endpoint,\n\nwhere:\n\n- `name` (`string`) -  mandatory, schema display name.\n\nExample:\n\n```lua\n    graphqlide.set_endpoint({ name = 'Spaces', path = '/admin/graphql', default = true })\n\n    ...\n\n    graphqlide.remove_endpoint('Spaces')\n```\n\n### Front init\n\n`front_init(httpd, opts)` - method to init frontend core. This method must be used only for non-Cartridge Tarantool Applications since Tarantool Cartridge do this job for you under the hood,\n\nwhere:\n\n- `httpd` (`table`) - instance of a Tarantool HTTP server (only 1.x versions is supported).\n- `opts` (`table`) - optional, additional front-end initialization options:\n  - `enforce_root_redirect` (`boolean`) - optional key which controls redirection to frontend core app from '/' path, default true;\n  - `prefix` (`string`) - optional, adds path prefix to frontend core app;\n  - `force_init` (`boolean`) - optional, flag to force frontend module initialization. By default front_init() checks whether frontend core module initialized or not, but if force_init == true front_init() will skip checks and init frontend core module anyways.\n\n### Set default schema\n\n`set_default(name)` - method to set default schema,\n\nwhere:\n\n- `name` (`string`) - mandatory, schema display name to be set as default.\n\n### Add Tarantool Cartridge GraphQL API schema endpoint\n\n`add_cartridge_api_endpoint(name, default)` - method to add Tarantool Cartridge GraphQL API schema endpoint,\n\nwhere:\n\n- `name` (`string`) - mandatory, Tarantool Cartridge GraphQL API schema name to be displayed in UI;\n- `default` (`boolean`) - optional, flag to set this schema to be default in list of GraphQL schemas in UI.\n\nNote: **This method will not be available if executed in non-Cartridge Tarantool Application.**\n\n### Remove Tarantool Cartridge GraphQL API schema endpoint\n\n`remove_cartridge_api_endpoint()` - method to remove Tarantool Cartridge GraphQL API schema endpoint from list of schemas in GraphQL IDE UI.\n\nNote: **This method will not be available if executed in non-Cartridge Tarantool Application.**\n\n### Version\n\n`VERSION` - is a constant to determine which version of GraphQL IDE is installed.\n\nExample:\n\n```lua\n    local graphqlide = require('graphqlide')\n    local log = require('log')\n    log.info('GraphQL IDE version: %s', graphqlide.VERSION)\n```\n\n## Adding GraphQL IDE to your Tarantool Cartridge App\n\nThere are 3 ways to add GraphQL IDE to Tarantool Cartridge application:\n\n1. Add GraphQL IDE initialization code to Tarantool Cartridge application init.lua:\n\n```lua\n    ...\n\n    local ok, err = cartridge.cfg({\n        roles = {\n            ...\n        },\n    })\n\n    assert(ok, tostring(err))\n\n    -- Init GraphQL IDE\n    local endpoint = '/admin/graphql'\n    require('graphqlide').init()\n    graphqlide.set_endpoint({ name = 'Spaces', path = '/admin/graphql', default = true })\n    ...\n```\n\n**Note:** graphqlide.init() must be called after cartridge.cfg()\n\n2. Add GraphQL IDE initialization code into desired Tarantool Cartridge role init() function:\n\n```lua\n    local graphqlide = require('graphqlide')\n    ...\n\n    local function init(opts) -- luacheck: no unused args\n        if opts.is_master then\n            ...\n        end\n        ...\n\n        -- Init GraphQL IDE\n        graphqlide.init()\n        -- Set GraphQL endpoint\n        graphqlide.set_endpoint({ name = 'Spaces', path = '/admin/graphql', default = true })\n        return true\n    end\n\n    local function stop()\n        -- Deinit GraphQL IDE\n        graphqlide.stop()\n        ...\n    end\n\n    ...\n\n    return {\n        role_name = 'app.roles.custom',\n        init = init,\n        stop = stop,\n        dependencies = {\n            'cartridge.roles.graphqlide',\n        }\n    }\n```\n\n3. Add GraphQL IDE Tarantool Cartridge role as dependency of desired Tarantool Cartridge role:\n\n```lua\n    ...\n    local function init(opts) -- luacheck: no unused args\n        if opts.is_master then\n            ...\n        end\n        ...\n\n        -- Init GraphQL IDE\n        graphqlide.init()\n        graphqlide.set_endpoint({ name = 'Spaces', path = '/admin/graphql', default = true })\n        return true\n    end\n\n    local function stop()\n        -- Deinit GraphQL IDE\n        graphqlide.stop()\n        ...\n    end\n    ...\n    return {\n        role_name = 'app.roles.custom',\n        init = init,\n        stop = stop,\n        dependencies = {\n            'cartridge.roles.graphqlide',\n        }\n    }\n```\n\nIn this case may need to set endpoint of GraphQL API. The best way to it simply call `set_endpoint()` method from `init()` of Tarantool Cartridge role:\n\n```lua\n    local graphqlide = require('graphqlide')\n    ...\n    local function init(opts)\n        if opts.is_master then\n        ...\n        end\n        ...\n        graphqlide.set_endpoint('/admin/graphql')\n        ...\n    end\n```\n\n## Use GraphQL IDE with pure Tarantool (without Tarantool Cartridge)\n\nThis module can be used with pure Tarantool (without Tarantool Cartridge).\n\nCaution: GraphQL IDE module is compatible only with 1.x branch of http module [http](https://github.com/tarantool/http)\n\nExample:\n\n```lua\n    local http = require('http.server')\n    local graphqlide = require('graphqlide')\n\n    local HOST = '0.0.0.0'\n    local PORT = 8081\n    local ENDPOINT = '/graphqlide'\n\n    local httpd = http.new(HOST, PORT,{ log_requests = false })\n\n    httpd:start()\n    -- Init frontend-core module if it was not initialized before\n    graphqlide.front_init(httpd)\n\n    -- Init graphqlide module if it was not initialized before\n    graphqlide.init()\n\n    -- set default \"Default\" GraphQL endpoint \n    graphqlide.set_endpoint({ name = 'Default', path = ENDPOINT, default = true })\n\n    box.cfg({work_dir = './tmp'})\n```\n\n## Build from sources\n\n### Prerequisites\n\nTo build rock you will need the following to be installed:\n\n- [nodejs](https://nodejs.org/)\n- [Tarantool 2.x.x](https://www.tarantool.io/en/download/)\n\n### Clone repo and install nodejs modules\n\n```sh\n    git clone git@github.com:tarantool/graphqlide.git graphqlide\n    cd graphqlide\n    npm i\n```\n\n### Build rock\n\n```sh\n    tarantoolctl rocks make\n    tarantoolctl rocks pack graphqlide \u003cdesired_version\u003e\n```\n\nAlso you can use `npm run build-rock` to build the rock.\n\nAfter build completion you will get:\n\n- packed graphqlide rock: `graphqlide/graphqlide-scm-1.all.rock`\n- graphqlide rock installed to: graphqlide/.rocks/tarantool\n\n### Install built rock\n\nSimply run from the root of Tarantool Cartridge App root the following:\n\n```sh\n    cd \u003cTarantool Cartridge application dir\u003e\n    tarantoolctl rocks install \u003cpath_to_rock_file\u003e/graphqlide-scm-1.all.rock\n```\n\n## Development\n\nFor debug \u0026 development purposes VSCode may be used.\nUse F5 to run app or Shift-Crtl-B to run production build task.\n\nUseful commands:\n\n- `npm run build - to build production module`\n- `npm run start - run application without need to integrate it into Tarantool Cartridge App. Useful for development purposes`\n- `npm run build-rock - builds production module and bundles it into the rock`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftarantool%2Fgraphqlide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftarantool%2Fgraphqlide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftarantool%2Fgraphqlide/lists"}