aboutsummaryrefslogtreecommitdiff
path: root/node_modules/mysql2/lib/helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/mysql2/lib/helpers.js')
-rw-r--r--node_modules/mysql2/lib/helpers.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/node_modules/mysql2/lib/helpers.js b/node_modules/mysql2/lib/helpers.js
new file mode 100644
index 0000000..b30939b
--- /dev/null
+++ b/node_modules/mysql2/lib/helpers.js
@@ -0,0 +1,63 @@
+'use strict';
+
+/*
+
+ this seems to be not only shorter, but faster than
+ string.replace(/\\/g, '\\\\').
+ replace(/\u0008/g, '\\b').
+ replace(/\t/g, '\\t').
+ replace(/\n/g, '\\n').
+ replace(/\f/g, '\\f').
+ replace(/\r/g, '\\r').
+ replace(/'/g, '\\\'').
+ replace(/"/g, '\\"');
+ or string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
+ see http://jsperf.com/string-escape-regexp-vs-json-stringify
+ */
+function srcEscape(str) {
+ return JSON.stringify({
+ [str]: 1
+ }).slice(1, -3);
+}
+
+exports.srcEscape = srcEscape;
+
+let highlightFn;
+let cardinalRecommended = false;
+try {
+ highlightFn = require('cardinal').highlight;
+} catch (err) {
+ highlightFn = text => {
+ if (!cardinalRecommended) {
+ // eslint-disable-next-line no-console
+ console.log('For nicer debug output consider install cardinal@^2.0.0');
+ cardinalRecommended = true;
+ }
+ return text;
+ };
+}
+
+/**
+ * Prints debug message with code frame, will try to use `cardinal` if available.
+ */
+function printDebugWithCode(msg, code) {
+ // eslint-disable-next-line no-console
+ console.log(`\n\n${msg}:\n`);
+ // eslint-disable-next-line no-console
+ console.log(`${highlightFn(code)}\n`);
+}
+
+exports.printDebugWithCode = printDebugWithCode;
+
+/**
+ * checks whether the `type` is in the `list`
+ */
+function typeMatch(type, list, Types) {
+ if (Array.isArray(list)) {
+ return list.some(t => type === Types[t]);
+ }
+
+ return !!list;
+}
+
+exports.typeMatch = typeMatch;