{"id":15882663,"url":"https://github.com/mistweaverco/kulala-ls","last_synced_at":"2025-04-05T20:06:53.701Z","repository":{"id":257807168,"uuid":"866204490","full_name":"mistweaverco/kulala-ls","owner":"mistweaverco","description":"A minimal 🤏 language 🔊 server 📡 for HTTP 🐼 syntax 🌈.","archived":false,"fork":false,"pushed_at":"2025-03-23T21:12:04.000Z","size":380,"stargazers_count":67,"open_issues_count":2,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T16:03:13.265Z","etag":null,"topics":["graphql","http","http-client","kulala","language-server-protocol","lsp-server","neovim"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mistweaverco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-01T20:33:27.000Z","updated_at":"2025-03-23T12:41:40.000Z","dependencies_parsed_at":"2024-10-02T12:45:45.915Z","dependency_job_id":"c96c5f20-29b5-42d0-8299-798bca8c3359","html_url":"https://github.com/mistweaverco/kulala-ls","commit_stats":{"total_commits":22,"total_committers":2,"mean_commits":11.0,"dds":0.2727272727272727,"last_synced_commit":"c94cdc29a1f1fd9ea3f4c190bd197ecb72d05190"},"previous_names":["mistweaverco/kulala-ls"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mistweaverco%2Fkulala-ls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mistweaverco%2Fkulala-ls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mistweaverco%2Fkulala-ls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mistweaverco%2Fkulala-ls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mistweaverco","download_url":"https://codeload.github.com/mistweaverco/kulala-ls/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247393569,"owners_count":20931812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["graphql","http","http-client","kulala","language-server-protocol","lsp-server","neovim"],"created_at":"2024-10-06T04:06:12.866Z","updated_at":"2025-04-05T20:06:53.680Z","avatar_url":"https://github.com/mistweaverco.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![Kulala Logo](logo.svg)\n\n# kulala-ls\n\n[![NPM](https://img.shields.io/npm/v/@mistweaverco/kulala-ls?style=for-the-badge)](https://www.npmjs.com/package/@mistweaverco/kulala-ls)\n[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=FFF)](https://www.typescriptlang.org/)\n[![Rollup](https://img.shields.io/badge/Rollup-bd0f0f.svg?style=for-the-badge\u0026logo=rollup.js\u0026logoColor=FFF)](https://rollupjs.org/)\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/mistweaverco/kulala-ls?style=for-the-badge)](https://github.com/mistweaverco/kulala-ls/releases/latest)\n[![Discord](https://img.shields.io/badge/discord-join-7289da?style=for-the-badge\u0026logo=discord)](https://discord.gg/QyVQmfY4Rt)\n\n[Install](#install) •[Supports](#supports) • [Usage](https://kulala.mwco.app/docs/usage/) • [HTTP File Spec](https://kulala.mwco.app/docs/usage/http-file-spec)\n\n\u003cp\u003e\u003c/p\u003e\n\nA minimal 🤏 language 🔊 server 📡 for HTTP 🐼 syntax 🌈.\n\nKulala is swahili for \"rest\" or \"relax\".\n\n\u003cp\u003e\u003c/p\u003e\n\n\u003c/div\u003e\n\n## Install\n\n### Neovim\n\n\u003e [!WARNING]\n\u003e Requires Neovim 0.10.0+.\n\nInstall language server:\n\n```sh\nnpm install -g @mistweaverco/kulala-ls\n```\n\nRecommended plugins:\n\n- [lazy.nvim](https://github.com/folke/lazy.nvim)\n- [lsp-config](https://github.com/neovim/nvim-lspconfig)\n- [blink.cmp](https://github.com/saghen/blink.cmp)\n\n### Configuration\n\nVia Lazy:\n\n```lua\n{\n  \"neovim/nvim-lspconfig\",\n  config = function()\n    local nvim_lsp = require(\"lspconfig\")\n    local capabilities = vim.lsp.protocol.make_client_capabilities()\n    local servers = {\n      \"kulala_ls\",\n    }\n    for _, lsp in ipairs(servers) do\n      if nvim_lsp[lsp] ~= nil then\n        if nvim_lsp[lsp].setup ~= nil then\n          nvim_lsp[lsp].setup({\n            capabilities = capabilities,\n          })\n        else\n          vim.notify(\"LSP server \" .. lsp .. \" does not have a setup function\", vim.log.levels.ERROR)\n        end\n      end\n    end\n  end,\n},\n{\n  \"saghen/blink.cmp\",\n\n  build = \"cargo build --release\",\n  version = \"*\",\n\n  ---@module 'blink.cmp'\n  ---@type blink.cmp.Config\n  opts = {\n    -- 'default' for mappings similar to built-in completion\n    -- 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate)\n    -- 'enter' for mappings similar to 'super-tab' but with 'enter' to accept\n    -- See the full \"keymap\" documentation for information on defining your own keymap.\n    keymap = {\n      preset = \"default\",\n      [\"\u003cCR\u003e\"] = { \"select_and_accept\", \"fallback\" },\n      cmdline = {\n        preset = \"default\",\n      },\n    },\n    completion = {\n      -- Show documentation when selecting a completion item\n      documentation = { auto_show = true, auto_show_delay_ms = 500 },\n    },\n\n    appearance = {\n      -- Set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font'\n      -- Adjusts spacing to ensure icons are aligned\n      nerd_font_variant = \"mono\",\n    },\n\n    -- Default list of enabled providers defined so that you can extend it\n    -- elsewhere in your config, without redefining it, due to `opts_extend`\n    sources = {\n      default = {\n        \"lsp\",\n        \"path\",\n        \"buffer\",\n      },\n    },\n  },\n}\n```\n\n## Supports\n\n- Variable completion *(with support for multiple sources)*\n  - [x] `OS environment` (Kulala)\n  - [x] `http-client.env.json` (Kulala and Intellij)\n  - [x] `http-client.private.env.json` (Kulala and Intellij)\n  - [x] `.env` (Kulala and rest-nvim)\n  - [x] `.vscode/settings.json` *`rest-client.environmentVariables`* (Kulala and VSCode rest-client)\n  - [x] `*.code-workspace` *`rest-client.environmentVariables`* (Kulala and VSCode rest-client)\n- [x] Header name completion\n- [x] Header value completion\n- [x] Method completion\n- [x] Scheme completion\n- [x] HTTP Version completion\n- [x] GraphQL completion via GraphQL schema introspection\n\n### GraphQL\n\nYou need to have a GraphQL schema file somewhere in your project.\n\nThe language server will look for it in the following order:\n\n1. `[filename].graphql-schema.json`\n2. `graphql-schema.json` (Keeps looking up the directory tree until it finds a schema file)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmistweaverco%2Fkulala-ls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmistweaverco%2Fkulala-ls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmistweaverco%2Fkulala-ls/lists"}