Skip to content

Commit a0b49b2

Browse files
committed
JS: Add UseServer and UseClient directives
1 parent 1d22e65 commit a0b49b2

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

javascript/ql/lib/semmle/javascript/Stmt.qll

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,32 @@ module Directive {
406406
class BundleDirective extends KnownDirective {
407407
BundleDirective() { this.getDirectiveText() = "bundle" }
408408
}
409+
410+
/**
411+
* A `use server` directive.
412+
*
413+
* Example:
414+
*
415+
* ```
416+
* "use server";
417+
* ```
418+
*/
419+
class UseServerDirective extends KnownDirective {
420+
UseServerDirective() { this.getDirectiveText() = "use server" }
421+
}
422+
423+
/**
424+
* A `use client` directive.
425+
*
426+
* Example:
427+
*
428+
* ```
429+
* "use client";
430+
* ```
431+
*/
432+
class UseClientDirective extends KnownDirective {
433+
UseClientDirective() { this.getDirectiveText() = "use client" }
434+
}
409435
}
410436

411437
/** DEPRECATED. Use `Directive::KnownDirective` instead. */

javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
| UnknownDirective.js:12:5:12:17 | "use struct;" | Unknown directive: 'use struct;'. |
1212
| UnknownDirective.js:13:5:13:17 | "Use Strict"; | Unknown directive: 'Use Strict'. |
1313
| UnknownDirective.js:14:5:14:14 | "use bar"; | Unknown directive: 'use bar'. |
14-
| UnknownDirective.js:38:5:38:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. |
15-
| UnknownDirective.js:39:5:39:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. |
16-
| UnknownDirective.js:45:5:45:15 | ":nomunge"; | Unknown directive: ':nomunge'. |
17-
| UnknownDirective.js:46:5:46:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. |
14+
| UnknownDirective.js:40:5:40:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. |
15+
| UnknownDirective.js:41:5:41:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. |
16+
| UnknownDirective.js:47:5:47:15 | ":nomunge"; | Unknown directive: ':nomunge'. |
17+
| UnknownDirective.js:48:5:48:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. |

javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ function good() {
3232
"ngNoInject"; // OK
3333
"deps foo"; // OK
3434
"deps bar"; // OK
35+
"use server"; // OK
36+
"use client"; // OK
3537
}
3638

3739
function data() {
@@ -46,6 +48,6 @@ function yui() {
4648
"foo(), bar, baz:nomunge"; // NOT OK
4749
}
4850

49-
function babel_typeof(obj) {
51+
function babel_typeof(obj) {
5052
"@babel/helpers - typeof"
51-
}
53+
}

0 commit comments

Comments
 (0)