@rechat/squel
Version:
SQL query string builder
1 lines • 48.8 kB
JavaScript
/*! squel | https://github.com/hiddentao/squel | BSD license */!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.squel=e()}(this,function(){"use strict";function a(t,e,n){return(a="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=h(t)););return t}(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&n(t,e)}function n(t,e){return(n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function u(r){var i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=h(r);if(i){var n=h(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&("object"===c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined")}return f(t)}(this,t)}}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function v(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function p(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function y(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){o=!0,a=t},f:function(){try{l||null==n.return||n.return()}finally{if(o)throw a}}}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function _(t,e){return t.length?t+e:t}function g(n){for(var t=arguments.length,e=new Array(1<t?t-1:0),r=1;r<t;r++)e[r-1]=arguments[r];if(n&&e){var i,a=y(e);try{var l=function(){var e=i.value;"object"===c(e)&&Object.getOwnPropertyNames(e).forEach(function(t){n[t]=e[t]})};for(a.s();!(i=a.n()).done;)l()}catch(t){a.e(t)}finally{a.f()}}return n}function l(t){return t&&t.constructor.prototype===Object.prototype}function m(t){return t&&t.constructor.prototype===Array.prototype}function k(t,e,n){var r=c(e);if("function"!==r&&"string"!==r)throw new Error("type must be a class constructor or string");if("function"!=typeof n)throw new Error("handler must be a function");var i,a=y(t);try{for(a.s();!(i=a.n()).done;){var l=i.value;if(l.type===e)return void(l.handler=n)}}catch(t){a.e(t)}finally{a.f()}t.push({type:e,handler:n})}function B(t,e,n){return i(t,e)||i(t,n)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(c(t)===r.type||"string"!=typeof r.type&&t instanceof r.type)return r.handler}}function d(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,d={isSquelBuilder:function(t){return t&&!!t._toParamString}},s=function(t){return!d.isSquelBuilder(t)||!t.options.rawNesting};d.DefaultQueryBuilderOptions={autoQuoteTableNames:!1,autoQuoteFieldNames:!1,autoQuoteAliasNames:!0,useAsForTableAliasNames:!1,nameQuoteCharacter:"`",tableAliasQuoteCharacter:"`",fieldAliasQuoteCharacter:'"',valueHandlers:[],parameterCharacter:"?",numberedParameters:!1,numberedParametersPrefix:"$",numberedParametersStartAt:1,replaceSingleQuotes:!1,singleQuoteReplacement:"''",separator:" ",stringFormatter:null,rawNesting:!1},d.globalValueHandlers=[],d.registerValueHandler=function(t,e){k(d.globalValueHandlers,t,e)},d.Cloneable=function(){function t(){v(this,t)}return p(t,[{key:"clone",value:function(){return g(new this.constructor,function e(n){if(!n)return n;if("function"==typeof n.clone)return n.clone();if(l(n)||m(n)){var r=new n.constructor;return Object.getOwnPropertyNames(n).forEach(function(t){"function"!=typeof n[t]&&(r[t]=e(n[t]))}),r}return JSON.parse(JSON.stringify(n))}(g({},this)))}}]),t}(),d.BaseBuilder=function(t){o(i,d.Cloneable);var r=u(i);function i(t){var e;v(this,i),e=r.call(this);var n=JSON.parse(JSON.stringify(d.DefaultQueryBuilderOptions));return["stringFormatter"].forEach(function(t){n[t]=d.DefaultQueryBuilderOptions[t]}),e.options=g({},n,t),e}return p(i,[{key:"registerValueHandler",value:function(t,e){return k(this.options.valueHandlers,t,e),this}},{key:"_sanitizeExpression",value:function(t){if(!d.isSquelBuilder(t)&&"string"!=typeof t)throw new Error("expression must be a string or builder instance");return t}},{key:"_sanitizeName",value:function(t,e){if("string"!=typeof t)throw new Error("".concat(e," must be a string"));return t}},{key:"_sanitizeField",value:function(t){return d.isSquelBuilder(t)||(t=this._sanitizeName(t,"field name")),t}},{key:"_sanitizeBaseBuilder",value:function(t){if(d.isSquelBuilder(t))return t;throw new Error("must be a builder instance")}},{key:"_sanitizeTable",value:function(t){if("string"!=typeof t)try{t=this._sanitizeBaseBuilder(t)}catch(t){throw new Error("table name must be a string or a builder")}else t=this._sanitizeName(t,"table");return t}},{key:"_sanitizeTableAlias",value:function(t){return this._sanitizeName(t,"table alias")}},{key:"_sanitizeFieldAlias",value:function(t){return this._sanitizeName(t,"field alias")}},{key:"_sanitizeLimitOffset",value:function(t){if((t=parseInt(t))<0||isNaN(t))throw new Error("limit/offset must be >= 0");return t}},{key:"_sanitizeValue",value:function(t){var e=c(t);if(null===t);else if("string"===e||"number"===e||"boolean"===e);else if(d.isSquelBuilder(t));else{if(!!!B(t,this.options.valueHandlers,d.globalValueHandlers))throw new Error("field value must be a string, number, boolean, null or one of the registered custom value types")}return t}},{key:"_escapeValue",value:function(t){return this.options.replaceSingleQuotes&&t?t.replace(/\'/g,this.options.singleQuoteReplacement):t}},{key:"_formatTableName",value:function(t){if(this.options.autoQuoteTableNames){var e=this.options.nameQuoteCharacter;t="".concat(e).concat(t).concat(e)}return t}},{key:"_formatFieldAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.fieldAliasQuoteCharacter;t="".concat(e).concat(t).concat(e)}return t}},{key:"_formatTableAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.tableAliasQuoteCharacter;t="".concat(e).concat(t).concat(e)}return this.options.useAsForTableAliasNames?"AS ".concat(t):t}},{key:"_formatFieldName",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(this.options.autoQuoteFieldNames){var n=this.options.nameQuoteCharacter;t=e.ignorePeriodsForFieldNameQuotes?"".concat(n).concat(t).concat(n):t.split(".").map(function(t){return"*"===t?t:"".concat(n).concat(t).concat(n)}).join(".")}return t}},{key:"_formatCustomValue",value:function(t,e,n){var r=B(t,this.options.valueHandlers,d.globalValueHandlers);return r&&(t=r(t,e,n))&&t.rawNesting?{formatted:!0,rawNesting:!0,value:t.value}:{formatted:!!r,value:t}}},{key:"_formatValueForParamArray",value:function(t){var e=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return m(t)?t.map(function(t){return e._formatValueForParamArray(t,n)}):this._formatCustomValue(t,!0,n).value}},{key:"_formatValueForQueryString",value:function(t){var e=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=this._formatCustomValue(t,!1,n),i=r.rawNesting,a=r.formatted,l=r.value;if(a)return i?l:this._applyNestingFormatting(l,s(t));if(m(l))l=l.map(function(t){return e._formatValueForQueryString(t)}),l=this._applyNestingFormatting(l.join(", "),s(l));else{var o=c(l);if(null===l)l="NULL";else if("boolean"===o)l=l?"TRUE":"FALSE";else if(d.isSquelBuilder(l))l=this._applyNestingFormatting(l.toString(),s(l));else if("number"!==o){if("string"===o&&this.options.stringFormatter)return this.options.stringFormatter(l);if(n.dontQuote)l="".concat(l);else{var u=this._escapeValue(l);l="'".concat(u,"'")}}}return l}},{key:"_applyNestingFormatting",value:function(t){var e=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];if(t&&"string"==typeof t&&e&&!this.options.rawNesting){var n="("===t.charAt(0)&&")"===t.charAt(t.length-1);if(n)for(var r=0,i=1;t.length-1>++r;){var a=t.charAt(r);if("("===a)i++;else if(")"===a&&--i<1){n=!1;break}}n||(t="(".concat(t,")"))}return t}},{key:"_buildString",value:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},r=n.nested,i=n.buildParameterized,a=n.formattingOptions;e=e||[],t=t||"";for(var l="",o=-1,u=[],s=this.options.parameterCharacter,c=0;t.length>c;)if(t.substr(c,s.length)===s){var f=e[++o];if(i)if(d.isSquelBuilder(f)){var h=f._toParamString({buildParameterized:i,nested:!0});l+=h.text,h.values.forEach(function(t){return u.push(t)})}else if(m(f=this._formatValueForParamArray(f,a))){var v=f.map(function(){return s}).join(", ");l+="(".concat(v,")"),f.forEach(function(t){return u.push(t)})}else l+=s,u.push(f);else l+=this._formatValueForQueryString(f,a);c+=s.length}else l+=t.charAt(c),c++;return{text:this._applyNestingFormatting(l,!!r),values:u}}},{key:"_buildManyStrings",value:function(t,e){for(var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},r=[],i=[],a=0;t.length>a;++a){var l=t[a],o=e[a],u=this._buildString(l,o,{buildParameterized:n.buildParameterized,nested:!1}),s=u.text,c=u.values;r.push(s),c.forEach(function(t){return i.push(t)})}return{text:(r=r.join(this.options.separator)).length?this._applyNestingFormatting(r,!!n.nested):"",values:i}}},{key:"_toParamString",value:function(t){throw new Error("Not yet implemented")}},{key:"toString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this._toParamString(t).text}},{key:"toParam",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this._toParamString(g({},t,{buildParameterized:!0}))}}]),i}(),d.Expression=function(t){o(r,d.BaseBuilder);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._nodes=[],e}return p(r,[{key:"and",value:function(t){t=this._sanitizeExpression(t);for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return this._nodes.push({type:"AND",expr:t,para:n}),this}},{key:"or",value:function(t){t=this._sanitizeExpression(t);for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return this._nodes.push({type:"OR",expr:t,para:n}),this}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=[],r=[],i=y(this._nodes);try{for(i.s();!(t=i.n()).done;){var a=t.value,l=a.type,o=a.expr,u=a.para,s=d.isSquelBuilder(o)?o._toParamString({buildParameterized:e.buildParameterized,nested:!0}):this._buildString(o,u,{buildParameterized:e.buildParameterized}),c=s.text,f=s.values;n.length&&n.push(l),n.push(c),f.forEach(function(t){return r.push(t)})}}catch(t){i.e(t)}finally{i.f()}return n=n.join(" "),{text:this._applyNestingFormatting(n,!!e.nested),values:r}}}]),r}(),d.Case=function(t){o(i,d.BaseBuilder);var r=u(i);function i(t){var e,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return v(this,i),e=r.call(this,n),l(t)&&(n=t,t=null),t&&(e._fieldName=e._sanitizeField(t)),e.options=g({},d.DefaultQueryBuilderOptions,n),e._cases=[],e._elseValue=null,e}return p(i,[{key:"when",value:function(t){for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return this._cases.unshift({expression:t,values:n||[]}),this}},{key:"then",value:function(t){if(0==this._cases.length)throw new Error("when() needs to be called first");return this._cases[0].result=t,this}},{key:"else",value:function(t){return this._elseValue=t,this}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n="",r=[],i=y(this._cases);try{for(i.s();!(t=i.n()).done;){var a=t.value,l=a.expression,o=a.values,u=a.result;n=_(n," ");var s=this._buildString(l,o,{buildParameterized:e.buildParameterized,nested:!0});n+="WHEN ".concat(s.text," THEN ").concat(this._formatValueForQueryString(u)),s.values.forEach(function(t){return r.push(t)})}}catch(t){i.e(t)}finally{i.f()}return{text:n=n.length?(n+=" ELSE ".concat(this._formatValueForQueryString(this._elseValue)," END"),this._fieldName&&(n="".concat(this._fieldName," ").concat(n)),"CASE ".concat(n)):this._formatValueForQueryString(this._elseValue),values:r}}}]),i}(),d.Block=function(t){o(n,d.BaseBuilder);var e=u(n);function n(t){return v(this,n),e.call(this,t)}return p(n,[{key:"exposedMethods",value:function(){for(var e={},n=this;n;)Object.getOwnPropertyNames(n).forEach(function(t){"constructor"===t||"function"!=typeof n[t]||"_"===t.charAt(0)||d.Block.prototype[t]||(e[t]=n[t])}),n=Object.getPrototypeOf(n);return e}}]),n}(),d.StringBlock=function(t){o(i,d.Block);var r=u(i);function i(t,e){var n;return v(this,i),(n=r.call(this,t))._str=e,n}return p(i,[{key:"_toParamString",value:function(){0<arguments.length&&void 0!==arguments[0]&&arguments[0];return{text:this._str,values:[]}}}]),i}(),d.FunctionBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._strings=[],e._values=[],e}return p(r,[{key:"function",value:function(t){this._strings.push(t);for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];this._values.push(n)}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this._buildManyStrings(this._strings,this._values,t)}}]),r}(),d.registerValueHandler(d.FunctionBlock,function(t){return 1<arguments.length&&void 0!==arguments[1]&&arguments[1]?t.toParam():t.toString()}),d.AbstractTableBlock=function(t){o(i,d.Block);var r=u(i);function i(t,e){var n;return v(this,i),(n=r.call(this,t))._tables=[],n}return p(i,[{key:"_table",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;e=e?this._sanitizeTableAlias(e):e,t=this._sanitizeTable(t),this.options.singleTable&&(this._tables=[]),this._tables.push({table:t,alias:e})}},{key:"_hasTable",value:function(){return 0<this._tables.length}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e="",n=[];if(this._hasTable()){var r,i=y(this._tables);try{for(i.s();!(r=i.n()).done;){var a=r.value,l=a.table,o=a.alias;e=_(e,", ");var u=void 0;if(d.isSquelBuilder(l)){var s=l._toParamString({buildParameterized:t.buildParameterized,nested:!0}),c=s.text,f=s.values;u=c,f.forEach(function(t){return n.push(t)})}else u=this._formatTableName(l);o&&(u+=" ".concat(this._formatTableAlias(o))),e+=u}}catch(t){i.e(t)}finally{i.f()}this.options.prefix&&(e="".concat(this.options.prefix," ").concat(e))}return{text:e,values:n}}}]),i}(),d.TargetTableBlock=function(t){o(n,d.AbstractTableBlock);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"target",value:function(t){this._table(t)}}]),n}(),d.UpdateTableBlock=function(t){o(n,d.AbstractTableBlock);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"table",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;this._table(t,e)}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(!this._hasTable())throw new Error("table() needs to be called");return a(h(n.prototype),"_toParamString",this).call(this,t)}}]),n}(),d.FromTableBlock=function(t){o(n,d.AbstractTableBlock);var e=u(n);function n(t){return v(this,n),e.call(this,g({},t,{prefix:"FROM"}))}return p(n,[{key:"from",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;this._table(t,e)}}]),n}(),d.IntoTableBlock=function(t){o(n,d.AbstractTableBlock);var e=u(n);function n(t){return v(this,n),e.call(this,g({},t,{prefix:"INTO",singleTable:!0}))}return p(n,[{key:"into",value:function(t){this._table(t)}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(!this._hasTable())throw new Error("into() needs to be called");return a(h(n.prototype),"_toParamString",this).call(this,t)}}]),n}(),d.GetFieldBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._fields=[],e}return p(r,[{key:"fields",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(m(t)){var n,r=y(t);try{for(r.s();!(n=r.n()).done;){var i=n.value;this.field(i,null,e)}}catch(t){r.e(t)}finally{r.f()}}else for(var a in t){var l=t[a];this.field(a,l,e)}}},{key:"field",value:function(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(n=n?this._sanitizeFieldAlias(n):n,e=this._sanitizeField(e),this._fields.filter(function(t){return t.name===e&&t.alias===n}).length)return this;this._fields.push({name:e,alias:n,options:t})}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=e.queryBuilder,r=e.buildParameterized,i="",a=[],l=y(this._fields);try{for(l.s();!(t=l.n()).done;){var o=t.value;i=_(i,", ");var u=o.name,s=o.alias,c=o.options;if("string"==typeof u)i+=this._formatFieldName(u,c);else{var f=u._toParamString({nested:!0,buildParameterized:r});i+=f.text,f.values.forEach(function(t){return a.push(t)})}s&&(i+=" AS ".concat(this._formatFieldAlias(s)))}}catch(t){l.e(t)}finally{l.f()}if(!i.length){var h=n&&n.getBlock(d.FromTableBlock);h&&h._hasTable()&&(i="*")}return{text:i,values:a}}}]),r}(),d.AbstractSetFieldBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._reset(),e}return p(r,[{key:"_reset",value:function(){this._fields=[],this._values=[[]],this._valueOptions=[[]]}},{key:"_set",value:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(1<this._values.length)throw new Error("Cannot set multiple rows of fields this way.");void 0!==e&&(e=this._sanitizeValue(e)),t=this._sanitizeField(t);var r=this._fields.indexOf(t);-1===r&&(this._fields.push(t),r=this._fields.length-1),this._values[0][r]=e,this._valueOptions[0][r]=n}},{key:"_setFields",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if("object"!==c(t))throw new Error("Expected an object but got "+c(t));for(var n in t)this._set(n,t[n],e)}},{key:"_setFieldsRows",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(!m(t))throw new Error("Expected an array of objects but got "+c(t));this._reset();for(var n=0;t.length>n;++n){var r=t[n];for(var i in r){var a=r[i];i=this._sanitizeField(i),a=this._sanitizeValue(a);var l=this._fields.indexOf(i);if(0<n&&-1===l)throw new Error("All fields in subsequent rows must match the fields in the first row");-1===l&&(this._fields.push(i),l=this._fields.length-1),m(this._values[n])||(this._values[n]=[],this._valueOptions[n]=[]),this._values[n][l]=a,this._valueOptions[n][l]=e}}}}]),r}(),d.SetFieldBlock=function(t){o(n,d.AbstractSetFieldBlock);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"set",value:function(t,e,n){this._set(t,e,n)}},{key:"setFields",value:function(t,e){this._setFields(t,e)}},{key:"_toParamString",value:function(){var t=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).buildParameterized;if(this._fields.length<=0)throw new Error("set() needs to be called");for(var e="",n=[],r=0;r<this._fields.length;++r){e=_(e,", ");var i=this._formatFieldName(this._fields[r]),a=this._values[0][r];i.indexOf("=")<0&&(i="".concat(i," = ").concat(this.options.parameterCharacter));var l=this._buildString(i,[a],{buildParameterized:t,formattingOptions:this._valueOptions[0][r]});e+=l.text,l.values.forEach(function(t){return n.push(t)})}return{text:"SET ".concat(e),values:n}}}]),n}(),d.InsertFieldValueBlock=function(t){o(n,d.AbstractSetFieldBlock);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"set",value:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};this._set(t,e,n)}},{key:"setFields",value:function(t,e){this._setFields(t,e)}},{key:"setFieldsRows",value:function(t,e){this._setFieldsRows(t,e)}},{key:"_toParamString",value:function(){for(var e=this,t=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).buildParameterized,n=this._fields.map(function(t){return e._formatFieldName(t)}).join(", "),r=[],i=[],a=0;a<this._values.length;++a){r[a]="";for(var l=0;l<this._values[a].length;++l){var o=this._buildString(this.options.parameterCharacter,[this._values[a][l]],{buildParameterized:t,formattingOptions:this._valueOptions[a][l]});o.values.forEach(function(t){return i.push(t)}),r[a]=_(r[a],", "),r[a]+=o.text}}return{text:n.length?"(".concat(n,") VALUES (").concat(r.join("), ("),")"):"",values:i}}}]),n}(),d.InsertFieldsFromQueryBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._fields=[],e._query=null,e}return p(r,[{key:"fromQuery",value:function(t,e){var n=this;this._fields=t.map(function(t){return n._sanitizeField(t)}),this._query=this._sanitizeBaseBuilder(e)}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e="",n=[];if(this._fields.length&&this._query){var r=this._query._toParamString({buildParameterized:t.buildParameterized,nested:!0}),i=r.text,a=r.values;e="(".concat(this._fields.join(", "),") ").concat(this._applyNestingFormatting(i)),n=a}return{text:e,values:n}}}]),r}(),d.DistinctBlock=function(t){o(n,d.Block);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"distinct",value:function(){this._useDistinct=!0}},{key:"_toParamString",value:function(){return{text:this._useDistinct?"DISTINCT":"",values:[]}}}]),n}(),d.GroupByBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._groups=[],e}return p(r,[{key:"group",value:function(t){this._groups.push(this._sanitizeField(t))}},{key:"_toParamString",value:function(){0<arguments.length&&void 0!==arguments[0]&&arguments[0];return{text:this._groups.length?"GROUP BY ".concat(this._groups.join(", ")):"",values:[]}}}]),r}(),d.AbstractVerbSingleValueBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._value=null,e}return p(r,[{key:"_setValue",value:function(t){this._value=null!==t?this._sanitizeLimitOffset(t):t}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=null!==this._value?"".concat(this.options.verb," ").concat(this.options.parameterCharacter):"",n=null!==this._value?[this._value]:[];return this._buildString(e,n,t)}}]),r}(),d.OffsetBlock=function(t){o(n,d.AbstractVerbSingleValueBlock);var e=u(n);function n(t){return v(this,n),e.call(this,g({},t,{verb:"OFFSET"}))}return p(n,[{key:"offset",value:function(t){this._setValue(t)}}]),n}(),d.LimitBlock=function(t){o(n,d.AbstractVerbSingleValueBlock);var e=u(n);function n(t){return v(this,n),e.call(this,g({},t,{verb:"LIMIT"}))}return p(n,[{key:"limit",value:function(t){this._setValue(t)}}]),n}(),d.AbstractConditionBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._conditions=[],e}return p(r,[{key:"_condition",value:function(t){t=this._sanitizeExpression(t);for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];this._conditions.push({expr:t,values:n||[]})}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=[],r=[],i=y(this._conditions);try{for(i.s();!(t=i.n()).done;){var a=t.value,l=a.expr,o=a.values,u=d.isSquelBuilder(l)?l._toParamString({buildParameterized:e.buildParameterized}):this._buildString(l,o,{buildParameterized:e.buildParameterized});u.text.length&&n.push(u.text),u.values.forEach(function(t){return r.push(t)})}}catch(t){i.e(t)}finally{i.f()}return n.length&&(n=n.join(") AND (")),{text:n.length?"".concat(this.options.verb," (").concat(n,")"):"",values:r}}}]),r}(),d.WhereBlock=function(t){o(n,d.AbstractConditionBlock);var e=u(n);function n(t){return v(this,n),e.call(this,g({},t,{verb:"WHERE"}))}return p(n,[{key:"where",value:function(t){for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];this._condition.apply(this,[t].concat(n))}}]),n}(),d.HavingBlock=function(t){o(n,d.AbstractConditionBlock);var e=u(n);function n(t){return v(this,n),e.call(this,g({},t,{verb:"HAVING"}))}return p(n,[{key:"having",value:function(t){for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];this._condition.apply(this,[t].concat(n))}}]),n}(),d.OrderByBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._orders=[],e}return p(r,[{key:"order",value:function(t,e){t=this._sanitizeField(t),"string"!=typeof e&&(void 0===e?e="ASC":null!==e&&(e=e?"ASC":"DESC"));for(var n=arguments.length,r=new Array(2<n?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];this._orders.push({field:t,dir:e,values:r||[],nullsLast:null})}},{key:"orderNullsLast",value:function(t,e){t=this._sanitizeField(t),"string"!=typeof e&&(void 0===e?e="ASC":null!==e&&(e=e?"ASC":"DESC"));for(var n=arguments.length,r=new Array(2<n?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];this._orders.push({field:t,dir:e,values:r||[],nullsLast:!0})}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n="",r=[],i=y(this._orders);try{for(i.s();!(t=i.n()).done;){var a=t.value,l=a.field,o=a.dir,u=a.values,s=a.nullsLast;n=_(n,", ");var c=this._buildString(l,u,{buildParameterized:e.buildParameterized});n+=c.text,m(c.values)&&c.values.forEach(function(t){return r.push(t)}),null!==o&&(n+=" ".concat(o)),null!==s&&(n+=" NULLS ".concat(s?"LAST":"FIRST"))}}catch(t){i.e(t)}finally{i.f()}return{text:n.length?"ORDER BY ".concat(n):"",values:r}}}]),r}(),d.JoinBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._joins=[],e}return p(r,[{key:"join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"INNER";t=this._sanitizeTable(t,!0),e=e?this._sanitizeTableAlias(e):e,n=n?this._sanitizeExpression(n):n,this._joins.push({type:r,table:t,alias:e,condition:n})}},{key:"left_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"LEFT")}},{key:"right_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"RIGHT")}},{key:"outer_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"OUTER")}},{key:"left_outer_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"LEFT OUTER")}},{key:"full_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"FULL")}},{key:"cross_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"CROSS")}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n="",r=[],i=y(this._joins);try{for(i.s();!(t=i.n()).done;){var a=t.value,l=a.type,o=a.table,u=a.alias,s=a.condition;n=_(n,this.options.separator);var c=void 0;if(d.isSquelBuilder(o)){var f=o._toParamString({buildParameterized:e.buildParameterized,nested:!0});f.values.forEach(function(t){return r.push(t)}),c=f.text}else c=this._formatTableName(o);if(n+="".concat(l," JOIN ").concat(c),u&&(n+=" ".concat(this._formatTableAlias(u))),s){n+=" ON ";var h=void 0;h=d.isSquelBuilder(s)?s._toParamString({buildParameterized:e.buildParameterized}):this._buildString(s,[],{buildParameterized:e.buildParameterized}),n+=this._applyNestingFormatting(h.text),h.values.forEach(function(t){return r.push(t)})}}}catch(t){i.e(t)}finally{i.f()}return{text:n,values:r}}}]),r}(),d.LockBlock=function(t){o(n,d.Block);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"locking",value:function(t){this.lock_level=t}},{key:"_toParamString",value:function(){return{text:this.lock_level?this.lock_level:"",values:[]}}}]),n}(),d.SetOpBlock=function(t){o(r,d.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._sets=[],e}return p(r,[{key:"_add",value:function(t,e){t=this._sanitizeTable(t),this._sets.push({type:e,table:t})}},{key:"union",value:function(t){this._add(t,"UNION")}},{key:"union_all",value:function(t){this._add(t,"UNION ALL")}},{key:"intersect",value:function(t){this._add(t,"INTERSECT")}},{key:"intersect_all",value:function(t){this._add(t,"INTERSECT ALL")}},{key:"except",value:function(t){this._add(t,"EXCEPT")}},{key:"except_all",value:function(t){this._add(t,"EXCEPT ALL")}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n="",r=[],i=y(this._sets);try{for(i.s();!(t=i.n()).done;){var a=t.value,l=a.type,o=a.table;n=_(n,this.options.separator);var u=void 0;if(o instanceof d.BaseBuilder){var s=o._toParamString({buildParameterized:e.buildParameterized,nested:!0});u=s.text,s.values.forEach(function(t){return r.push(t)})}else n=this._formatTableName(o);n+="".concat(l," ").concat(u)}}catch(t){i.e(t)}finally{i.f()}return{text:n,values:r}}}]),r}(),d.QueryBuilder=function(t){o(c,d.BaseBuilder);var s=u(c);function c(t,e){var a;v(this,c),(a=s.call(this,t)).blocks=e||[];var n,r=y(a.blocks);try{for(r.s();!(n=r.n()).done;){var i=n.value,l=i.exposedMethods();for(var o in l){var u=l[o];if(void 0!==a[o])throw new Error("Builder already has a builder method called: ".concat(o));!function(r,t,i){a[o]=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return i.call.apply(i,[r].concat(e)),f(a)}}(i,0,u)}}}catch(t){r.e(t)}finally{r.f()}return a}return p(c,[{key:"registerValueHandler",value:function(t,e){var n,r=y(this.blocks);try{for(r.s();!(n=r.n()).done;){n.value.registerValueHandler(t,e)}}catch(t){r.e(t)}finally{r.f()}return a(h(c.prototype),"registerValueHandler",this).call(this,t,e),this}},{key:"updateOptions",value:function(t){this.options=g({},this.options,t);var e,n=y(this.blocks);try{for(n.s();!(e=n.n()).done;){var r=e.value;r.options=g({},r.options,t)}}catch(t){n.e(t)}finally{n.f()}}},{key:"_toParamString",value:function(){var e=this,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};n=g({},this.options,n);var t=this.blocks.map(function(t){return t._toParamString({buildParameterized:n.buildParameterized,queryBuilder:e})}),r=t.map(function(t){return t.text}),i=t.map(function(t){return t.values}),a=r.filter(function(t){return 0<t.length}).join(n.separator),l=[];if(i.forEach(function(t){return t.forEach(function(t){return l.push(t)})}),!n.nested&&n.numberedParameters){var o=void 0!==n.numberedParametersStartAt?n.numberedParametersStartAt:1,u=n.parameterCharacter.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");a=a.replace(new RegExp(u,"g"),function(){return"".concat(n.numberedParametersPrefix).concat(o++)})}return{text:this._applyNestingFormatting(a,!!n.nested),values:l}}},{key:"clone",value:function(){var t=this.blocks.map(function(t){return t.clone()});return new this.constructor(this.options,t)}},{key:"getBlock",value:function(e){return this.blocks.filter(function(t){return t instanceof e})[0]}}]),c}(),d.Select=function(t){o(r,d.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new d.StringBlock(t,"SELECT"),new d.FunctionBlock(t),new d.DistinctBlock(t),new d.GetFieldBlock(t),new d.FromTableBlock(t),new d.JoinBlock(t),new d.WhereBlock(t),new d.GroupByBlock(t),new d.HavingBlock(t),new d.OrderByBlock(t),new d.LimitBlock(t),new d.OffsetBlock(t),new d.LockBlock(t),new d.SetOpBlock(t)],n.call(this,t,e)}return r}(),d.Update=function(t){o(r,d.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new d.StringBlock(t,"UPDATE"),new d.UpdateTableBlock(t),new d.SetFieldBlock(t),new d.WhereBlock(t),new d.OrderByBlock(t),new d.LimitBlock(t)],n.call(this,t,e)}return r}(),d.Delete=function(t){o(r,d.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new d.StringBlock(t,"DELETE"),new d.TargetTableBlock(t),new d.FromTableBlock(g({},t,{singleTable:!0})),new d.JoinBlock(t),new d.WhereBlock(t),new d.OrderByBlock(t),new d.LimitBlock(t)],n.call(this,t,e)}return r}(),d.Insert=function(t){o(r,d.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new d.StringBlock(t,"INSERT"),new d.IntoTableBlock(t),new d.InsertFieldValueBlock(t),new d.InsertFieldsFromQueryBlock(t)],n.call(this,t,e)}return r}();var e={VERSION:"5.15.1",flavour:t,expr:function(t){return new d.Expression(t)},case:function(t,e){return new d.Case(t,e)},select:function(t,e){return new d.Select(t,e)},update:function(t,e){return new d.Update(t,e)},insert:function(t,e){return new d.Insert(t,e)},delete:function(t,e){return new d.Delete(t,e)},str:function(){var t=new d.FunctionBlock;return t.function.apply(t,arguments),t},rstr:function(){var t=new d.FunctionBlock({rawNesting:!0});return t.function.apply(t,arguments),t},registerValueHandler:d.registerValueHandler};return e.remove=e.delete,e.cls=d,e}var b=d();return b.flavours={},b.useFlavour=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;if(!t)return b;if(b.flavours[t]instanceof Function){var e=d(t);return b.flavours[t].call(null,e),e.flavours=b.flavours,e.useFlavour=b.useFlavour,e}throw new Error("Flavour not available: ".concat(t))},b.flavours.mssql=function(t){var l=t.cls;l.DefaultQueryBuilderOptions.replaceSingleQuotes=!0,l.DefaultQueryBuilderOptions.autoQuoteAliasNames=!1,l.DefaultQueryBuilderOptions.numberedParametersPrefix="@",t.registerValueHandler(Date,function(t){return"'".concat(t.getUTCFullYear(),"-").concat(t.getUTCMonth()+1,"-").concat(t.getUTCDate()," ").concat(t.getUTCHours(),":").concat(t.getUTCMinutes(),":").concat(t.getUTCSeconds(),"'")}),l.MssqlLimitOffsetTopBlock=function(t){o(n,l.Block);var e=u(n);function n(t){var i;v(this,n),(i=e.call(this,t))._limits=null,i._offsets=null;var a=function(t){t=this._sanitizeLimitOffset(t),this._parent._limits=t};return i.ParentBlock=function(t){o(r,l.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t.options))._parent=t,e}return r}(),i.LimitBlock=function(t){o(r,i.ParentBlock);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t)).limit=a,e}return p(r,[{key:"_toParamString",value:function(){var t="";return this._parent._limits&&this._parent._offsets&&(t="FETCH NEXT ".concat(this._parent._limits," ROWS ONLY")),{text:t,values:[]}}}]),r}(),i.TopBlock=function(t){o(r,i.ParentBlock);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t)).top=a,e}return p(r,[{key:"_toParamString",value:function(){var t="";return this._parent._limits&&!this._parent._offsets&&(t="TOP (".concat(this._parent._limits,")")),{text:t,values:[]}}}]),r}(),i.OffsetBlock=function(t){o(n,i.ParentBlock);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"offset",value:function(t){this._parent._offsets=this._sanitizeLimitOffset(t)}},{key:"_toParamString",value:function(){var t="";return this._parent._offsets&&(t="OFFSET ".concat(this._parent._offsets," ROWS")),{text:t,values:[]}}}]),n}(),i}return p(n,[{key:"LIMIT",value:function(){return new this.LimitBlock(this)}},{key:"TOP",value:function(){return new this.TopBlock(this)}},{key:"OFFSET",value:function(){return new this.OffsetBlock(this)}}]),n}(),l.MssqlUpdateTopBlock=function(t){o(r,l.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._limits=null,e.limit=e.top=function(t){e._limits=e._sanitizeLimitOffset(t)},e}return p(r,[{key:"_toParamString",value:function(){return{text:this._limits?"TOP (".concat(this._limits,")"):"",values:[]}}}]),r}(),l.MssqlInsertFieldValueBlock=function(t){o(i,l.InsertFieldValueBlock);var n=u(i);function i(t){var e;return v(this,i),(e=n.call(this,t))._outputs=[],e}return p(i,[{key:"output",value:function(t){var e=this;"string"==typeof t?this._outputs.push("INSERTED.".concat(this._sanitizeField(t))):t.forEach(function(t){e._outputs.push("INSERTED.".concat(e._sanitizeField(t)))})}},{key:"_toParamString",value:function(t){var e=a(h(i.prototype),"_toParamString",this).call(this,t);if(e.text.length&&0<this._outputs.length){var n="OUTPUT ".concat(this._outputs.join(", ")," "),r=e.text.indexOf("VALUES");e.text=e.text.substr(0,r)+n+e.text.substr(r)}return e}}]),i}(),l.MssqlUpdateDeleteOutputBlock=function(t){o(r,l.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._outputs=[],e}return p(r,[{key:"outputs",value:function(t){for(var e in t)this.output(e,t[e])}},{key:"output",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;t=this._sanitizeField(t),e=e?this._sanitizeFieldAlias(e):e,this._outputs.push({name:this.options.forDelete?"DELETED.".concat(t):"INSERTED.".concat(t),alias:e})}},{key:"_toParamString",value:function(t){var e="";if(this._outputs.length){var n,r=y(this._outputs);try{for(r.s();!(n=r.n()).done;){var i=n.value;e=_(e,", "),e+=i.name,i.alias&&(e+=" AS ".concat(this._formatFieldAlias(i.alias)))}}catch(t){r.e(t)}finally{r.f()}e="OUTPUT ".concat(e)}return{text:e,values:[]}}}]),r}(),l.Select=function(t){o(i,l.QueryBuilder);var r=u(i);function i(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;v(this,i);var n=new l.MssqlLimitOffsetTopBlock(t);return e=e||[new l.StringBlock(t,"SELECT"),new l.DistinctBlock(t),n.TOP(),new l.GetFieldBlock(t),new l.FromTableBlock(t),new l.JoinBlock(t),new l.WhereBlock(t),new l.GroupByBlock(t),new l.OrderByBlock(t),n.OFFSET(),n.LIMIT(),new l.LockBlock(t),new l.SetOpBlock(t)],r.call(this,t,e)}return i}(),l.Update=function(t){o(r,l.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new l.StringBlock(t,"UPDATE"),new l.MssqlUpdateTopBlock(t),new l.UpdateTableBlock(t),new l.SetFieldBlock(t),new l.MssqlUpdateDeleteOutputBlock(t),new l.WhereBlock(t)],n.call(this,t,e)}return r}(),l.Delete=function(t){o(r,l.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new l.StringBlock(t,"DELETE"),new l.TargetTableBlock(t),new l.FromTableBlock(g({},t,{singleTable:!0})),new l.JoinBlock(t),new l.MssqlUpdateDeleteOutputBlock(g({},t,{forDelete:!0})),new l.WhereBlock(t),new l.OrderByBlock(t),new l.LimitBlock(t)],n.call(this,t,e)}return r}(),l.Insert=function(t){o(r,l.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new l.StringBlock(t,"INSERT"),new l.IntoTableBlock(t),new l.MssqlInsertFieldValueBlock(t),new l.InsertFieldsFromQueryBlock(t)],n.call(this,t,e)}return r}()},b.flavours.mysql=function(t){var i=t.cls;i.MysqlOnDuplicateKeyUpdateBlock=function(t){o(n,i.AbstractSetFieldBlock);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"onDupUpdate",value:function(t,e,n){this._set(t,e,n)}},{key:"_toParamString",value:function(){for(var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e="",n=[],r=0;r<this._fields.length;++r){e=_(e,", ");var i=this._fields[r],a=this._values[0][r],l=this._valueOptions[0][r];if(void 0===a)e+=i;else{var o=this._buildString("".concat(i," = ").concat(this.options.parameterCharacter),[a],{buildParameterized:t.buildParameterized,formattingOptions:l});e+=o.text,o.values.forEach(function(t){return n.push(t)})}}return{text:e.length?"ON DUPLICATE KEY UPDATE ".concat(e):"",values:n}}}]),n}(),i.Insert=function(t){o(r,i.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new i.StringBlock(t,"INSERT"),new i.IntoTableBlock(t),new i.InsertFieldValueBlock(t),new i.InsertFieldsFromQueryBlock(t),new i.MysqlOnDuplicateKeyUpdateBlock(t)],n.call(this,t,e)}return r}(),i.Replace=function(t){o(r,i.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new i.StringBlock(t,"REPLACE"),new i.IntoTableBlock(t),new i.InsertFieldValueBlock(t),new i.InsertFieldsFromQueryBlock(t)],n.call(this,t,e)}return r}(),t.replace=function(t,e){return new i.Replace(t,e)}},b.flavours.postgres=function(t){var i=t.cls;i.DefaultQueryBuilderOptions.numberedParameters=!0,i.DefaultQueryBuilderOptions.numberedParametersStartAt=1,i.DefaultQueryBuilderOptions.autoQuoteAliasNames=!1,i.DefaultQueryBuilderOptions.useAsForTableAliasNames=!0,i.DefaultQueryBuilderOptions.nameQuoteCharacter='"',i.DefaultQueryBuilderOptions.tableAliasQuoteCharacter='"',i.PostgresOnConflictKeyUpdateBlock=function(t){o(n,i.AbstractSetFieldBlock);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"onConflict",value:function(t,e){var n=this;this._onConflict=!0,t&&(m(t)||(t=[t]),this._dupFields=t.map(this._sanitizeField.bind(this)),e&&Object.keys(e).forEach(function(t){n._set(t,e[t])}))}},{key:"_toParamString",value:function(){for(var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e="",n=[],r=0;r<this._fields.length;++r){e=_(e,", ");var i=this._fields[r],a=this._values[0][r],l=this._valueOptions[0][r];if(void 0===a)e+=i;else{var o=this._buildString("".concat(i," = ").concat(this.options.parameterCharacter),[a],{buildParameterized:t.buildParameterized,formattingOptions:l});e+=o.text,o.values.forEach(function(t){return n.push(t)})}}var u={text:"",values:n};if(this._onConflict){var s=this._dupFields?"(".concat(this._dupFields.join(", "),") "):"",c=e.length?"UPDATE SET ".concat(e):"NOTHING";u.text="ON CONFLICT ".concat(s,"DO ").concat(c)}return u}}]),n}(),i.ReturningBlock=function(t){o(r,i.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._fields=[],e}return p(r,[{key:"returning",value:function(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(n=n?this._sanitizeFieldAlias(n):n,e=this._sanitizeField(e),this._fields.filter(function(t){return t.name===e&&t.alias===n}).length)return this;this._fields.push({name:e,alias:n,options:t})}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=(e.queryBuilder,e.buildParameterized),r="",i=[],a=y(this._fields);try{for(a.s();!(t=a.n()).done;){var l=t.value;r=_(r,", ");var o=l.name,u=l.alias,s=l.options;if("string"==typeof o)r+=this._formatFieldName(o,s);else{var c=o._toParamString({nested:!0,buildParameterized:n});r+=c.text,c.values.forEach(function(t){return i.push(t)})}u&&(r+=" AS ".concat(this._formatFieldAlias(u)))}}catch(t){a.e(t)}finally{a.f()}return{text:0<r.length?"RETURNING ".concat(r):"",values:i}}}]),r}(),i.WithBlock=function(t){o(r,i.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._tables=[],e}return p(r,[{key:"with",value:function(t,e){this._tables.push({alias:t,table:e})}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=[],r=[],i=y(this._tables);try{for(i.s();!(t=i.n()).done;){var a=t.value,l=a.alias,o=a.table._toParamString({buildParameterized:e.buildParameterized,nested:!0});n.push("".concat(l," AS ").concat(o.text)),o.values.forEach(function(t){return r.push(t)})}}catch(t){i.e(t)}finally{i.f()}return{text:n.length?"WITH ".concat(n.join(", ")):"",values:r}}}]),r}(),i.WithValuesBlock=function(t){o(n,i.AbstractSetFieldBlock);var e=u(n);function n(){return v(this,n),e.apply(this,arguments)}return p(n,[{key:"withValues",value:function(t,e){this._alias=t,this._setFieldsRows(e)}},{key:"_toParamString",value:function(){for(var e=this,t=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).buildParameterized,n=this._fields.map(function(t){return e._formatFieldName(t)}).join(", "),r=[],i=[],a=0;a<this._values.length;++a){r[a]="";for(var l=0;l<this._values[a].length;++l){var o=this._buildString(this.options.parameterCharacter,[this._values[a][l]],{buildParameterized:t,formattingOptions:this._valueOptions[a][l]});o.values.forEach(function(t){return i.push(t)}),r[a]=_(r[a],", "),r[a]+=o.text}}return{text:n.length?"WITH ".concat(this._alias,"(").concat(n,") AS ( VALUES (").concat(r.join("), ("),") )"):"",values:i}}}]),n}(),i.DistinctOnBlock=function(t){o(r,i.Block);var n=u(r);function r(t){var e;return v(this,r),(e=n.call(this,t))._distinctFields=[],e}return p(r,[{key:"distinct",value:function(){var e=this;this._useDistinct=!0;for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.forEach(function(t){e._distinctFields.push(e._sanitizeField(t))})}},{key:"_toParamString",value:function(){var t="";return this._useDistinct&&(t="DISTINCT",this._distinctFields.length&&(t+=" ON (".concat(this._distinctFields.join(", "),")"))),{text:t,values:[]}}}]),r}(),i.Select=function(t){o(r,i.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new i.WithBlock(t),new i.WithValuesBlock(t),new i.StringBlock(t,"SELECT"),new i.FunctionBlock(t),new i.DistinctOnBlock(t),new i.GetFieldBlock(t),new i.FromTableBlock(t),new i.JoinBlock(t),new i.WhereBlock(t),new i.GroupByBlock(t),new i.HavingBlock(t),new i.OrderByBlock(t),new i.LimitBlock(t),new i.OffsetBlock(t),new i.LockBlock(t),new i.SetOpBlock(t)],n.call(this,t,e)}return r}(),i.Insert=function(t){o(r,i.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new i.WithBlock(t),new i.StringBlock(t,"INSERT"),new i.IntoTableBlock(t),new i.InsertFieldValueBlock(t),new i.InsertFieldsFromQueryBlock(t),new i.PostgresOnConflictKeyUpdateBlock(t),new i.ReturningBlock(t)],n.call(this,t,e)}return r}(),i.Update=function(t){o(r,i.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new i.WithBlock(t),new i.WithValuesBlock(t),new i.StringBlock(t,"UPDATE"),new i.UpdateTableBlock(t),new i.SetFieldBlock(t),new i.FromTableBlock(t),new i.WhereBlock(t),new i.OrderByBlock(t),new i.LimitBlock(t),new i.ReturningBlock(t)],n.call(this,t,e)}return r}(),i.Delete=function(t){o(r,i.QueryBuilder);var n=u(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return v(this,r),e=e||[new i.WithBlock(t),new i.StringBlock(t,"DELETE"),new i.TargetTableBlock(t),new i.FromTableBlock(g({},t,{singleTable:!0})),new i.JoinBlock(t),new i.WhereBlock(t),new i.OrderByBlock(t),new i.LimitBlock(t),new i.ReturningBlock(t)],n.call(this,t,e)}return r}()},b});