dbgate-web 4.8.3 → 4.8.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-parser-worker.js","sources":["../../../query-splitter/lib/options.js","../../../query-splitter/lib/splitQuery.js","../../../query-splitter/lib/index.js","../../src/query/QueryParserWorker.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.redisSplitterOptions = exports.noSplitSplitterOptions = exports.mongoSplitterOptions = exports.sqliteSplitterOptions = exports.postgreSplitterOptions = exports.mssqlSplitterOptions = exports.mysqlSplitterOptions = exports.defaultSplitterOptions = void 0;\nexports.defaultSplitterOptions = {\n stringsBegins: [\"'\"],\n stringsEnds: { \"'\": \"'\" },\n stringEscapes: { \"'\": \"'\" },\n allowSemicolon: true,\n allowCustomDelimiter: false,\n allowGoDelimiter: false,\n allowDollarDollarString: false,\n noSplit: false,\n doubleDashComments: true,\n multilineComments: true,\n javaScriptComments: false,\n returnRichInfo: false,\n splitByLines: false,\n};\nexports.mysqlSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { allowCustomDelimiter: true, stringsBegins: [\"'\", '`'], stringsEnds: { \"'\": \"'\", '`': '`' }, stringEscapes: { \"'\": '\\\\', '`': '`' } });\nexports.mssqlSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { allowSemicolon: false, allowGoDelimiter: true, stringsBegins: [\"'\", '['], stringsEnds: { \"'\": \"'\", '[': ']' }, stringEscapes: { \"'\": \"'\" } });\nexports.postgreSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { allowDollarDollarString: true, stringsBegins: [\"'\", '\"'], stringsEnds: { \"'\": \"'\", '\"': '\"' }, stringEscapes: { \"'\": \"'\", '\"': '\"' } });\nexports.sqliteSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { stringsBegins: [\"'\", '\"'], stringsEnds: { \"'\": \"'\", '\"': '\"' }, stringEscapes: { \"'\": \"'\", '\"': '\"' } });\nexports.mongoSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { stringsBegins: [\"'\", '\"'], stringsEnds: { \"'\": \"'\", '\"': '\"' }, stringEscapes: { \"'\": '\\\\', '\"': '\\\\' } });\nexports.noSplitSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { noSplit: true });\nexports.redisSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { splitByLines: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitQuery = exports.finishSplitStream = exports.getInitialDelimiter = exports.splitQueryLine = void 0;\nconst options_1 = require(\"./options\");\nconst SEMICOLON = ';';\nfunction movePosition(context, count) {\n if (context.options.returnRichInfo) {\n let { source, position, line, column, streamPosition } = context;\n while (count > 0) {\n if (source[position] == '\\n') {\n line += 1;\n column = 0;\n }\n else {\n column += 1;\n }\n position += 1;\n streamPosition += 1;\n count -= 1;\n }\n context.position = position;\n context.streamPosition = streamPosition;\n context.line = line;\n context.column = column;\n }\n else {\n context.position += count;\n }\n}\nfunction isStringEnd(s, pos, endch, escapech) {\n if (!escapech) {\n return s[pos] == endch;\n }\n if (endch == escapech) {\n return s[pos] == endch && s[pos + 1] != endch;\n }\n else {\n return s[pos] == endch && s[pos - 1] != escapech;\n }\n}\nconst WHITESPACE_TOKEN = {\n type: 'whitespace',\n length: 1,\n};\nconst EOLN_TOKEN = {\n type: 'eoln',\n length: 1,\n};\nconst DATA_TOKEN = {\n type: 'data',\n length: 1,\n};\nfunction scanDollarQuotedString(context) {\n if (!context.options.allowDollarDollarString)\n return null;\n let pos = context.position;\n const s = context.source;\n const match = /^(\\$[a-zA-Z0-9_]*\\$)/.exec(s.slice(pos));\n if (!match)\n return null;\n const label = match[1];\n pos += label.length;\n while (pos < context.end) {\n if (s.slice(pos).startsWith(label)) {\n return {\n type: 'string',\n length: pos + label.length - context.position,\n };\n }\n pos++;\n }\n return null;\n}\nfunction scanToken(context) {\n let pos = context.position;\n const s = context.source;\n const ch = s[pos];\n if (context.options.stringsBegins.includes(ch)) {\n pos++;\n const endch = context.options.stringsEnds[ch];\n const escapech = context.options.stringEscapes[ch];\n while (pos < context.end && !isStringEnd(s, pos, endch, escapech)) {\n if (endch == escapech && s[pos] == endch && s[pos + 1] == endch) {\n pos += 2;\n }\n else {\n pos++;\n }\n }\n return {\n type: 'string',\n length: pos - context.position + 1,\n };\n }\n if (context.currentDelimiter && s.slice(pos).startsWith(context.currentDelimiter)) {\n return {\n type: 'delimiter',\n length: context.currentDelimiter.length,\n };\n }\n if (ch == ' ' || ch == '\\t' || ch == '\\r') {\n return WHITESPACE_TOKEN;\n }\n if (ch == '\\n') {\n return EOLN_TOKEN;\n }\n if (context.options.doubleDashComments && ch == '-' && s[pos + 1] == '-') {\n while (pos < context.end && s[pos] != '\\n')\n pos++;\n return {\n type: 'comment',\n length: pos - context.position,\n };\n }\n if (context.options.multilineComments && ch == '/' && s[pos + 1] == '*') {\n pos += 2;\n while (pos < context.end) {\n if (s[pos] == '*' && s[pos + 1] == '/')\n break;\n pos++;\n }\n return {\n type: 'comment',\n length: pos - context.position + 2,\n };\n }\n if (context.options.allowCustomDelimiter && !context.wasDataOnLine) {\n const m = s.slice(pos).match(/^DELIMITER[ \\t]+([^\\n]+)/i);\n if (m) {\n return {\n type: 'set_delimiter',\n value: m[1].trim(),\n length: m[0].length,\n };\n }\n }\n if (context.options.allowGoDelimiter && !context.wasDataOnLine) {\n const m = s.slice(pos).match(/^GO[\\t\\r ]*(\\n|$)/i);\n if (m) {\n return {\n type: 'go_delimiter',\n length: m[0].length - 1,\n };\n }\n }\n const dollarString = scanDollarQuotedString(context);\n if (dollarString)\n return dollarString;\n return DATA_TOKEN;\n}\nfunction pushQuery(context) {\n const sql = (context.commandPart || '') + context.source.slice(context.currentCommandStart, context.position);\n const trimmed = sql.trim();\n if (trimmed) {\n if (context.options.returnRichInfo) {\n context.pushOutput(countTrimmedPositions(sql, {\n text: trimmed,\n start: {\n position: context.commandStartPosition,\n line: context.commandStartLine,\n column: context.commandStartColumn,\n },\n end: {\n position: context.streamPosition,\n line: context.line,\n column: context.column,\n },\n }));\n }\n else {\n context.pushOutput(trimmed);\n }\n }\n}\nfunction countTrimmedPositions(full, positions) {\n const startIndex = full.indexOf(positions.text);\n const trimStart = Object.assign({}, positions.start);\n for (let i = 0; i < startIndex; i += 1) {\n if (full[i] == '\\n') {\n trimStart.position += 1;\n trimStart.line += 1;\n trimStart.column = 0;\n }\n else {\n trimStart.position += 1;\n trimStart.column += 1;\n }\n }\n return Object.assign(Object.assign({}, positions), { trimStart, trimEnd: positions.end });\n}\nfunction markStartCommand(context) {\n if (context.options.returnRichInfo) {\n context.commandStartPosition = context.streamPosition;\n context.commandStartLine = context.line;\n context.commandStartColumn = context.column;\n }\n}\nfunction splitByLines(context) {\n while (context.position < context.end) {\n if (context.source[context.position] == '\\n') {\n pushQuery(context);\n context.commandPart = '';\n movePosition(context, 1);\n context.currentCommandStart = context.position;\n markStartCommand(context);\n }\n else {\n movePosition(context, 1);\n }\n }\n if (context.end > context.currentCommandStart) {\n context.commandPart += context.source.slice(context.currentCommandStart, context.position);\n }\n}\nfunction splitQueryLine(context) {\n if (context.options.splitByLines) {\n splitByLines(context);\n return;\n }\n while (context.position < context.end) {\n const token = scanToken(context);\n if (!token) {\n // nothing special, move forward\n movePosition(context, 1);\n continue;\n }\n switch (token.type) {\n case 'string':\n movePosition(context, token.length);\n context.wasDataOnLine = true;\n break;\n case 'comment':\n movePosition(context, token.length);\n context.wasDataOnLine = true;\n break;\n case 'eoln':\n movePosition(context, token.length);\n context.wasDataOnLine = false;\n break;\n case 'data':\n movePosition(context, token.length);\n context.wasDataOnLine = true;\n break;\n case 'whitespace':\n movePosition(context, token.length);\n break;\n case 'set_delimiter':\n pushQuery(context);\n context.commandPart = '';\n context.currentDelimiter = token.value;\n movePosition(context, token.length);\n context.currentCommandStart = context.position;\n markStartCommand(context);\n break;\n case 'go_delimiter':\n pushQuery(context);\n context.commandPart = '';\n movePosition(context, token.length);\n context.currentCommandStart = context.position;\n markStartCommand(context);\n break;\n case 'delimiter':\n pushQuery(context);\n context.commandPart = '';\n movePosition(context, token.length);\n context.currentCommandStart = context.position;\n markStartCommand(context);\n break;\n }\n }\n if (context.end > context.currentCommandStart) {\n context.commandPart += context.source.slice(context.currentCommandStart, context.position);\n }\n}\nexports.splitQueryLine = splitQueryLine;\nfunction getInitialDelimiter(options) {\n return (options === null || options === void 0 ? void 0 : options.allowSemicolon) === false ? null : SEMICOLON;\n}\nexports.getInitialDelimiter = getInitialDelimiter;\nfunction finishSplitStream(context) {\n const trimmed = context.commandPart.trim();\n if (trimmed) {\n if (context.options.returnRichInfo) {\n context.pushOutput(countTrimmedPositions(context.commandPart, {\n text: trimmed,\n start: {\n position: context.commandStartPosition,\n line: context.commandStartLine,\n column: context.commandStartColumn,\n },\n end: {\n position: context.streamPosition,\n line: context.line,\n column: context.column,\n },\n }));\n }\n else {\n context.pushOutput(trimmed);\n }\n }\n}\nexports.finishSplitStream = finishSplitStream;\nfunction splitQuery(sql, options = null) {\n var _a;\n const usedOptions = Object.assign(Object.assign({}, options_1.defaultSplitterOptions), options);\n if (usedOptions.noSplit) {\n if (usedOptions.returnRichInfo) {\n const lines = sql.split('\\n');\n return [\n {\n text: sql,\n start: {\n position: 0,\n line: 0,\n column: 0,\n },\n end: {\n position: sql.length,\n line: lines.length,\n column: ((_a = lines[lines.length - 1]) === null || _a === void 0 ? void 0 : _a.length) || 0,\n },\n },\n ];\n }\n return [sql];\n }\n const output = [];\n const context = {\n source: sql,\n end: sql.length,\n currentDelimiter: getInitialDelimiter(options),\n position: 0,\n column: 0,\n line: 0,\n currentCommandStart: 0,\n commandStartLine: 0,\n commandStartColumn: 0,\n commandStartPosition: 0,\n streamPosition: 0,\n pushOutput: cmd => output.push(cmd),\n wasDataOnLine: false,\n options: usedOptions,\n commandPart: '',\n };\n splitQueryLine(context);\n finishSplitStream(context);\n return output;\n}\nexports.splitQuery = splitQuery;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitQuery = void 0;\nvar splitQuery_1 = require(\"./splitQuery\");\nObject.defineProperty(exports, \"splitQuery\", { enumerable: true, get: function () { return splitQuery_1.splitQuery; } });\n__exportStar(require(\"./options\"), exports);\n","import { splitQuery } from 'dbgate-query-splitter';\n\nonmessage = e => {\n const result = splitQuery(e.data.text, e.data.options);\n postMessage(result);\n};\n"],"names":["Object","defineProperty","value","exports","stringsBegins","stringsEnds","'","stringEscapes","allowSemicolon","allowCustomDelimiter","allowGoDelimiter","allowDollarDollarString","noSplit","doubleDashComments","multilineComments","javaScriptComments","returnRichInfo","splitByLines","assign","defaultSplitterOptions","`","[","\"","splitQuery_1","options_1","require$$0","movePosition","context","count","options","source","position","line","column","streamPosition","isStringEnd","s","pos","endch","escapech","WHITESPACE_TOKEN","type","length","EOLN_TOKEN","DATA_TOKEN","scanToken","ch","includes","end","currentDelimiter","slice","startsWith","wasDataOnLine","m","match","trim","dollarString","exec","label","scanDollarQuotedString","pushQuery","sql","commandPart","currentCommandStart","trimmed","pushOutput","countTrimmedPositions","text","start","commandStartPosition","commandStartLine","commandStartColumn","full","positions","startIndex","indexOf","trimStart","i","trimEnd","markStartCommand","splitQueryLine","token","getInitialDelimiter","finishSplitStream","_a","usedOptions","lines","split","output","cmd","push","__createBinding","this","create","o","k","k2","undefined","enumerable","get","__exportStar","p","prototype","hasOwnProperty","call","splitQuery","require$$1","onmessage","e","result","data","postMessage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-parser-worker.js","sources":["../../../../node_modules/dbgate-query-splitter/lib/options.js","../../../../node_modules/dbgate-query-splitter/lib/splitQuery.js","../../../../node_modules/dbgate-query-splitter/lib/index.js","../../src/query/QueryParserWorker.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.redisSplitterOptions = exports.noSplitSplitterOptions = exports.mongoSplitterOptions = exports.sqliteSplitterOptions = exports.postgreSplitterOptions = exports.mssqlSplitterOptions = exports.mysqlSplitterOptions = exports.defaultSplitterOptions = void 0;\nexports.defaultSplitterOptions = {\n stringsBegins: [\"'\"],\n stringsEnds: { \"'\": \"'\" },\n stringEscapes: { \"'\": \"'\" },\n allowSemicolon: true,\n allowCustomDelimiter: false,\n allowGoDelimiter: false,\n allowDollarDollarString: false,\n noSplit: false,\n doubleDashComments: true,\n multilineComments: true,\n javaScriptComments: false,\n returnRichInfo: false,\n splitByLines: false,\n};\nexports.mysqlSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { allowCustomDelimiter: true, stringsBegins: [\"'\", '`'], stringsEnds: { \"'\": \"'\", '`': '`' }, stringEscapes: { \"'\": '\\\\', '`': '`' } });\nexports.mssqlSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { allowSemicolon: false, allowGoDelimiter: true, stringsBegins: [\"'\", '['], stringsEnds: { \"'\": \"'\", '[': ']' }, stringEscapes: { \"'\": \"'\" } });\nexports.postgreSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { allowDollarDollarString: true, stringsBegins: [\"'\", '\"'], stringsEnds: { \"'\": \"'\", '\"': '\"' }, stringEscapes: { \"'\": \"'\", '\"': '\"' } });\nexports.sqliteSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { stringsBegins: [\"'\", '\"'], stringsEnds: { \"'\": \"'\", '\"': '\"' }, stringEscapes: { \"'\": \"'\", '\"': '\"' } });\nexports.mongoSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { stringsBegins: [\"'\", '\"'], stringsEnds: { \"'\": \"'\", '\"': '\"' }, stringEscapes: { \"'\": '\\\\', '\"': '\\\\' } });\nexports.noSplitSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { noSplit: true });\nexports.redisSplitterOptions = Object.assign(Object.assign({}, exports.defaultSplitterOptions), { splitByLines: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitQuery = exports.finishSplitStream = exports.getInitialDelimiter = exports.splitQueryLine = void 0;\nconst options_1 = require(\"./options\");\nconst SEMICOLON = ';';\nfunction movePosition(context, count) {\n if (context.options.returnRichInfo) {\n let { source, position, line, column, streamPosition } = context;\n while (count > 0) {\n if (source[position] == '\\n') {\n line += 1;\n column = 0;\n }\n else {\n column += 1;\n }\n position += 1;\n streamPosition += 1;\n count -= 1;\n }\n context.position = position;\n context.streamPosition = streamPosition;\n context.line = line;\n context.column = column;\n }\n else {\n context.position += count;\n }\n}\nfunction isStringEnd(s, pos, endch, escapech) {\n if (!escapech) {\n return s[pos] == endch;\n }\n if (endch == escapech) {\n return s[pos] == endch && s[pos + 1] != endch;\n }\n else {\n return s[pos] == endch && s[pos - 1] != escapech;\n }\n}\nconst WHITESPACE_TOKEN = {\n type: 'whitespace',\n length: 1,\n};\nconst EOLN_TOKEN = {\n type: 'eoln',\n length: 1,\n};\nconst DATA_TOKEN = {\n type: 'data',\n length: 1,\n};\nfunction scanDollarQuotedString(context) {\n if (!context.options.allowDollarDollarString)\n return null;\n let pos = context.position;\n const s = context.source;\n const match = /^(\\$[a-zA-Z0-9_]*\\$)/.exec(s.slice(pos));\n if (!match)\n return null;\n const label = match[1];\n pos += label.length;\n while (pos < context.end) {\n if (s.slice(pos).startsWith(label)) {\n return {\n type: 'string',\n length: pos + label.length - context.position,\n };\n }\n pos++;\n }\n return null;\n}\nfunction scanToken(context) {\n let pos = context.position;\n const s = context.source;\n const ch = s[pos];\n if (context.options.stringsBegins.includes(ch)) {\n pos++;\n const endch = context.options.stringsEnds[ch];\n const escapech = context.options.stringEscapes[ch];\n while (pos < context.end && !isStringEnd(s, pos, endch, escapech)) {\n if (endch == escapech && s[pos] == endch && s[pos + 1] == endch) {\n pos += 2;\n }\n else {\n pos++;\n }\n }\n return {\n type: 'string',\n length: pos - context.position + 1,\n };\n }\n if (context.currentDelimiter && s.slice(pos).startsWith(context.currentDelimiter)) {\n return {\n type: 'delimiter',\n length: context.currentDelimiter.length,\n };\n }\n if (ch == ' ' || ch == '\\t' || ch == '\\r') {\n return WHITESPACE_TOKEN;\n }\n if (ch == '\\n') {\n return EOLN_TOKEN;\n }\n if (context.options.doubleDashComments && ch == '-' && s[pos + 1] == '-') {\n while (pos < context.end && s[pos] != '\\n')\n pos++;\n return {\n type: 'comment',\n length: pos - context.position,\n };\n }\n if (context.options.multilineComments && ch == '/' && s[pos + 1] == '*') {\n pos += 2;\n while (pos < context.end) {\n if (s[pos] == '*' && s[pos + 1] == '/')\n break;\n pos++;\n }\n return {\n type: 'comment',\n length: pos - context.position + 2,\n };\n }\n if (context.options.allowCustomDelimiter && !context.wasDataOnLine) {\n const m = s.slice(pos).match(/^DELIMITER[ \\t]+([^\\n]+)/i);\n if (m) {\n return {\n type: 'set_delimiter',\n value: m[1].trim(),\n length: m[0].length,\n };\n }\n }\n if (context.options.allowGoDelimiter && !context.wasDataOnLine) {\n const m = s.slice(pos).match(/^GO[\\t\\r ]*(\\n|$)/i);\n if (m) {\n return {\n type: 'go_delimiter',\n length: m[0].length - 1,\n };\n }\n }\n const dollarString = scanDollarQuotedString(context);\n if (dollarString)\n return dollarString;\n return DATA_TOKEN;\n}\nfunction pushQuery(context) {\n const sql = (context.commandPart || '') + context.source.slice(context.currentCommandStart, context.position);\n const trimmed = sql.trim();\n if (trimmed) {\n if (context.options.returnRichInfo) {\n context.pushOutput(countTrimmedPositions(sql, {\n text: trimmed,\n start: {\n position: context.commandStartPosition,\n line: context.commandStartLine,\n column: context.commandStartColumn,\n },\n end: {\n position: context.streamPosition,\n line: context.line,\n column: context.column,\n },\n }));\n }\n else {\n context.pushOutput(trimmed);\n }\n }\n}\nfunction countTrimmedPositions(full, positions) {\n const startIndex = full.indexOf(positions.text);\n const trimStart = Object.assign({}, positions.start);\n for (let i = 0; i < startIndex; i += 1) {\n if (full[i] == '\\n') {\n trimStart.position += 1;\n trimStart.line += 1;\n trimStart.column = 0;\n }\n else {\n trimStart.position += 1;\n trimStart.column += 1;\n }\n }\n return Object.assign(Object.assign({}, positions), { trimStart, trimEnd: positions.end });\n}\nfunction markStartCommand(context) {\n if (context.options.returnRichInfo) {\n context.commandStartPosition = context.streamPosition;\n context.commandStartLine = context.line;\n context.commandStartColumn = context.column;\n }\n}\nfunction splitByLines(context) {\n while (context.position < context.end) {\n if (context.source[context.position] == '\\n') {\n pushQuery(context);\n context.commandPart = '';\n movePosition(context, 1);\n context.currentCommandStart = context.position;\n markStartCommand(context);\n }\n else {\n movePosition(context, 1);\n }\n }\n if (context.end > context.currentCommandStart) {\n context.commandPart += context.source.slice(context.currentCommandStart, context.position);\n }\n}\nfunction splitQueryLine(context) {\n if (context.options.splitByLines) {\n splitByLines(context);\n return;\n }\n while (context.position < context.end) {\n const token = scanToken(context);\n if (!token) {\n // nothing special, move forward\n movePosition(context, 1);\n continue;\n }\n switch (token.type) {\n case 'string':\n movePosition(context, token.length);\n context.wasDataOnLine = true;\n break;\n case 'comment':\n movePosition(context, token.length);\n context.wasDataOnLine = true;\n break;\n case 'eoln':\n movePosition(context, token.length);\n context.wasDataOnLine = false;\n break;\n case 'data':\n movePosition(context, token.length);\n context.wasDataOnLine = true;\n break;\n case 'whitespace':\n movePosition(context, token.length);\n break;\n case 'set_delimiter':\n pushQuery(context);\n context.commandPart = '';\n context.currentDelimiter = token.value;\n movePosition(context, token.length);\n context.currentCommandStart = context.position;\n markStartCommand(context);\n break;\n case 'go_delimiter':\n pushQuery(context);\n context.commandPart = '';\n movePosition(context, token.length);\n context.currentCommandStart = context.position;\n markStartCommand(context);\n break;\n case 'delimiter':\n pushQuery(context);\n context.commandPart = '';\n movePosition(context, token.length);\n context.currentCommandStart = context.position;\n markStartCommand(context);\n break;\n }\n }\n if (context.end > context.currentCommandStart) {\n context.commandPart += context.source.slice(context.currentCommandStart, context.position);\n }\n}\nexports.splitQueryLine = splitQueryLine;\nfunction getInitialDelimiter(options) {\n return (options === null || options === void 0 ? void 0 : options.allowSemicolon) === false ? null : SEMICOLON;\n}\nexports.getInitialDelimiter = getInitialDelimiter;\nfunction finishSplitStream(context) {\n const trimmed = context.commandPart.trim();\n if (trimmed) {\n if (context.options.returnRichInfo) {\n context.pushOutput(countTrimmedPositions(context.commandPart, {\n text: trimmed,\n start: {\n position: context.commandStartPosition,\n line: context.commandStartLine,\n column: context.commandStartColumn,\n },\n end: {\n position: context.streamPosition,\n line: context.line,\n column: context.column,\n },\n }));\n }\n else {\n context.pushOutput(trimmed);\n }\n }\n}\nexports.finishSplitStream = finishSplitStream;\nfunction splitQuery(sql, options = null) {\n var _a;\n const usedOptions = Object.assign(Object.assign({}, options_1.defaultSplitterOptions), options);\n if (usedOptions.noSplit) {\n if (usedOptions.returnRichInfo) {\n const lines = sql.split('\\n');\n return [\n {\n text: sql,\n start: {\n position: 0,\n line: 0,\n column: 0,\n },\n end: {\n position: sql.length,\n line: lines.length,\n column: ((_a = lines[lines.length - 1]) === null || _a === void 0 ? void 0 : _a.length) || 0,\n },\n },\n ];\n }\n return [sql];\n }\n const output = [];\n const context = {\n source: sql,\n end: sql.length,\n currentDelimiter: getInitialDelimiter(options),\n position: 0,\n column: 0,\n line: 0,\n currentCommandStart: 0,\n commandStartLine: 0,\n commandStartColumn: 0,\n commandStartPosition: 0,\n streamPosition: 0,\n pushOutput: cmd => output.push(cmd),\n wasDataOnLine: false,\n options: usedOptions,\n commandPart: '',\n };\n splitQueryLine(context);\n finishSplitStream(context);\n return output;\n}\nexports.splitQuery = splitQuery;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitQuery = void 0;\nvar splitQuery_1 = require(\"./splitQuery\");\nObject.defineProperty(exports, \"splitQuery\", { enumerable: true, get: function () { return splitQuery_1.splitQuery; } });\n__exportStar(require(\"./options\"), exports);\n","import { splitQuery } from 'dbgate-query-splitter';\n\nonmessage = e => {\n const result = splitQuery(e.data.text, e.data.options);\n postMessage(result);\n};\n"],"names":["Object","defineProperty","value","exports","stringsBegins","stringsEnds","'","stringEscapes","allowSemicolon","allowCustomDelimiter","allowGoDelimiter","allowDollarDollarString","noSplit","doubleDashComments","multilineComments","javaScriptComments","returnRichInfo","splitByLines","assign","defaultSplitterOptions","`","[","\"","splitQuery_1","options_1","require$$0","movePosition","context","count","options","source","position","line","column","streamPosition","isStringEnd","s","pos","endch","escapech","WHITESPACE_TOKEN","type","length","EOLN_TOKEN","DATA_TOKEN","scanToken","ch","includes","end","currentDelimiter","slice","startsWith","wasDataOnLine","m","match","trim","dollarString","exec","label","scanDollarQuotedString","pushQuery","sql","commandPart","currentCommandStart","trimmed","pushOutput","countTrimmedPositions","text","start","commandStartPosition","commandStartLine","commandStartColumn","full","positions","startIndex","indexOf","trimStart","i","trimEnd","markStartCommand","splitQueryLine","token","getInitialDelimiter","finishSplitStream","_a","usedOptions","lines","split","output","cmd","push","__createBinding","this","create","o","k","k2","undefined","enumerable","get","__exportStar","p","prototype","hasOwnProperty","call","splitQuery","require$$1","onmessage","e","result","data","postMessage"],"mappings":"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"}
|