squel 5.5.0 → 5.8.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog for [squel](https://github.com/hiddentao/squel)
2
2
 
3
+ ## 28 Feb 2016 (5.8.0)
4
+ * #301 - Add `rstr()` to enable "raw" nesting of query builders
5
+ * Renamed `_isSquelBuilder()` call to `isSquelBuilder()`
6
+
7
+ ## 6 Feb 2016 (5.7.0)
8
+ * #288 - more flexible `RETURNING` clauses
9
+
10
+ ## 7 Jan 2016 (5.6.0)
11
+ * #256 - expression nesting
12
+
13
+ ## 24 Dec 2016 (5.5.1)
14
+ * #255, #283 - mixing flavours
15
+
3
16
  ## 15 Oct 2016 (5.5.0)
4
17
  * #118 - pass extra formatting options (when available) to custom value handler
5
18
  * #273 - parameterized `LIMIT` and `OFFSET` queries
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # squel - SQL query string builder
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/hiddentao/squel.png?branch=master)](http://travis-ci.org/hiddentao/squel)
4
- [![NPM module](https://badge.fury.io/js/squel.png)](https://badge.fury.io/js/squel)
3
+ [![Build Status](https://secure.travis-ci.org/hiddentao/squel.svg?branch=master)](http://travis-ci.org/hiddentao/squel)
4
+ [![CDNJS](https://img.shields.io/cdnjs/v/squel.svg)](https://cdnjs.com/libraries/squel)
5
+ [![NPM module](https://badge.fury.io/js/squel.svg)](https://badge.fury.io/js/squel)
5
6
  [![NPM downloads](https://img.shields.io/npm/dm/squel.svg?maxAge=2592000)](https://www.npmjs.com/package/squel)
6
- [![Join the chat at https://discord.gg/PBAR2Bz](https://img.shields.io/badge/discord-join%20chat-738bd7.svg?style=flat-square)](https://discord.gg/PBAR2Bz)
7
+ [![Join the chat at https://discord.gg/PBAR2Bz](https://img.shields.io/badge/discord-join%20chat-738bd7.svg)](https://discord.gg/PBAR2Bz)
7
8
  [![Follow on Twitter](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Follow&maxAge=2592000)](https://twitter.com/hiddentao)
8
9
 
9
10
  A flexible and powerful SQL query string builder for Javascript.
@@ -25,6 +26,8 @@ Full documentation (guide and API) at [http://squeljs.org/](http://squeljs.org/)
25
26
 
26
27
  **WARNING: Do not ever pass queries generated on the client side to your web server for execution.** Such a configuration would make it trivial for a casual attacker to execute arbitrary queries—as with an SQL-injection vector, but much easier to exploit and practically impossible to protect against.
27
28
 
29
+ _Note: See CHANGELOG.md for latest changes_
30
+
28
31
  ## Installation
29
32
 
30
33
  Install using [npm](http://npmjs.org/):
@@ -82,17 +82,6 @@ function _isArray(obj) {
82
82
  return obj && obj.constructor.prototype === Array.prototype;
83
83
  };
84
84
 
85
- // get class name of given object
86
- function _getObjectClassName(obj) {
87
- if (obj && obj.constructor && obj.constructor.toString) {
88
- var arr = obj.constructor.toString().match(/function\s*(\w+)/);
89
-
90
- if (arr && 2 === arr.length) {
91
- return arr[1];
92
- }
93
- }
94
- }
95
-
96
85
  // clone given item
97
86
  function _clone(src) {
98
87
  if (!src) {
@@ -239,7 +228,15 @@ function _buildSquel() {
239
228
  var flavour = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
240
229
 
241
230
  var cls = {
242
- _getObjectClassName: _getObjectClassName
231
+ // Get whether obj is a query builder
232
+ isSquelBuilder: function isSquelBuilder(obj) {
233
+ return obj && !!obj._toParamString;
234
+ }
235
+ };
236
+
237
+ // Get whether nesting should be applied for given item
238
+ var _shouldApplyNesting = function _shouldApplyNesting(obj) {
239
+ return !cls.isSquelBuilder(obj) || !obj.options.rawNesting;
243
240
  };
244
241
 
245
242
  // default query builder options
@@ -275,7 +272,9 @@ function _buildSquel() {
275
272
  // String used to join individual blocks in a query when it's stringified
276
273
  separator: ' ',
277
274
  // Function for formatting string values prior to insertion into query string
278
- stringFormatter: null
275
+ stringFormatter: null,
276
+ // Whether to prevent the addition of brackets () when nesting this query builder's output
277
+ rawNesting: false
279
278
  };
280
279
 
281
280
  // Global custom value handlers for all instances of builder
@@ -367,7 +366,7 @@ function _buildSquel() {
367
366
  key: '_sanitizeExpression',
368
367
  value: function _sanitizeExpression(expr) {
369
368
  // If it's not a base builder instance
370
- if (!(expr instanceof cls.BaseBuilder)) {
369
+ if (!cls.isSquelBuilder(expr)) {
371
370
  // It must then be a string
372
371
  if (typeof expr !== "string") {
373
372
  throw new Error("expression must be a string or builder instance");
@@ -395,7 +394,7 @@ function _buildSquel() {
395
394
  }, {
396
395
  key: '_sanitizeField',
397
396
  value: function _sanitizeField(item) {
398
- if (!(item instanceof cls.BaseBuilder)) {
397
+ if (!cls.isSquelBuilder(item)) {
399
398
  item = this._sanitizeName(item, "field name");
400
399
  }
401
400
 
@@ -404,7 +403,7 @@ function _buildSquel() {
404
403
  }, {
405
404
  key: '_sanitizeBaseBuilder',
406
405
  value: function _sanitizeBaseBuilder(item) {
407
- if (item instanceof cls.BaseBuilder) {
406
+ if (cls.isSquelBuilder(item)) {
408
407
  return item;
409
408
  }
410
409
 
@@ -461,7 +460,7 @@ function _buildSquel() {
461
460
  // null is allowed
462
461
  } else if ("string" === itemType || "number" === itemType || "boolean" === itemType) {
463
462
  // primitives are allowed
464
- } else if (item instanceof cls.BaseBuilder) {
463
+ } else if (cls.isSquelBuilder(item)) {
465
464
  // Builders allowed
466
465
  } else {
467
466
  var typeIsValid = !!getValueHandler(item, this.options.valueHandlers, cls.globalValueHandlers);
@@ -560,7 +559,7 @@ function _buildSquel() {
560
559
  };
561
560
  }
562
561
 
563
- /**
562
+ /**
564
563
  * Format given value for inclusion into parameter values array.
565
564
  */
566
565
 
@@ -591,6 +590,8 @@ function _buildSquel() {
591
590
 
592
591
  var formattingOptions = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
593
592
 
593
+ // maybe we have a cusotm value handler
594
+
594
595
  var _formatCustomValue2 = this._formatCustomValue(initialValue, false, formattingOptions);
595
596
 
596
597
  var formatted = _formatCustomValue2.formatted;
@@ -599,7 +600,7 @@ function _buildSquel() {
599
600
  // if formatting took place then return it directly
600
601
 
601
602
  if (formatted) {
602
- return this._applyNestingFormatting(value);
603
+ return this._applyNestingFormatting(value, _shouldApplyNesting(initialValue));
603
604
  }
604
605
 
605
606
  // if it's an array then format each element separately
@@ -608,7 +609,7 @@ function _buildSquel() {
608
609
  return _this4._formatValueForQueryString(v);
609
610
  });
610
611
 
611
- value = this._applyNestingFormatting(value.join(', '));
612
+ value = this._applyNestingFormatting(value.join(', '), _shouldApplyNesting(value));
612
613
  } else {
613
614
  var typeofValue = typeof value === 'undefined' ? 'undefined' : _typeof(value);
614
615
 
@@ -616,8 +617,8 @@ function _buildSquel() {
616
617
  value = "NULL";
617
618
  } else if (typeofValue === "boolean") {
618
619
  value = value ? "TRUE" : "FALSE";
619
- } else if (value instanceof cls.BaseBuilder) {
620
- value = this._applyNestingFormatting(value.toString());
620
+ } else if (cls.isSquelBuilder(value)) {
621
+ value = this._applyNestingFormatting(value.toString(), _shouldApplyNesting(value));
621
622
  } else if (typeofValue !== "number") {
622
623
  // if it's a string and we have custom string formatting turned on then use that
623
624
  if ('string' === typeofValue && this.options.stringFormatter) {
@@ -641,20 +642,43 @@ function _buildSquel() {
641
642
  value: function _applyNestingFormatting(str) {
642
643
  var nesting = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
643
644
 
644
- if (str && typeof str === 'string' && nesting) {
645
- // don't want to apply twice
646
- if ('(' !== str.charAt(0) || ')' !== str.charAt(str.length - 1)) {
647
- return '(' + str + ')';
645
+ if (str && typeof str === 'string' && nesting && !this.options.rawNesting) {
646
+ // apply brackets if they're not already existing
647
+ var alreadyHasBrackets = '(' === str.charAt(0) && ')' === str.charAt(str.length - 1);
648
+
649
+ if (alreadyHasBrackets) {
650
+ // check that it's the form "((x)..(y))" rather than "(x)..(y)"
651
+ var idx = 0,
652
+ open = 1;
653
+
654
+ while (str.length - 1 > ++idx) {
655
+ var c = str.charAt(idx);
656
+
657
+ if ('(' === c) {
658
+ open++;
659
+ } else if (')' === c) {
660
+ open--;
661
+ if (1 > open) {
662
+ alreadyHasBrackets = false;
663
+
664
+ break;
665
+ }
666
+ }
667
+ }
668
+ }
669
+
670
+ if (!alreadyHasBrackets) {
671
+ str = '(' + str + ')';
648
672
  }
649
673
  }
650
674
 
651
675
  return str;
652
676
  }
653
677
 
654
- /**
655
- * Build given string and its corresponding parameter values into
678
+ /**
679
+ * Build given string and its corresponding parameter values into
656
680
  * output.
657
- *
681
+ *
658
682
  * @param {String} str
659
683
  * @param {Array} values
660
684
  * @param {Object} [options] Additional options.
@@ -690,7 +714,7 @@ function _buildSquel() {
690
714
  var value = values[++curValue];
691
715
 
692
716
  if (buildParameterized) {
693
- if (value instanceof cls.BaseBuilder) {
717
+ if (cls.isSquelBuilder(value)) {
694
718
  var ret = value._toParamString({
695
719
  buildParameterized: buildParameterized,
696
720
  nested: true
@@ -734,10 +758,10 @@ function _buildSquel() {
734
758
  };
735
759
  }
736
760
 
737
- /**
738
- * Build all given strings and their corresponding parameter values into
761
+ /**
762
+ * Build all given strings and their corresponding parameter values into
739
763
  * output.
740
- *
764
+ *
741
765
  * @param {Array} strings
742
766
  * @param {Array} strValues array of value arrays corresponding to each string.
743
767
  * @param {Object} [options] Additional options.
@@ -781,7 +805,7 @@ function _buildSquel() {
781
805
 
782
806
  /**
783
807
  * Get parameterized representation of this instance.
784
- *
808
+ *
785
809
  * @param {Object} [options] Options.
786
810
  * @param {Boolean} [options.buildParameterized] Whether to build paramterized string. Default is false.
787
811
  * @param {Boolean} [options.nested] Whether this expression is nested within another.
@@ -839,10 +863,10 @@ function _buildSquel() {
839
863
  *
840
864
  * SQL expressions are used in WHERE and ON clauses to filter data by various criteria.
841
865
  *
842
- * Expressions can be nested. Nested expression contains can themselves
843
- * contain nested expressions. When rendered a nested expression will be
866
+ * Expressions can be nested. Nested expression contains can themselves
867
+ * contain nested expressions. When rendered a nested expression will be
844
868
  * fully contained within brackets.
845
- *
869
+ *
846
870
  * All the build methods in this object return the object instance for chained method calling purposes.
847
871
  */
848
872
  cls.Expression = function (_cls$BaseBuilder) {
@@ -918,7 +942,7 @@ function _buildSquel() {
918
942
  var expr = node.expr;
919
943
  var para = node.para;
920
944
 
921
- var _ref = expr instanceof cls.BaseBuilder ? expr._toParamString({
945
+ var _ref = cls.isSquelBuilder(expr) ? expr._toParamString({
922
946
  buildParameterized: options.buildParameterized,
923
947
  nested: true
924
948
  }) : this._buildString(expr, para, {
@@ -1320,7 +1344,7 @@ function _buildSquel() {
1320
1344
 
1321
1345
  var tableStr = void 0;
1322
1346
 
1323
- if (table instanceof cls.BaseBuilder) {
1347
+ if (cls.isSquelBuilder(table)) {
1324
1348
  var _table$_toParamString = table._toParamString({
1325
1349
  buildParameterized: options.buildParameterized,
1326
1350
  nested: true
@@ -2135,7 +2159,7 @@ function _buildSquel() {
2135
2159
  cls.AbstractConditionBlock = function (_cls$Block10) {
2136
2160
  _inherits(_class23, _cls$Block10);
2137
2161
 
2138
- /**
2162
+ /**
2139
2163
  * @param {String} options.verb The condition verb.
2140
2164
  */
2141
2165
 
@@ -2189,7 +2213,7 @@ function _buildSquel() {
2189
2213
  var expr = _step10$value.expr;
2190
2214
  var values = _step10$value.values;
2191
2215
 
2192
- var ret = expr instanceof cls.BaseBuilder ? expr._toParamString({
2216
+ var ret = cls.isSquelBuilder(expr) ? expr._toParamString({
2193
2217
  buildParameterized: options.buildParameterized
2194
2218
  }) : this._buildString(expr, values, {
2195
2219
  buildParameterized: options.buildParameterized
@@ -2498,7 +2522,7 @@ function _buildSquel() {
2498
2522
 
2499
2523
  var tableStr = void 0;
2500
2524
 
2501
- if (table instanceof cls.BaseBuilder) {
2525
+ if (cls.isSquelBuilder(table)) {
2502
2526
  var ret = table._toParamString({
2503
2527
  buildParameterized: options.buildParameterized,
2504
2528
  nested: true
@@ -2521,7 +2545,7 @@ function _buildSquel() {
2521
2545
 
2522
2546
  var _ret4 = void 0;
2523
2547
 
2524
- if (condition instanceof cls.BaseBuilder) {
2548
+ if (cls.isSquelBuilder(condition)) {
2525
2549
  _ret4 = condition._toParamString({
2526
2550
  buildParameterized: options.buildParameterized
2527
2551
  });
@@ -2973,7 +2997,7 @@ function _buildSquel() {
2973
2997
  }(cls.QueryBuilder);
2974
2998
 
2975
2999
  var _squel = {
2976
- VERSION: '5.5.0',
3000
+ VERSION: '5.8.0',
2977
3001
  flavour: flavour,
2978
3002
  expr: function expr(options) {
2979
3003
  return new cls.Expression(options);
@@ -2998,6 +3022,13 @@ function _buildSquel() {
2998
3022
  inst.function.apply(inst, arguments);
2999
3023
  return inst;
3000
3024
  },
3025
+ rstr: function rstr() {
3026
+ var inst = new cls.FunctionBlock({
3027
+ rawNesting: true
3028
+ });
3029
+ inst.function.apply(inst, arguments);
3030
+ return inst;
3031
+ },
3001
3032
  registerValueHandler: cls.registerValueHandler
3002
3033
  };
3003
3034
 
@@ -1,2 +1,2 @@
1
- /*! 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 t(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function e(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){return t.length?t+e:t}function a(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];if(t&&r){var i=!0,a=!1,o=void 0;try{for(var l,u=function(){var e=l.value;"object"===("undefined"==typeof e?"undefined":y(e))&&Object.getOwnPropertyNames(e).forEach(function(r){t[r]=e[r]})},s=r[Symbol.iterator]();!(i=(l=s.next()).done);i=!0)u()}catch(f){a=!0,o=f}finally{try{!i&&s["return"]&&s["return"]()}finally{if(a)throw o}}}return t}function o(t){return t&&t.constructor.prototype===Object.prototype}function l(t){return t&&t.constructor.prototype===Array.prototype}function u(t){if(t&&t.constructor&&t.constructor.toString){var e=t.constructor.toString().match(/function\s*(\w+)/);if(e&&2===e.length)return e[1]}}function s(t){if(!t)return t;if("function"==typeof t.clone)return t.clone();if(!o(t)&&!l(t))return JSON.parse(JSON.stringify(t));var e=function(){var e=new t.constructor;return Object.getOwnPropertyNames(t).forEach(function(r){"function"!=typeof t[r]&&(e[r]=s(t[r]))}),{v:e}}();return"object"===("undefined"==typeof e?"undefined":y(e))?e.v:void 0}function f(t,e,r){var n="undefined"==typeof e?"undefined":y(e);if("function"!==n&&"string"!==n)throw new Error("type must be a class constructor or string");if("function"!=typeof r)throw new Error("handler must be a function");var i=!0,a=!1,o=void 0;try{for(var l,u=t[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value;if(s.type===e)return void(s.handler=r)}}catch(f){a=!0,o=f}finally{try{!i&&u["return"]&&u["return"]()}finally{if(a)throw o}}t.push({type:e,handler:r})}function c(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];var i=!0,a=!1,o=void 0;try{for(var l,u=r[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value,f=!0,c=!1,h=void 0;try{for(var v,d=s[Symbol.iterator]();!(f=(v=d.next()).done);f=!0){var p=v.value;if(("undefined"==typeof t?"undefined":y(t))===p.type||"string"!=typeof p.type&&t instanceof p.type)return p.handler}}catch(g){c=!0,h=g}finally{try{!f&&d["return"]&&d["return"]()}finally{if(c)throw h}}}}catch(g){a=!0,o=g}finally{try{!i&&u["return"]&&u["return"]()}finally{if(a)throw o}}}function h(){var h=arguments.length<=0||void 0===arguments[0]?null:arguments[0],p={_getObjectClassName:u};p.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},p.globalValueHandlers=[],p.registerValueHandler=function(t,e){f(p.globalValueHandlers,t,e)},p.Cloneable=function(){function t(){n(this,t)}return d(t,[{key:"clone",value:function(){var t=new this.constructor;return a(t,s(a({},this)))}}]),t}(),p.BaseBuilder=function(i){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this)),i=JSON.parse(JSON.stringify(p.DefaultQueryBuilderOptions));return r.options=a({},i,t),r}return r(o,i),d(o,[{key:"registerValueHandler",value:function(t,e){return f(this.options.valueHandlers,t,e),this}},{key:"_sanitizeExpression",value:function(t){if(!(t instanceof p.BaseBuilder)&&"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(e+" must be a string");return t}},{key:"_sanitizeField",value:function(t){return t instanceof p.BaseBuilder||(t=this._sanitizeName(t,"field name")),t}},{key:"_sanitizeBaseBuilder",value:function(t){if(t instanceof p.BaseBuilder)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(e){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>t||isNaN(t))throw new Error("limit/offset must be >= 0");return t}},{key:"_sanitizeValue",value:function(t){var e="undefined"==typeof t?"undefined":y(t);if(null===t);else if("string"===e||"number"===e||"boolean"===e);else if(t instanceof p.BaseBuilder);else{var r=!!c(t,this.options.valueHandlers,p.globalValueHandlers);if(!r)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.replace(/\'/g,this.options.singleQuoteReplacement):t}},{key:"_formatTableName",value:function(t){if(this.options.autoQuoteTableNames){var e=this.options.nameQuoteCharacter;t=""+e+t+e}return t}},{key:"_formatFieldAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.fieldAliasQuoteCharacter;t=""+e+t+e}return t}},{key:"_formatTableAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.tableAliasQuoteCharacter;t=""+e+t+e}return this.options.useAsForTableAliasNames?"AS "+t:t}},{key:"_formatFieldName",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return this.options.autoQuoteFieldNames&&!function(){var n=e.options.nameQuoteCharacter;t=r.ignorePeriodsForFieldNameQuotes?""+n+t+n:t.split(".").map(function(t){return"*"===t?t:""+n+t+n}).join(".")}(),t}},{key:"_formatCustomValue",value:function(t,e,r){var n=c(t,this.options.valueHandlers,p.globalValueHandlers);return n&&(t=n(t,e,r)),{formatted:!!n,value:t}}},{key:"_formatValueForParamArray",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return l(t)?t.map(function(t){return e._formatValueForParamArray(t,r)}):this._formatCustomValue(t,!0,r).value}},{key:"_formatValueForQueryString",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=this._formatCustomValue(t,!1,r),i=n.formatted,a=n.value;if(i)return this._applyNestingFormatting(a);if(l(a))a=a.map(function(t){return e._formatValueForQueryString(t)}),a=this._applyNestingFormatting(a.join(", "));else{var o="undefined"==typeof a?"undefined":y(a);if(null===a)a="NULL";else if("boolean"===o)a=a?"TRUE":"FALSE";else if(a instanceof p.BaseBuilder)a=this._applyNestingFormatting(a.toString());else if("number"!==o){if("string"===o&&this.options.stringFormatter)return this.options.stringFormatter(a);if(r.dontQuote)a=""+a;else{var u=this._escapeValue(a);a="'"+u+"'"}}}return a}},{key:"_applyNestingFormatting",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];return t&&"string"==typeof t&&e&&("("!==t.charAt(0)||")"!==t.charAt(t.length-1))?"("+t+")":t}},{key:"_buildString",value:function(e,r){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],i=n.nested,a=n.buildParameterized,o=n.formattingOptions;r=r||[],e=e||"";for(var u="",s=-1,f=[],c=this.options.parameterCharacter,h=0;e.length>h;)if(e.substr(h,c.length)===c){var v=r[++s];if(a)if(v instanceof p.BaseBuilder){var d=v._toParamString({buildParameterized:a,nested:!0});u+=d.text,f.push.apply(f,t(d.values))}else if(v=this._formatValueForParamArray(v,o),l(v)){var y=v.map(function(){return c}).join(", ");u+="("+y+")",f.push.apply(f,t(v))}else u+=c,f.push(v);else u+=this._formatValueForQueryString(v,o);h+=c.length}else u+=e.charAt(h),h++;return{text:this._applyNestingFormatting(u,!!i),values:f}}},{key:"_buildManyStrings",value:function(e,r){for(var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],i=[],a=[],o=0;e.length>o;++o){var l=e[o],u=r[o],s=this._buildString(l,u,{buildParameterized:n.buildParameterized,nested:!1}),f=s.text,c=s.values;i.push(f),a.push.apply(a,t(c))}return i=i.join(this.options.separator),{text:i.length?this._applyNestingFormatting(i,!!n.nested):"",values:a}}},{key:"_toParamString",value:function(t){throw new Error("Not yet implemented")}},{key:"toString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._toParamString(t).text}},{key:"toParam",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._toParamString(a({},t,{buildParameterized:!0}))}}]),o}(p.Cloneable),p.Expression=function(i){function a(t){n(this,a);var r=e(this,Object.getPrototypeOf(a).call(this,t));return r._nodes=[],r}return r(a,i),d(a,[{key:"and",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];return t=this._sanitizeExpression(t),this._nodes.push({type:"AND",expr:t,para:r}),this}},{key:"or",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];return t=this._sanitizeExpression(t),this._nodes.push({type:"OR",expr:t,para:r}),this}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=[],n=[],i=!0,a=!1,o=void 0;try{for(var l,u=this._nodes[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value,f=s.type,c=s.expr,h=s.para,v=c instanceof p.BaseBuilder?c._toParamString({buildParameterized:e.buildParameterized,nested:!0}):this._buildString(c,h,{buildParameterized:e.buildParameterized}),d=v.text,y=v.values;r.length&&r.push(f),r.push(d),n.push.apply(n,t(y))}}catch(g){a=!0,o=g}finally{try{!i&&u["return"]&&u["return"]()}finally{if(a)throw o}}return r=r.join(" "),{text:this._applyNestingFormatting(r,!!e.nested),values:n}}}]),a}(p.BaseBuilder),p.Case=function(l){function u(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];n(this,u);var i=e(this,Object.getPrototypeOf(u).call(this,r));return o(t)&&(r=t,t=null),t&&(i._fieldName=i._sanitizeField(t)),i.options=a({},p.DefaultQueryBuilderOptions,r),i._cases=[],i._elseValue=null,i}return r(u,l),d(u,[{key:"when",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];return this._cases.unshift({expression:t,values:r}),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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],a=!0,o=!1,l=void 0;try{for(var u,s=this._cases[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.expression,h=f.values,v=f.result;r=i(r," ");var d=this._buildString(c,h,{buildParameterized:e.buildParameterized,nested:!0});r+="WHEN "+d.text+" THEN "+this._formatValueForQueryString(v),n.push.apply(n,t(d.values))}}catch(y){o=!0,l=y}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}return r.length?(r+=" ELSE "+this._formatValueForQueryString(this._elseValue)+" END",this._fieldName&&(r=this._fieldName+" "+r),r="CASE "+r):r=this._formatValueForQueryString(this._elseValue),{text:r,values:n}}}]),u}(p.BaseBuilder),p.Block=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,t))}return r(i,t),d(i,[{key:"exposedMethods",value:function(){for(var t={},e=this;e;)Object.getOwnPropertyNames(e).forEach(function(r){"constructor"===r||"function"!=typeof e[r]||"_"===r.charAt(0)||p.Block.prototype[r]||(t[r]=e[r])}),e=Object.getPrototypeOf(e);return t}}]),i}(p.BaseBuilder),p.StringBlock=function(t){function i(t,r){n(this,i);var a=e(this,Object.getPrototypeOf(i).call(this,t));return a._str=r,a}return r(i,t),d(i,[{key:"_toParamString",value:function(){arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return{text:this._str,values:[]}}}]),i}(p.Block),p.FunctionBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._strings=[],r._values=[],r}return r(i,t),d(i,[{key:"function",value:function(t){this._strings.push(t);for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];this._values.push(r)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._buildManyStrings(this._strings,this._values,t)}}]),i}(p.Block),p.registerValueHandler(p.FunctionBlock,function(t){var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];return e?t.toParam():t.toString()}),p.AbstractTableBlock=function(a){function o(t,r){n(this,o);var i=e(this,Object.getPrototypeOf(o).call(this,t));return i._tables=[],i}return r(o,a),d(o,[{key:"_table",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[];if(this._hasTable()){var a=!0,o=!1,l=void 0;try{for(var u,s=this._tables[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.table,h=f.alias;r=i(r,", ");var v=void 0;if(c instanceof p.BaseBuilder){var d=c._toParamString({buildParameterized:e.buildParameterized,nested:!0}),y=d.text,g=d.values;v=y,n.push.apply(n,t(g))}else v=this._formatTableName(c);h&&(v+=" "+this._formatTableAlias(h)),r+=v}}catch(b){o=!0,l=b}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}this.options.prefix&&(r=this.options.prefix+" "+r)}return{text:r,values:n}}}]),o}(p.Block),p.TargetTableBlock=function(t){function i(){return n(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return r(i,t),d(i,[{key:"target",value:function(t){this._table(t)}}]),i}(p.AbstractTableBlock),p.UpdateTableBlock=function(t){function i(){return n(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return r(i,t),d(i,[{key:"table",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];this._table(t,e)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this._hasTable())throw new Error("table() needs to be called");return v(Object.getPrototypeOf(i.prototype),"_toParamString",this).call(this,t)}}]),i}(p.AbstractTableBlock),p.FromTableBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,a({},t,{prefix:"FROM"})))}return r(i,t),d(i,[{key:"from",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];this._table(t,e)}}]),i}(p.AbstractTableBlock),p.IntoTableBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,a({},t,{prefix:"INTO",singleTable:!0})))}return r(i,t),d(i,[{key:"into",value:function(t){this._table(t)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this._hasTable())throw new Error("into() needs to be called");return v(Object.getPrototypeOf(i.prototype),"_toParamString",this).call(this,t)}}]),i}(p.AbstractTableBlock),p.GetFieldBlock=function(a){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._fields=[],r}return r(o,a),d(o,[{key:"fields",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(l(t)){var r=!0,n=!1,i=void 0;try{for(var a,o=t[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var u=a.value;this.field(u,null,e)}}catch(s){n=!0,i=s}finally{try{!r&&o["return"]&&o["return"]()}finally{if(n)throw i}}}else for(var f in t){var c=t[f];this.field(f,c,e)}}},{key:"field",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];e=e?this._sanitizeFieldAlias(e):e,t=this._sanitizeField(t);var n=this._fields.filter(function(r){return r.name===t&&r.alias===e});return n.length?this:void this._fields.push({name:t,alias:e,options:r})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=e.queryBuilder,n=e.buildParameterized,a="",o=[],l=!0,u=!1,s=void 0;try{for(var f,c=this._fields[Symbol.iterator]();!(l=(f=c.next()).done);l=!0){var h=f.value;a=i(a,", ");var v=h.name,d=h.alias,y=h.options;if("string"==typeof v)a+=this._formatFieldName(v,y);else{var g=v._toParamString({nested:!0,buildParameterized:n});a+=g.text,o.push.apply(o,t(g.values))}d&&(a+=" AS "+this._formatFieldAlias(d))}}catch(b){u=!0,s=b}finally{try{!l&&c["return"]&&c["return"]()}finally{if(u)throw s}}if(!a.length){var m=r&&r.getBlock(p.FromTableBlock);m&&m._hasTable()&&(a="*")}return{text:a,values:o}}}]),o}(p.Block),p.AbstractSetFieldBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._reset(),r}return r(i,t),d(i,[{key:"_reset",value:function(){this._fields=[],this._values=[[]],this._valueOptions=[[]]}},{key:"_set",value:function(t,e){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];if(this._values.length>1)throw new Error("Cannot set multiple rows of fields this way.");"undefined"!=typeof e&&(e=this._sanitizeValue(e)),t=this._sanitizeField(t);var n=this._fields.indexOf(t);-1===n&&(this._fields.push(t),n=this._fields.length-1),this._values[0][n]=e,this._valueOptions[0][n]=r}},{key:"_setFields",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("object"!==("undefined"==typeof t?"undefined":y(t)))throw new Error("Expected an object but got "+("undefined"==typeof t?"undefined":y(t)));for(var r in t)this._set(r,t[r],e)}},{key:"_setFieldsRows",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(!l(t))throw new Error("Expected an array of objects but got "+("undefined"==typeof t?"undefined":y(t)));this._reset();for(var r=0;t.length>r;++r){var n=t[r];for(var i in n){var a=n[i];i=this._sanitizeField(i),a=this._sanitizeValue(a);var o=this._fields.indexOf(i);if(r>0&&-1===o)throw new Error("All fields in subsequent rows must match the fields in the first row");-1===o&&(this._fields.push(i),o=this._fields.length-1),l(this._values[r])||(this._values[r]=[],this._valueOptions[r]=[]),this._values[r][o]=a,this._valueOptions[r][o]=e}}}}]),i}(p.Block),p.SetFieldBlock=function(a){function o(){return n(this,o),e(this,Object.getPrototypeOf(o).apply(this,arguments))}return r(o,a),d(o,[{key:"set",value:function(t,e,r){this._set(t,e,r)}},{key:"setFields",value:function(t,e){this._setFields(t,e)}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=e.buildParameterized;if(0>=this._fields.length)throw new Error("set() needs to be called");for(var n="",a=[],o=0;o<this._fields.length;++o){n=i(n,", ");var l=this._formatFieldName(this._fields[o]),u=this._values[0][o];0>l.indexOf("=")&&(l=l+" = "+this.options.parameterCharacter);var s=this._buildString(l,[u],{buildParameterized:r,formattingOptions:this._valueOptions[0][o]});n+=s.text,a.push.apply(a,t(s.values))}return{text:"SET "+n,values:a}}}]),o}(p.AbstractSetFieldBlock),p.InsertFieldValueBlock=function(a){function o(){return n(this,o),e(this,Object.getPrototypeOf(o).apply(this,arguments))}return r(o,a),d(o,[{key:"set",value:function(t,e){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];this._set(t,e,r)}},{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,r=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=r.buildParameterized,a=this._fields.map(function(t){return e._formatFieldName(t)}).join(", "),o=[],l=[],u=0;u<this._values.length;++u){o[u]="";for(var s=0;s<this._values[u].length;++s){var f=this._buildString(this.options.parameterCharacter,[this._values[u][s]],{buildParameterized:n,formattingOptions:this._valueOptions[u][s]});l.push.apply(l,t(f.values)),o[u]=i(o[u],", "),o[u]+=f.text}}return{text:a.length?"("+a+") VALUES ("+o.join("), (")+")":"",values:l}}}]),o}(p.AbstractSetFieldBlock),p.InsertFieldsFromQueryBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._fields=[],r._query=null,r}return r(i,t),d(i,[{key:"fromQuery",value:function(t,e){var r=this;this._fields=t.map(function(t){return r._sanitizeField(t)}),this._query=this._sanitizeBaseBuilder(e)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e="",r=[];if(this._fields.length&&this._query){var n=this._query._toParamString({buildParameterized:t.buildParameterized,nested:!0}),i=n.text,a=n.values;e="("+this._fields.join(", ")+") "+this._applyNestingFormatting(i),r=a}return{text:e,values:r}}}]),i}(p.Block),p.DistinctBlock=function(t){function i(){return n(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return r(i,t),d(i,[{key:"distinct",value:function(){this._useDistinct=!0}},{key:"_toParamString",value:function(){return{text:this._useDistinct?"DISTINCT":"",values:[]}}}]),i}(p.Block),p.GroupByBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._groups=[],r}return r(i,t),d(i,[{key:"group",value:function(t){this._groups.push(this._sanitizeField(t))}},{key:"_toParamString",value:function(){arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return{text:this._groups.length?"GROUP BY "+this._groups.join(", "):"",values:[]}}}]),i}(p.Block),p.AbstractVerbSingleValueBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._value=0,r}return r(i,t),d(i,[{key:"_setValue",value:function(t){this._value=this._sanitizeLimitOffset(t)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=0<this._value?this.options.verb+" "+this.options.parameterCharacter:"",r=null!==this._value?[this._value]:[];return this._buildString(e,r,t)}}]),i}(p.Block),p.OffsetBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,a({},t,{verb:"OFFSET"})))}return r(i,t),d(i,[{key:"offset",value:function(t){this._setValue(t)}}]),i}(p.AbstractVerbSingleValueBlock),p.LimitBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,a({},t,{verb:"LIMIT"})))}return r(i,t),d(i,[{key:"limit",value:function(t){this._setValue(t)}}]),i}(p.AbstractVerbSingleValueBlock),p.AbstractConditionBlock=function(i){function a(t){n(this,a);var r=e(this,Object.getPrototypeOf(a).call(this,t));return r._conditions=[],r}return r(a,i),d(a,[{key:"_condition",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];t=this._sanitizeExpression(t),this._conditions.push({expr:t,values:r})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=[],n=[],i=!0,a=!1,o=void 0;try{for(var l,u=this._conditions[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value,f=s.expr,c=s.values,h=f instanceof p.BaseBuilder?f._toParamString({buildParameterized:e.buildParameterized}):this._buildString(f,c,{buildParameterized:e.buildParameterized});h.text.length&&r.push(h.text),n.push.apply(n,t(h.values))}}catch(v){a=!0,o=v}finally{try{!i&&u["return"]&&u["return"]()}finally{if(a)throw o}}return r.length&&(r=r.join(") AND (")),{text:r.length?this.options.verb+" ("+r+")":"",values:n}}}]),a}(p.Block),p.WhereBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,a({},t,{verb:"WHERE"})))}return r(i,t),d(i,[{key:"where",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];this._condition.apply(this,[t].concat(r))}}]),i}(p.AbstractConditionBlock),p.HavingBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,a({},t,{verb:"HAVING"})))}return r(i,t),d(i,[{key:"having",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];this._condition.apply(this,[t].concat(r))}}]),i}(p.AbstractConditionBlock),p.OrderByBlock=function(a){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._orders=[],r}return r(o,a),d(o,[{key:"order",value:function(t,e){for(var r=arguments.length,n=Array(r>2?r-2:0),i=2;r>i;i++)n[i-2]=arguments[i];t=this._sanitizeField(t),"string"!=typeof e&&(void 0===e?e="ASC":null!==e&&(e=e?"ASC":"DESC")),this._orders.push({field:t,dir:e,values:n})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],a=!0,o=!1,l=void 0;try{for(var u,s=this._orders[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.field,h=f.dir,v=f.values;r=i(r,", ");var d=this._buildString(c,v,{buildParameterized:e.buildParameterized});r+=d.text,n.push.apply(n,t(d.values)),null!==h&&(r+=" "+h)}}catch(y){o=!0,l=y}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}return{text:r.length?"ORDER BY "+r:"",values:n}}}]),o}(p.Block),p.JoinBlock=function(a){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._joins=[],r}return r(o,a),d(o,[{key:"join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2],n=arguments.length<=3||void 0===arguments[3]?"INNER":arguments[3];t=this._sanitizeTable(t,!0),e=e?this._sanitizeTableAlias(e):e,r=r?this._sanitizeExpression(r):r,this._joins.push({type:n,table:t,alias:e,condition:r})}},{key:"left_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"LEFT")}},{key:"right_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"RIGHT")}},{key:"outer_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"OUTER")}},{key:"left_outer_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"LEFT OUTER")}},{key:"full_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"FULL")}},{key:"cross_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"CROSS")}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],a=!0,o=!1,l=void 0;try{for(var u,s=this._joins[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.type,h=f.table,v=f.alias,d=f.condition;r=i(r,this.options.separator);var y=void 0;if(h instanceof p.BaseBuilder){var g=h._toParamString({buildParameterized:e.buildParameterized,nested:!0});n.push.apply(n,t(g.values)),y=g.text}else y=this._formatTableName(h);if(r+=c+" JOIN "+y,v&&(r+=" "+this._formatTableAlias(v)),d){r+=" ON ";var b=void 0;b=d instanceof p.BaseBuilder?d._toParamString({buildParameterized:e.buildParameterized}):this._buildString(d,[],{buildParameterized:e.buildParameterized}),r+=this._applyNestingFormatting(b.text),n.push.apply(n,t(b.values))}}}catch(m){o=!0,l=m}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}return{text:r,values:n}}}]),o}(p.Block),p.UnionBlock=function(a){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._unions=[],r}return r(o,a),d(o,[{key:"union",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?"UNION":arguments[1];t=this._sanitizeTable(t),this._unions.push({type:e,table:t})}},{key:"union_all",value:function(t){this.union(t,"UNION ALL")}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],a=!0,o=!1,l=void 0;try{for(var u,s=this._unions[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.type,h=f.table;r=i(r,this.options.separator);var v=void 0;if(h instanceof p.BaseBuilder){var d=h._toParamString({buildParameterized:e.buildParameterized,nested:!0});v=d.text,n.push.apply(n,t(d.values))}else r=this._formatTableName(h);r+=c+" "+v}}catch(y){o=!0,l=y}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}return{text:r,values:n}}}]),o}(p.Block),p.QueryBuilder=function(i){function o(t,r){n(this,o);var i=e(this,Object.getPrototypeOf(o).call(this,t));i.blocks=r||[];var a=!0,l=!1,u=void 0;try{for(var s,f=i.blocks[Symbol.iterator]();!(a=(s=f.next()).done);a=!0){var c=s.value,h=c.exposedMethods();for(var v in h){var d=h[v];if(void 0!==i[v])throw new Error("Builder already has a builder method called: "+v);!function(t,e,r){i[e]=function(){for(var e=arguments.length,n=Array(e),a=0;e>a;a++)n[a]=arguments[a];return r.call.apply(r,[t].concat(n)),i}}(c,v,d)}}}catch(y){l=!0,u=y}finally{try{!a&&f["return"]&&f["return"]()}finally{if(l)throw u}}return i}return r(o,i),d(o,[{key:"registerValueHandler",value:function(t,e){var r=!0,n=!1,i=void 0;try{for(var a,l=this.blocks[Symbol.iterator]();!(r=(a=l.next()).done);r=!0){var u=a.value;u.registerValueHandler(t,e)}}catch(s){n=!0,i=s}finally{try{!r&&l["return"]&&l["return"]()}finally{if(n)throw i}}return v(Object.getPrototypeOf(o.prototype),"registerValueHandler",this).call(this,t,e),this}},{key:"updateOptions",value:function(t){this.options=a({},this.options,t);var e=!0,r=!1,n=void 0;try{for(var i,o=this.blocks[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var l=i.value;l.options=a({},l.options,t)}}catch(u){r=!0,n=u}finally{try{!e&&o["return"]&&o["return"]()}finally{if(r)throw n}}}},{key:"_toParamString",value:function(){var e,r=this,n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];n=a({},this.options,n);var i=this.blocks.map(function(t){return t._toParamString({buildParameterized:n.buildParameterized,queryBuilder:r})}),o=i.map(function(t){return t.text}),l=i.map(function(t){return t.values}),u=o.filter(function(t){return 0<t.length}).join(n.separator),s=(e=[]).concat.apply(e,t(l));return n.nested||n.numberedParameters&&!function(){var t=void 0!==n.numberedParametersStartAt?n.numberedParametersStartAt:1,e=n.parameterCharacter.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");u=u.replace(new RegExp(e,"g"),function(){return""+n.numberedParametersPrefix+t++})}(),{text:this._applyNestingFormatting(u,!!n.nested),values:s}}},{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(t){var e=this.blocks.filter(function(e){return e instanceof t});return e[0]}}]),o}(p.BaseBuilder),p.Select=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new p.StringBlock(t,"SELECT"),new p.FunctionBlock(t),new p.DistinctBlock(t),new p.GetFieldBlock(t),new p.FromTableBlock(t),new p.JoinBlock(t),new p.WhereBlock(t),new p.GroupByBlock(t),new p.HavingBlock(t),new p.OrderByBlock(t),new p.LimitBlock(t),new p.OffsetBlock(t),new p.UnionBlock(t)],
2
- e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(p.QueryBuilder),p.Update=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new p.StringBlock(t,"UPDATE"),new p.UpdateTableBlock(t),new p.SetFieldBlock(t),new p.WhereBlock(t),new p.OrderByBlock(t),new p.LimitBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(p.QueryBuilder),p.Delete=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new p.StringBlock(t,"DELETE"),new p.TargetTableBlock(t),new p.FromTableBlock(a({},t,{singleTable:!0})),new p.JoinBlock(t),new p.WhereBlock(t),new p.OrderByBlock(t),new p.LimitBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(p.QueryBuilder),p.Insert=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new p.StringBlock(t,"INSERT"),new p.IntoTableBlock(t),new p.InsertFieldValueBlock(t),new p.InsertFieldsFromQueryBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(p.QueryBuilder);var g={VERSION:"5.5.0",flavour:h,expr:function(t){return new p.Expression(t)},"case":function(t,e){return new p.Case(t,e)},select:function(t,e){return new p.Select(t,e)},update:function(t,e){return new p.Update(t,e)},insert:function(t,e){return new p.Insert(t,e)},"delete":function(t,e){return new p.Delete(t,e)},str:function(){var t=new p.FunctionBlock;return t["function"].apply(t,arguments),t},registerValueHandler:p.registerValueHandler};return g.remove=g["delete"],g.cls=p,g}var v=function g(t,e,r){null===t&&(t=Function.prototype);var n=Object.getOwnPropertyDescriptor(t,e);if(void 0===n){var i=Object.getPrototypeOf(t);return null===i?void 0:g(i,e,r)}if("value"in n)return n.value;var a=n.get;if(void 0!==a)return a.call(r)},d=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},p=h();return p.flavours={},p.useFlavour=function(){var t=arguments.length<=0||void 0===arguments[0]?null:arguments[0];if(!t)return p;if(p.flavours[t]instanceof Function){var e=h(t);return p.flavours[t].call(null,e),e.flavours=p.flavours,e.useFlavour=p.useFlavour,e}throw new Error("Flavour not available: "+t)},p});
1
+ /*! 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 t(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function e(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){return t.length?t+e:t}function a(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];if(t&&r){var n=!0,a=!1,o=void 0;try{for(var l,u=function(){var e=l.value;"object"===("undefined"==typeof e?"undefined":d(e))&&Object.getOwnPropertyNames(e).forEach(function(r){t[r]=e[r]})},s=r[Symbol.iterator]();!(n=(l=s.next()).done);n=!0)u()}catch(f){a=!0,o=f}finally{try{!n&&s["return"]&&s["return"]()}finally{if(a)throw o}}}return t}function o(t){return t&&t.constructor.prototype===Object.prototype}function l(t){return t&&t.constructor.prototype===Array.prototype}function u(t){if(!t)return t;if("function"==typeof t.clone)return t.clone();if(!o(t)&&!l(t))return JSON.parse(JSON.stringify(t));var e=function(){var e=new t.constructor;return Object.getOwnPropertyNames(t).forEach(function(r){"function"!=typeof t[r]&&(e[r]=u(t[r]))}),{v:e}}();return"object"===("undefined"==typeof e?"undefined":d(e))?e.v:void 0}function s(t,e,r){var i="undefined"==typeof e?"undefined":d(e);if("function"!==i&&"string"!==i)throw new Error("type must be a class constructor or string");if("function"!=typeof r)throw new Error("handler must be a function");var n=!0,a=!1,o=void 0;try{for(var l,u=t[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var s=l.value;if(s.type===e)return void(s.handler=r)}}catch(f){a=!0,o=f}finally{try{!n&&u["return"]&&u["return"]()}finally{if(a)throw o}}t.push({type:e,handler:r})}function f(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];var n=!0,a=!1,o=void 0;try{for(var l,u=r[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var s=l.value,f=!0,c=!1,h=void 0;try{for(var v,y=s[Symbol.iterator]();!(f=(v=y.next()).done);f=!0){var p=v.value;if(("undefined"==typeof t?"undefined":d(t))===p.type||"string"!=typeof p.type&&t instanceof p.type)return p.handler}}catch(g){c=!0,h=g}finally{try{!f&&y["return"]&&y["return"]()}finally{if(c)throw h}}}}catch(g){a=!0,o=g}finally{try{!n&&u["return"]&&u["return"]()}finally{if(a)throw o}}}function c(){var c=arguments.length<=0||void 0===arguments[0]?null:arguments[0],y={isSquelBuilder:function(t){return t&&!!t._toParamString}},p=function(t){return!y.isSquelBuilder(t)||!t.options.rawNesting};y.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},y.globalValueHandlers=[],y.registerValueHandler=function(t,e){s(y.globalValueHandlers,t,e)},y.Cloneable=function(){function t(){i(this,t)}return v(t,[{key:"clone",value:function(){var t=new this.constructor;return a(t,u(a({},this)))}}]),t}(),y.BaseBuilder=function(n){function o(t){i(this,o);var r=e(this,Object.getPrototypeOf(o).call(this)),n=JSON.parse(JSON.stringify(y.DefaultQueryBuilderOptions));return r.options=a({},n,t),r}return r(o,n),v(o,[{key:"registerValueHandler",value:function(t,e){return s(this.options.valueHandlers,t,e),this}},{key:"_sanitizeExpression",value:function(t){if(!y.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(e+" must be a string");return t}},{key:"_sanitizeField",value:function(t){return y.isSquelBuilder(t)||(t=this._sanitizeName(t,"field name")),t}},{key:"_sanitizeBaseBuilder",value:function(t){if(y.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(e){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>t||isNaN(t))throw new Error("limit/offset must be >= 0");return t}},{key:"_sanitizeValue",value:function(t){var e="undefined"==typeof t?"undefined":d(t);if(null===t);else if("string"===e||"number"===e||"boolean"===e);else if(y.isSquelBuilder(t));else{var r=!!f(t,this.options.valueHandlers,y.globalValueHandlers);if(!r)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.replace(/\'/g,this.options.singleQuoteReplacement):t}},{key:"_formatTableName",value:function(t){if(this.options.autoQuoteTableNames){var e=this.options.nameQuoteCharacter;t=""+e+t+e}return t}},{key:"_formatFieldAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.fieldAliasQuoteCharacter;t=""+e+t+e}return t}},{key:"_formatTableAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.tableAliasQuoteCharacter;t=""+e+t+e}return this.options.useAsForTableAliasNames?"AS "+t:t}},{key:"_formatFieldName",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return this.options.autoQuoteFieldNames&&!function(){var i=e.options.nameQuoteCharacter;t=r.ignorePeriodsForFieldNameQuotes?""+i+t+i:t.split(".").map(function(t){return"*"===t?t:""+i+t+i}).join(".")}(),t}},{key:"_formatCustomValue",value:function(t,e,r){var i=f(t,this.options.valueHandlers,y.globalValueHandlers);return i&&(t=i(t,e,r)),{formatted:!!i,value:t}}},{key:"_formatValueForParamArray",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return l(t)?t.map(function(t){return e._formatValueForParamArray(t,r)}):this._formatCustomValue(t,!0,r).value}},{key:"_formatValueForQueryString",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=this._formatCustomValue(t,!1,r),n=i.formatted,a=i.value;if(n)return this._applyNestingFormatting(a,p(t));if(l(a))a=a.map(function(t){return e._formatValueForQueryString(t)}),a=this._applyNestingFormatting(a.join(", "),p(a));else{var o="undefined"==typeof a?"undefined":d(a);if(null===a)a="NULL";else if("boolean"===o)a=a?"TRUE":"FALSE";else if(y.isSquelBuilder(a))a=this._applyNestingFormatting(a.toString(),p(a));else if("number"!==o){if("string"===o&&this.options.stringFormatter)return this.options.stringFormatter(a);if(r.dontQuote)a=""+a;else{var u=this._escapeValue(a);a="'"+u+"'"}}}return a}},{key:"_applyNestingFormatting",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if(t&&"string"==typeof t&&e&&!this.options.rawNesting){var r="("===t.charAt(0)&&")"===t.charAt(t.length-1);if(r)for(var i=0,n=1;t.length-1>++i;){var a=t.charAt(i);if("("===a)n++;else if(")"===a&&(n--,1>n)){r=!1;break}}r||(t="("+t+")")}return t}},{key:"_buildString",value:function(e,r){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],n=i.nested,a=i.buildParameterized,o=i.formattingOptions;r=r||[],e=e||"";for(var u="",s=-1,f=[],c=this.options.parameterCharacter,h=0;e.length>h;)if(e.substr(h,c.length)===c){var v=r[++s];if(a)if(y.isSquelBuilder(v)){var d=v._toParamString({buildParameterized:a,nested:!0});u+=d.text,f.push.apply(f,t(d.values))}else if(v=this._formatValueForParamArray(v,o),l(v)){var p=v.map(function(){return c}).join(", ");u+="("+p+")",f.push.apply(f,t(v))}else u+=c,f.push(v);else u+=this._formatValueForQueryString(v,o);h+=c.length}else u+=e.charAt(h),h++;return{text:this._applyNestingFormatting(u,!!n),values:f}}},{key:"_buildManyStrings",value:function(e,r){for(var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],n=[],a=[],o=0;e.length>o;++o){var l=e[o],u=r[o],s=this._buildString(l,u,{buildParameterized:i.buildParameterized,nested:!1}),f=s.text,c=s.values;n.push(f),a.push.apply(a,t(c))}return n=n.join(this.options.separator),{text:n.length?this._applyNestingFormatting(n,!!i.nested):"",values:a}}},{key:"_toParamString",value:function(t){throw new Error("Not yet implemented")}},{key:"toString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._toParamString(t).text}},{key:"toParam",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._toParamString(a({},t,{buildParameterized:!0}))}}]),o}(y.Cloneable),y.Expression=function(n){function a(t){i(this,a);var r=e(this,Object.getPrototypeOf(a).call(this,t));return r._nodes=[],r}return r(a,n),v(a,[{key:"and",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];return t=this._sanitizeExpression(t),this._nodes.push({type:"AND",expr:t,para:r}),this}},{key:"or",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];return t=this._sanitizeExpression(t),this._nodes.push({type:"OR",expr:t,para:r}),this}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=[],i=[],n=!0,a=!1,o=void 0;try{for(var l,u=this._nodes[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var s=l.value,f=s.type,c=s.expr,h=s.para,v=y.isSquelBuilder(c)?c._toParamString({buildParameterized:e.buildParameterized,nested:!0}):this._buildString(c,h,{buildParameterized:e.buildParameterized}),d=v.text,p=v.values;r.length&&r.push(f),r.push(d),i.push.apply(i,t(p))}}catch(g){a=!0,o=g}finally{try{!n&&u["return"]&&u["return"]()}finally{if(a)throw o}}return r=r.join(" "),{text:this._applyNestingFormatting(r,!!e.nested),values:i}}}]),a}(y.BaseBuilder),y.Case=function(l){function u(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];i(this,u);var n=e(this,Object.getPrototypeOf(u).call(this,r));return o(t)&&(r=t,t=null),t&&(n._fieldName=n._sanitizeField(t)),n.options=a({},y.DefaultQueryBuilderOptions,r),n._cases=[],n._elseValue=null,n}return r(u,l),v(u,[{key:"when",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];return this._cases.unshift({expression:t,values:r}),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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",i=[],a=!0,o=!1,l=void 0;try{for(var u,s=this._cases[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.expression,h=f.values,v=f.result;r=n(r," ");var d=this._buildString(c,h,{buildParameterized:e.buildParameterized,nested:!0});r+="WHEN "+d.text+" THEN "+this._formatValueForQueryString(v),i.push.apply(i,t(d.values))}}catch(y){o=!0,l=y}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}return r.length?(r+=" ELSE "+this._formatValueForQueryString(this._elseValue)+" END",this._fieldName&&(r=this._fieldName+" "+r),r="CASE "+r):r=this._formatValueForQueryString(this._elseValue),{text:r,values:i}}}]),u}(y.BaseBuilder),y.Block=function(t){function n(t){return i(this,n),e(this,Object.getPrototypeOf(n).call(this,t))}return r(n,t),v(n,[{key:"exposedMethods",value:function(){for(var t={},e=this;e;)Object.getOwnPropertyNames(e).forEach(function(r){"constructor"===r||"function"!=typeof e[r]||"_"===r.charAt(0)||y.Block.prototype[r]||(t[r]=e[r])}),e=Object.getPrototypeOf(e);return t}}]),n}(y.BaseBuilder),y.StringBlock=function(t){function n(t,r){i(this,n);var a=e(this,Object.getPrototypeOf(n).call(this,t));return a._str=r,a}return r(n,t),v(n,[{key:"_toParamString",value:function(){arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return{text:this._str,values:[]}}}]),n}(y.Block),y.FunctionBlock=function(t){function n(t){i(this,n);var r=e(this,Object.getPrototypeOf(n).call(this,t));return r._strings=[],r._values=[],r}return r(n,t),v(n,[{key:"function",value:function(t){this._strings.push(t);for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];this._values.push(r)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._buildManyStrings(this._strings,this._values,t)}}]),n}(y.Block),y.registerValueHandler(y.FunctionBlock,function(t){var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];return e?t.toParam():t.toString()}),y.AbstractTableBlock=function(a){function o(t,r){i(this,o);var n=e(this,Object.getPrototypeOf(o).call(this,t));return n._tables=[],n}return r(o,a),v(o,[{key:"_table",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",i=[];if(this._hasTable()){var a=!0,o=!1,l=void 0;try{for(var u,s=this._tables[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.table,h=f.alias;r=n(r,", ");var v=void 0;if(y.isSquelBuilder(c)){var d=c._toParamString({buildParameterized:e.buildParameterized,nested:!0}),p=d.text,g=d.values;v=p,i.push.apply(i,t(g))}else v=this._formatTableName(c);h&&(v+=" "+this._formatTableAlias(h)),r+=v}}catch(b){o=!0,l=b}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}this.options.prefix&&(r=this.options.prefix+" "+r)}return{text:r,values:i}}}]),o}(y.Block),y.TargetTableBlock=function(t){function n(){return i(this,n),e(this,Object.getPrototypeOf(n).apply(this,arguments))}return r(n,t),v(n,[{key:"target",value:function(t){this._table(t)}}]),n}(y.AbstractTableBlock),y.UpdateTableBlock=function(t){function n(){return i(this,n),e(this,Object.getPrototypeOf(n).apply(this,arguments))}return r(n,t),v(n,[{key:"table",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];this._table(t,e)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this._hasTable())throw new Error("table() needs to be called");return h(Object.getPrototypeOf(n.prototype),"_toParamString",this).call(this,t)}}]),n}(y.AbstractTableBlock),y.FromTableBlock=function(t){function n(t){return i(this,n),e(this,Object.getPrototypeOf(n).call(this,a({},t,{prefix:"FROM"})))}return r(n,t),v(n,[{key:"from",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];this._table(t,e)}}]),n}(y.AbstractTableBlock),y.IntoTableBlock=function(t){function n(t){return i(this,n),e(this,Object.getPrototypeOf(n).call(this,a({},t,{prefix:"INTO",singleTable:!0})))}return r(n,t),v(n,[{key:"into",value:function(t){this._table(t)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this._hasTable())throw new Error("into() needs to be called");return h(Object.getPrototypeOf(n.prototype),"_toParamString",this).call(this,t)}}]),n}(y.AbstractTableBlock),y.GetFieldBlock=function(a){function o(t){i(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._fields=[],r}return r(o,a),v(o,[{key:"fields",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(l(t)){var r=!0,i=!1,n=void 0;try{for(var a,o=t[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var u=a.value;this.field(u,null,e)}}catch(s){i=!0,n=s}finally{try{!r&&o["return"]&&o["return"]()}finally{if(i)throw n}}}else for(var f in t){var c=t[f];this.field(f,c,e)}}},{key:"field",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];e=e?this._sanitizeFieldAlias(e):e,t=this._sanitizeField(t);var i=this._fields.filter(function(r){return r.name===t&&r.alias===e});return i.length?this:void this._fields.push({name:t,alias:e,options:r})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=e.queryBuilder,i=e.buildParameterized,a="",o=[],l=!0,u=!1,s=void 0;try{for(var f,c=this._fields[Symbol.iterator]();!(l=(f=c.next()).done);l=!0){var h=f.value;a=n(a,", ");var v=h.name,d=h.alias,p=h.options;if("string"==typeof v)a+=this._formatFieldName(v,p);else{var g=v._toParamString({nested:!0,buildParameterized:i});a+=g.text,o.push.apply(o,t(g.values))}d&&(a+=" AS "+this._formatFieldAlias(d))}}catch(b){u=!0,s=b}finally{try{!l&&c["return"]&&c["return"]()}finally{if(u)throw s}}if(!a.length){var m=r&&r.getBlock(y.FromTableBlock);m&&m._hasTable()&&(a="*")}return{text:a,values:o}}}]),o}(y.Block),y.AbstractSetFieldBlock=function(t){function n(t){i(this,n);var r=e(this,Object.getPrototypeOf(n).call(this,t));return r._reset(),r}return r(n,t),v(n,[{key:"_reset",value:function(){this._fields=[],this._values=[[]],this._valueOptions=[[]]}},{key:"_set",value:function(t,e){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];if(this._values.length>1)throw new Error("Cannot set multiple rows of fields this way.");"undefined"!=typeof e&&(e=this._sanitizeValue(e)),t=this._sanitizeField(t);var i=this._fields.indexOf(t);-1===i&&(this._fields.push(t),i=this._fields.length-1),this._values[0][i]=e,this._valueOptions[0][i]=r}},{key:"_setFields",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("object"!==("undefined"==typeof t?"undefined":d(t)))throw new Error("Expected an object but got "+("undefined"==typeof t?"undefined":d(t)));for(var r in t)this._set(r,t[r],e)}},{key:"_setFieldsRows",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(!l(t))throw new Error("Expected an array of objects but got "+("undefined"==typeof t?"undefined":d(t)));this._reset();for(var r=0;t.length>r;++r){var i=t[r];for(var n in i){var a=i[n];n=this._sanitizeField(n),a=this._sanitizeValue(a);var o=this._fields.indexOf(n);if(r>0&&-1===o)throw new Error("All fields in subsequent rows must match the fields in the first row");-1===o&&(this._fields.push(n),o=this._fields.length-1),l(this._values[r])||(this._values[r]=[],this._valueOptions[r]=[]),this._values[r][o]=a,this._valueOptions[r][o]=e}}}}]),n}(y.Block),y.SetFieldBlock=function(a){function o(){return i(this,o),e(this,Object.getPrototypeOf(o).apply(this,arguments))}return r(o,a),v(o,[{key:"set",value:function(t,e,r){this._set(t,e,r)}},{key:"setFields",value:function(t,e){this._setFields(t,e)}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=e.buildParameterized;if(0>=this._fields.length)throw new Error("set() needs to be called");for(var i="",a=[],o=0;o<this._fields.length;++o){i=n(i,", ");var l=this._formatFieldName(this._fields[o]),u=this._values[0][o];0>l.indexOf("=")&&(l=l+" = "+this.options.parameterCharacter);var s=this._buildString(l,[u],{buildParameterized:r,formattingOptions:this._valueOptions[0][o]});i+=s.text,a.push.apply(a,t(s.values))}return{text:"SET "+i,values:a}}}]),o}(y.AbstractSetFieldBlock),y.InsertFieldValueBlock=function(a){function o(){return i(this,o),e(this,Object.getPrototypeOf(o).apply(this,arguments))}return r(o,a),v(o,[{key:"set",value:function(t,e){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];this._set(t,e,r)}},{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,r=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],i=r.buildParameterized,a=this._fields.map(function(t){return e._formatFieldName(t)}).join(", "),o=[],l=[],u=0;u<this._values.length;++u){o[u]="";for(var s=0;s<this._values[u].length;++s){var f=this._buildString(this.options.parameterCharacter,[this._values[u][s]],{buildParameterized:i,formattingOptions:this._valueOptions[u][s]});l.push.apply(l,t(f.values)),o[u]=n(o[u],", "),o[u]+=f.text}}return{text:a.length?"("+a+") VALUES ("+o.join("), (")+")":"",values:l}}}]),o}(y.AbstractSetFieldBlock),y.InsertFieldsFromQueryBlock=function(t){function n(t){i(this,n);var r=e(this,Object.getPrototypeOf(n).call(this,t));return r._fields=[],r._query=null,r}return r(n,t),v(n,[{key:"fromQuery",value:function(t,e){var r=this;this._fields=t.map(function(t){return r._sanitizeField(t)}),this._query=this._sanitizeBaseBuilder(e)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e="",r=[];if(this._fields.length&&this._query){var i=this._query._toParamString({buildParameterized:t.buildParameterized,nested:!0}),n=i.text,a=i.values;e="("+this._fields.join(", ")+") "+this._applyNestingFormatting(n),r=a}return{text:e,values:r}}}]),n}(y.Block),y.DistinctBlock=function(t){function n(){return i(this,n),e(this,Object.getPrototypeOf(n).apply(this,arguments))}return r(n,t),v(n,[{key:"distinct",value:function(){this._useDistinct=!0}},{key:"_toParamString",value:function(){return{text:this._useDistinct?"DISTINCT":"",values:[]}}}]),n}(y.Block),y.GroupByBlock=function(t){function n(t){i(this,n);var r=e(this,Object.getPrototypeOf(n).call(this,t));return r._groups=[],r}return r(n,t),v(n,[{key:"group",value:function(t){this._groups.push(this._sanitizeField(t))}},{key:"_toParamString",value:function(){arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return{text:this._groups.length?"GROUP BY "+this._groups.join(", "):"",values:[]}}}]),n}(y.Block),y.AbstractVerbSingleValueBlock=function(t){function n(t){i(this,n);var r=e(this,Object.getPrototypeOf(n).call(this,t));return r._value=0,r}return r(n,t),v(n,[{key:"_setValue",value:function(t){this._value=this._sanitizeLimitOffset(t)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=0<this._value?this.options.verb+" "+this.options.parameterCharacter:"",r=null!==this._value?[this._value]:[];return this._buildString(e,r,t)}}]),n}(y.Block),y.OffsetBlock=function(t){function n(t){return i(this,n),e(this,Object.getPrototypeOf(n).call(this,a({},t,{verb:"OFFSET"})))}return r(n,t),v(n,[{key:"offset",value:function(t){this._setValue(t)}}]),n}(y.AbstractVerbSingleValueBlock),y.LimitBlock=function(t){function n(t){return i(this,n),e(this,Object.getPrototypeOf(n).call(this,a({},t,{verb:"LIMIT"})))}return r(n,t),v(n,[{key:"limit",value:function(t){this._setValue(t)}}]),n}(y.AbstractVerbSingleValueBlock),y.AbstractConditionBlock=function(n){function a(t){i(this,a);var r=e(this,Object.getPrototypeOf(a).call(this,t));return r._conditions=[],r}return r(a,n),v(a,[{key:"_condition",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];t=this._sanitizeExpression(t),this._conditions.push({expr:t,values:r})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=[],i=[],n=!0,a=!1,o=void 0;try{for(var l,u=this._conditions[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var s=l.value,f=s.expr,c=s.values,h=y.isSquelBuilder(f)?f._toParamString({buildParameterized:e.buildParameterized}):this._buildString(f,c,{buildParameterized:e.buildParameterized});h.text.length&&r.push(h.text),i.push.apply(i,t(h.values))}}catch(v){a=!0,o=v}finally{try{!n&&u["return"]&&u["return"]()}finally{if(a)throw o}}return r.length&&(r=r.join(") AND (")),{text:r.length?this.options.verb+" ("+r+")":"",values:i}}}]),a}(y.Block),y.WhereBlock=function(t){function n(t){return i(this,n),e(this,Object.getPrototypeOf(n).call(this,a({},t,{verb:"WHERE"})))}return r(n,t),v(n,[{key:"where",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];this._condition.apply(this,[t].concat(r))}}]),n}(y.AbstractConditionBlock),y.HavingBlock=function(t){function n(t){return i(this,n),e(this,Object.getPrototypeOf(n).call(this,a({},t,{verb:"HAVING"})))}return r(n,t),v(n,[{key:"having",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;e>i;i++)r[i-1]=arguments[i];this._condition.apply(this,[t].concat(r))}}]),n}(y.AbstractConditionBlock),y.OrderByBlock=function(a){function o(t){i(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._orders=[],r}return r(o,a),v(o,[{key:"order",value:function(t,e){for(var r=arguments.length,i=Array(r>2?r-2:0),n=2;r>n;n++)i[n-2]=arguments[n];t=this._sanitizeField(t),"string"!=typeof e&&(void 0===e?e="ASC":null!==e&&(e=e?"ASC":"DESC")),this._orders.push({field:t,dir:e,values:i})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",i=[],a=!0,o=!1,l=void 0;try{for(var u,s=this._orders[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.field,h=f.dir,v=f.values;r=n(r,", ");var d=this._buildString(c,v,{buildParameterized:e.buildParameterized});r+=d.text,i.push.apply(i,t(d.values)),null!==h&&(r+=" "+h)}}catch(y){o=!0,l=y}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}return{text:r.length?"ORDER BY "+r:"",values:i}}}]),o}(y.Block),y.JoinBlock=function(a){function o(t){i(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._joins=[],r}return r(o,a),v(o,[{key:"join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2],i=arguments.length<=3||void 0===arguments[3]?"INNER":arguments[3];t=this._sanitizeTable(t,!0),e=e?this._sanitizeTableAlias(e):e,r=r?this._sanitizeExpression(r):r,this._joins.push({type:i,table:t,alias:e,condition:r})}},{key:"left_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"LEFT")}},{key:"right_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"RIGHT")}},{key:"outer_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"OUTER")}},{key:"left_outer_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"LEFT OUTER")}},{key:"full_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"FULL")}},{key:"cross_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"CROSS")}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",i=[],a=!0,o=!1,l=void 0;try{for(var u,s=this._joins[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.type,h=f.table,v=f.alias,d=f.condition;r=n(r,this.options.separator);var p=void 0;if(y.isSquelBuilder(h)){var g=h._toParamString({buildParameterized:e.buildParameterized,nested:!0});i.push.apply(i,t(g.values)),p=g.text}else p=this._formatTableName(h);if(r+=c+" JOIN "+p,v&&(r+=" "+this._formatTableAlias(v)),d){r+=" ON ";var b=void 0;b=y.isSquelBuilder(d)?d._toParamString({buildParameterized:e.buildParameterized}):this._buildString(d,[],{buildParameterized:e.buildParameterized}),r+=this._applyNestingFormatting(b.text),i.push.apply(i,t(b.values))}}}catch(m){o=!0,l=m}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}return{text:r,values:i}}}]),o}(y.Block),y.UnionBlock=function(a){function o(t){i(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._unions=[],r}return r(o,a),v(o,[{key:"union",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?"UNION":arguments[1];t=this._sanitizeTable(t),this._unions.push({type:e,table:t})}},{key:"union_all",value:function(t){this.union(t,"UNION ALL")}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",i=[],a=!0,o=!1,l=void 0;try{for(var u,s=this._unions[Symbol.iterator]();!(a=(u=s.next()).done);a=!0){var f=u.value,c=f.type,h=f.table;r=n(r,this.options.separator);var v=void 0;if(h instanceof y.BaseBuilder){var d=h._toParamString({buildParameterized:e.buildParameterized,nested:!0});v=d.text,i.push.apply(i,t(d.values))}else r=this._formatTableName(h);r+=c+" "+v}}catch(p){o=!0,l=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(o)throw l}}return{text:r,values:i}}}]),o}(y.Block),y.QueryBuilder=function(n){function o(t,r){i(this,o);var n=e(this,Object.getPrototypeOf(o).call(this,t));n.blocks=r||[];var a=!0,l=!1,u=void 0;try{for(var s,f=n.blocks[Symbol.iterator]();!(a=(s=f.next()).done);a=!0){var c=s.value,h=c.exposedMethods();for(var v in h){var d=h[v];if(void 0!==n[v])throw new Error("Builder already has a builder method called: "+v);!function(t,e,r){n[e]=function(){for(var e=arguments.length,i=Array(e),a=0;e>a;a++)i[a]=arguments[a];return r.call.apply(r,[t].concat(i)),n}}(c,v,d)}}}catch(y){l=!0,u=y}finally{try{!a&&f["return"]&&f["return"]()}finally{if(l)throw u}}return n}return r(o,n),v(o,[{key:"registerValueHandler",value:function(t,e){var r=!0,i=!1,n=void 0;try{for(var a,l=this.blocks[Symbol.iterator]();!(r=(a=l.next()).done);r=!0){var u=a.value;u.registerValueHandler(t,e)}}catch(s){i=!0,n=s}finally{try{!r&&l["return"]&&l["return"]()}finally{if(i)throw n}}return h(Object.getPrototypeOf(o.prototype),"registerValueHandler",this).call(this,t,e),this}},{key:"updateOptions",value:function(t){this.options=a({},this.options,t);var e=!0,r=!1,i=void 0;try{for(var n,o=this.blocks[Symbol.iterator]();!(e=(n=o.next()).done);e=!0){var l=n.value;l.options=a({},l.options,t)}}catch(u){r=!0,i=u}finally{try{!e&&o["return"]&&o["return"]()}finally{if(r)throw i}}}},{key:"_toParamString",value:function(){var e,r=this,i=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];i=a({},this.options,i);var n=this.blocks.map(function(t){return t._toParamString({buildParameterized:i.buildParameterized,queryBuilder:r})}),o=n.map(function(t){return t.text}),l=n.map(function(t){return t.values}),u=o.filter(function(t){return 0<t.length}).join(i.separator),s=(e=[]).concat.apply(e,t(l));return i.nested||i.numberedParameters&&!function(){var t=void 0!==i.numberedParametersStartAt?i.numberedParametersStartAt:1,e=i.parameterCharacter.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");u=u.replace(new RegExp(e,"g"),function(){return""+i.numberedParametersPrefix+t++})}(),{text:this._applyNestingFormatting(u,!!i.nested),values:s}}},{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(t){var e=this.blocks.filter(function(e){return e instanceof t});return e[0]}}]),o}(y.BaseBuilder),y.Select=function(t){function n(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return i(this,n),r=r||[new y.StringBlock(t,"SELECT"),new y.FunctionBlock(t),new y.DistinctBlock(t),new y.GetFieldBlock(t),new y.FromTableBlock(t),new y.JoinBlock(t),new y.WhereBlock(t),new y.GroupByBlock(t),new y.HavingBlock(t),new y.OrderByBlock(t),new y.LimitBlock(t),new y.OffsetBlock(t),new y.UnionBlock(t)],
2
+ e(this,Object.getPrototypeOf(n).call(this,t,r))}return r(n,t),n}(y.QueryBuilder),y.Update=function(t){function n(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return i(this,n),r=r||[new y.StringBlock(t,"UPDATE"),new y.UpdateTableBlock(t),new y.SetFieldBlock(t),new y.WhereBlock(t),new y.OrderByBlock(t),new y.LimitBlock(t)],e(this,Object.getPrototypeOf(n).call(this,t,r))}return r(n,t),n}(y.QueryBuilder),y.Delete=function(t){function n(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return i(this,n),r=r||[new y.StringBlock(t,"DELETE"),new y.TargetTableBlock(t),new y.FromTableBlock(a({},t,{singleTable:!0})),new y.JoinBlock(t),new y.WhereBlock(t),new y.OrderByBlock(t),new y.LimitBlock(t)],e(this,Object.getPrototypeOf(n).call(this,t,r))}return r(n,t),n}(y.QueryBuilder),y.Insert=function(t){function n(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return i(this,n),r=r||[new y.StringBlock(t,"INSERT"),new y.IntoTableBlock(t),new y.InsertFieldValueBlock(t),new y.InsertFieldsFromQueryBlock(t)],e(this,Object.getPrototypeOf(n).call(this,t,r))}return r(n,t),n}(y.QueryBuilder);var g={VERSION:"5.8.0",flavour:c,expr:function(t){return new y.Expression(t)},"case":function(t,e){return new y.Case(t,e)},select:function(t,e){return new y.Select(t,e)},update:function(t,e){return new y.Update(t,e)},insert:function(t,e){return new y.Insert(t,e)},"delete":function(t,e){return new y.Delete(t,e)},str:function(){var t=new y.FunctionBlock;return t["function"].apply(t,arguments),t},rstr:function(){var t=new y.FunctionBlock({rawNesting:!0});return t["function"].apply(t,arguments),t},registerValueHandler:y.registerValueHandler};return g.remove=g["delete"],g.cls=y,g}var h=function p(t,e,r){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var n=Object.getPrototypeOf(t);return null===n?void 0:p(n,e,r)}if("value"in i)return i.value;var a=i.get;if(void 0!==a)return a.call(r)},v=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},y=c();return y.flavours={},y.useFlavour=function(){var t=arguments.length<=0||void 0===arguments[0]?null:arguments[0];if(!t)return y;if(y.flavours[t]instanceof Function){var e=c(t);return y.flavours[t].call(null,e),e.flavours=y.flavours,e.useFlavour=y.useFlavour,e}throw new Error("Flavour not available: "+t)},y});
package/dist/squel.js CHANGED
@@ -82,17 +82,6 @@ function _isArray(obj) {
82
82
  return obj && obj.constructor.prototype === Array.prototype;
83
83
  };
84
84
 
85
- // get class name of given object
86
- function _getObjectClassName(obj) {
87
- if (obj && obj.constructor && obj.constructor.toString) {
88
- var arr = obj.constructor.toString().match(/function\s*(\w+)/);
89
-
90
- if (arr && 2 === arr.length) {
91
- return arr[1];
92
- }
93
- }
94
- }
95
-
96
85
  // clone given item
97
86
  function _clone(src) {
98
87
  if (!src) {
@@ -239,7 +228,15 @@ function _buildSquel() {
239
228
  var flavour = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
240
229
 
241
230
  var cls = {
242
- _getObjectClassName: _getObjectClassName
231
+ // Get whether obj is a query builder
232
+ isSquelBuilder: function isSquelBuilder(obj) {
233
+ return obj && !!obj._toParamString;
234
+ }
235
+ };
236
+
237
+ // Get whether nesting should be applied for given item
238
+ var _shouldApplyNesting = function _shouldApplyNesting(obj) {
239
+ return !cls.isSquelBuilder(obj) || !obj.options.rawNesting;
243
240
  };
244
241
 
245
242
  // default query builder options
@@ -275,7 +272,9 @@ function _buildSquel() {
275
272
  // String used to join individual blocks in a query when it's stringified
276
273
  separator: ' ',
277
274
  // Function for formatting string values prior to insertion into query string
278
- stringFormatter: null
275
+ stringFormatter: null,
276
+ // Whether to prevent the addition of brackets () when nesting this query builder's output
277
+ rawNesting: false
279
278
  };
280
279
 
281
280
  // Global custom value handlers for all instances of builder
@@ -367,7 +366,7 @@ function _buildSquel() {
367
366
  key: '_sanitizeExpression',
368
367
  value: function _sanitizeExpression(expr) {
369
368
  // If it's not a base builder instance
370
- if (!(expr instanceof cls.BaseBuilder)) {
369
+ if (!cls.isSquelBuilder(expr)) {
371
370
  // It must then be a string
372
371
  if (typeof expr !== "string") {
373
372
  throw new Error("expression must be a string or builder instance");
@@ -395,7 +394,7 @@ function _buildSquel() {
395
394
  }, {
396
395
  key: '_sanitizeField',
397
396
  value: function _sanitizeField(item) {
398
- if (!(item instanceof cls.BaseBuilder)) {
397
+ if (!cls.isSquelBuilder(item)) {
399
398
  item = this._sanitizeName(item, "field name");
400
399
  }
401
400
 
@@ -404,7 +403,7 @@ function _buildSquel() {
404
403
  }, {
405
404
  key: '_sanitizeBaseBuilder',
406
405
  value: function _sanitizeBaseBuilder(item) {
407
- if (item instanceof cls.BaseBuilder) {
406
+ if (cls.isSquelBuilder(item)) {
408
407
  return item;
409
408
  }
410
409
 
@@ -461,7 +460,7 @@ function _buildSquel() {
461
460
  // null is allowed
462
461
  } else if ("string" === itemType || "number" === itemType || "boolean" === itemType) {
463
462
  // primitives are allowed
464
- } else if (item instanceof cls.BaseBuilder) {
463
+ } else if (cls.isSquelBuilder(item)) {
465
464
  // Builders allowed
466
465
  } else {
467
466
  var typeIsValid = !!getValueHandler(item, this.options.valueHandlers, cls.globalValueHandlers);
@@ -560,7 +559,7 @@ function _buildSquel() {
560
559
  };
561
560
  }
562
561
 
563
- /**
562
+ /**
564
563
  * Format given value for inclusion into parameter values array.
565
564
  */
566
565
 
@@ -591,6 +590,8 @@ function _buildSquel() {
591
590
 
592
591
  var formattingOptions = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
593
592
 
593
+ // maybe we have a cusotm value handler
594
+
594
595
  var _formatCustomValue2 = this._formatCustomValue(initialValue, false, formattingOptions);
595
596
 
596
597
  var formatted = _formatCustomValue2.formatted;
@@ -599,7 +600,7 @@ function _buildSquel() {
599
600
  // if formatting took place then return it directly
600
601
 
601
602
  if (formatted) {
602
- return this._applyNestingFormatting(value);
603
+ return this._applyNestingFormatting(value, _shouldApplyNesting(initialValue));
603
604
  }
604
605
 
605
606
  // if it's an array then format each element separately
@@ -608,7 +609,7 @@ function _buildSquel() {
608
609
  return _this4._formatValueForQueryString(v);
609
610
  });
610
611
 
611
- value = this._applyNestingFormatting(value.join(', '));
612
+ value = this._applyNestingFormatting(value.join(', '), _shouldApplyNesting(value));
612
613
  } else {
613
614
  var typeofValue = typeof value === 'undefined' ? 'undefined' : _typeof(value);
614
615
 
@@ -616,8 +617,8 @@ function _buildSquel() {
616
617
  value = "NULL";
617
618
  } else if (typeofValue === "boolean") {
618
619
  value = value ? "TRUE" : "FALSE";
619
- } else if (value instanceof cls.BaseBuilder) {
620
- value = this._applyNestingFormatting(value.toString());
620
+ } else if (cls.isSquelBuilder(value)) {
621
+ value = this._applyNestingFormatting(value.toString(), _shouldApplyNesting(value));
621
622
  } else if (typeofValue !== "number") {
622
623
  // if it's a string and we have custom string formatting turned on then use that
623
624
  if ('string' === typeofValue && this.options.stringFormatter) {
@@ -641,20 +642,43 @@ function _buildSquel() {
641
642
  value: function _applyNestingFormatting(str) {
642
643
  var nesting = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
643
644
 
644
- if (str && typeof str === 'string' && nesting) {
645
- // don't want to apply twice
646
- if ('(' !== str.charAt(0) || ')' !== str.charAt(str.length - 1)) {
647
- return '(' + str + ')';
645
+ if (str && typeof str === 'string' && nesting && !this.options.rawNesting) {
646
+ // apply brackets if they're not already existing
647
+ var alreadyHasBrackets = '(' === str.charAt(0) && ')' === str.charAt(str.length - 1);
648
+
649
+ if (alreadyHasBrackets) {
650
+ // check that it's the form "((x)..(y))" rather than "(x)..(y)"
651
+ var idx = 0,
652
+ open = 1;
653
+
654
+ while (str.length - 1 > ++idx) {
655
+ var c = str.charAt(idx);
656
+
657
+ if ('(' === c) {
658
+ open++;
659
+ } else if (')' === c) {
660
+ open--;
661
+ if (1 > open) {
662
+ alreadyHasBrackets = false;
663
+
664
+ break;
665
+ }
666
+ }
667
+ }
668
+ }
669
+
670
+ if (!alreadyHasBrackets) {
671
+ str = '(' + str + ')';
648
672
  }
649
673
  }
650
674
 
651
675
  return str;
652
676
  }
653
677
 
654
- /**
655
- * Build given string and its corresponding parameter values into
678
+ /**
679
+ * Build given string and its corresponding parameter values into
656
680
  * output.
657
- *
681
+ *
658
682
  * @param {String} str
659
683
  * @param {Array} values
660
684
  * @param {Object} [options] Additional options.
@@ -690,7 +714,7 @@ function _buildSquel() {
690
714
  var value = values[++curValue];
691
715
 
692
716
  if (buildParameterized) {
693
- if (value instanceof cls.BaseBuilder) {
717
+ if (cls.isSquelBuilder(value)) {
694
718
  var ret = value._toParamString({
695
719
  buildParameterized: buildParameterized,
696
720
  nested: true
@@ -734,10 +758,10 @@ function _buildSquel() {
734
758
  };
735
759
  }
736
760
 
737
- /**
738
- * Build all given strings and their corresponding parameter values into
761
+ /**
762
+ * Build all given strings and their corresponding parameter values into
739
763
  * output.
740
- *
764
+ *
741
765
  * @param {Array} strings
742
766
  * @param {Array} strValues array of value arrays corresponding to each string.
743
767
  * @param {Object} [options] Additional options.
@@ -781,7 +805,7 @@ function _buildSquel() {
781
805
 
782
806
  /**
783
807
  * Get parameterized representation of this instance.
784
- *
808
+ *
785
809
  * @param {Object} [options] Options.
786
810
  * @param {Boolean} [options.buildParameterized] Whether to build paramterized string. Default is false.
787
811
  * @param {Boolean} [options.nested] Whether this expression is nested within another.
@@ -839,10 +863,10 @@ function _buildSquel() {
839
863
  *
840
864
  * SQL expressions are used in WHERE and ON clauses to filter data by various criteria.
841
865
  *
842
- * Expressions can be nested. Nested expression contains can themselves
843
- * contain nested expressions. When rendered a nested expression will be
866
+ * Expressions can be nested. Nested expression contains can themselves
867
+ * contain nested expressions. When rendered a nested expression will be
844
868
  * fully contained within brackets.
845
- *
869
+ *
846
870
  * All the build methods in this object return the object instance for chained method calling purposes.
847
871
  */
848
872
  cls.Expression = function (_cls$BaseBuilder) {
@@ -918,7 +942,7 @@ function _buildSquel() {
918
942
  var expr = node.expr;
919
943
  var para = node.para;
920
944
 
921
- var _ref = expr instanceof cls.BaseBuilder ? expr._toParamString({
945
+ var _ref = cls.isSquelBuilder(expr) ? expr._toParamString({
922
946
  buildParameterized: options.buildParameterized,
923
947
  nested: true
924
948
  }) : this._buildString(expr, para, {
@@ -1320,7 +1344,7 @@ function _buildSquel() {
1320
1344
 
1321
1345
  var tableStr = void 0;
1322
1346
 
1323
- if (table instanceof cls.BaseBuilder) {
1347
+ if (cls.isSquelBuilder(table)) {
1324
1348
  var _table$_toParamString = table._toParamString({
1325
1349
  buildParameterized: options.buildParameterized,
1326
1350
  nested: true
@@ -2135,7 +2159,7 @@ function _buildSquel() {
2135
2159
  cls.AbstractConditionBlock = function (_cls$Block10) {
2136
2160
  _inherits(_class23, _cls$Block10);
2137
2161
 
2138
- /**
2162
+ /**
2139
2163
  * @param {String} options.verb The condition verb.
2140
2164
  */
2141
2165
 
@@ -2189,7 +2213,7 @@ function _buildSquel() {
2189
2213
  var expr = _step10$value.expr;
2190
2214
  var values = _step10$value.values;
2191
2215
 
2192
- var ret = expr instanceof cls.BaseBuilder ? expr._toParamString({
2216
+ var ret = cls.isSquelBuilder(expr) ? expr._toParamString({
2193
2217
  buildParameterized: options.buildParameterized
2194
2218
  }) : this._buildString(expr, values, {
2195
2219
  buildParameterized: options.buildParameterized
@@ -2498,7 +2522,7 @@ function _buildSquel() {
2498
2522
 
2499
2523
  var tableStr = void 0;
2500
2524
 
2501
- if (table instanceof cls.BaseBuilder) {
2525
+ if (cls.isSquelBuilder(table)) {
2502
2526
  var ret = table._toParamString({
2503
2527
  buildParameterized: options.buildParameterized,
2504
2528
  nested: true
@@ -2521,7 +2545,7 @@ function _buildSquel() {
2521
2545
 
2522
2546
  var _ret4 = void 0;
2523
2547
 
2524
- if (condition instanceof cls.BaseBuilder) {
2548
+ if (cls.isSquelBuilder(condition)) {
2525
2549
  _ret4 = condition._toParamString({
2526
2550
  buildParameterized: options.buildParameterized
2527
2551
  });
@@ -2973,7 +2997,7 @@ function _buildSquel() {
2973
2997
  }(cls.QueryBuilder);
2974
2998
 
2975
2999
  var _squel = {
2976
- VERSION: '5.5.0',
3000
+ VERSION: '5.8.0',
2977
3001
  flavour: flavour,
2978
3002
  expr: function expr(options) {
2979
3003
  return new cls.Expression(options);
@@ -2998,6 +3022,13 @@ function _buildSquel() {
2998
3022
  inst.function.apply(inst, arguments);
2999
3023
  return inst;
3000
3024
  },
3025
+ rstr: function rstr() {
3026
+ var inst = new cls.FunctionBlock({
3027
+ rawNesting: true
3028
+ });
3029
+ inst.function.apply(inst, arguments);
3030
+ return inst;
3031
+ },
3001
3032
  registerValueHandler: cls.registerValueHandler
3002
3033
  };
3003
3034
 
@@ -3658,21 +3689,93 @@ squel.flavours['postgres'] = function (_squel) {
3658
3689
 
3659
3690
  var _this57 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class50).call(this, options));
3660
3691
 
3661
- _this57._str = null;
3692
+ _this57._fields = [];
3662
3693
  return _this57;
3663
3694
  }
3664
3695
 
3665
3696
  _createClass(_class50, [{
3666
3697
  key: 'returning',
3667
- value: function returning(ret) {
3668
- this._str = this._sanitizeField(ret);
3698
+ value: function returning(field) {
3699
+ var alias = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
3700
+ var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
3701
+
3702
+ alias = alias ? this._sanitizeFieldAlias(alias) : alias;
3703
+ field = this._sanitizeField(field);
3704
+
3705
+ // if field-alias combo already present then don't add
3706
+ var existingField = this._fields.filter(function (f) {
3707
+ return f.name === field && f.alias === alias;
3708
+ });
3709
+ if (existingField.length) {
3710
+ return this;
3711
+ }
3712
+
3713
+ this._fields.push({
3714
+ name: field,
3715
+ alias: alias,
3716
+ options: options
3717
+ });
3669
3718
  }
3670
3719
  }, {
3671
3720
  key: '_toParamString',
3672
3721
  value: function _toParamString() {
3722
+ var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
3723
+ var queryBuilder = options.queryBuilder;
3724
+ var buildParameterized = options.buildParameterized;
3725
+
3726
+
3727
+ var totalStr = '',
3728
+ totalValues = [];
3729
+
3730
+ var _iteratorNormalCompletion18 = true;
3731
+ var _didIteratorError18 = false;
3732
+ var _iteratorError18 = undefined;
3733
+
3734
+ try {
3735
+ for (var _iterator18 = this._fields[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) {
3736
+ var field = _step18.value;
3737
+
3738
+ totalStr = _pad(totalStr, ", ");
3739
+
3740
+ var name = field.name;
3741
+ var alias = field.alias;
3742
+ var _options2 = field.options;
3743
+
3744
+
3745
+ if (typeof name === 'string') {
3746
+ totalStr += this._formatFieldName(name, _options2);
3747
+ } else {
3748
+ var ret = name._toParamString({
3749
+ nested: true,
3750
+ buildParameterized: buildParameterized
3751
+ });
3752
+
3753
+ totalStr += ret.text;
3754
+ totalValues.push.apply(totalValues, _toConsumableArray(ret.values));
3755
+ }
3756
+
3757
+ if (alias) {
3758
+ totalStr += ' AS ' + this._formatFieldAlias(alias);
3759
+ }
3760
+ }
3761
+ } catch (err) {
3762
+ _didIteratorError18 = true;
3763
+ _iteratorError18 = err;
3764
+ } finally {
3765
+ try {
3766
+ if (!_iteratorNormalCompletion18 && _iterator18.return) {
3767
+ _iterator18.return();
3768
+ }
3769
+ } finally {
3770
+ if (_didIteratorError18) {
3771
+ throw _iteratorError18;
3772
+ }
3773
+ }
3774
+ }
3775
+
3673
3776
  return {
3674
- text: this._str ? 'RETURNING ' + this._str : '',
3675
- values: []
3777
+ text: totalStr.length > 0 ? 'RETURNING ' + totalStr : '',
3778
+ values: totalValues
3676
3779
  };
3677
3780
  }
3678
3781
  }]);
@@ -3706,15 +3809,15 @@ squel.flavours['postgres'] = function (_squel) {
3706
3809
  var parts = [];
3707
3810
  var values = [];
3708
3811
 
3709
- var _iteratorNormalCompletion18 = true;
3710
- var _didIteratorError18 = false;
3711
- var _iteratorError18 = undefined;
3812
+ var _iteratorNormalCompletion19 = true;
3813
+ var _didIteratorError19 = false;
3814
+ var _iteratorError19 = undefined;
3712
3815
 
3713
3816
  try {
3714
- for (var _iterator18 = this._tables[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) {
3715
- var _step18$value = _step18.value;
3716
- var alias = _step18$value.alias;
3717
- var table = _step18$value.table;
3817
+ for (var _iterator19 = this._tables[Symbol.iterator](), _step19; !(_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done); _iteratorNormalCompletion19 = true) {
3818
+ var _step19$value = _step19.value;
3819
+ var alias = _step19$value.alias;
3820
+ var table = _step19$value.table;
3718
3821
 
3719
3822
  var ret = table._toParamString({
3720
3823
  buildParameterized: options.buildParameterized,
@@ -3725,16 +3828,16 @@ squel.flavours['postgres'] = function (_squel) {
3725
3828
  values.push.apply(values, _toConsumableArray(ret.values));
3726
3829
  }
3727
3830
  } catch (err) {
3728
- _didIteratorError18 = true;
3729
- _iteratorError18 = err;
3831
+ _didIteratorError19 = true;
3832
+ _iteratorError19 = err;
3730
3833
  } finally {
3731
3834
  try {
3732
- if (!_iteratorNormalCompletion18 && _iterator18.return) {
3733
- _iterator18.return();
3835
+ if (!_iteratorNormalCompletion19 && _iterator19.return) {
3836
+ _iterator19.return();
3734
3837
  }
3735
3838
  } finally {
3736
- if (_didIteratorError18) {
3737
- throw _iteratorError18;
3839
+ if (_didIteratorError19) {
3840
+ throw _iteratorError19;
3738
3841
  }
3739
3842
  }
3740
3843
  }
package/dist/squel.min.js CHANGED
@@ -1,2 +1,2 @@
1
- /*! 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 t(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function e(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){return t.length?t+e:t}function o(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];if(t&&n){var i=!0,o=!1,a=void 0;try{for(var l,u=function(){var e=l.value;"object"===("undefined"==typeof e?"undefined":p(e))&&Object.getOwnPropertyNames(e).forEach(function(n){t[n]=e[n]})},s=n[Symbol.iterator]();!(i=(l=s.next()).done);i=!0)u()}catch(c){o=!0,a=c}finally{try{!i&&s["return"]&&s["return"]()}finally{if(o)throw a}}}return t}function a(t){return t&&t.constructor.prototype===Object.prototype}function l(t){return t&&t.constructor.prototype===Array.prototype}function u(t){if(t&&t.constructor&&t.constructor.toString){var e=t.constructor.toString().match(/function\s*(\w+)/);if(e&&2===e.length)return e[1]}}function s(t){if(!t)return t;if("function"==typeof t.clone)return t.clone();if(!a(t)&&!l(t))return JSON.parse(JSON.stringify(t));var e=function(){var e=new t.constructor;return Object.getOwnPropertyNames(t).forEach(function(n){"function"!=typeof t[n]&&(e[n]=s(t[n]))}),{v:e}}();return"object"===("undefined"==typeof e?"undefined":p(e))?e.v:void 0}function c(t,e,n){var r="undefined"==typeof e?"undefined":p(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=!0,o=!1,a=void 0;try{for(var l,u=t[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value;if(s.type===e)return void(s.handler=n)}}catch(c){o=!0,a=c}finally{try{!i&&u["return"]&&u["return"]()}finally{if(o)throw a}}t.push({type:e,handler:n})}function f(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];var i=!0,o=!1,a=void 0;try{for(var l,u=n[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value,c=!0,f=!1,h=void 0;try{for(var v,d=s[Symbol.iterator]();!(c=(v=d.next()).done);c=!0){var y=v.value;if(("undefined"==typeof t?"undefined":p(t))===y.type||"string"!=typeof y.type&&t instanceof y.type)return y.handler}}catch(g){f=!0,h=g}finally{try{!c&&d["return"]&&d["return"]()}finally{if(f)throw h}}}}catch(g){o=!0,a=g}finally{try{!i&&u["return"]&&u["return"]()}finally{if(o)throw a}}}function h(){var h=arguments.length<=0||void 0===arguments[0]?null:arguments[0],y={_getObjectClassName:u};y.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},y.globalValueHandlers=[],y.registerValueHandler=function(t,e){c(y.globalValueHandlers,t,e)},y.Cloneable=function(){function t(){r(this,t)}return d(t,[{key:"clone",value:function(){var t=new this.constructor;return o(t,s(o({},this)))}}]),t}(),y.BaseBuilder=function(i){function a(t){r(this,a);var n=e(this,Object.getPrototypeOf(a).call(this)),i=JSON.parse(JSON.stringify(y.DefaultQueryBuilderOptions));return n.options=o({},i,t),n}return n(a,i),d(a,[{key:"registerValueHandler",value:function(t,e){return c(this.options.valueHandlers,t,e),this}},{key:"_sanitizeExpression",value:function(t){if(!(t instanceof y.BaseBuilder)&&"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(e+" must be a string");return t}},{key:"_sanitizeField",value:function(t){return t instanceof y.BaseBuilder||(t=this._sanitizeName(t,"field name")),t}},{key:"_sanitizeBaseBuilder",value:function(t){if(t instanceof y.BaseBuilder)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(e){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>t||isNaN(t))throw new Error("limit/offset must be >= 0");return t}},{key:"_sanitizeValue",value:function(t){var e="undefined"==typeof t?"undefined":p(t);if(null===t);else if("string"===e||"number"===e||"boolean"===e);else if(t instanceof y.BaseBuilder);else{var n=!!f(t,this.options.valueHandlers,y.globalValueHandlers);if(!n)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.replace(/\'/g,this.options.singleQuoteReplacement):t}},{key:"_formatTableName",value:function(t){if(this.options.autoQuoteTableNames){var e=this.options.nameQuoteCharacter;t=""+e+t+e}return t}},{key:"_formatFieldAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.fieldAliasQuoteCharacter;t=""+e+t+e}return t}},{key:"_formatTableAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.tableAliasQuoteCharacter;t=""+e+t+e}return this.options.useAsForTableAliasNames?"AS "+t:t}},{key:"_formatFieldName",value:function(t){var e=this,n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return this.options.autoQuoteFieldNames&&!function(){var r=e.options.nameQuoteCharacter;t=n.ignorePeriodsForFieldNameQuotes?""+r+t+r:t.split(".").map(function(t){return"*"===t?t:""+r+t+r}).join(".")}(),t}},{key:"_formatCustomValue",value:function(t,e,n){var r=f(t,this.options.valueHandlers,y.globalValueHandlers);return r&&(t=r(t,e,n)),{formatted:!!r,value:t}}},{key:"_formatValueForParamArray",value:function(t){var e=this,n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return l(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=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=this._formatCustomValue(t,!1,n),i=r.formatted,o=r.value;if(i)return this._applyNestingFormatting(o);if(l(o))o=o.map(function(t){return e._formatValueForQueryString(t)}),o=this._applyNestingFormatting(o.join(", "));else{var a="undefined"==typeof o?"undefined":p(o);if(null===o)o="NULL";else if("boolean"===a)o=o?"TRUE":"FALSE";else if(o instanceof y.BaseBuilder)o=this._applyNestingFormatting(o.toString());else if("number"!==a){if("string"===a&&this.options.stringFormatter)return this.options.stringFormatter(o);if(n.dontQuote)o=""+o;else{var u=this._escapeValue(o);o="'"+u+"'"}}}return o}},{key:"_applyNestingFormatting",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];return t&&"string"==typeof t&&e&&("("!==t.charAt(0)||")"!==t.charAt(t.length-1))?"("+t+")":t}},{key:"_buildString",value:function(e,n){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],i=r.nested,o=r.buildParameterized,a=r.formattingOptions;n=n||[],e=e||"";for(var u="",s=-1,c=[],f=this.options.parameterCharacter,h=0;e.length>h;)if(e.substr(h,f.length)===f){var v=n[++s];if(o)if(v instanceof y.BaseBuilder){var d=v._toParamString({buildParameterized:o,nested:!0});u+=d.text,c.push.apply(c,t(d.values))}else if(v=this._formatValueForParamArray(v,a),l(v)){var p=v.map(function(){return f}).join(", ");u+="("+p+")",c.push.apply(c,t(v))}else u+=f,c.push(v);else u+=this._formatValueForQueryString(v,a);h+=f.length}else u+=e.charAt(h),h++;return{text:this._applyNestingFormatting(u,!!i),values:c}}},{key:"_buildManyStrings",value:function(e,n){for(var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],i=[],o=[],a=0;e.length>a;++a){var l=e[a],u=n[a],s=this._buildString(l,u,{buildParameterized:r.buildParameterized,nested:!1}),c=s.text,f=s.values;i.push(c),o.push.apply(o,t(f))}return i=i.join(this.options.separator),{text:i.length?this._applyNestingFormatting(i,!!r.nested):"",values:o}}},{key:"_toParamString",value:function(t){throw new Error("Not yet implemented")}},{key:"toString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._toParamString(t).text}},{key:"toParam",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._toParamString(o({},t,{buildParameterized:!0}))}}]),a}(y.Cloneable),y.Expression=function(i){function o(t){r(this,o);var n=e(this,Object.getPrototypeOf(o).call(this,t));return n._nodes=[],n}return n(o,i),d(o,[{key:"and",value:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];return t=this._sanitizeExpression(t),this._nodes.push({type:"AND",expr:t,para:n}),this}},{key:"or",value:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];return t=this._sanitizeExpression(t),this._nodes.push({type:"OR",expr:t,para:n}),this}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=[],r=[],i=!0,o=!1,a=void 0;try{for(var l,u=this._nodes[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value,c=s.type,f=s.expr,h=s.para,v=f instanceof y.BaseBuilder?f._toParamString({buildParameterized:e.buildParameterized,nested:!0}):this._buildString(f,h,{buildParameterized:e.buildParameterized}),d=v.text,p=v.values;n.length&&n.push(c),n.push(d),r.push.apply(r,t(p))}}catch(g){o=!0,a=g}finally{try{!i&&u["return"]&&u["return"]()}finally{if(o)throw a}}return n=n.join(" "),{text:this._applyNestingFormatting(n,!!e.nested),values:r}}}]),o}(y.BaseBuilder),y.Case=function(l){function u(t){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];r(this,u);var i=e(this,Object.getPrototypeOf(u).call(this,n));return a(t)&&(n=t,t=null),t&&(i._fieldName=i._sanitizeField(t)),i.options=o({},y.DefaultQueryBuilderOptions,n),i._cases=[],i._elseValue=null,i}return n(u,l),d(u,[{key:"when",value:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n="",r=[],o=!0,a=!1,l=void 0;try{for(var u,s=this._cases[Symbol.iterator]();!(o=(u=s.next()).done);o=!0){var c=u.value,f=c.expression,h=c.values,v=c.result;n=i(n," ");var d=this._buildString(f,h,{buildParameterized:e.buildParameterized,nested:!0});n+="WHEN "+d.text+" THEN "+this._formatValueForQueryString(v),r.push.apply(r,t(d.values))}}catch(p){a=!0,l=p}finally{try{!o&&s["return"]&&s["return"]()}finally{if(a)throw l}}return n.length?(n+=" ELSE "+this._formatValueForQueryString(this._elseValue)+" END",this._fieldName&&(n=this._fieldName+" "+n),n="CASE "+n):n=this._formatValueForQueryString(this._elseValue),{text:n,values:r}}}]),u}(y.BaseBuilder),y.Block=function(t){function i(t){return r(this,i),e(this,Object.getPrototypeOf(i).call(this,t))}return n(i,t),d(i,[{key:"exposedMethods",value:function(){for(var t={},e=this;e;)Object.getOwnPropertyNames(e).forEach(function(n){"constructor"===n||"function"!=typeof e[n]||"_"===n.charAt(0)||y.Block.prototype[n]||(t[n]=e[n])}),e=Object.getPrototypeOf(e);return t}}]),i}(y.BaseBuilder),y.StringBlock=function(t){function i(t,n){r(this,i);var o=e(this,Object.getPrototypeOf(i).call(this,t));return o._str=n,o}return n(i,t),d(i,[{key:"_toParamString",value:function(){arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return{text:this._str,values:[]}}}]),i}(y.Block),y.FunctionBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._strings=[],n._values=[],n}return n(i,t),d(i,[{key:"function",value:function(t){this._strings.push(t);for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];this._values.push(n)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._buildManyStrings(this._strings,this._values,t)}}]),i}(y.Block),y.registerValueHandler(y.FunctionBlock,function(t){var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];return e?t.toParam():t.toString()}),y.AbstractTableBlock=function(o){function a(t,n){r(this,a);var i=e(this,Object.getPrototypeOf(a).call(this,t));return i._tables=[],i}return n(a,o),d(a,[{key:"_table",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n="",r=[];if(this._hasTable()){var o=!0,a=!1,l=void 0;try{for(var u,s=this._tables[Symbol.iterator]();!(o=(u=s.next()).done);o=!0){var c=u.value,f=c.table,h=c.alias;n=i(n,", ");var v=void 0;if(f instanceof y.BaseBuilder){var d=f._toParamString({buildParameterized:e.buildParameterized,nested:!0}),p=d.text,g=d.values;v=p,r.push.apply(r,t(g))}else v=this._formatTableName(f);h&&(v+=" "+this._formatTableAlias(h)),n+=v}}catch(_){a=!0,l=_}finally{try{!o&&s["return"]&&s["return"]()}finally{if(a)throw l}}this.options.prefix&&(n=this.options.prefix+" "+n)}return{text:n,values:r}}}]),a}(y.Block),y.TargetTableBlock=function(t){function i(){return r(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return n(i,t),d(i,[{key:"target",value:function(t){this._table(t)}}]),i}(y.AbstractTableBlock),y.UpdateTableBlock=function(t){function i(){return r(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return n(i,t),d(i,[{key:"table",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];this._table(t,e)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this._hasTable())throw new Error("table() needs to be called");return v(Object.getPrototypeOf(i.prototype),"_toParamString",this).call(this,t)}}]),i}(y.AbstractTableBlock),y.FromTableBlock=function(t){function i(t){return r(this,i),e(this,Object.getPrototypeOf(i).call(this,o({},t,{prefix:"FROM"})))}return n(i,t),d(i,[{key:"from",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];this._table(t,e)}}]),i}(y.AbstractTableBlock),y.IntoTableBlock=function(t){function i(t){return r(this,i),e(this,Object.getPrototypeOf(i).call(this,o({},t,{prefix:"INTO",singleTable:!0})))}return n(i,t),d(i,[{key:"into",value:function(t){this._table(t)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this._hasTable())throw new Error("into() needs to be called");return v(Object.getPrototypeOf(i.prototype),"_toParamString",this).call(this,t)}}]),i}(y.AbstractTableBlock),y.GetFieldBlock=function(o){function a(t){r(this,a);var n=e(this,Object.getPrototypeOf(a).call(this,t));return n._fields=[],n}return n(a,o),d(a,[{key:"fields",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(l(t)){var n=!0,r=!1,i=void 0;try{for(var o,a=t[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){var u=o.value;this.field(u,null,e)}}catch(s){r=!0,i=s}finally{try{!n&&a["return"]&&a["return"]()}finally{if(r)throw i}}}else for(var c in t){var f=t[c];this.field(c,f,e)}}},{key:"field",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];e=e?this._sanitizeFieldAlias(e):e,t=this._sanitizeField(t);var r=this._fields.filter(function(n){return n.name===t&&n.alias===e});return r.length?this:void this._fields.push({name:t,alias:e,options:n})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=e.queryBuilder,r=e.buildParameterized,o="",a=[],l=!0,u=!1,s=void 0;try{for(var c,f=this._fields[Symbol.iterator]();!(l=(c=f.next()).done);l=!0){var h=c.value;o=i(o,", ");var v=h.name,d=h.alias,p=h.options;if("string"==typeof v)o+=this._formatFieldName(v,p);else{var g=v._toParamString({nested:!0,buildParameterized:r});o+=g.text,a.push.apply(a,t(g.values))}d&&(o+=" AS "+this._formatFieldAlias(d))}}catch(_){u=!0,s=_}finally{try{!l&&f["return"]&&f["return"]()}finally{if(u)throw s}}if(!o.length){var b=n&&n.getBlock(y.FromTableBlock);b&&b._hasTable()&&(o="*")}return{text:o,values:a}}}]),a}(y.Block),y.AbstractSetFieldBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._reset(),n}return n(i,t),d(i,[{key:"_reset",value:function(){this._fields=[],this._values=[[]],this._valueOptions=[[]]}},{key:"_set",value:function(t,e){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];if(this._values.length>1)throw new Error("Cannot set multiple rows of fields this way.");"undefined"!=typeof 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=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("object"!==("undefined"==typeof t?"undefined":p(t)))throw new Error("Expected an object but got "+("undefined"==typeof t?"undefined":p(t)));for(var n in t)this._set(n,t[n],e)}},{key:"_setFieldsRows",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(!l(t))throw new Error("Expected an array of objects but got "+("undefined"==typeof t?"undefined":p(t)));this._reset();for(var n=0;t.length>n;++n){var r=t[n];for(var i in r){var o=r[i];i=this._sanitizeField(i),o=this._sanitizeValue(o);var a=this._fields.indexOf(i);if(n>0&&-1===a)throw new Error("All fields in subsequent rows must match the fields in the first row");-1===a&&(this._fields.push(i),a=this._fields.length-1),l(this._values[n])||(this._values[n]=[],this._valueOptions[n]=[]),this._values[n][a]=o,this._valueOptions[n][a]=e}}}}]),i}(y.Block),y.SetFieldBlock=function(o){function a(){return r(this,a),e(this,Object.getPrototypeOf(a).apply(this,arguments))}return n(a,o),d(a,[{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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=e.buildParameterized;if(0>=this._fields.length)throw new Error("set() needs to be called");for(var r="",o=[],a=0;a<this._fields.length;++a){r=i(r,", ");var l=this._formatFieldName(this._fields[a]),u=this._values[0][a];0>l.indexOf("=")&&(l=l+" = "+this.options.parameterCharacter);var s=this._buildString(l,[u],{buildParameterized:n,formattingOptions:this._valueOptions[0][a]});r+=s.text,o.push.apply(o,t(s.values))}return{text:"SET "+r,values:o}}}]),a}(y.AbstractSetFieldBlock),y.InsertFieldValueBlock=function(o){function a(){return r(this,a),e(this,Object.getPrototypeOf(a).apply(this,arguments))}return n(a,o),d(a,[{key:"set",value:function(t,e){var n=arguments.length<=2||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,n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=n.buildParameterized,o=this._fields.map(function(t){return e._formatFieldName(t)}).join(", "),a=[],l=[],u=0;u<this._values.length;++u){a[u]="";for(var s=0;s<this._values[u].length;++s){var c=this._buildString(this.options.parameterCharacter,[this._values[u][s]],{buildParameterized:r,formattingOptions:this._valueOptions[u][s]});l.push.apply(l,t(c.values)),a[u]=i(a[u],", "),a[u]+=c.text}}return{text:o.length?"("+o+") VALUES ("+a.join("), (")+")":"",values:l}}}]),a}(y.AbstractSetFieldBlock),y.InsertFieldsFromQueryBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._fields=[],n._query=null,n}return n(i,t),d(i,[{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=arguments.length<=0||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,o=r.values;e="("+this._fields.join(", ")+") "+this._applyNestingFormatting(i),n=o}return{text:e,values:n}}}]),i}(y.Block),y.DistinctBlock=function(t){function i(){return r(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return n(i,t),d(i,[{key:"distinct",value:function(){this._useDistinct=!0}},{key:"_toParamString",value:function(){return{text:this._useDistinct?"DISTINCT":"",values:[]}}}]),i}(y.Block),y.GroupByBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._groups=[],n}return n(i,t),d(i,[{key:"group",value:function(t){this._groups.push(this._sanitizeField(t))}},{key:"_toParamString",value:function(){arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return{text:this._groups.length?"GROUP BY "+this._groups.join(", "):"",values:[]}}}]),i}(y.Block),y.AbstractVerbSingleValueBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._value=0,n}return n(i,t),d(i,[{key:"_setValue",value:function(t){this._value=this._sanitizeLimitOffset(t)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=0<this._value?this.options.verb+" "+this.options.parameterCharacter:"",n=null!==this._value?[this._value]:[];return this._buildString(e,n,t)}}]),i}(y.Block),y.OffsetBlock=function(t){function i(t){return r(this,i),e(this,Object.getPrototypeOf(i).call(this,o({},t,{verb:"OFFSET"})))}return n(i,t),d(i,[{key:"offset",value:function(t){this._setValue(t)}}]),i}(y.AbstractVerbSingleValueBlock),y.LimitBlock=function(t){function i(t){return r(this,i),e(this,Object.getPrototypeOf(i).call(this,o({},t,{verb:"LIMIT"})))}return n(i,t),d(i,[{key:"limit",value:function(t){this._setValue(t)}}]),i}(y.AbstractVerbSingleValueBlock),y.AbstractConditionBlock=function(i){function o(t){r(this,o);var n=e(this,Object.getPrototypeOf(o).call(this,t));return n._conditions=[],n}return n(o,i),d(o,[{key:"_condition",value:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=this._sanitizeExpression(t),this._conditions.push({expr:t,values:n})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=[],r=[],i=!0,o=!1,a=void 0;try{for(var l,u=this._conditions[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value,c=s.expr,f=s.values,h=c instanceof y.BaseBuilder?c._toParamString({buildParameterized:e.buildParameterized}):this._buildString(c,f,{buildParameterized:e.buildParameterized});h.text.length&&n.push(h.text),r.push.apply(r,t(h.values))}}catch(v){o=!0,a=v}finally{try{!i&&u["return"]&&u["return"]()}finally{if(o)throw a}}return n.length&&(n=n.join(") AND (")),{text:n.length?this.options.verb+" ("+n+")":"",values:r}}}]),o}(y.Block),y.WhereBlock=function(t){function i(t){return r(this,i),e(this,Object.getPrototypeOf(i).call(this,o({},t,{verb:"WHERE"})))}return n(i,t),d(i,[{key:"where",value:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];this._condition.apply(this,[t].concat(n))}}]),i}(y.AbstractConditionBlock),y.HavingBlock=function(t){function i(t){return r(this,i),e(this,Object.getPrototypeOf(i).call(this,o({},t,{verb:"HAVING"})))}return n(i,t),d(i,[{key:"having",value:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];this._condition.apply(this,[t].concat(n))}}]),i}(y.AbstractConditionBlock),y.OrderByBlock=function(o){function a(t){r(this,a);var n=e(this,Object.getPrototypeOf(a).call(this,t));return n._orders=[],n}return n(a,o),d(a,[{key:"order",value:function(t,e){for(var n=arguments.length,r=Array(n>2?n-2:0),i=2;n>i;i++)r[i-2]=arguments[i];t=this._sanitizeField(t),"string"!=typeof e&&(void 0===e?e="ASC":null!==e&&(e=e?"ASC":"DESC")),this._orders.push({field:t,dir:e,values:r})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n="",r=[],o=!0,a=!1,l=void 0;try{for(var u,s=this._orders[Symbol.iterator]();!(o=(u=s.next()).done);o=!0){var c=u.value,f=c.field,h=c.dir,v=c.values;n=i(n,", ");var d=this._buildString(f,v,{buildParameterized:e.buildParameterized});n+=d.text,r.push.apply(r,t(d.values)),null!==h&&(n+=" "+h)}}catch(p){a=!0,l=p}finally{try{!o&&s["return"]&&s["return"]()}finally{if(a)throw l}}return{text:n.length?"ORDER BY "+n:"",values:r}}}]),a}(y.Block),y.JoinBlock=function(o){function a(t){r(this,a);var n=e(this,Object.getPrototypeOf(a).call(this,t));return n._joins=[],n}return n(a,o),d(a,[{key:"join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2],r=arguments.length<=3||void 0===arguments[3]?"INNER":arguments[3];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=arguments.length<=1||void 0===arguments[1]?null:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,n,"LEFT")}},{key:"right_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,n,"RIGHT")}},{key:"outer_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,n,"OUTER")}},{key:"left_outer_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,n,"LEFT OUTER")}},{key:"full_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,n,"FULL")}},{key:"cross_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,n,"CROSS")}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n="",r=[],o=!0,a=!1,l=void 0;try{for(var u,s=this._joins[Symbol.iterator]();!(o=(u=s.next()).done);o=!0){var c=u.value,f=c.type,h=c.table,v=c.alias,d=c.condition;n=i(n,this.options.separator);var p=void 0;if(h instanceof y.BaseBuilder){var g=h._toParamString({buildParameterized:e.buildParameterized,nested:!0});r.push.apply(r,t(g.values)),p=g.text}else p=this._formatTableName(h);if(n+=f+" JOIN "+p,v&&(n+=" "+this._formatTableAlias(v)),d){n+=" ON ";var _=void 0;_=d instanceof y.BaseBuilder?d._toParamString({buildParameterized:e.buildParameterized}):this._buildString(d,[],{buildParameterized:e.buildParameterized}),n+=this._applyNestingFormatting(_.text),r.push.apply(r,t(_.values))}}}catch(b){a=!0,l=b}finally{try{!o&&s["return"]&&s["return"]()}finally{if(a)throw l}}return{text:n,values:r}}}]),a}(y.Block),y.UnionBlock=function(o){function a(t){r(this,a);var n=e(this,Object.getPrototypeOf(a).call(this,t));return n._unions=[],n}return n(a,o),d(a,[{key:"union",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?"UNION":arguments[1];t=this._sanitizeTable(t),this._unions.push({type:e,table:t})}},{key:"union_all",value:function(t){this.union(t,"UNION ALL")}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n="",r=[],o=!0,a=!1,l=void 0;try{for(var u,s=this._unions[Symbol.iterator]();!(o=(u=s.next()).done);o=!0){var c=u.value,f=c.type,h=c.table;n=i(n,this.options.separator);var v=void 0;if(h instanceof y.BaseBuilder){var d=h._toParamString({buildParameterized:e.buildParameterized,nested:!0});v=d.text,r.push.apply(r,t(d.values))}else n=this._formatTableName(h);n+=f+" "+v}}catch(p){a=!0,l=p}finally{try{!o&&s["return"]&&s["return"]()}finally{if(a)throw l}}return{text:n,values:r}}}]),a}(y.Block),y.QueryBuilder=function(i){function a(t,n){r(this,a);var i=e(this,Object.getPrototypeOf(a).call(this,t));i.blocks=n||[];var o=!0,l=!1,u=void 0;try{for(var s,c=i.blocks[Symbol.iterator]();!(o=(s=c.next()).done);o=!0){var f=s.value,h=f.exposedMethods();for(var v in h){var d=h[v];if(void 0!==i[v])throw new Error("Builder already has a builder method called: "+v);!function(t,e,n){i[e]=function(){for(var e=arguments.length,r=Array(e),o=0;e>o;o++)r[o]=arguments[o];return n.call.apply(n,[t].concat(r)),i}}(f,v,d)}}}catch(p){l=!0,u=p}finally{try{!o&&c["return"]&&c["return"]()}finally{if(l)throw u}}return i}return n(a,i),d(a,[{key:"registerValueHandler",value:function(t,e){var n=!0,r=!1,i=void 0;try{for(var o,l=this.blocks[Symbol.iterator]();!(n=(o=l.next()).done);n=!0){var u=o.value;u.registerValueHandler(t,e)}}catch(s){r=!0,i=s}finally{try{!n&&l["return"]&&l["return"]()}finally{if(r)throw i}}return v(Object.getPrototypeOf(a.prototype),"registerValueHandler",this).call(this,t,e),this}},{key:"updateOptions",value:function(t){this.options=o({},this.options,t);var e=!0,n=!1,r=void 0;try{for(var i,a=this.blocks[Symbol.iterator]();!(e=(i=a.next()).done);e=!0){var l=i.value;l.options=o({},l.options,t)}}catch(u){n=!0,r=u}finally{try{!e&&a["return"]&&a["return"]()}finally{if(n)throw r}}}},{key:"_toParamString",value:function(){var e,n=this,r=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];r=o({},this.options,r);var i=this.blocks.map(function(t){return t._toParamString({buildParameterized:r.buildParameterized,queryBuilder:n})}),a=i.map(function(t){return t.text}),l=i.map(function(t){return t.values}),u=a.filter(function(t){return 0<t.length}).join(r.separator),s=(e=[]).concat.apply(e,t(l));return r.nested||r.numberedParameters&&!function(){var t=void 0!==r.numberedParametersStartAt?r.numberedParametersStartAt:1,e=r.parameterCharacter.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");u=u.replace(new RegExp(e,"g"),function(){return""+r.numberedParametersPrefix+t++})}(),{text:this._applyNestingFormatting(u,!!r.nested),values:s}}},{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(t){var e=this.blocks.filter(function(e){return e instanceof t});return e[0]}}]),a}(y.BaseBuilder),y.Select=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new y.StringBlock(t,"SELECT"),new y.FunctionBlock(t),new y.DistinctBlock(t),new y.GetFieldBlock(t),new y.FromTableBlock(t),new y.JoinBlock(t),new y.WhereBlock(t),new y.GroupByBlock(t),new y.HavingBlock(t),new y.OrderByBlock(t),new y.LimitBlock(t),new y.OffsetBlock(t),new y.UnionBlock(t)],
2
- e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(y.QueryBuilder),y.Update=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new y.StringBlock(t,"UPDATE"),new y.UpdateTableBlock(t),new y.SetFieldBlock(t),new y.WhereBlock(t),new y.OrderByBlock(t),new y.LimitBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(y.QueryBuilder),y.Delete=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new y.StringBlock(t,"DELETE"),new y.TargetTableBlock(t),new y.FromTableBlock(o({},t,{singleTable:!0})),new y.JoinBlock(t),new y.WhereBlock(t),new y.OrderByBlock(t),new y.LimitBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(y.QueryBuilder),y.Insert=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new y.StringBlock(t,"INSERT"),new y.IntoTableBlock(t),new y.InsertFieldValueBlock(t),new y.InsertFieldsFromQueryBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(y.QueryBuilder);var g={VERSION:"5.5.0",flavour:h,expr:function(t){return new y.Expression(t)},"case":function(t,e){return new y.Case(t,e)},select:function(t,e){return new y.Select(t,e)},update:function(t,e){return new y.Update(t,e)},insert:function(t,e){return new y.Insert(t,e)},"delete":function(t,e){return new y.Delete(t,e)},str:function(){var t=new y.FunctionBlock;return t["function"].apply(t,arguments),t},registerValueHandler:y.registerValueHandler};return g.remove=g["delete"],g.cls=y,g}var v=function g(t,e,n){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,e);if(void 0===r){var i=Object.getPrototypeOf(t);return null===i?void 0:g(i,e,n)}if("value"in r)return r.value;var o=r.get;if(void 0!==o)return o.call(n)},d=function(){function t(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)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},y=h();return y.flavours={},y.useFlavour=function(){var t=arguments.length<=0||void 0===arguments[0]?null:arguments[0];if(!t)return y;if(y.flavours[t]instanceof Function){var e=h(t);return y.flavours[t].call(null,e),e.flavours=y.flavours,e.useFlavour=y.useFlavour,e}throw new Error("Flavour not available: "+t)},y.flavours.mssql=function(t){var a=t.cls;a.DefaultQueryBuilderOptions.replaceSingleQuotes=!0,a.DefaultQueryBuilderOptions.autoQuoteAliasNames=!1,a.DefaultQueryBuilderOptions.numberedParametersPrefix="@",t.registerValueHandler(Date,function(t){return"'"+t.getUTCFullYear()+"-"+(t.getUTCMonth()+1)+"-"+t.getUTCDate()+" "+t.getUTCHours()+":"+t.getUTCMinutes()+":"+t.getUTCSeconds()+"'"}),a.MssqlLimitOffsetTopBlock=function(t){function i(t){r(this,i);var o=e(this,Object.getPrototypeOf(i).call(this,t));o._limits=null,o._offsets=null;var l=function(t){t=this._sanitizeLimitOffset(t),this._parent._limits=t};return o.ParentBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t.options));return n._parent=t,n}return n(i,t),i}(a.Block),o.LimitBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n.limit=l,n}return n(i,t),d(i,[{key:"_toParamString",value:function(){var t="";return this._parent._limits&&this._parent._offsets&&(t="FETCH NEXT "+this._parent._limits+" ROWS ONLY"),{text:t,values:[]}}}]),i}(o.ParentBlock),o.TopBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n.top=l,n}return n(i,t),d(i,[{key:"_toParamString",value:function(){var t="";return this._parent._limits&&!this._parent._offsets&&(t="TOP ("+this._parent._limits+")"),{text:t,values:[]}}}]),i}(o.ParentBlock),o.OffsetBlock=function(t){function i(){return r(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return n(i,t),d(i,[{key:"offset",value:function(t){this._parent._offsets=this._sanitizeLimitOffset(t)}},{key:"_toParamString",value:function(){var t="";return this._parent._offsets&&(t="OFFSET "+this._parent._offsets+" ROWS"),{text:t,values:[]}}}]),i}(o.ParentBlock),o}return n(i,t),d(i,[{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)}}]),i}(a.Block),a.MssqlUpdateTopBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._limits=null,n.limit=n.top=function(t){n._limits=n._sanitizeLimitOffset(t)},n}return n(i,t),d(i,[{key:"_toParamString",value:function(){return{text:this._limits?"TOP ("+this._limits+")":"",values:[]}}}]),i}(a.Block),a.MssqlInsertFieldValueBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._outputs=[],n}return n(i,t),d(i,[{key:"output",value:function(t){var e=this;"string"==typeof t?this._outputs.push("INSERTED."+this._sanitizeField(t)):t.forEach(function(t){e._outputs.push("INSERTED."+e._sanitizeField(t))})}},{key:"_toParamString",value:function(t){var e=v(Object.getPrototypeOf(i.prototype),"_toParamString",this).call(this,t);if(e.text.length&&0<this._outputs.length){var n="OUTPUT "+this._outputs.join(", ")+" ",r=e.text.indexOf("VALUES");e.text=e.text.substr(0,r)+n+e.text.substr(r)}return e}}]),i}(a.InsertFieldValueBlock),a.MssqlUpdateDeleteOutputBlock=function(t){function o(t){r(this,o);var n=e(this,Object.getPrototypeOf(o).call(this,t));return n._outputs=[],n}return n(o,t),d(o,[{key:"outputs",value:function(t){for(var e in t)this.output(e,t[e])}},{key:"output",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];t=this._sanitizeField(t),e=e?this._sanitizeFieldAlias(e):e,this._outputs.push({name:this.options.forDelete?"DELETED."+t:"INSERTED."+t,alias:e})}},{key:"_toParamString",value:function(t){var e="";if(this._outputs.length){var n=!0,r=!1,o=void 0;try{for(var a,l=this._outputs[Symbol.iterator]();!(n=(a=l.next()).done);n=!0){var u=a.value;e=i(e,", "),e+=u.name,u.alias&&(e+=" AS "+this._formatFieldAlias(u.alias))}}catch(s){r=!0,o=s}finally{try{!n&&l["return"]&&l["return"]()}finally{if(r)throw o}}e="OUTPUT "+e}return{text:e,values:[]}}}]),o}(a.Block),a.Select=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];r(this,i);var o=new a.MssqlLimitOffsetTopBlock(t);return n=n||[new a.StringBlock(t,"SELECT"),new a.DistinctBlock(t),o.TOP(),new a.GetFieldBlock(t),new a.FromTableBlock(t),new a.JoinBlock(t),new a.WhereBlock(t),new a.GroupByBlock(t),new a.OrderByBlock(t),o.OFFSET(),o.LIMIT(),new a.UnionBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(a.QueryBuilder),a.Update=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new a.StringBlock(t,"UPDATE"),new a.MssqlUpdateTopBlock(t),new a.UpdateTableBlock(t),new a.SetFieldBlock(t),new a.MssqlUpdateDeleteOutputBlock(t),new a.WhereBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(a.QueryBuilder),a.Delete=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new a.StringBlock(t,"DELETE"),new a.TargetTableBlock(t),new a.FromTableBlock(o({},t,{singleTable:!0})),new a.JoinBlock(t),new a.MssqlUpdateDeleteOutputBlock(o({},t,{forDelete:!0})),new a.WhereBlock(t),new a.OrderByBlock(t),new a.LimitBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(a.QueryBuilder),a.Insert=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new a.StringBlock(t,"INSERT"),new a.IntoTableBlock(t),new a.MssqlInsertFieldValueBlock(t),new a.InsertFieldsFromQueryBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(a.QueryBuilder)},y.flavours.mysql=function(o){var a=o.cls;a.MysqlOnDuplicateKeyUpdateBlock=function(o){function a(){return r(this,a),e(this,Object.getPrototypeOf(a).apply(this,arguments))}return n(a,o),d(a,[{key:"onDupUpdate",value:function(t,e,n){this._set(t,e,n)}},{key:"_toParamString",value:function(){for(var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n="",r=[],o=0;o<this._fields.length;++o){n=i(n,", ");var a=this._fields[o],l=this._values[0][o],u=this._valueOptions[0][o];if("undefined"==typeof l)n+=a;else{var s=this._buildString(a+" = "+this.options.parameterCharacter,[l],{buildParameterized:e.buildParameterized,formattingOptions:u});n+=s.text,r.push.apply(r,t(s.values))}}return{text:n.length?"ON DUPLICATE KEY UPDATE "+n:"",values:r}}}]),a}(a.AbstractSetFieldBlock),a.Insert=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new a.StringBlock(t,"INSERT"),new a.IntoTableBlock(t),new a.InsertFieldValueBlock(t),new a.InsertFieldsFromQueryBlock(t),new a.MysqlOnDuplicateKeyUpdateBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(a.QueryBuilder),a.Replace=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new a.StringBlock(t,"REPLACE"),new a.IntoTableBlock(t),new a.InsertFieldValueBlock(t),new a.InsertFieldsFromQueryBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(a.QueryBuilder),o.replace=function(t,e){return new a.Replace(t,e)}},y.flavours.postgres=function(a){var l=a.cls;l.DefaultQueryBuilderOptions.numberedParameters=!0,l.DefaultQueryBuilderOptions.numberedParametersStartAt=1,l.DefaultQueryBuilderOptions.autoQuoteAliasNames=!1,l.DefaultQueryBuilderOptions.useAsForTableAliasNames=!0,l.PostgresOnConflictKeyUpdateBlock=function(o){function a(){return r(this,a),e(this,Object.getPrototypeOf(a).apply(this,arguments))}return n(a,o),d(a,[{key:"onConflict",value:function(t,e){var n=this;this._dupIndex=this._sanitizeField(t),e&&Object.keys(e).forEach(function(t){n._set(t,e[t])})}},{key:"_toParamString",value:function(){for(var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n="",r=[],o=0;o<this._fields.length;++o){n=i(n,", ");var a=this._fields[o],l=this._values[0][o],u=this._valueOptions[0][o];if("undefined"==typeof l)n+=a;else{var s=this._buildString(a+" = "+this.options.parameterCharacter,[l],{buildParameterized:e.buildParameterized,formattingOptions:u});n+=s.text,r.push.apply(r,t(s.values))}}return{text:this._dupIndex?"ON CONFLICT ("+this._dupIndex+") DO "+(n.length?"UPDATE SET "+n:"NOTHING"):"",values:r}}}]),a}(l.AbstractSetFieldBlock),l.ReturningBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._str=null,n}return n(i,t),d(i,[{key:"returning",value:function(t){this._str=this._sanitizeField(t)}},{key:"_toParamString",value:function(){return{text:this._str?"RETURNING "+this._str:"",values:[]}}}]),i}(l.Block),l.WithBlock=function(i){function o(t){r(this,o);var n=e(this,Object.getPrototypeOf(o).call(this,t));return n._tables=[],n}return n(o,i),d(o,[{key:"with",value:function(t,e){this._tables.push({alias:t,table:e})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=[],r=[],i=!0,o=!1,a=void 0;try{for(var l,u=this._tables[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var s=l.value,c=s.alias,f=s.table,h=f._toParamString({buildParameterized:e.buildParameterized,nested:!0});n.push(c+" AS "+h.text),r.push.apply(r,t(h.values))}}catch(v){o=!0,a=v}finally{try{!i&&u["return"]&&u["return"]()}finally{if(o)throw a}}return{text:n.length?"WITH "+n.join(", "):"",values:r}}}]),o}(l.Block),l.DistinctOnBlock=function(t){function i(t){r(this,i);var n=e(this,Object.getPrototypeOf(i).call(this,t));return n._distinctFields=[],n}return n(i,t),d(i,[{key:"distinct",value:function(){var t=this;this._useDistinct=!0;for(var e=arguments.length,n=Array(e),r=0;e>r;r++)n[r]=arguments[r];n.forEach(function(e){t._distinctFields.push(t._sanitizeField(e))})}},{key:"_toParamString",value:function(){var t="";return this._useDistinct&&(t="DISTINCT",this._distinctFields.length&&(t+=" ON ("+this._distinctFields.join(", ")+")")),{text:t,values:[]}}}]),i}(l.Block),l.Select=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new l.WithBlock(t),new l.StringBlock(t,"SELECT"),new l.FunctionBlock(t),new l.DistinctOnBlock(t),new l.GetFieldBlock(t),new l.FromTableBlock(t),new l.JoinBlock(t),new l.WhereBlock(t),new l.GroupByBlock(t),new l.HavingBlock(t),new l.OrderByBlock(t),new l.LimitBlock(t),new l.OffsetBlock(t),new l.UnionBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(l.QueryBuilder),l.Insert=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new l.WithBlock(t),new l.StringBlock(t,"INSERT"),new l.IntoTableBlock(t),new l.InsertFieldValueBlock(t),new l.InsertFieldsFromQueryBlock(t),new l.PostgresOnConflictKeyUpdateBlock(t),new l.ReturningBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(l.QueryBuilder),l.Update=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new l.WithBlock(t),new l.StringBlock(t,"UPDATE"),new l.UpdateTableBlock(t),new l.SetFieldBlock(t),new l.FromTableBlock(t),new l.WhereBlock(t),new l.OrderByBlock(t),new l.LimitBlock(t),new l.ReturningBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(l.QueryBuilder),l.Delete=function(t){function i(t){var n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return r(this,i),n=n||[new l.WithBlock(t),new l.StringBlock(t,"DELETE"),new l.TargetTableBlock(t),new l.FromTableBlock(o({},t,{singleTable:!0})),new l.JoinBlock(t),new l.WhereBlock(t),new l.OrderByBlock(t),new l.LimitBlock(t),new l.ReturningBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,n))}return n(i,t),i}(l.QueryBuilder)},y});
1
+ /*! 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 t(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function e(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){return t.length?t+e:t}function l(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];if(t&&r){var i=!0,l=!1,o=void 0;try{for(var a,u=function(){var e=a.value;"object"===("undefined"==typeof e?"undefined":d(e))&&Object.getOwnPropertyNames(e).forEach(function(r){t[r]=e[r]})},s=r[Symbol.iterator]();!(i=(a=s.next()).done);i=!0)u()}catch(c){l=!0,o=c}finally{try{!i&&s["return"]&&s["return"]()}finally{if(l)throw o}}}return t}function o(t){return t&&t.constructor.prototype===Object.prototype}function a(t){return t&&t.constructor.prototype===Array.prototype}function u(t){if(!t)return t;if("function"==typeof t.clone)return t.clone();if(!o(t)&&!a(t))return JSON.parse(JSON.stringify(t));var e=function(){var e=new t.constructor;return Object.getOwnPropertyNames(t).forEach(function(r){"function"!=typeof t[r]&&(e[r]=u(t[r]))}),{v:e}}();return"object"===("undefined"==typeof e?"undefined":d(e))?e.v:void 0}function s(t,e,r){var n="undefined"==typeof e?"undefined":d(e);if("function"!==n&&"string"!==n)throw new Error("type must be a class constructor or string");if("function"!=typeof r)throw new Error("handler must be a function");var i=!0,l=!1,o=void 0;try{for(var a,u=t[Symbol.iterator]();!(i=(a=u.next()).done);i=!0){var s=a.value;if(s.type===e)return void(s.handler=r)}}catch(c){l=!0,o=c}finally{try{!i&&u["return"]&&u["return"]()}finally{if(l)throw o}}t.push({type:e,handler:r})}function c(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];var i=!0,l=!1,o=void 0;try{for(var a,u=r[Symbol.iterator]();!(i=(a=u.next()).done);i=!0){var s=a.value,c=!0,f=!1,h=void 0;try{for(var v,p=s[Symbol.iterator]();!(c=(v=p.next()).done);c=!0){var y=v.value;if(("undefined"==typeof t?"undefined":d(t))===y.type||"string"!=typeof y.type&&t instanceof y.type)return y.handler}}catch(g){f=!0,h=g}finally{try{!c&&p["return"]&&p["return"]()}finally{if(f)throw h}}}}catch(g){l=!0,o=g}finally{try{!i&&u["return"]&&u["return"]()}finally{if(l)throw o}}}function f(){var f=arguments.length<=0||void 0===arguments[0]?null:arguments[0],p={isSquelBuilder:function(t){return t&&!!t._toParamString}},y=function(t){return!p.isSquelBuilder(t)||!t.options.rawNesting};p.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},p.globalValueHandlers=[],p.registerValueHandler=function(t,e){s(p.globalValueHandlers,t,e)},p.Cloneable=function(){function t(){n(this,t)}return v(t,[{key:"clone",value:function(){var t=new this.constructor;return l(t,u(l({},this)))}}]),t}(),p.BaseBuilder=function(i){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this)),i=JSON.parse(JSON.stringify(p.DefaultQueryBuilderOptions));return r.options=l({},i,t),r}return r(o,i),v(o,[{key:"registerValueHandler",value:function(t,e){return s(this.options.valueHandlers,t,e),this}},{key:"_sanitizeExpression",value:function(t){if(!p.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(e+" must be a string");return t}},{key:"_sanitizeField",value:function(t){return p.isSquelBuilder(t)||(t=this._sanitizeName(t,"field name")),t}},{key:"_sanitizeBaseBuilder",value:function(t){if(p.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(e){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>t||isNaN(t))throw new Error("limit/offset must be >= 0");return t}},{key:"_sanitizeValue",value:function(t){var e="undefined"==typeof t?"undefined":d(t);if(null===t);else if("string"===e||"number"===e||"boolean"===e);else if(p.isSquelBuilder(t));else{var r=!!c(t,this.options.valueHandlers,p.globalValueHandlers);if(!r)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.replace(/\'/g,this.options.singleQuoteReplacement):t}},{key:"_formatTableName",value:function(t){if(this.options.autoQuoteTableNames){var e=this.options.nameQuoteCharacter;t=""+e+t+e}return t}},{key:"_formatFieldAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.fieldAliasQuoteCharacter;t=""+e+t+e}return t}},{key:"_formatTableAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.tableAliasQuoteCharacter;t=""+e+t+e}return this.options.useAsForTableAliasNames?"AS "+t:t}},{key:"_formatFieldName",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return this.options.autoQuoteFieldNames&&!function(){var n=e.options.nameQuoteCharacter;t=r.ignorePeriodsForFieldNameQuotes?""+n+t+n:t.split(".").map(function(t){return"*"===t?t:""+n+t+n}).join(".")}(),t}},{key:"_formatCustomValue",value:function(t,e,r){var n=c(t,this.options.valueHandlers,p.globalValueHandlers);return n&&(t=n(t,e,r)),{formatted:!!n,value:t}}},{key:"_formatValueForParamArray",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return a(t)?t.map(function(t){return e._formatValueForParamArray(t,r)}):this._formatCustomValue(t,!0,r).value}},{key:"_formatValueForQueryString",value:function(t){var e=this,r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=this._formatCustomValue(t,!1,r),i=n.formatted,l=n.value;if(i)return this._applyNestingFormatting(l,y(t));if(a(l))l=l.map(function(t){return e._formatValueForQueryString(t)}),l=this._applyNestingFormatting(l.join(", "),y(l));else{var o="undefined"==typeof l?"undefined":d(l);if(null===l)l="NULL";else if("boolean"===o)l=l?"TRUE":"FALSE";else if(p.isSquelBuilder(l))l=this._applyNestingFormatting(l.toString(),y(l));else if("number"!==o){if("string"===o&&this.options.stringFormatter)return this.options.stringFormatter(l);if(r.dontQuote)l=""+l;else{var u=this._escapeValue(l);l="'"+u+"'"}}}return l}},{key:"_applyNestingFormatting",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];if(t&&"string"==typeof t&&e&&!this.options.rawNesting){var r="("===t.charAt(0)&&")"===t.charAt(t.length-1);if(r)for(var n=0,i=1;t.length-1>++n;){var l=t.charAt(n);if("("===l)i++;else if(")"===l&&(i--,1>i)){r=!1;break}}r||(t="("+t+")")}return t}},{key:"_buildString",value:function(e,r){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],i=n.nested,l=n.buildParameterized,o=n.formattingOptions;r=r||[],e=e||"";for(var u="",s=-1,c=[],f=this.options.parameterCharacter,h=0;e.length>h;)if(e.substr(h,f.length)===f){var v=r[++s];if(l)if(p.isSquelBuilder(v)){var d=v._toParamString({buildParameterized:l,nested:!0});u+=d.text,c.push.apply(c,t(d.values))}else if(v=this._formatValueForParamArray(v,o),a(v)){var y=v.map(function(){return f}).join(", ");u+="("+y+")",c.push.apply(c,t(v))}else u+=f,c.push(v);else u+=this._formatValueForQueryString(v,o);h+=f.length}else u+=e.charAt(h),h++;return{text:this._applyNestingFormatting(u,!!i),values:c}}},{key:"_buildManyStrings",value:function(e,r){for(var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],i=[],l=[],o=0;e.length>o;++o){var a=e[o],u=r[o],s=this._buildString(a,u,{buildParameterized:n.buildParameterized,nested:!1}),c=s.text,f=s.values;i.push(c),l.push.apply(l,t(f))}return i=i.join(this.options.separator),{text:i.length?this._applyNestingFormatting(i,!!n.nested):"",values:l}}},{key:"_toParamString",value:function(t){throw new Error("Not yet implemented")}},{key:"toString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._toParamString(t).text}},{key:"toParam",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._toParamString(l({},t,{buildParameterized:!0}))}}]),o}(p.Cloneable),p.Expression=function(i){function l(t){n(this,l);var r=e(this,Object.getPrototypeOf(l).call(this,t));return r._nodes=[],r}return r(l,i),v(l,[{key:"and",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];return t=this._sanitizeExpression(t),this._nodes.push({type:"AND",expr:t,para:r}),this}},{key:"or",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];return t=this._sanitizeExpression(t),this._nodes.push({type:"OR",expr:t,para:r}),this}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=[],n=[],i=!0,l=!1,o=void 0;try{for(var a,u=this._nodes[Symbol.iterator]();!(i=(a=u.next()).done);i=!0){var s=a.value,c=s.type,f=s.expr,h=s.para,v=p.isSquelBuilder(f)?f._toParamString({buildParameterized:e.buildParameterized,nested:!0}):this._buildString(f,h,{buildParameterized:e.buildParameterized}),d=v.text,y=v.values;r.length&&r.push(c),r.push(d),n.push.apply(n,t(y))}}catch(g){l=!0,o=g}finally{try{!i&&u["return"]&&u["return"]()}finally{if(l)throw o}}return r=r.join(" "),{text:this._applyNestingFormatting(r,!!e.nested),values:n}}}]),l}(p.BaseBuilder),p.Case=function(a){function u(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];n(this,u);var i=e(this,Object.getPrototypeOf(u).call(this,r));return o(t)&&(r=t,t=null),t&&(i._fieldName=i._sanitizeField(t)),i.options=l({},p.DefaultQueryBuilderOptions,r),i._cases=[],i._elseValue=null,i}return r(u,a),v(u,[{key:"when",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];return this._cases.unshift({expression:t,values:r}),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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],l=!0,o=!1,a=void 0;try{for(var u,s=this._cases[Symbol.iterator]();!(l=(u=s.next()).done);l=!0){var c=u.value,f=c.expression,h=c.values,v=c.result;r=i(r," ");var d=this._buildString(f,h,{buildParameterized:e.buildParameterized,nested:!0});r+="WHEN "+d.text+" THEN "+this._formatValueForQueryString(v),n.push.apply(n,t(d.values))}}catch(p){o=!0,a=p}finally{try{!l&&s["return"]&&s["return"]()}finally{if(o)throw a}}return r.length?(r+=" ELSE "+this._formatValueForQueryString(this._elseValue)+" END",this._fieldName&&(r=this._fieldName+" "+r),r="CASE "+r):r=this._formatValueForQueryString(this._elseValue),{text:r,values:n}}}]),u}(p.BaseBuilder),p.Block=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,t))}return r(i,t),v(i,[{key:"exposedMethods",value:function(){for(var t={},e=this;e;)Object.getOwnPropertyNames(e).forEach(function(r){"constructor"===r||"function"!=typeof e[r]||"_"===r.charAt(0)||p.Block.prototype[r]||(t[r]=e[r])}),e=Object.getPrototypeOf(e);return t}}]),i}(p.BaseBuilder),p.StringBlock=function(t){function i(t,r){n(this,i);var l=e(this,Object.getPrototypeOf(i).call(this,t));return l._str=r,l}return r(i,t),v(i,[{key:"_toParamString",value:function(){arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return{text:this._str,values:[]}}}]),i}(p.Block),p.FunctionBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._strings=[],r._values=[],r}return r(i,t),v(i,[{key:"function",value:function(t){this._strings.push(t);for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];this._values.push(r)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return this._buildManyStrings(this._strings,this._values,t)}}]),i}(p.Block),p.registerValueHandler(p.FunctionBlock,function(t){var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];return e?t.toParam():t.toString()}),p.AbstractTableBlock=function(l){function o(t,r){n(this,o);var i=e(this,Object.getPrototypeOf(o).call(this,t));return i._tables=[],i}return r(o,l),v(o,[{key:"_table",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];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 e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[];if(this._hasTable()){var l=!0,o=!1,a=void 0;try{for(var u,s=this._tables[Symbol.iterator]();!(l=(u=s.next()).done);l=!0){var c=u.value,f=c.table,h=c.alias;r=i(r,", ");var v=void 0;if(p.isSquelBuilder(f)){var d=f._toParamString({buildParameterized:e.buildParameterized,nested:!0}),y=d.text,g=d.values;v=y,n.push.apply(n,t(g))}else v=this._formatTableName(f);h&&(v+=" "+this._formatTableAlias(h)),r+=v}}catch(_){o=!0,a=_}finally{try{!l&&s["return"]&&s["return"]()}finally{if(o)throw a}}this.options.prefix&&(r=this.options.prefix+" "+r)}return{text:r,values:n}}}]),o}(p.Block),p.TargetTableBlock=function(t){function i(){return n(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return r(i,t),v(i,[{key:"target",value:function(t){this._table(t)}}]),i}(p.AbstractTableBlock),p.UpdateTableBlock=function(t){function i(){return n(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return r(i,t),v(i,[{key:"table",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];this._table(t,e)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this._hasTable())throw new Error("table() needs to be called");return h(Object.getPrototypeOf(i.prototype),"_toParamString",this).call(this,t)}}]),i}(p.AbstractTableBlock),p.FromTableBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,l({},t,{prefix:"FROM"})))}return r(i,t),v(i,[{key:"from",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];this._table(t,e)}}]),i}(p.AbstractTableBlock),p.IntoTableBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,l({},t,{prefix:"INTO",singleTable:!0})))}return r(i,t),v(i,[{key:"into",value:function(t){this._table(t)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this._hasTable())throw new Error("into() needs to be called");return h(Object.getPrototypeOf(i.prototype),"_toParamString",this).call(this,t)}}]),i}(p.AbstractTableBlock),p.GetFieldBlock=function(l){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._fields=[],r}return r(o,l),v(o,[{key:"fields",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(a(t)){var r=!0,n=!1,i=void 0;try{for(var l,o=t[Symbol.iterator]();!(r=(l=o.next()).done);r=!0){var u=l.value;this.field(u,null,e)}}catch(s){n=!0,i=s}finally{try{!r&&o["return"]&&o["return"]()}finally{if(n)throw i}}}else for(var c in t){var f=t[c];this.field(c,f,e)}}},{key:"field",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];e=e?this._sanitizeFieldAlias(e):e,t=this._sanitizeField(t);var n=this._fields.filter(function(r){return r.name===t&&r.alias===e});return n.length?this:void this._fields.push({name:t,alias:e,options:r})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=e.queryBuilder,n=e.buildParameterized,l="",o=[],a=!0,u=!1,s=void 0;try{for(var c,f=this._fields[Symbol.iterator]();!(a=(c=f.next()).done);a=!0){var h=c.value;l=i(l,", ");var v=h.name,d=h.alias,y=h.options;if("string"==typeof v)l+=this._formatFieldName(v,y);else{var g=v._toParamString({nested:!0,buildParameterized:n});l+=g.text,o.push.apply(o,t(g.values))}d&&(l+=" AS "+this._formatFieldAlias(d))}}catch(_){u=!0,s=_}finally{try{!a&&f["return"]&&f["return"]()}finally{if(u)throw s}}if(!l.length){var m=r&&r.getBlock(p.FromTableBlock);m&&m._hasTable()&&(l="*")}return{text:l,values:o}}}]),o}(p.Block),p.AbstractSetFieldBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._reset(),r}return r(i,t),v(i,[{key:"_reset",value:function(){this._fields=[],this._values=[[]],this._valueOptions=[[]]}},{key:"_set",value:function(t,e){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];if(this._values.length>1)throw new Error("Cannot set multiple rows of fields this way.");"undefined"!=typeof e&&(e=this._sanitizeValue(e)),t=this._sanitizeField(t);var n=this._fields.indexOf(t);-1===n&&(this._fields.push(t),n=this._fields.length-1),this._values[0][n]=e,this._valueOptions[0][n]=r}},{key:"_setFields",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("object"!==("undefined"==typeof t?"undefined":d(t)))throw new Error("Expected an object but got "+("undefined"==typeof t?"undefined":d(t)));for(var r in t)this._set(r,t[r],e)}},{key:"_setFieldsRows",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(!a(t))throw new Error("Expected an array of objects but got "+("undefined"==typeof t?"undefined":d(t)));this._reset();for(var r=0;t.length>r;++r){var n=t[r];for(var i in n){var l=n[i];i=this._sanitizeField(i),l=this._sanitizeValue(l);var o=this._fields.indexOf(i);if(r>0&&-1===o)throw new Error("All fields in subsequent rows must match the fields in the first row");-1===o&&(this._fields.push(i),o=this._fields.length-1),a(this._values[r])||(this._values[r]=[],this._valueOptions[r]=[]),this._values[r][o]=l,this._valueOptions[r][o]=e}}}}]),i}(p.Block),p.SetFieldBlock=function(l){function o(){return n(this,o),e(this,Object.getPrototypeOf(o).apply(this,arguments))}return r(o,l),v(o,[{key:"set",value:function(t,e,r){this._set(t,e,r)}},{key:"setFields",value:function(t,e){this._setFields(t,e)}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=e.buildParameterized;if(0>=this._fields.length)throw new Error("set() needs to be called");for(var n="",l=[],o=0;o<this._fields.length;++o){n=i(n,", ");var a=this._formatFieldName(this._fields[o]),u=this._values[0][o];0>a.indexOf("=")&&(a=a+" = "+this.options.parameterCharacter);var s=this._buildString(a,[u],{buildParameterized:r,formattingOptions:this._valueOptions[0][o]});n+=s.text,l.push.apply(l,t(s.values))}return{text:"SET "+n,values:l}}}]),o}(p.AbstractSetFieldBlock),p.InsertFieldValueBlock=function(l){function o(){return n(this,o),e(this,Object.getPrototypeOf(o).apply(this,arguments))}return r(o,l),v(o,[{key:"set",value:function(t,e){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];this._set(t,e,r)}},{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,r=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=r.buildParameterized,l=this._fields.map(function(t){return e._formatFieldName(t)}).join(", "),o=[],a=[],u=0;u<this._values.length;++u){o[u]="";for(var s=0;s<this._values[u].length;++s){var c=this._buildString(this.options.parameterCharacter,[this._values[u][s]],{buildParameterized:n,formattingOptions:this._valueOptions[u][s]});a.push.apply(a,t(c.values)),o[u]=i(o[u],", "),o[u]+=c.text}}return{text:l.length?"("+l+") VALUES ("+o.join("), (")+")":"",values:a}}}]),o}(p.AbstractSetFieldBlock),p.InsertFieldsFromQueryBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._fields=[],r._query=null,r}return r(i,t),v(i,[{key:"fromQuery",value:function(t,e){var r=this;this._fields=t.map(function(t){return r._sanitizeField(t)}),this._query=this._sanitizeBaseBuilder(e)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e="",r=[];if(this._fields.length&&this._query){var n=this._query._toParamString({buildParameterized:t.buildParameterized,nested:!0}),i=n.text,l=n.values;e="("+this._fields.join(", ")+") "+this._applyNestingFormatting(i),r=l}return{text:e,values:r}}}]),i}(p.Block),p.DistinctBlock=function(t){function i(){return n(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return r(i,t),v(i,[{key:"distinct",value:function(){this._useDistinct=!0}},{key:"_toParamString",value:function(){return{text:this._useDistinct?"DISTINCT":"",values:[]}}}]),i}(p.Block),p.GroupByBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._groups=[],r}return r(i,t),v(i,[{key:"group",value:function(t){this._groups.push(this._sanitizeField(t))}},{key:"_toParamString",value:function(){arguments.length<=0||void 0===arguments[0]?{}:arguments[0];return{text:this._groups.length?"GROUP BY "+this._groups.join(", "):"",values:[]}}}]),i}(p.Block),p.AbstractVerbSingleValueBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._value=0,r}return r(i,t),v(i,[{key:"_setValue",value:function(t){this._value=this._sanitizeLimitOffset(t)}},{key:"_toParamString",value:function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=0<this._value?this.options.verb+" "+this.options.parameterCharacter:"",r=null!==this._value?[this._value]:[];return this._buildString(e,r,t)}}]),i}(p.Block),p.OffsetBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,l({},t,{verb:"OFFSET"})))}return r(i,t),v(i,[{key:"offset",value:function(t){this._setValue(t)}}]),i}(p.AbstractVerbSingleValueBlock),p.LimitBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,l({},t,{verb:"LIMIT"})))}return r(i,t),v(i,[{key:"limit",value:function(t){this._setValue(t)}}]),i}(p.AbstractVerbSingleValueBlock),p.AbstractConditionBlock=function(i){function l(t){n(this,l);var r=e(this,Object.getPrototypeOf(l).call(this,t));return r._conditions=[],r}return r(l,i),v(l,[{key:"_condition",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];t=this._sanitizeExpression(t),this._conditions.push({expr:t,values:r})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=[],n=[],i=!0,l=!1,o=void 0;try{for(var a,u=this._conditions[Symbol.iterator]();!(i=(a=u.next()).done);i=!0){var s=a.value,c=s.expr,f=s.values,h=p.isSquelBuilder(c)?c._toParamString({buildParameterized:e.buildParameterized}):this._buildString(c,f,{buildParameterized:e.buildParameterized});h.text.length&&r.push(h.text),n.push.apply(n,t(h.values))}}catch(v){l=!0,o=v}finally{try{!i&&u["return"]&&u["return"]()}finally{if(l)throw o}}return r.length&&(r=r.join(") AND (")),{text:r.length?this.options.verb+" ("+r+")":"",values:n}}}]),l}(p.Block),p.WhereBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,l({},t,{verb:"WHERE"})))}return r(i,t),v(i,[{key:"where",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];this._condition.apply(this,[t].concat(r))}}]),i}(p.AbstractConditionBlock),p.HavingBlock=function(t){function i(t){return n(this,i),e(this,Object.getPrototypeOf(i).call(this,l({},t,{verb:"HAVING"})))}return r(i,t),v(i,[{key:"having",value:function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),n=1;e>n;n++)r[n-1]=arguments[n];this._condition.apply(this,[t].concat(r))}}]),i}(p.AbstractConditionBlock),p.OrderByBlock=function(l){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._orders=[],r}return r(o,l),v(o,[{key:"order",value:function(t,e){for(var r=arguments.length,n=Array(r>2?r-2:0),i=2;r>i;i++)n[i-2]=arguments[i];t=this._sanitizeField(t),"string"!=typeof e&&(void 0===e?e="ASC":null!==e&&(e=e?"ASC":"DESC")),this._orders.push({field:t,dir:e,values:n})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],l=!0,o=!1,a=void 0;try{for(var u,s=this._orders[Symbol.iterator]();!(l=(u=s.next()).done);l=!0){var c=u.value,f=c.field,h=c.dir,v=c.values;r=i(r,", ");var d=this._buildString(f,v,{buildParameterized:e.buildParameterized});r+=d.text,n.push.apply(n,t(d.values)),null!==h&&(r+=" "+h)}}catch(p){o=!0,a=p}finally{try{!l&&s["return"]&&s["return"]()}finally{if(o)throw a}}return{text:r.length?"ORDER BY "+r:"",values:n}}}]),o}(p.Block),p.JoinBlock=function(l){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._joins=[],r}return r(o,l),v(o,[{key:"join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2],n=arguments.length<=3||void 0===arguments[3]?"INNER":arguments[3];t=this._sanitizeTable(t,!0),e=e?this._sanitizeTableAlias(e):e,r=r?this._sanitizeExpression(r):r,this._joins.push({type:n,table:t,alias:e,condition:r})}},{key:"left_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"LEFT")}},{key:"right_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"RIGHT")}},{key:"outer_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"OUTER")}},{key:"left_outer_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"LEFT OUTER")}},{key:"full_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"FULL")}},{key:"cross_join",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?null:arguments[2];this.join(t,e,r,"CROSS")}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],l=!0,o=!1,a=void 0;try{for(var u,s=this._joins[Symbol.iterator]();!(l=(u=s.next()).done);l=!0){var c=u.value,f=c.type,h=c.table,v=c.alias,d=c.condition;r=i(r,this.options.separator);var y=void 0;if(p.isSquelBuilder(h)){var g=h._toParamString({buildParameterized:e.buildParameterized,nested:!0});n.push.apply(n,t(g.values)),y=g.text}else y=this._formatTableName(h);if(r+=f+" JOIN "+y,v&&(r+=" "+this._formatTableAlias(v)),d){r+=" ON ";var _=void 0;_=p.isSquelBuilder(d)?d._toParamString({buildParameterized:e.buildParameterized}):this._buildString(d,[],{buildParameterized:e.buildParameterized}),r+=this._applyNestingFormatting(_.text),n.push.apply(n,t(_.values))}}}catch(m){o=!0,a=m}finally{try{!l&&s["return"]&&s["return"]()}finally{if(o)throw a}}return{text:r,values:n}}}]),o}(p.Block),p.UnionBlock=function(l){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._unions=[],r}return r(o,l),v(o,[{key:"union",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?"UNION":arguments[1];t=this._sanitizeTable(t),this._unions.push({type:e,table:t})}},{key:"union_all",value:function(t){this.union(t,"UNION ALL")}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],l=!0,o=!1,a=void 0;try{for(var u,s=this._unions[Symbol.iterator]();!(l=(u=s.next()).done);l=!0){var c=u.value,f=c.type,h=c.table;r=i(r,this.options.separator);var v=void 0;if(h instanceof p.BaseBuilder){var d=h._toParamString({buildParameterized:e.buildParameterized,nested:!0});v=d.text,n.push.apply(n,t(d.values))}else r=this._formatTableName(h);r+=f+" "+v}}catch(y){o=!0,a=y}finally{try{!l&&s["return"]&&s["return"]()}finally{if(o)throw a}}return{text:r,values:n}}}]),o}(p.Block),p.QueryBuilder=function(i){function o(t,r){n(this,o);var i=e(this,Object.getPrototypeOf(o).call(this,t));i.blocks=r||[];var l=!0,a=!1,u=void 0;try{for(var s,c=i.blocks[Symbol.iterator]();!(l=(s=c.next()).done);l=!0){var f=s.value,h=f.exposedMethods();for(var v in h){var d=h[v];if(void 0!==i[v])throw new Error("Builder already has a builder method called: "+v);!function(t,e,r){i[e]=function(){for(var e=arguments.length,n=Array(e),l=0;e>l;l++)n[l]=arguments[l];return r.call.apply(r,[t].concat(n)),i}}(f,v,d)}}}catch(p){a=!0,u=p}finally{try{!l&&c["return"]&&c["return"]()}finally{if(a)throw u}}return i}return r(o,i),v(o,[{key:"registerValueHandler",value:function(t,e){var r=!0,n=!1,i=void 0;try{for(var l,a=this.blocks[Symbol.iterator]();!(r=(l=a.next()).done);r=!0){var u=l.value;u.registerValueHandler(t,e)}}catch(s){n=!0,i=s}finally{try{!r&&a["return"]&&a["return"]()}finally{if(n)throw i}}return h(Object.getPrototypeOf(o.prototype),"registerValueHandler",this).call(this,t,e),this}},{key:"updateOptions",value:function(t){this.options=l({},this.options,t);var e=!0,r=!1,n=void 0;try{for(var i,o=this.blocks[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var a=i.value;a.options=l({},a.options,t)}}catch(u){r=!0,n=u}finally{try{!e&&o["return"]&&o["return"]()}finally{if(r)throw n}}}},{key:"_toParamString",value:function(){var e,r=this,n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];n=l({},this.options,n);var i=this.blocks.map(function(t){return t._toParamString({buildParameterized:n.buildParameterized,queryBuilder:r})}),o=i.map(function(t){return t.text}),a=i.map(function(t){return t.values}),u=o.filter(function(t){return 0<t.length}).join(n.separator),s=(e=[]).concat.apply(e,t(a));return n.nested||n.numberedParameters&&!function(){var t=void 0!==n.numberedParametersStartAt?n.numberedParametersStartAt:1,e=n.parameterCharacter.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");u=u.replace(new RegExp(e,"g"),function(){return""+n.numberedParametersPrefix+t++})}(),{text:this._applyNestingFormatting(u,!!n.nested),values:s}}},{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(t){var e=this.blocks.filter(function(e){return e instanceof t});return e[0]}}]),o}(p.BaseBuilder),p.Select=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new p.StringBlock(t,"SELECT"),new p.FunctionBlock(t),new p.DistinctBlock(t),new p.GetFieldBlock(t),new p.FromTableBlock(t),new p.JoinBlock(t),new p.WhereBlock(t),new p.GroupByBlock(t),new p.HavingBlock(t),new p.OrderByBlock(t),new p.LimitBlock(t),new p.OffsetBlock(t),new p.UnionBlock(t)],
2
+ e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(p.QueryBuilder),p.Update=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new p.StringBlock(t,"UPDATE"),new p.UpdateTableBlock(t),new p.SetFieldBlock(t),new p.WhereBlock(t),new p.OrderByBlock(t),new p.LimitBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(p.QueryBuilder),p.Delete=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new p.StringBlock(t,"DELETE"),new p.TargetTableBlock(t),new p.FromTableBlock(l({},t,{singleTable:!0})),new p.JoinBlock(t),new p.WhereBlock(t),new p.OrderByBlock(t),new p.LimitBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(p.QueryBuilder),p.Insert=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new p.StringBlock(t,"INSERT"),new p.IntoTableBlock(t),new p.InsertFieldValueBlock(t),new p.InsertFieldsFromQueryBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(p.QueryBuilder);var g={VERSION:"5.8.0",flavour:f,expr:function(t){return new p.Expression(t)},"case":function(t,e){return new p.Case(t,e)},select:function(t,e){return new p.Select(t,e)},update:function(t,e){return new p.Update(t,e)},insert:function(t,e){return new p.Insert(t,e)},"delete":function(t,e){return new p.Delete(t,e)},str:function(){var t=new p.FunctionBlock;return t["function"].apply(t,arguments),t},rstr:function(){var t=new p.FunctionBlock({rawNesting:!0});return t["function"].apply(t,arguments),t},registerValueHandler:p.registerValueHandler};return g.remove=g["delete"],g.cls=p,g}var h=function y(t,e,r){null===t&&(t=Function.prototype);var n=Object.getOwnPropertyDescriptor(t,e);if(void 0===n){var i=Object.getPrototypeOf(t);return null===i?void 0:y(i,e,r)}if("value"in n)return n.value;var l=n.get;if(void 0!==l)return l.call(r)},v=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},p=f();return p.flavours={},p.useFlavour=function(){var t=arguments.length<=0||void 0===arguments[0]?null:arguments[0];if(!t)return p;if(p.flavours[t]instanceof Function){var e=f(t);return p.flavours[t].call(null,e),e.flavours=p.flavours,e.useFlavour=p.useFlavour,e}throw new Error("Flavour not available: "+t)},p.flavours.mssql=function(t){var o=t.cls;o.DefaultQueryBuilderOptions.replaceSingleQuotes=!0,o.DefaultQueryBuilderOptions.autoQuoteAliasNames=!1,o.DefaultQueryBuilderOptions.numberedParametersPrefix="@",t.registerValueHandler(Date,function(t){return"'"+t.getUTCFullYear()+"-"+(t.getUTCMonth()+1)+"-"+t.getUTCDate()+" "+t.getUTCHours()+":"+t.getUTCMinutes()+":"+t.getUTCSeconds()+"'"}),o.MssqlLimitOffsetTopBlock=function(t){function i(t){n(this,i);var l=e(this,Object.getPrototypeOf(i).call(this,t));l._limits=null,l._offsets=null;var a=function(t){t=this._sanitizeLimitOffset(t),this._parent._limits=t};return l.ParentBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t.options));return r._parent=t,r}return r(i,t),i}(o.Block),l.LimitBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r.limit=a,r}return r(i,t),v(i,[{key:"_toParamString",value:function(){var t="";return this._parent._limits&&this._parent._offsets&&(t="FETCH NEXT "+this._parent._limits+" ROWS ONLY"),{text:t,values:[]}}}]),i}(l.ParentBlock),l.TopBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r.top=a,r}return r(i,t),v(i,[{key:"_toParamString",value:function(){var t="";return this._parent._limits&&!this._parent._offsets&&(t="TOP ("+this._parent._limits+")"),{text:t,values:[]}}}]),i}(l.ParentBlock),l.OffsetBlock=function(t){function i(){return n(this,i),e(this,Object.getPrototypeOf(i).apply(this,arguments))}return r(i,t),v(i,[{key:"offset",value:function(t){this._parent._offsets=this._sanitizeLimitOffset(t)}},{key:"_toParamString",value:function(){var t="";return this._parent._offsets&&(t="OFFSET "+this._parent._offsets+" ROWS"),{text:t,values:[]}}}]),i}(l.ParentBlock),l}return r(i,t),v(i,[{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)}}]),i}(o.Block),o.MssqlUpdateTopBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._limits=null,r.limit=r.top=function(t){r._limits=r._sanitizeLimitOffset(t)},r}return r(i,t),v(i,[{key:"_toParamString",value:function(){return{text:this._limits?"TOP ("+this._limits+")":"",values:[]}}}]),i}(o.Block),o.MssqlInsertFieldValueBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._outputs=[],r}return r(i,t),v(i,[{key:"output",value:function(t){var e=this;"string"==typeof t?this._outputs.push("INSERTED."+this._sanitizeField(t)):t.forEach(function(t){e._outputs.push("INSERTED."+e._sanitizeField(t))})}},{key:"_toParamString",value:function(t){var e=h(Object.getPrototypeOf(i.prototype),"_toParamString",this).call(this,t);if(e.text.length&&0<this._outputs.length){var r="OUTPUT "+this._outputs.join(", ")+" ",n=e.text.indexOf("VALUES");e.text=e.text.substr(0,n)+r+e.text.substr(n)}return e}}]),i}(o.InsertFieldValueBlock),o.MssqlUpdateDeleteOutputBlock=function(t){function l(t){n(this,l);var r=e(this,Object.getPrototypeOf(l).call(this,t));return r._outputs=[],r}return r(l,t),v(l,[{key:"outputs",value:function(t){for(var e in t)this.output(e,t[e])}},{key:"output",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1];t=this._sanitizeField(t),e=e?this._sanitizeFieldAlias(e):e,this._outputs.push({name:this.options.forDelete?"DELETED."+t:"INSERTED."+t,alias:e})}},{key:"_toParamString",value:function(t){var e="";if(this._outputs.length){var r=!0,n=!1,l=void 0;try{for(var o,a=this._outputs[Symbol.iterator]();!(r=(o=a.next()).done);r=!0){var u=o.value;e=i(e,", "),e+=u.name,u.alias&&(e+=" AS "+this._formatFieldAlias(u.alias))}}catch(s){n=!0,l=s}finally{try{!r&&a["return"]&&a["return"]()}finally{if(n)throw l}}e="OUTPUT "+e}return{text:e,values:[]}}}]),l}(o.Block),o.Select=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];n(this,i);var l=new o.MssqlLimitOffsetTopBlock(t);return r=r||[new o.StringBlock(t,"SELECT"),new o.DistinctBlock(t),l.TOP(),new o.GetFieldBlock(t),new o.FromTableBlock(t),new o.JoinBlock(t),new o.WhereBlock(t),new o.GroupByBlock(t),new o.OrderByBlock(t),l.OFFSET(),l.LIMIT(),new o.UnionBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(o.QueryBuilder),o.Update=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new o.StringBlock(t,"UPDATE"),new o.MssqlUpdateTopBlock(t),new o.UpdateTableBlock(t),new o.SetFieldBlock(t),new o.MssqlUpdateDeleteOutputBlock(t),new o.WhereBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(o.QueryBuilder),o.Delete=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new o.StringBlock(t,"DELETE"),new o.TargetTableBlock(t),new o.FromTableBlock(l({},t,{singleTable:!0})),new o.JoinBlock(t),new o.MssqlUpdateDeleteOutputBlock(l({},t,{forDelete:!0})),new o.WhereBlock(t),new o.OrderByBlock(t),new o.LimitBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(o.QueryBuilder),o.Insert=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new o.StringBlock(t,"INSERT"),new o.IntoTableBlock(t),new o.MssqlInsertFieldValueBlock(t),new o.InsertFieldsFromQueryBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(o.QueryBuilder)},p.flavours.mysql=function(l){var o=l.cls;o.MysqlOnDuplicateKeyUpdateBlock=function(l){function o(){return n(this,o),e(this,Object.getPrototypeOf(o).apply(this,arguments))}return r(o,l),v(o,[{key:"onDupUpdate",value:function(t,e,r){this._set(t,e,r)}},{key:"_toParamString",value:function(){for(var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],l=0;l<this._fields.length;++l){r=i(r,", ");var o=this._fields[l],a=this._values[0][l],u=this._valueOptions[0][l];if("undefined"==typeof a)r+=o;else{var s=this._buildString(o+" = "+this.options.parameterCharacter,[a],{buildParameterized:e.buildParameterized,formattingOptions:u});r+=s.text,n.push.apply(n,t(s.values))}}return{text:r.length?"ON DUPLICATE KEY UPDATE "+r:"",values:n}}}]),o}(o.AbstractSetFieldBlock),o.Insert=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new o.StringBlock(t,"INSERT"),new o.IntoTableBlock(t),new o.InsertFieldValueBlock(t),new o.InsertFieldsFromQueryBlock(t),new o.MysqlOnDuplicateKeyUpdateBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(o.QueryBuilder),o.Replace=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new o.StringBlock(t,"REPLACE"),new o.IntoTableBlock(t),new o.InsertFieldValueBlock(t),new o.InsertFieldsFromQueryBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(o.QueryBuilder),l.replace=function(t,e){return new o.Replace(t,e)}},p.flavours.postgres=function(o){var a=o.cls;a.DefaultQueryBuilderOptions.numberedParameters=!0,a.DefaultQueryBuilderOptions.numberedParametersStartAt=1,a.DefaultQueryBuilderOptions.autoQuoteAliasNames=!1,a.DefaultQueryBuilderOptions.useAsForTableAliasNames=!0,a.PostgresOnConflictKeyUpdateBlock=function(l){function o(){return n(this,o),e(this,Object.getPrototypeOf(o).apply(this,arguments))}return r(o,l),v(o,[{key:"onConflict",value:function(t,e){var r=this;this._dupIndex=this._sanitizeField(t),e&&Object.keys(e).forEach(function(t){r._set(t,e[t])})}},{key:"_toParamString",value:function(){for(var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r="",n=[],l=0;l<this._fields.length;++l){r=i(r,", ");var o=this._fields[l],a=this._values[0][l],u=this._valueOptions[0][l];if("undefined"==typeof a)r+=o;else{var s=this._buildString(o+" = "+this.options.parameterCharacter,[a],{buildParameterized:e.buildParameterized,formattingOptions:u});r+=s.text,n.push.apply(n,t(s.values))}}return{text:this._dupIndex?"ON CONFLICT ("+this._dupIndex+") DO "+(r.length?"UPDATE SET "+r:"NOTHING"):"",values:n}}}]),o}(a.AbstractSetFieldBlock),a.ReturningBlock=function(l){function o(t){n(this,o);var r=e(this,Object.getPrototypeOf(o).call(this,t));return r._fields=[],r}return r(o,l),v(o,[{key:"returning",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?null:arguments[1],r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];e=e?this._sanitizeFieldAlias(e):e,t=this._sanitizeField(t);var n=this._fields.filter(function(r){return r.name===t&&r.alias===e});return n.length?this:void this._fields.push({name:t,alias:e,options:r})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=(e.queryBuilder,e.buildParameterized),n="",l=[],o=!0,a=!1,u=void 0;try{for(var s,c=this._fields[Symbol.iterator]();!(o=(s=c.next()).done);o=!0){var f=s.value;n=i(n,", ");var h=f.name,v=f.alias,d=f.options;if("string"==typeof h)n+=this._formatFieldName(h,d);else{var p=h._toParamString({nested:!0,buildParameterized:r});n+=p.text,l.push.apply(l,t(p.values))}v&&(n+=" AS "+this._formatFieldAlias(v))}}catch(y){a=!0,u=y}finally{try{!o&&c["return"]&&c["return"]()}finally{if(a)throw u}}return{text:n.length>0?"RETURNING "+n:"",values:l}}}]),o}(a.Block),a.WithBlock=function(i){function l(t){n(this,l);var r=e(this,Object.getPrototypeOf(l).call(this,t));return r._tables=[],r}return r(l,i),v(l,[{key:"with",value:function(t,e){this._tables.push({alias:t,table:e})}},{key:"_toParamString",value:function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=[],n=[],i=!0,l=!1,o=void 0;try{for(var a,u=this._tables[Symbol.iterator]();!(i=(a=u.next()).done);i=!0){var s=a.value,c=s.alias,f=s.table,h=f._toParamString({buildParameterized:e.buildParameterized,nested:!0});r.push(c+" AS "+h.text),n.push.apply(n,t(h.values))}}catch(v){l=!0,o=v}finally{try{!i&&u["return"]&&u["return"]()}finally{if(l)throw o}}return{text:r.length?"WITH "+r.join(", "):"",values:n}}}]),l}(a.Block),a.DistinctOnBlock=function(t){function i(t){n(this,i);var r=e(this,Object.getPrototypeOf(i).call(this,t));return r._distinctFields=[],r}return r(i,t),v(i,[{key:"distinct",value:function(){var t=this;this._useDistinct=!0;for(var e=arguments.length,r=Array(e),n=0;e>n;n++)r[n]=arguments[n];r.forEach(function(e){t._distinctFields.push(t._sanitizeField(e))})}},{key:"_toParamString",value:function(){var t="";return this._useDistinct&&(t="DISTINCT",this._distinctFields.length&&(t+=" ON ("+this._distinctFields.join(", ")+")")),{text:t,values:[]}}}]),i}(a.Block),a.Select=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new a.WithBlock(t),new a.StringBlock(t,"SELECT"),new a.FunctionBlock(t),new a.DistinctOnBlock(t),new a.GetFieldBlock(t),new a.FromTableBlock(t),new a.JoinBlock(t),new a.WhereBlock(t),new a.GroupByBlock(t),new a.HavingBlock(t),new a.OrderByBlock(t),new a.LimitBlock(t),new a.OffsetBlock(t),new a.UnionBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(a.QueryBuilder),a.Insert=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new a.WithBlock(t),new a.StringBlock(t,"INSERT"),new a.IntoTableBlock(t),new a.InsertFieldValueBlock(t),new a.InsertFieldsFromQueryBlock(t),new a.PostgresOnConflictKeyUpdateBlock(t),new a.ReturningBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(a.QueryBuilder),a.Update=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new a.WithBlock(t),new a.StringBlock(t,"UPDATE"),new a.UpdateTableBlock(t),new a.SetFieldBlock(t),new a.FromTableBlock(t),new a.WhereBlock(t),new a.OrderByBlock(t),new a.LimitBlock(t),new a.ReturningBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(a.QueryBuilder),a.Delete=function(t){function i(t){var r=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return n(this,i),r=r||[new a.WithBlock(t),new a.StringBlock(t,"DELETE"),new a.TargetTableBlock(t),new a.FromTableBlock(l({},t,{singleTable:!0})),new a.JoinBlock(t),new a.WhereBlock(t),new a.OrderByBlock(t),new a.LimitBlock(t),new a.ReturningBlock(t)],e(this,Object.getPrototypeOf(i).call(this,t,r))}return r(i,t),i}(a.QueryBuilder)},p});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "squel",
3
3
  "description": "SQL query string builder",
4
- "version": "5.5.0",
4
+ "version": "5.8.0",
5
5
  "author": "Ramesh Nair <ram@hiddentao.com> (http://www.hiddentao.com/)",
6
6
  "contributors": [
7
7
  "Ramesh Nair <ram@hiddentao.com> (http://www.hiddentao.com/)",