import shellscript from './shellscript.mjs'
import json from './json.mjs'
import xml from './xml.mjs'
import graphql from './graphql.mjs'

const lang = Object.freeze(JSON.parse("{\"displayName\":\"HTTP\",\"fileTypes\":[\"http\",\"rest\"],\"name\":\"http\",\"patterns\":[{\"begin\":\"^\\\\s*(?=curl)\",\"end\":\"^\\\\s*(#{3,}.*?)?\\\\s*$\",\"endCaptures\":{\"0\":{\"name\":\"comment.line.sharp.http\"}},\"name\":\"http.request.curl\",\"patterns\":[{\"include\":\"source.shell\"}]},{\"begin\":\"\\\\s*(?=(\\\\[|\\\\{[^{]))\",\"end\":\"^\\\\s*(#{3,}.*?)?\\\\s*$\",\"endCaptures\":{\"0\":{\"name\":\"comment.line.sharp.http\"}},\"name\":\"http.request.body.json\",\"patterns\":[{\"include\":\"source.json\"}]},{\"begin\":\"^\\\\s*(?=<\\\\S)\",\"end\":\"^\\\\s*(#{3,}.*?)?\\\\s*$\",\"endCaptures\":{\"0\":{\"name\":\"comment.line.sharp.http\"}},\"name\":\"http.request.body.xml\",\"patterns\":[{\"include\":\"text.xml\"}]},{\"begin\":\"\\\\s*(?=(query|mutation))\",\"end\":\"^\\\\s*(#{3,}.*?)?\\\\s*$\",\"endCaptures\":{\"0\":{\"name\":\"comment.line.sharp.http\"}},\"name\":\"http.request.body.graphql\",\"patterns\":[{\"include\":\"source.graphql\"}]},{\"begin\":\"\\\\s*(?=(query|mutation))\",\"end\":\"^\\\\{\\\\s*$\",\"name\":\"http.request.body.graphql\",\"patterns\":[{\"include\":\"source.graphql\"}]},{\"include\":\"#metadata\"},{\"include\":\"#comments\"},{\"captures\":{\"1\":{\"name\":\"keyword.other.http\"},\"2\":{\"name\":\"variable.other.http\"},\"3\":{\"name\":\"string.other.http\"}},\"match\":\"^\\\\s*(@)([^=\\\\s]+)\\\\s*=\\\\s*(.*?)\\\\s*$\",\"name\":\"http.filevariable\"},{\"captures\":{\"1\":{\"name\":\"keyword.operator.http\"},\"2\":{\"name\":\"variable.other.http\"},\"3\":{\"name\":\"string.other.http\"}},\"match\":\"^\\\\s*([\\\\&?])([^=\\\\s]+)=(.*)$\",\"name\":\"http.query\"},{\"captures\":{\"1\":{\"name\":\"entity.name.tag.http\"},\"2\":{\"name\":\"keyword.other.http\"},\"3\":{\"name\":\"string.other.http\"}},\"match\":\"^([-\\\\w]+)\\\\s*(:)\\\\s*([^/].*?)\\\\s*$\",\"name\":\"http.headers\"},{\"include\":\"#request-line\"},{\"include\":\"#response-line\"}],\"repository\":{\"comments\":{\"patterns\":[{\"match\":\"^\\\\s*#+.*$\",\"name\":\"comment.line.sharp.http\"},{\"match\":\"^\\\\s*/{2,}.*$\",\"name\":\"comment.line.double-slash.http\"}]},\"metadata\":{\"patterns\":[{\"captures\":{\"1\":{\"name\":\"entity.other.attribute-name\"},\"2\":{\"name\":\"punctuation.definition.block.tag.metadata\"},\"3\":{\"name\":\"entity.name.type.http\"}},\"match\":\"^\\\\s*#+\\\\s+((@)name)\\\\s+([^.\\\\s]+)$\",\"name\":\"comment.line.sharp.http\"},{\"captures\":{\"1\":{\"name\":\"entity.other.attribute-name\"},\"2\":{\"name\":\"punctuation.definition.block.tag.metadata\"},\"3\":{\"name\":\"entity.name.type.http\"}},\"match\":\"^\\\\s*/{2,}\\\\s+((@)name)\\\\s+([^.\\\\s]+)$\",\"name\":\"comment.line.double-slash.http\"},{\"captures\":{\"1\":{\"name\":\"entity.other.attribute-name\"},\"2\":{\"name\":\"punctuation.definition.block.tag.metadata\"}},\"match\":\"^\\\\s*#+\\\\s+((@)note)\\\\s*$\",\"name\":\"comment.line.sharp.http\"},{\"captures\":{\"1\":{\"name\":\"entity.other.attribute-name\"},\"2\":{\"name\":\"punctuation.definition.block.tag.metadata\"}},\"match\":\"^\\\\s*/{2,}\\\\s+((@)note)\\\\s*$\",\"name\":\"comment.line.double-slash.http\"},{\"captures\":{\"1\":{\"name\":\"entity.other.attribute-name\"},\"2\":{\"name\":\"punctuation.definition.block.tag.metadata\"},\"3\":{\"name\":\"variable.other.http\"},\"4\":{\"name\":\"string.other.http\"}},\"match\":\"^\\\\s*#+\\\\s+((@)prompt)\\\\s+(\\\\S+)(?:\\\\s+(.*))?\\\\s*$\",\"name\":\"comment.line.sharp.http\"},{\"captures\":{\"1\":{\"name\":\"entity.other.attribute-name\"},\"2\":{\"name\":\"punctuation.definition.block.tag.metadata\"},\"3\":{\"name\":\"variable.other.http\"},\"4\":{\"name\":\"string.other.http\"}},\"match\":\"^\\\\s*/{2,}\\\\s+((@)prompt)\\\\s+(\\\\S+)(?:\\\\s+(.*))?\\\\s*$\",\"name\":\"comment.line.double-slash.http\"}]},\"protocol\":{\"patterns\":[{\"captures\":{\"1\":{\"name\":\"keyword.other.http\"},\"2\":{\"name\":\"constant.numeric.http\"}},\"match\":\"(HTTP)/(\\\\d+.\\\\d+)\",\"name\":\"http.version\"}]},\"request-line\":{\"captures\":{\"1\":{\"name\":\"keyword.control.http\"},\"2\":{\"name\":\"const.language.http\"},\"3\":{\"patterns\":[{\"include\":\"#protocol\"}]}},\"match\":\"(?i)^(get|post|put|delete|patch|head|options|connect|trace|lock|unlock|propfind|proppatch|copy|move|mkcol|mkcalendar|acl|search)\\\\s+\\\\s*(.+?)(?:\\\\s+(HTTP/\\\\S+))?$\",\"name\":\"http.requestline\"},\"response-line\":{\"captures\":{\"1\":{\"patterns\":[{\"include\":\"#protocol\"}]},\"2\":{\"name\":\"constant.numeric.http\"},\"3\":{\"name\":\"string.other.http\"}},\"match\":\"(?i)^\\\\s*(HTTP/\\\\S+)\\\\s([1-5][0-9][0-9])\\\\s(.*)$\",\"name\":\"http.responseLine\"}},\"scopeName\":\"source.http\",\"embeddedLangs\":[\"shellscript\",\"json\",\"xml\",\"graphql\"]}"))

export default [
...shellscript,
...json,
...xml,
...graphql,
lang
]
