PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.3.1
Defender Security – Malware Scanner, Login Security & Firewall v5.3.1
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / assets / js / vendor / codemirror / javascript / test.js

test.js in Defender Security – Malware Scanner, Login Security & Firewall 5.3.1, at assets/js/vendor/codemirror/javascript/test.js

514 lines 19.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 // Distributed under an MIT license: https://codemirror.net/LICENSE
3
4 (function() {
5 var mode = CodeMirror.getMode({indentUnit: 2}, "javascript");
6 function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
7
8 MT("locals",
9 "[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }");
10
11 MT("comma-and-binop",
12 "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }");
13
14 MT("destructuring",
15 "([keyword function]([def a], [[[def b], [def c] ]]) {",
16 " [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);",
17 " [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];",
18 "})();");
19
20 MT("destructure_trailing_comma",
21 "[keyword let] {[def a], [def b],} [operator =] [variable foo];",
22 "[keyword let] [def c];"); // Parser still in good state?
23
24 MT("class_body",
25 "[keyword class] [def Foo] {",
26 " [property constructor]() {}",
27 " [property sayName]() {",
28 " [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];",
29 " }",
30 "}");
31
32 MT("class",
33 "[keyword class] [def Point] [keyword extends] [variable SuperThing] {",
34 " [keyword get] [property prop]() { [keyword return] [number 24]; }",
35 " [property constructor]([def x], [def y]) {",
36 " [keyword super]([string 'something']);",
37 " [keyword this].[property x] [operator =] [variable-2 x];",
38 " }",
39 "}");
40
41 MT("anonymous_class_expression",
42 "[keyword const] [def Adder] [operator =] [keyword class] [keyword extends] [variable Arithmetic] {",
43 " [property add]([def a], [def b]) {}",
44 "};");
45
46 MT("named_class_expression",
47 "[keyword const] [def Subber] [operator =] [keyword class] [def Subtract] {",
48 " [property sub]([def a], [def b]) {}",
49 "};");
50
51 MT("class_async_method",
52 "[keyword class] [def Foo] {",
53 " [property sayName1]() {}",
54 " [keyword async] [property sayName2]() {}",
55 "}");
56
57 MT("import",
58 "[keyword function] [def foo]() {",
59 " [keyword import] [def $] [keyword from] [string 'jquery'];",
60 " [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];",
61 "}");
62
63 MT("import_trailing_comma",
64 "[keyword import] {[def foo], [def bar],} [keyword from] [string 'baz']")
65
66 MT("import_dynamic",
67 "[keyword import]([string 'baz']).[property then]")
68
69 MT("import_dynamic",
70 "[keyword const] [def t] [operator =] [keyword import]([string 'baz']).[property then]")
71
72 MT("const",
73 "[keyword function] [def f]() {",
74 " [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];",
75 "}");
76
77 MT("for/of",
78 "[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}");
79
80 MT("for await",
81 "[keyword for] [keyword await]([keyword let] [def of] [keyword of] [variable something]) {}");
82
83 MT("generator",
84 "[keyword function*] [def repeat]([def n]) {",
85 " [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])",
86 " [keyword yield] [variable-2 i];",
87 "}");
88
89 MT("let_scoping",
90 "[keyword function] [def scoped]([def n]) {",
91 " { [keyword var] [def i]; } [variable-2 i];",
92 " { [keyword let] [def j]; [variable-2 j]; } [variable j];",
93 " [keyword if] ([atom true]) { [keyword const] [def k]; [variable-2 k]; } [variable k];",
94 "}");
95
96 MT("switch_scoping",
97 "[keyword switch] ([variable x]) {",
98 " [keyword default]:",
99 " [keyword let] [def j];",
100 " [keyword return] [variable-2 j]",
101 "}",
102 "[variable j];")
103
104 MT("leaving_scope",
105 "[keyword function] [def a]() {",
106 " {",
107 " [keyword const] [def x] [operator =] [number 1]",
108 " [keyword if] ([atom true]) {",
109 " [keyword let] [def y] [operator =] [number 2]",
110 " [keyword var] [def z] [operator =] [number 3]",
111 " [variable console].[property log]([variable-2 x], [variable-2 y], [variable-2 z])",
112 " }",
113 " [variable console].[property log]([variable-2 x], [variable y], [variable-2 z])",
114 " }",
115 " [variable console].[property log]([variable x], [variable y], [variable-2 z])",
116 "}")
117
118 MT("quotedStringAddition",
119 "[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];");
120
121 MT("quotedFatArrow",
122 "[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];");
123
124 MT("fatArrow",
125 "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);",
126 "[variable a];", // No longer in scope
127 "[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];",
128 "[variable c];");
129
130 MT("fatArrow_stringDefault",
131 "([def a], [def b] [operator =] [string 'x\\'y']) [operator =>] [variable-2 a] [operator +] [variable-2 b]")
132
133 MT("spread",
134 "[keyword function] [def f]([def a], [meta ...][def b]) {",
135 " [variable something]([variable-2 a], [meta ...][variable-2 b]);",
136 "}");
137
138 MT("quasi",
139 "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
140
141 MT("quasi_no_function",
142 "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
143
144 MT("indent_statement",
145 "[keyword var] [def x] [operator =] [number 10]",
146 "[variable x] [operator +=] [variable y] [operator +]",
147 " [atom Infinity]",
148 "[keyword debugger];");
149
150 MT("indent_if",
151 "[keyword if] ([number 1])",
152 " [keyword break];",
153 "[keyword else] [keyword if] ([number 2])",
154 " [keyword continue];",
155 "[keyword else]",
156 " [number 10];",
157 "[keyword if] ([number 1]) {",
158 " [keyword break];",
159 "} [keyword else] [keyword if] ([number 2]) {",
160 " [keyword continue];",
161 "} [keyword else] {",
162 " [number 10];",
163 "}");
164
165 MT("indent_for",
166 "[keyword for] ([keyword var] [def i] [operator =] [number 0];",
167 " [variable i] [operator <] [number 100];",
168 " [variable i][operator ++])",
169 " [variable doSomething]([variable i]);",
170 "[keyword debugger];");
171
172 MT("indent_c_style",
173 "[keyword function] [def foo]()",
174 "{",
175 " [keyword debugger];",
176 "}");
177
178 MT("indent_else",
179 "[keyword for] (;;)",
180 " [keyword if] ([variable foo])",
181 " [keyword if] ([variable bar])",
182 " [number 1];",
183 " [keyword else]",
184 " [number 2];",
185 " [keyword else]",
186 " [number 3];");
187
188 MT("indent_funarg",
189 "[variable foo]([number 10000],",
190 " [keyword function]([def a]) {",
191 " [keyword debugger];",
192 "};");
193
194 MT("indent_below_if",
195 "[keyword for] (;;)",
196 " [keyword if] ([variable foo])",
197 " [number 1];",
198 "[number 2];");
199
200 MT("indent_semicolonless_if",
201 "[keyword function] [def foo]() {",
202 " [keyword if] ([variable x])",
203 " [variable foo]()",
204 "}")
205
206 MT("indent_semicolonless_if_with_statement",
207 "[keyword function] [def foo]() {",
208 " [keyword if] ([variable x])",
209 " [variable foo]()",
210 " [variable bar]()",
211 "}")
212
213 MT("multilinestring",
214 "[keyword var] [def x] [operator =] [string 'foo\\]",
215 "[string bar'];");
216
217 MT("scary_regexp",
218 "[string-2 /foo[[/]]bar/];");
219
220 MT("indent_strange_array",
221 "[keyword var] [def x] [operator =] [[",
222 " [number 1],,",
223 " [number 2],",
224 "]];",
225 "[number 10];");
226
227 MT("param_default",
228 "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {",
229 " [keyword return] [variable-2 x];",
230 "}");
231
232 MT(
233 "param_destructuring",
234 "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {",
235 " [keyword return] [variable-2 x];",
236 "}");
237
238 MT("new_target",
239 "[keyword function] [def F]([def target]) {",
240 " [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {",
241 " [keyword return] [keyword new]",
242 " .[keyword target];",
243 " }",
244 "}");
245
246 MT("async",
247 "[keyword async] [keyword function] [def foo]([def args]) { [keyword return] [atom true]; }");
248
249 MT("async_assignment",
250 "[keyword const] [def foo] [operator =] [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; };");
251
252 MT("async_object",
253 "[keyword let] [def obj] [operator =] { [property async]: [atom false] };");
254
255 // async be highlighet as keyword and foo as def, but it requires potentially expensive look-ahead. See #4173
256 MT("async_object_function",
257 "[keyword let] [def obj] [operator =] { [property async] [property foo]([def args]) { [keyword return] [atom true]; } };");
258
259 MT("async_object_properties",
260 "[keyword let] [def obj] [operator =] {",
261 " [property prop1]: [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; },",
262 " [property prop2]: [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; },",
263 " [property prop3]: [keyword async] [keyword function] [def prop3]([def args]) { [keyword return] [atom true]; },",
264 "};");
265
266 MT("async_arrow",
267 "[keyword const] [def foo] [operator =] [keyword async] ([def args]) [operator =>] { [keyword return] [atom true]; };");
268
269 MT("async_jquery",
270 "[variable $].[property ajax]({",
271 " [property url]: [variable url],",
272 " [property async]: [atom true],",
273 " [property method]: [string 'GET']",
274 "});");
275
276 MT("async_variable",
277 "[keyword const] [def async] [operator =] {[property a]: [number 1]};",
278 "[keyword const] [def foo] [operator =] [string-2 `bar ${][variable async].[property a][string-2 }`];")
279
280 MT("bigint", "[number 1n] [operator +] [number 0x1afn] [operator +] [number 0o064n] [operator +] [number 0b100n];")
281
282 MT("async_comment",
283 "[keyword async] [comment /**/] [keyword function] [def foo]([def args]) { [keyword return] [atom true]; }");
284
285 MT("indent_switch",
286 "[keyword switch] ([variable x]) {",
287 " [keyword default]:",
288 " [keyword return] [number 2]",
289 "}")
290
291 MT("regexp_corner_case",
292 "[operator +]{} [operator /] [atom undefined];",
293 "[[[meta ...][string-2 /\\//] ]];",
294 "[keyword void] [string-2 /\\//];",
295 "[keyword do] [string-2 /\\//]; [keyword while] ([number 0]);",
296 "[keyword if] ([number 0]) {} [keyword else] [string-2 /\\//];",
297 "[string-2 `${][variable async][operator ++][string-2 }//`];",
298 "[string-2 `${]{} [operator /] [string-2 /\\//}`];")
299
300 MT("return_eol",
301 "[keyword return]",
302 "{} [string-2 /5/]")
303
304 MT("numeric separator",
305 "[number 123_456];",
306 "[number 0xdead_c0de];",
307 "[number 0o123_456];",
308 "[number 0b1101_1101];",
309 "[number .123_456e0_1];",
310 "[number 1E+123_456];",
311 "[number 12_34_56n];")
312
313 MT("underscore property",
314 "[variable something].[property _property];",
315 "[variable something].[property _123];",
316 "[variable something].[property _for];",
317 "[variable _for];",
318 "[variable _123];")
319
320 var ts_mode = CodeMirror.getMode({indentUnit: 2}, "application/typescript")
321 function TS(name) {
322 test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1))
323 }
324
325 TS("typescript_extend_type",
326 "[keyword class] [def Foo] [keyword extends] [type Some][operator <][type Type][operator >] {}")
327
328 TS("typescript_arrow_type",
329 "[keyword let] [def x]: ([variable arg]: [type Type]) [operator =>] [type ReturnType]")
330
331 TS("typescript_class",
332 "[keyword class] [def Foo] {",
333 " [keyword public] [keyword static] [property main]() {}",
334 " [keyword private] [property _foo]: [type string];",
335 "}")
336
337 TS("typescript_literal_types",
338 "[keyword import] [keyword *] [keyword as] [def Sequelize] [keyword from] [string 'sequelize'];",
339 "[keyword interface] [def MyAttributes] {",
340 " [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];",
341 " [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];",
342 "}",
343 "[keyword interface] [def MyInstance] [keyword extends] [type Sequelize].[type Instance] [operator <] [type MyAttributes] [operator >] {",
344 " [property rawAttributes]: [type MyAttributes];",
345 " [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];",
346 " [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];",
347 "}")
348
349 TS("typescript_extend_operators",
350 "[keyword export] [keyword interface] [def UserModel] [keyword extends]",
351 " [type Sequelize].[type Model] [operator <] [type UserInstance], [type UserAttributes] [operator >] {",
352 " [property findById]: (",
353 " [variable userId]: [type number]",
354 " ) [operator =>] [type Promise] [operator <] [type Array] [operator <] { [property id], [property name] } [operator >>];",
355 " [property updateById]: (",
356 " [variable userId]: [type number],",
357 " [variable isActive]: [type boolean]",
358 " ) [operator =>] [type Promise] [operator <] [type AccountHolderNotificationPreferenceInstance] [operator >];",
359 " }")
360
361 TS("typescript_interface_with_const",
362 "[keyword const] [def hello]: {",
363 " [property prop1][operator ?]: [type string];",
364 " [property prop2][operator ?]: [type string];",
365 "} [operator =] {};")
366
367 TS("typescript_double_extend",
368 "[keyword export] [keyword interface] [def UserAttributes] {",
369 " [property id][operator ?]: [type number];",
370 " [property createdAt][operator ?]: [type Date];",
371 "}",
372 "[keyword export] [keyword interface] [def UserInstance] [keyword extends] [type Sequelize].[type Instance][operator <][type UserAttributes][operator >], [type UserAttributes] {",
373 " [property id]: [type number];",
374 " [property createdAt]: [type Date];",
375 "}");
376
377 TS("typescript_index_signature",
378 "[keyword interface] [def A] {",
379 " [[ [variable prop]: [type string] ]]: [type any];",
380 " [property prop1]: [type any];",
381 "}");
382
383 TS("typescript_generic_class",
384 "[keyword class] [def Foo][operator <][type T][operator >] {",
385 " [property bar]() {}",
386 " [property foo](): [type Foo] {}",
387 "}")
388
389 TS("typescript_type_when_keyword",
390 "[keyword export] [keyword type] [type AB] [operator =] [type A] [operator |] [type B];",
391 "[keyword type] [type Flags] [operator =] {",
392 " [property p1]: [type string];",
393 " [property p2]: [type boolean];",
394 "};")
395
396 TS("typescript_type_when_not_keyword",
397 "[keyword class] [def HasType] {",
398 " [property type]: [type string];",
399 " [property constructor]([def type]: [type string]) {",
400 " [keyword this].[property type] [operator =] [variable-2 type];",
401 " }",
402 " [property setType]({ [def type] }: { [property type]: [type string]; }) {",
403 " [keyword this].[property type] [operator =] [variable-2 type];",
404 " }",
405 "}")
406
407 TS("typescript_function_generics",
408 "[keyword function] [def a]() {}",
409 "[keyword function] [def b][operator <][type IA] [keyword extends] [type object], [type IB] [keyword extends] [type object][operator >]() {}",
410 "[keyword function] [def c]() {}")
411
412 TS("typescript_complex_return_type",
413 "[keyword function] [def A]() {",
414 " [keyword return] [keyword this].[property property];",
415 "}",
416 "[keyword function] [def B](): [type Promise][operator <]{ [[ [variable key]: [type string] ]]: [type any] } [operator |] [atom null][operator >] {",
417 " [keyword return] [keyword this].[property property];",
418 "}")
419
420 TS("typescript_complex_type_casting",
421 "[keyword const] [def giftpay] [operator =] [variable config].[property get]([string 'giftpay']) [keyword as] { [[ [variable platformUuid]: [type string] ]]: { [property version]: [type number]; [property apiCode]: [type string]; } };")
422
423 TS("typescript_keyof",
424 "[keyword function] [def x][operator <][type T] [keyword extends] [keyword keyof] [type X][operator >]([def a]: [type T]) {",
425 " [keyword return]")
426
427 TS("typescript_new_typeargs",
428 "[keyword let] [def x] [operator =] [keyword new] [variable Map][operator <][type string], [type Date][operator >]([string-2 `foo${][variable bar][string-2 }`])")
429
430 TS("modifiers",
431 "[keyword class] [def Foo] {",
432 " [keyword public] [keyword abstract] [property bar]() {}",
433 " [property constructor]([keyword readonly] [keyword private] [def x]) {}",
434 "}")
435
436 TS("arrow prop",
437 "({[property a]: [def p] [operator =>] [variable-2 p]})")
438
439 TS("generic in function call",
440 "[keyword this].[property a][operator <][type Type][operator >]([variable foo]);",
441 "[keyword this].[property a][operator <][variable Type][operator >][variable foo];")
442
443 TS("type guard",
444 "[keyword class] [def Appler] {",
445 " [keyword static] [property assertApple]([def fruit]: [type Fruit]): [variable-2 fruit] [keyword is] [type Apple] {",
446 " [keyword if] ([operator !]([variable-2 fruit] [keyword instanceof] [variable Apple]))",
447 " [keyword throw] [keyword new] [variable Error]();",
448 " }",
449 "}")
450
451 TS("type as variable",
452 "[variable type] [operator =] [variable x] [keyword as] [type Bar];");
453
454 TS("enum body",
455 "[keyword export] [keyword const] [keyword enum] [def CodeInspectionResultType] {",
456 " [def ERROR] [operator =] [string 'problem_type_error'],",
457 " [def WARNING] [operator =] [string 'problem_type_warning'],",
458 " [def META],",
459 "}")
460
461 TS("parenthesized type",
462 "[keyword class] [def Foo] {",
463 " [property x] [operator =] [keyword new] [variable A][operator <][type B], [type string][operator |](() [operator =>] [type void])[operator >]();",
464 " [keyword private] [property bar]();",
465 "}")
466
467 TS("abstract class",
468 "[keyword export] [keyword abstract] [keyword class] [def Foo] {}")
469
470 TS("interface without semicolons",
471 "[keyword interface] [def Foo] {",
472 " [property greet]([def x]: [type int]): [type blah]",
473 " [property bar]: [type void]",
474 "}")
475
476 var jsonld_mode = CodeMirror.getMode(
477 {indentUnit: 2},
478 {name: "javascript", jsonld: true}
479 );
480 function LD(name) {
481 test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1));
482 }
483
484 LD("json_ld_keywords",
485 '{',
486 ' [meta "@context"]: {',
487 ' [meta "@base"]: [string "http://example.com"],',
488 ' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],',
489 ' [property "likesFlavor"]: {',
490 ' [meta "@container"]: [meta "@list"]',
491 ' [meta "@reverse"]: [string "@beFavoriteOf"]',
492 ' },',
493 ' [property "nick"]: { [meta "@container"]: [meta "@set"] },',
494 ' [property "nick"]: { [meta "@container"]: [meta "@index"] }',
495 ' },',
496 ' [meta "@graph"]: [[ {',
497 ' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],',
498 ' [property "name"]: [string "John Lennon"],',
499 ' [property "modified"]: {',
500 ' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],',
501 ' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]',
502 ' }',
503 ' } ]]',
504 '}');
505
506 LD("json_ld_fake",
507 '{',
508 ' [property "@fake"]: [string "@fake"],',
509 ' [property "@contextual"]: [string "@identifier"],',
510 ' [property "[email protected]"]: [string "@graphical"],',
511 ' [property "@ID"]: [string "@@ID"]',
512 '}');
513 })();
514