diff --git a/CHANGES.md b/CHANGES.md
index 02d9f8824e..dad7859e26 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,21 +1,21 @@
-## Version 11.9.0
+## Version 11.8.0
New Grammars:
- added 3rd party Lang grammar to SUPPORTED_LANGUAGES [AdamRaichu][]
-[AdamRaichu]: https://github.com/AdamRaichu
-
-## Version 11.8.0
-
Grammars:
+- enh(js/ts) Added support for GraphQL tagged template strings [Ali Ukani][]
- enh(javascript) add sessionStorage to list of built-in variables [Jeroen van Vianen][]
- enh(http) Add support for HTTP/3 [Rijenkii][]
+[AdamRaichu]: https://github.com/AdamRaichu
+[Ali Ukani]: https://github.com/ali
[Jeroen van Vianen]: https://github.com/morinel
[Rijenkii]: https://github.com/rijenkii
+
## Version 11.7.0
New Grammars:
diff --git a/src/languages/javascript.js b/src/languages/javascript.js
index e999cc66fe..12d96612fb 100644
--- a/src/languages/javascript.js
+++ b/src/languages/javascript.js
@@ -158,6 +158,19 @@ export default function(hljs) {
subLanguage: 'css'
}
};
+ const GRAPHQL_TEMPLATE = {
+ begin: 'gql`',
+ end: '',
+ starts: {
+ end: '`',
+ returnEnd: false,
+ contains: [
+ hljs.BACKSLASH_ESCAPE,
+ SUBST
+ ],
+ subLanguage: 'graphql'
+ }
+ };
const TEMPLATE_STRING = {
className: 'string',
begin: '`',
@@ -219,6 +232,7 @@ export default function(hljs) {
hljs.QUOTE_STRING_MODE,
HTML_TEMPLATE,
CSS_TEMPLATE,
+ GRAPHQL_TEMPLATE,
TEMPLATE_STRING,
// Skip numbers when they are part of a variable name
{ match: /\$\d+/ },
@@ -453,6 +467,7 @@ export default function(hljs) {
hljs.QUOTE_STRING_MODE,
HTML_TEMPLATE,
CSS_TEMPLATE,
+ GRAPHQL_TEMPLATE,
TEMPLATE_STRING,
COMMENT,
// Skip numbers when they are part of a variable name
diff --git a/test/markup/javascript/inline-languages.expect.txt b/test/markup/javascript/inline-languages.expect.txt
index 0083820627..61b1dd0297 100644
--- a/test/markup/javascript/inline-languages.expect.txt
+++ b/test/markup/javascript/inline-languages.expect.txt
@@ -20,5 +20,15 @@ css`
}
`;
+gql`query { viewer { id } }`;
+
+gql`
+ type Project {
+ name: String
+ tagline: String
+ contributors: [User]
+ }
+`;
+
var foo = 10;
diff --git a/test/markup/javascript/inline-languages.txt b/test/markup/javascript/inline-languages.txt
index 0b9989ad5e..8f85860fa2 100644
--- a/test/markup/javascript/inline-languages.txt
+++ b/test/markup/javascript/inline-languages.txt
@@ -20,5 +20,15 @@ css`
}
`;
+gql`query { viewer { id } }`;
+
+gql`
+ type Project {
+ name: String
+ tagline: String
+ contributors: [User]
+ }
+`;
+
// Ensure that we're back in JavaScript mode.
var foo = 10;
diff --git a/test/markup/typescript/inline-languages.expect.txt b/test/markup/typescript/inline-languages.expect.txt
index 38d86a73ed..20fd337ebe 100644
--- a/test/markup/typescript/inline-languages.expect.txt
+++ b/test/markup/typescript/inline-languages.expect.txt
@@ -20,5 +20,15 @@ css`
}
`;
+gql`query { viewer { id } }`;
+
+gql`
+ type Project {
+ name: String
+ tagline: String
+ contributors: [User]
+ }
+`;
+
var foo = 10;
diff --git a/test/markup/typescript/inline-languages.txt b/test/markup/typescript/inline-languages.txt
index 1cbead6d79..5901c744fc 100644
--- a/test/markup/typescript/inline-languages.txt
+++ b/test/markup/typescript/inline-languages.txt
@@ -20,5 +20,15 @@ css`
}
`;
+gql`query { viewer { id } }`;
+
+gql`
+ type Project {
+ name: String
+ tagline: String
+ contributors: [User]
+ }
+`;
+
// Ensure that we're back in TypeScript mode.
var foo = 10;