@socketsecurity/cli-with-sentry 0.14.137 → 0.14.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/blessed/LICENSE +20 -0
  2. package/dist/blessed/lib/alias.js +519 -0
  3. package/dist/blessed/lib/blessed.js +32 -0
  4. package/dist/blessed/lib/colors.js +490 -0
  5. package/dist/blessed/lib/events.js +195 -0
  6. package/dist/blessed/lib/gpmclient.js +245 -0
  7. package/dist/blessed/lib/helpers.js +170 -0
  8. package/dist/blessed/lib/keys.js +512 -0
  9. package/dist/blessed/lib/program.js +4530 -0
  10. package/dist/blessed/lib/tput.js +3111 -0
  11. package/dist/blessed/lib/unicode.js +912 -0
  12. package/dist/blessed/lib/widget.js +60 -0
  13. package/dist/blessed/lib/widgets/ansiimage.js +173 -0
  14. package/dist/blessed/lib/widgets/bigtext.js +170 -0
  15. package/dist/blessed/lib/widgets/box.js +34 -0
  16. package/dist/blessed/lib/widgets/button.js +62 -0
  17. package/dist/blessed/lib/widgets/checkbox.js +95 -0
  18. package/dist/blessed/lib/widgets/element.js +2871 -0
  19. package/dist/blessed/lib/widgets/filemanager.js +223 -0
  20. package/dist/blessed/lib/widgets/form.js +301 -0
  21. package/dist/blessed/lib/widgets/image.js +71 -0
  22. package/dist/blessed/lib/widgets/input.js +34 -0
  23. package/dist/blessed/lib/widgets/layout.js +249 -0
  24. package/dist/blessed/lib/widgets/line.js +59 -0
  25. package/dist/blessed/lib/widgets/list.js +652 -0
  26. package/dist/blessed/lib/widgets/listbar.js +452 -0
  27. package/dist/blessed/lib/widgets/listtable.js +265 -0
  28. package/dist/blessed/lib/widgets/loading.js +88 -0
  29. package/dist/blessed/lib/widgets/log.js +82 -0
  30. package/dist/blessed/lib/widgets/message.js +145 -0
  31. package/dist/blessed/lib/widgets/node.js +314 -0
  32. package/dist/blessed/lib/widgets/overlayimage.js +794 -0
  33. package/dist/blessed/lib/widgets/progressbar.js +166 -0
  34. package/dist/blessed/lib/widgets/prompt.js +127 -0
  35. package/dist/blessed/lib/widgets/question.js +129 -0
  36. package/dist/blessed/lib/widgets/radiobutton.js +62 -0
  37. package/dist/blessed/lib/widgets/radioset.js +36 -0
  38. package/dist/blessed/lib/widgets/screen.js +2485 -0
  39. package/dist/blessed/lib/widgets/scrollablebox.js +415 -0
  40. package/dist/blessed/lib/widgets/scrollabletext.js +35 -0
  41. package/dist/blessed/lib/widgets/table.js +383 -0
  42. package/dist/blessed/lib/widgets/terminal.js +452 -0
  43. package/dist/blessed/lib/widgets/text.js +35 -0
  44. package/dist/blessed/lib/widgets/textarea.js +376 -0
  45. package/dist/blessed/lib/widgets/textbox.js +79 -0
  46. package/dist/blessed/lib/widgets/video.js +130 -0
  47. package/dist/blessed/usr/fonts/AUTHORS +1 -0
  48. package/dist/blessed/usr/fonts/LICENSE +94 -0
  49. package/dist/blessed/usr/fonts/README +340 -0
  50. package/dist/blessed/usr/fonts/ter-u14b.json +17826 -0
  51. package/dist/blessed/usr/fonts/ter-u14n.json +17826 -0
  52. package/dist/blessed/usr/linux +0 -0
  53. package/dist/blessed/usr/windows-ansi +0 -0
  54. package/dist/blessed/usr/xterm +0 -0
  55. package/dist/blessed/usr/xterm-256color +0 -0
  56. package/dist/blessed/usr/xterm.termcap +243 -0
  57. package/dist/blessed/usr/xterm.terminfo +1977 -0
  58. package/dist/blessed/vendor/tng.js +1876 -0
  59. package/dist/blessed-contrib/LICENSE.md +21 -0
  60. package/dist/blessed-contrib/lib/layout/carousel.js +82 -0
  61. package/dist/blessed-contrib/lib/layout/grid.js +46 -0
  62. package/dist/blessed-contrib/lib/server-utils.js +83 -0
  63. package/dist/blessed-contrib/lib/utils.js +73 -0
  64. package/dist/blessed-contrib/lib/widget/canvas.js +52 -0
  65. package/dist/blessed-contrib/lib/widget/charts/bar.js +99 -0
  66. package/dist/blessed-contrib/lib/widget/charts/line.js +311 -0
  67. package/dist/blessed-contrib/lib/widget/charts/stacked-bar.js +245 -0
  68. package/dist/blessed-contrib/lib/widget/donut.js +183 -0
  69. package/dist/blessed-contrib/lib/widget/gauge-list.js +111 -0
  70. package/dist/blessed-contrib/lib/widget/gauge.js +127 -0
  71. package/dist/blessed-contrib/lib/widget/lcd.js +497 -0
  72. package/dist/blessed-contrib/lib/widget/log.js +32 -0
  73. package/dist/blessed-contrib/lib/widget/map.js +97 -0
  74. package/dist/blessed-contrib/lib/widget/markdown.js +68 -0
  75. package/dist/blessed-contrib/lib/widget/picture.js +61 -0
  76. package/dist/blessed-contrib/lib/widget/sparkline.js +66 -0
  77. package/dist/blessed-contrib/lib/widget/table.js +141 -0
  78. package/dist/blessed-contrib/lib/widget/tree.js +179 -0
  79. package/dist/blessed-contrib/node_modules/ansi-regex/index.js +6 -0
  80. package/dist/blessed-contrib/node_modules/ansi-regex/license +21 -0
  81. package/dist/blessed-contrib/node_modules/ansi-regex/package.json +64 -0
  82. package/dist/blessed-contrib/node_modules/ansi-regex/readme.md +39 -0
  83. package/dist/blessed-contrib/node_modules/ansi-styles/index.js +67 -0
  84. package/dist/blessed-contrib/node_modules/ansi-styles/license +21 -0
  85. package/dist/blessed-contrib/node_modules/ansi-styles/package.json +50 -0
  86. package/dist/blessed-contrib/node_modules/ansi-styles/readme.md +86 -0
  87. package/dist/blessed-contrib/node_modules/chalk/index.js +118 -0
  88. package/dist/blessed-contrib/node_modules/chalk/license +21 -0
  89. package/dist/blessed-contrib/node_modules/chalk/package.json +70 -0
  90. package/dist/blessed-contrib/node_modules/chalk/readme.md +213 -0
  91. package/dist/blessed-contrib/node_modules/escape-string-regexp/index.js +13 -0
  92. package/dist/blessed-contrib/node_modules/escape-string-regexp/license +21 -0
  93. package/dist/blessed-contrib/node_modules/escape-string-regexp/package.json +41 -0
  94. package/dist/blessed-contrib/node_modules/escape-string-regexp/readme.md +27 -0
  95. package/dist/blessed-contrib/node_modules/strip-ansi/index.js +8 -0
  96. package/dist/blessed-contrib/node_modules/strip-ansi/license +21 -0
  97. package/dist/blessed-contrib/node_modules/strip-ansi/package.json +57 -0
  98. package/dist/blessed-contrib/node_modules/strip-ansi/readme.md +33 -0
  99. package/dist/blessed-contrib/node_modules/supports-color/index.js +52 -0
  100. package/dist/blessed-contrib/node_modules/supports-color/license +21 -0
  101. package/dist/blessed-contrib/node_modules/supports-color/package.json +49 -0
  102. package/dist/blessed-contrib/node_modules/supports-color/readme.md +36 -0
  103. package/dist/cli.js +9 -8
  104. package/dist/cli.js.map +1 -1
  105. package/dist/instrument-with-sentry.js +2 -2
  106. package/dist/instrument-with-sentry.js.map +1 -1
  107. package/dist/shadow-npm-inject.js +2 -2
  108. package/dist/shadow-npm-inject.js.map +1 -1
  109. package/package.json +4 -4
@@ -0,0 +1,512 @@
1
+ /**
2
+ * keys.js - emit key presses
3
+ * Copyright (c) 2010-2015, Joyent, Inc. and other contributors (MIT License)
4
+ * https://github.com/chjj/blessed
5
+ */
6
+
7
+ // Originally taken from the node.js tree:
8
+ //
9
+ // Copyright Joyent, Inc. and other Node contributors. All rights reserved.
10
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ // of this software and associated documentation files (the "Software"), to
12
+ // deal in the Software without restriction, including without limitation the
13
+ // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14
+ // sell copies of the Software, and to permit persons to whom the Software is
15
+ // furnished to do so, subject to the following conditions:
16
+
17
+ // The above copyright notice and this permission notice shall be included in
18
+ // all copies or substantial portions of the Software.
19
+
20
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25
+ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
26
+ // IN THE SOFTWARE.
27
+
28
+ const EventEmitter = require('node:events').EventEmitter
29
+
30
+ // NOTE: node <=v0.8.x has no EventEmitter.listenerCount
31
+ function listenerCount(stream, event) {
32
+ return EventEmitter.listenerCount
33
+ ? EventEmitter.listenerCount(stream, event)
34
+ : stream.listeners(event).length
35
+ }
36
+
37
+ /**
38
+ * accepts a readable Stream instance and makes it emit "keypress" events
39
+ */
40
+
41
+ function emitKeypressEvents(stream) {
42
+ if (stream._keypressDecoder) {
43
+ return
44
+ }
45
+ const StringDecoder = require('node:string_decoder').StringDecoder // lazy load
46
+ stream._keypressDecoder = new StringDecoder('utf8')
47
+
48
+ function onData(b) {
49
+ if (listenerCount(stream, 'keypress') > 0) {
50
+ const r = stream._keypressDecoder.write(b)
51
+ if (r) {
52
+ emitKeys(stream, r)
53
+ }
54
+ } else {
55
+ // Nobody's watching anyway
56
+ stream.removeListener('data', onData)
57
+ stream.on('newListener', onNewListener)
58
+ }
59
+ }
60
+
61
+ function onNewListener(event) {
62
+ if (event === 'keypress') {
63
+ stream.on('data', onData)
64
+ stream.removeListener('newListener', onNewListener)
65
+ }
66
+ }
67
+
68
+ if (listenerCount(stream, 'keypress') > 0) {
69
+ stream.on('data', onData)
70
+ } else {
71
+ stream.on('newListener', onNewListener)
72
+ }
73
+ }
74
+ exports.emitKeypressEvents = emitKeypressEvents
75
+
76
+ /*
77
+ Some patterns seen in terminal key escape codes, derived from combos seen
78
+ at http://www.midnight-commander.org/browser/lib/tty/key.c
79
+
80
+ ESC letter
81
+ ESC [ letter
82
+ ESC [ modifier letter
83
+ ESC [ 1 ; modifier letter
84
+ ESC [ num char
85
+ ESC [ num ; modifier char
86
+ ESC O letter
87
+ ESC O modifier letter
88
+ ESC O 1 ; modifier letter
89
+ ESC N letter
90
+ ESC [ [ num ; modifier char
91
+ ESC [ [ 1 ; modifier letter
92
+ ESC ESC [ num char
93
+ ESC ESC O letter
94
+
95
+ - char is usually ~ but $ and ^ also happen with rxvt
96
+ - modifier is 1 +
97
+ (shift * 1) +
98
+ (left_alt * 2) +
99
+ (ctrl * 4) +
100
+ (right_alt * 8)
101
+ - two leading ESCs apparently mean the same as one leading ESC
102
+ */
103
+
104
+ // Regexes used for ansi escape code splitting
105
+ const metaKeyCodeReAnywhere = /(?:\x1b)([a-zA-Z0-9])/
106
+ const metaKeyCodeRe = new RegExp('^' + metaKeyCodeReAnywhere.source + '$')
107
+ const functionKeyCodeReAnywhere = new RegExp(
108
+ '(?:\x1b+)(O|N|\\[|\\[\\[)(?:' +
109
+ [
110
+ '(\\d+)(?:;(\\d+))?([~^$])',
111
+ '(?:M([@ #!a`])(.)(.))', // mouse
112
+ '(?:1;)?(\\d+)?([a-zA-Z])'
113
+ ].join('|') +
114
+ ')'
115
+ )
116
+ const functionKeyCodeRe = new RegExp('^' + functionKeyCodeReAnywhere.source)
117
+ const escapeCodeReAnywhere = new RegExp(
118
+ [
119
+ functionKeyCodeReAnywhere.source,
120
+ metaKeyCodeReAnywhere.source,
121
+ /\x1b./.source
122
+ ].join('|')
123
+ )
124
+
125
+ function emitKeys(stream, s) {
126
+ if (Buffer.isBuffer(s)) {
127
+ if (s[0] > 127 && s[1] === undefined) {
128
+ s[0] -= 128
129
+ s = '\x1b' + s.toString(stream.encoding || 'utf-8')
130
+ } else {
131
+ s = s.toString(stream.encoding || 'utf-8')
132
+ }
133
+ }
134
+
135
+ if (isMouse(s)) {
136
+ return
137
+ }
138
+
139
+ let buffer = []
140
+ let match
141
+ while ((match = escapeCodeReAnywhere.exec(s))) {
142
+ buffer = buffer.concat(s.slice(0, match.index).split(''))
143
+ buffer.push(match[0])
144
+ s = s.slice(match.index + match[0].length)
145
+ }
146
+ buffer = buffer.concat(s.split(''))
147
+
148
+ buffer.forEach(function (s) {
149
+ let ch,
150
+ key = {
151
+ sequence: s,
152
+ name: undefined,
153
+ ctrl: false,
154
+ meta: false,
155
+ shift: false
156
+ },
157
+ parts
158
+
159
+ if (s === '\r') {
160
+ // carriage return
161
+ key.name = 'return'
162
+ } else if (s === '\n') {
163
+ // enter, should have been called linefeed
164
+ key.name = 'enter'
165
+ // linefeed
166
+ // key.name = 'linefeed';
167
+ } else if (s === '\t') {
168
+ // tab
169
+ key.name = 'tab'
170
+ } else if (
171
+ s === '\b' ||
172
+ s === '\x7f' ||
173
+ s === '\x1b\x7f' ||
174
+ s === '\x1b\b'
175
+ ) {
176
+ // backspace or ctrl+h
177
+ key.name = 'backspace'
178
+ key.meta = s.charAt(0) === '\x1b'
179
+ } else if (s === '\x1b' || s === '\x1b\x1b') {
180
+ // escape key
181
+ key.name = 'escape'
182
+ key.meta = s.length === 2
183
+ } else if (s === ' ' || s === '\x1b ') {
184
+ key.name = 'space'
185
+ key.meta = s.length === 2
186
+ } else if (s.length === 1 && s <= '\x1a') {
187
+ // ctrl+letter
188
+ key.name = String.fromCharCode(s.charCodeAt(0) + 'a'.charCodeAt(0) - 1)
189
+ key.ctrl = true
190
+ } else if (s.length === 1 && s >= 'a' && s <= 'z') {
191
+ // lowercase letter
192
+ key.name = s
193
+ } else if (s.length === 1 && s >= 'A' && s <= 'Z') {
194
+ // shift+letter
195
+ key.name = s.toLowerCase()
196
+ key.shift = true
197
+ } else if ((parts = metaKeyCodeRe.exec(s))) {
198
+ // meta+character key
199
+ key.name = parts[1].toLowerCase()
200
+ key.meta = true
201
+ key.shift = /^[A-Z]$/.test(parts[1])
202
+ } else if ((parts = functionKeyCodeRe.exec(s))) {
203
+ // ansi escape sequence
204
+
205
+ // reassemble the key code leaving out leading \x1b's,
206
+ // the modifier key bitflag and any meaningless "1;" sequence
207
+ const code =
208
+ (parts[1] || '') +
209
+ (parts[2] || '') +
210
+ (parts[4] || '') +
211
+ (parts[9] || ''),
212
+ modifier = (parts[3] || parts[8] || 1) - 1
213
+
214
+ // Parse the key modifier
215
+ key.ctrl = !!(modifier & 4)
216
+ key.meta = !!(modifier & 10)
217
+ key.shift = !!(modifier & 1)
218
+ key.code = code
219
+
220
+ // Parse the key itself
221
+ switch (code) {
222
+ /* xterm/gnome ESC O letter */
223
+ case 'OP':
224
+ key.name = 'f1'
225
+ break
226
+ case 'OQ':
227
+ key.name = 'f2'
228
+ break
229
+ case 'OR':
230
+ key.name = 'f3'
231
+ break
232
+ case 'OS':
233
+ key.name = 'f4'
234
+ break
235
+
236
+ /* xterm/rxvt ESC [ number ~ */
237
+ case '[11~':
238
+ key.name = 'f1'
239
+ break
240
+ case '[12~':
241
+ key.name = 'f2'
242
+ break
243
+ case '[13~':
244
+ key.name = 'f3'
245
+ break
246
+ case '[14~':
247
+ key.name = 'f4'
248
+ break
249
+
250
+ /* from Cygwin and used in libuv */
251
+ case '[[A':
252
+ key.name = 'f1'
253
+ break
254
+ case '[[B':
255
+ key.name = 'f2'
256
+ break
257
+ case '[[C':
258
+ key.name = 'f3'
259
+ break
260
+ case '[[D':
261
+ key.name = 'f4'
262
+ break
263
+ case '[[E':
264
+ key.name = 'f5'
265
+ break
266
+
267
+ /* common */
268
+ case '[15~':
269
+ key.name = 'f5'
270
+ break
271
+ case '[17~':
272
+ key.name = 'f6'
273
+ break
274
+ case '[18~':
275
+ key.name = 'f7'
276
+ break
277
+ case '[19~':
278
+ key.name = 'f8'
279
+ break
280
+ case '[20~':
281
+ key.name = 'f9'
282
+ break
283
+ case '[21~':
284
+ key.name = 'f10'
285
+ break
286
+ case '[23~':
287
+ key.name = 'f11'
288
+ break
289
+ case '[24~':
290
+ key.name = 'f12'
291
+ break
292
+
293
+ /* xterm ESC [ letter */
294
+ case '[A':
295
+ key.name = 'up'
296
+ break
297
+ case '[B':
298
+ key.name = 'down'
299
+ break
300
+ case '[C':
301
+ key.name = 'right'
302
+ break
303
+ case '[D':
304
+ key.name = 'left'
305
+ break
306
+ case '[E':
307
+ key.name = 'clear'
308
+ break
309
+ case '[F':
310
+ key.name = 'end'
311
+ break
312
+ case '[H':
313
+ key.name = 'home'
314
+ break
315
+
316
+ /* xterm/gnome ESC O letter */
317
+ case 'OA':
318
+ key.name = 'up'
319
+ break
320
+ case 'OB':
321
+ key.name = 'down'
322
+ break
323
+ case 'OC':
324
+ key.name = 'right'
325
+ break
326
+ case 'OD':
327
+ key.name = 'left'
328
+ break
329
+ case 'OE':
330
+ key.name = 'clear'
331
+ break
332
+ case 'OF':
333
+ key.name = 'end'
334
+ break
335
+ case 'OH':
336
+ key.name = 'home'
337
+ break
338
+
339
+ /* xterm/rxvt ESC [ number ~ */
340
+ case '[1~':
341
+ key.name = 'home'
342
+ break
343
+ case '[2~':
344
+ key.name = 'insert'
345
+ break
346
+ case '[3~':
347
+ key.name = 'delete'
348
+ break
349
+ case '[4~':
350
+ key.name = 'end'
351
+ break
352
+ case '[5~':
353
+ key.name = 'pageup'
354
+ break
355
+ case '[6~':
356
+ key.name = 'pagedown'
357
+ break
358
+
359
+ /* putty */
360
+ case '[[5~':
361
+ key.name = 'pageup'
362
+ break
363
+ case '[[6~':
364
+ key.name = 'pagedown'
365
+ break
366
+
367
+ /* rxvt */
368
+ case '[7~':
369
+ key.name = 'home'
370
+ break
371
+ case '[8~':
372
+ key.name = 'end'
373
+ break
374
+
375
+ /* rxvt keys with modifiers */
376
+ case '[a':
377
+ key.name = 'up'
378
+ key.shift = true
379
+ break
380
+ case '[b':
381
+ key.name = 'down'
382
+ key.shift = true
383
+ break
384
+ case '[c':
385
+ key.name = 'right'
386
+ key.shift = true
387
+ break
388
+ case '[d':
389
+ key.name = 'left'
390
+ key.shift = true
391
+ break
392
+ case '[e':
393
+ key.name = 'clear'
394
+ key.shift = true
395
+ break
396
+
397
+ case '[2$':
398
+ key.name = 'insert'
399
+ key.shift = true
400
+ break
401
+ case '[3$':
402
+ key.name = 'delete'
403
+ key.shift = true
404
+ break
405
+ case '[5$':
406
+ key.name = 'pageup'
407
+ key.shift = true
408
+ break
409
+ case '[6$':
410
+ key.name = 'pagedown'
411
+ key.shift = true
412
+ break
413
+ case '[7$':
414
+ key.name = 'home'
415
+ key.shift = true
416
+ break
417
+ case '[8$':
418
+ key.name = 'end'
419
+ key.shift = true
420
+ break
421
+
422
+ case 'Oa':
423
+ key.name = 'up'
424
+ key.ctrl = true
425
+ break
426
+ case 'Ob':
427
+ key.name = 'down'
428
+ key.ctrl = true
429
+ break
430
+ case 'Oc':
431
+ key.name = 'right'
432
+ key.ctrl = true
433
+ break
434
+ case 'Od':
435
+ key.name = 'left'
436
+ key.ctrl = true
437
+ break
438
+ case 'Oe':
439
+ key.name = 'clear'
440
+ key.ctrl = true
441
+ break
442
+
443
+ case '[2^':
444
+ key.name = 'insert'
445
+ key.ctrl = true
446
+ break
447
+ case '[3^':
448
+ key.name = 'delete'
449
+ key.ctrl = true
450
+ break
451
+ case '[5^':
452
+ key.name = 'pageup'
453
+ key.ctrl = true
454
+ break
455
+ case '[6^':
456
+ key.name = 'pagedown'
457
+ key.ctrl = true
458
+ break
459
+ case '[7^':
460
+ key.name = 'home'
461
+ key.ctrl = true
462
+ break
463
+ case '[8^':
464
+ key.name = 'end'
465
+ key.ctrl = true
466
+ break
467
+
468
+ /* misc. */
469
+ case '[Z':
470
+ key.name = 'tab'
471
+ key.shift = true
472
+ break
473
+ default:
474
+ key.name = 'undefined'
475
+ break
476
+ }
477
+ }
478
+
479
+ // Don't emit a key if no name was found
480
+ if (key.name === undefined) {
481
+ key = undefined
482
+ }
483
+
484
+ if (s.length === 1) {
485
+ ch = s
486
+ }
487
+
488
+ if (key || ch) {
489
+ stream.emit('keypress', ch, key)
490
+ // if (key && key.name === 'return') {
491
+ // var nkey = {};
492
+ // Object.keys(key).forEach(function(k) {
493
+ // nkey[k] = key[k];
494
+ // });
495
+ // nkey.name = 'enter';
496
+ // stream.emit('keypress', ch, nkey);
497
+ // }
498
+ }
499
+ })
500
+ }
501
+
502
+ function isMouse(s) {
503
+ return (
504
+ /\x1b\[M/.test(s) ||
505
+ /\x1b\[M([\x00\u0020-\uffff]{3})/.test(s) ||
506
+ /\x1b\[(\d+;\d+;\d+)M/.test(s) ||
507
+ /\x1b\[<(\d+;\d+;\d+)([mM])/.test(s) ||
508
+ /\x1b\[<(\d+;\d+;\d+;\d+)&w/.test(s) ||
509
+ /\x1b\[24([0135])~\[(\d+),(\d+)\]\r/.test(s) ||
510
+ /\x1b\[(O|I)/.test(s)
511
+ )
512
+ }