alasql 3.1.0 → 3.1.2

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/bin/alasql-cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  //
4
4
  // Command line interface for Alasql
5
- // Version: 0.2.3
5
+ // Version: 3.1.2
6
6
  // Date: 28.07.2015
7
7
  // (c) 2014-2022, Andrey Gershun & Mathias Wulff
8
8
  //
@@ -1,7 +1,7 @@
1
- //! AlaSQL v3.0.0 build: develop-4287740e | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
1
+ //! AlaSQL v3.1.2 build: v3-hotfix-dfc34cf0 | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
2
2
  /*
3
3
  @module alasql
4
- @version 3.0.0
4
+ @version 3.1.2
5
5
 
6
6
  AlaSQL - JavaScript SQL database
7
7
  © 2014-2023 Andrey Gershun & Mathias Wulff
@@ -1,2 +1,2 @@
1
- //! AlaSQL v3.0.0 build: develop-4287740e | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
1
+ //! AlaSQL v3.1.2 build: v3-hotfix-dfc34cf0 | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
2
2
  !function(r,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():r.alasql=e()}(this,function(){function i(r,e,o){"function"==typeof(e=e||[])&&(scope=o,o=e,e=[]),"object"!=typeof e&&(e=[e]);var t=i.lastid++;i.buffer[t]=o,i.webworker.postMessage({id:t,sql:r,params:e})}var a;if(i.options={},i.options.progress=function(){},isArray=function(r){return"[object Array]"===Object.prototype.toString.call(r)},i.promise=function(){throw new Error("Please include a Promise/A+ library")},"undefined"!=typeof Promise&&(a=function(r,e,n,s){return new Promise(function(o,t){i(r,e,function(r,e){e?t(e):(n&&s&&!1!==i.options.progress&&i.options.progress(n,s),o(r))})})},i.promise=function(r,e){if("undefined"==typeof Promise)throw new Error("Please include a Promise/A+ library");if("string"==typeof r)return a(r,e);if(!isArray(r)||r.length<1||void 0!==e)throw new Error("Error in .promise parameters");var o=r;if(!(o.length<1)){for(var t,n,s=[],i=0;i<o.length;i++){if("string"==typeof(n=o[i])&&(n=[n]),!isArray(n)||n.length<1||2<n.length)throw new Error("Error in .promise parameter");t=n[0],n=n[1]||void 0,s.push(a(t,n,i,o.length))}return Promise.all(s)}}),i=i||!1)return i.worker=function(){throw new Error("Can find webworker in this enviroment")},"undefined"!=typeof Worker&&(i.worker=function(r,e,o){if(void 0===(r=!0===r?void 0:r))for(var t=document.getElementsByTagName("script"),n=0;n<t.length;n++){if("alasql-worker.js"===t[n].src.substr(-16).toLowerCase()){r=t[n].src.substr(0,t[n].src.length-16)+"alasql.js";break}if("alasql-worker.min.js"===t[n].src.substr(-20).toLowerCase()){r=t[n].src.substr(0,t[n].src.length-20)+"alasql.min.js";break}if("alasql.js"===t[n].src.substr(-9).toLowerCase()){r=t[n].src;break}if("alasql.min.js"===t[n].src.substr(-13).toLowerCase()){r=t[n].src.substr(0,t[n].src.length-13)+"alasql.min.js";break}}if(void 0===r)throw new Error("Path to alasql.js is not specified");var s;!1!==r?(s=(s="importScripts('")+r+"');self.onmessage = function(event) {alasql(event.data.sql,event.data.params, function(data){postMessage({id:event.data.id, data:data});});}",s=new Blob([s],{type:"text/plain"}),i.webworker=new Worker(URL.createObjectURL(s)),i.webworker.onmessage=function(r){var e=r.data.id;i.buffer[e](r.data.data),delete i.buffer[e]},i.webworker.onerror=function(r){throw r},1<arguments.length&&i("REQUIRE "+e.map(function(r){return'"'+r+'"'}).join(","),[],o)):!1===r&&delete i.webworker}),i.lastid=0,i.buffer={},i.worker(),i;throw new Error("alasql was not found")});
package/dist/alasql.fs.js CHANGED
@@ -1,7 +1,7 @@
1
- //! AlaSQL v3.0.0 build: develop-4287740e | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
1
+ //! AlaSQL v3.1.2 build: v3-hotfix-dfc34cf0 | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
2
2
  /*
3
3
  @module alasql
4
- @version 3.0.0
4
+ @version 3.1.2
5
5
 
6
6
  AlaSQL - JavaScript SQL database
7
7
  © 2014-2023 Andrey Gershun & Mathias Wulff
@@ -142,8 +142,8 @@ var alasql = function(sql, params, cb, scope) {
142
142
  Current version of alasql
143
143
  @constant {string}
144
144
  */
145
- alasql.version = '3.0.0';
146
- alasql.build = 'develop-4287740e';
145
+ alasql.version = '3.1.2';
146
+ alasql.build = 'v3-hotfix-dfc34cf0';
147
147
 
148
148
  /**
149
149
  Debug flag
@@ -4022,11 +4022,11 @@ var cloneDeep = (utils.cloneDeep = function cloneDeep(obj) {
4022
4022
  return +obj;
4023
4023
  }
4024
4024
 
4025
- var temp = new obj.constructor(); // changed
4025
+ var temp = new (Object.prototype.hasOwnProperty.call(obj, 'constructor') ? Object : obj.constructor)(); // changed
4026
4026
 
4027
4027
  for (var key in obj) {
4028
4028
  if (obj.hasOwnProperty(key)) {
4029
- temp[key] = cloneDeep(obj[key]);
4029
+ /* A "__proto__" key from parsed data is copied as data, never as the prototype */ if (key === '__proto__') { Object.defineProperty(temp, key, {value: cloneDeep(obj[key]), writable: true, enumerable: true, configurable: true}); } else { temp[key] = cloneDeep(obj[key]); }
4030
4030
  }
4031
4031
  }
4032
4032
  return temp;
@@ -4098,7 +4098,7 @@ var extend = (utils.extend = function extend(a, b) {
4098
4098
  a = a || {};
4099
4099
  for (var key in b) {
4100
4100
  if (b.hasOwnProperty(key)) {
4101
- a[key] = b[key];
4101
+ /* A "__proto__" key from parsed data is copied as data, never as the prototype */ if (key === '__proto__') { Object.defineProperty(a, key, {value: b[key], writable: true, enumerable: true, configurable: true}); } else { a[key] = b[key]; }
4102
4102
  }
4103
4103
  }
4104
4104
  return a;
@@ -8677,7 +8677,7 @@ yy.Select.prototype.compileGroup = function (query) {
8677
8677
  aft2 = '';
8678
8678
 
8679
8679
  if (typeof query.groupStar !== 'undefined') {
8680
- aft2 += "for(var f in p['" + query.groupStar + "']) {g[f]=p['" + query.groupStar + "'][f];};";
8680
+ aft2 += "for(var f in p['" + query.groupStar + "']) {if(/^__proto__$/.test(f))Object.defineProperty(g,f,{writable:true,enumerable:true,configurable:true});g[f]=p['" + query.groupStar + "'][f];};";
8681
8681
  }
8682
8682
 
8683
8683
  /*
@@ -9069,9 +9069,10 @@ function compileSelectStar(query, aliases, joinstar) {
9069
9069
 
9070
9070
  if (columns && columns.length > 0) {
9071
9071
  columns.forEach(function (tcol) {
9072
+ const escapedColumnId = escapeq(tcol.columnid);
9072
9073
  if (joinstar && alasql.options.joinstar == 'underscore') {
9073
9074
  ss.push(
9074
- "'" + alias + '_' + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']"
9075
+ "'" + alias + '_' + escapedColumnId + "':p['" + alias + "']['" + escapedColumnId + "']"
9075
9076
  );
9076
9077
  } else if (joinstar && alasql.options.joinstar == 'json') {
9077
9078
  // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
@@ -9079,16 +9080,16 @@ function compileSelectStar(query, aliases, joinstar) {
9079
9080
  "r['" +
9080
9081
  alias +
9081
9082
  "']['" +
9082
- tcol.columnid +
9083
+ escapedColumnId +
9083
9084
  "']=p['" +
9084
9085
  alias +
9085
9086
  "']['" +
9086
- tcol.columnid +
9087
+ escapedColumnId +
9087
9088
  "'];";
9088
9089
  } else {
9089
- var value = "p['" + alias + "']['" + tcol.columnid + "']";
9090
+ var value = "p['" + alias + "']['" + escapedColumnId + "']";
9090
9091
  if (!columnIds[tcol.columnid]) {
9091
- var key = "'" + tcol.columnid + "':";
9092
+ var key = "'" + escapedColumnId + "':";
9092
9093
  ss.push(key + value);
9093
9094
  columnIds[tcol.columnid] = {
9094
9095
  id: ss.length - 1,
@@ -9103,7 +9104,7 @@ function compileSelectStar(query, aliases, joinstar) {
9103
9104
  }
9104
9105
  }
9105
9106
 
9106
- query.selectColumns[escapeq(tcol.columnid)] = true;
9107
+ query.selectColumns[escapedColumnId] = true;
9107
9108
 
9108
9109
  var coldef = {
9109
9110
  columnid: tcol.columnid,
@@ -9119,7 +9120,7 @@ function compileSelectStar(query, aliases, joinstar) {
9119
9120
  } else {
9120
9121
 
9121
9122
  // if column not exist, then copy all
9122
- sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
9123
+ sp += 'var w=p["' + alias + '"];for(var k in w){if(/^__proto__$/.test(k))Object.defineProperty(r,k,{writable:true,enumerable:true,configurable:true});r[k]=w[k]};';
9123
9124
 
9124
9125
  query.dirtyColumns = true;
9125
9126
  }
@@ -9447,10 +9448,10 @@ yy.Select.prototype.compileSelectGroup1 = function (query) {
9447
9448
  self.columns.forEach(function (col) {
9448
9449
 
9449
9450
  if (col instanceof yy.Column && col.columnid === '*') {
9450
- // s += 'for(var k in g){r[k]=g[k]};';
9451
+ // s += 'for(var k in g){if(/^__proto__$/.test(k))Object.defineProperty(r,k,{writable:true,enumerable:true,configurable:true});r[k]=g[k]};';
9451
9452
  // s += 'for(var k in this.query.groupColumns){r[k]=g[this.query.groupColumns[k]]};';
9452
9453
 
9453
- s += 'for(var k in g) {r[k]=g[k]};';
9454
+ s += 'for(var k in g) {if(/^__proto__$/.test(k))Object.defineProperty(r,k,{writable:true,enumerable:true,configurable:true});r[k]=g[k]};';
9454
9455
  return '';
9455
9456
 
9456
9457
  } else {
@@ -10581,7 +10582,7 @@ yy.Over = class Over {
10581
10582
  var ljs = '(' + leftJS() + '||{})';
10582
10583
 
10583
10584
  if (typeof this.right === 'string') {
10584
- s = ljs + '["' + this.right + '"]';
10585
+ s = ljs + '["' + escapeq(this.right) + '"]';
10585
10586
  } else if (typeof this.right === 'number') {
10586
10587
  s = ljs + '[' + this.right + ']';
10587
10588
  } else if (this.right instanceof yy.FuncValue) {
@@ -10820,7 +10821,7 @@ yy.Over = class Over {
10820
10821
  }
10821
10822
 
10822
10823
  toJS() {
10823
- return "alasql.vars['" + this.variable + "']";
10824
+ return "alasql.vars['" + escapeq(this.variable) + "']";
10824
10825
  }
10825
10826
  }
10826
10827
 
@@ -11209,7 +11210,7 @@ yy.Over = class Over {
11209
11210
  toJS() {
11210
11211
  var colas = this.nick;
11211
11212
  if (colas === undefined) {
11212
- colas = this.toString();
11213
+ colas = escapeq(this.toString());
11213
11214
  }
11214
11215
  return "g['" + colas + "']";
11215
11216
  }
@@ -12805,7 +12806,7 @@ yy.CreateTable.prototype.execute = function (databaseid, params, cb) {
12805
12806
 
12806
12807
  table.update(
12807
12808
  function (t) {
12808
- for (var f in r) t[f] = r[f];
12809
+ for (var f in r) {if(/^__proto__$/.test(f))Object.defineProperty(t,f,{writable:true,enumerable:true,configurable:true});t[f] = r[f];}
12809
12810
  },
12810
12811
  table.data.indexOf(toreplace),
12811
12812
  params
@@ -14379,7 +14380,7 @@ yy.Insert.prototype.compile = function (databaseid) {
14379
14380
  });
14380
14381
  } else {
14381
14382
 
14382
- // sw = 'var w='+JSONtoJS(values)+';for(var k in w){r[k]=w[k]};';
14383
+ // sw = 'var w='+JSONtoJS(values)+';for(var k in w){if(/^__proto__$/.test(k))Object.defineProperty(r,k,{writable:true,enumerable:true,configurable:true});r[k]=w[k]};';
14383
14384
  sw = JSONtoJS(values);
14384
14385
  }
14385
14386
  }
package/dist/alasql.js CHANGED
@@ -1,7 +1,7 @@
1
- //! AlaSQL v3.0.0 build: develop-4287740e | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
1
+ //! AlaSQL v3.1.2 build: v3-hotfix-dfc34cf0 | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
2
2
  /*
3
3
  @module alasql
4
- @version 3.0.0
4
+ @version 3.1.2
5
5
 
6
6
  AlaSQL - JavaScript SQL database
7
7
  © 2014-2023 Andrey Gershun & Mathias Wulff
@@ -142,8 +142,8 @@ var alasql = function(sql, params, cb, scope) {
142
142
  Current version of alasql
143
143
  @constant {string}
144
144
  */
145
- alasql.version = '3.0.0';
146
- alasql.build = 'develop-4287740e';
145
+ alasql.version = '3.1.2';
146
+ alasql.build = 'v3-hotfix-dfc34cf0';
147
147
 
148
148
  /**
149
149
  Debug flag
@@ -4022,11 +4022,11 @@ var cloneDeep = (utils.cloneDeep = function cloneDeep(obj) {
4022
4022
  return +obj;
4023
4023
  }
4024
4024
 
4025
- var temp = new obj.constructor(); // changed
4025
+ var temp = new (Object.prototype.hasOwnProperty.call(obj, 'constructor') ? Object : obj.constructor)(); // changed
4026
4026
 
4027
4027
  for (var key in obj) {
4028
4028
  if (obj.hasOwnProperty(key)) {
4029
- temp[key] = cloneDeep(obj[key]);
4029
+ /* A "__proto__" key from parsed data is copied as data, never as the prototype */ if (key === '__proto__') { Object.defineProperty(temp, key, {value: cloneDeep(obj[key]), writable: true, enumerable: true, configurable: true}); } else { temp[key] = cloneDeep(obj[key]); }
4030
4030
  }
4031
4031
  }
4032
4032
  return temp;
@@ -4098,7 +4098,7 @@ var extend = (utils.extend = function extend(a, b) {
4098
4098
  a = a || {};
4099
4099
  for (var key in b) {
4100
4100
  if (b.hasOwnProperty(key)) {
4101
- a[key] = b[key];
4101
+ /* A "__proto__" key from parsed data is copied as data, never as the prototype */ if (key === '__proto__') { Object.defineProperty(a, key, {value: b[key], writable: true, enumerable: true, configurable: true}); } else { a[key] = b[key]; }
4102
4102
  }
4103
4103
  }
4104
4104
  return a;
@@ -8677,7 +8677,7 @@ yy.Select.prototype.compileGroup = function (query) {
8677
8677
  aft2 = '';
8678
8678
 
8679
8679
  if (typeof query.groupStar !== 'undefined') {
8680
- aft2 += "for(var f in p['" + query.groupStar + "']) {g[f]=p['" + query.groupStar + "'][f];};";
8680
+ aft2 += "for(var f in p['" + query.groupStar + "']) {if(/^__proto__$/.test(f))Object.defineProperty(g,f,{writable:true,enumerable:true,configurable:true});g[f]=p['" + query.groupStar + "'][f];};";
8681
8681
  }
8682
8682
 
8683
8683
  /*
@@ -9069,9 +9069,10 @@ function compileSelectStar(query, aliases, joinstar) {
9069
9069
 
9070
9070
  if (columns && columns.length > 0) {
9071
9071
  columns.forEach(function (tcol) {
9072
+ const escapedColumnId = escapeq(tcol.columnid);
9072
9073
  if (joinstar && alasql.options.joinstar == 'underscore') {
9073
9074
  ss.push(
9074
- "'" + alias + '_' + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']"
9075
+ "'" + alias + '_' + escapedColumnId + "':p['" + alias + "']['" + escapedColumnId + "']"
9075
9076
  );
9076
9077
  } else if (joinstar && alasql.options.joinstar == 'json') {
9077
9078
  // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
@@ -9079,16 +9080,16 @@ function compileSelectStar(query, aliases, joinstar) {
9079
9080
  "r['" +
9080
9081
  alias +
9081
9082
  "']['" +
9082
- tcol.columnid +
9083
+ escapedColumnId +
9083
9084
  "']=p['" +
9084
9085
  alias +
9085
9086
  "']['" +
9086
- tcol.columnid +
9087
+ escapedColumnId +
9087
9088
  "'];";
9088
9089
  } else {
9089
- var value = "p['" + alias + "']['" + tcol.columnid + "']";
9090
+ var value = "p['" + alias + "']['" + escapedColumnId + "']";
9090
9091
  if (!columnIds[tcol.columnid]) {
9091
- var key = "'" + tcol.columnid + "':";
9092
+ var key = "'" + escapedColumnId + "':";
9092
9093
  ss.push(key + value);
9093
9094
  columnIds[tcol.columnid] = {
9094
9095
  id: ss.length - 1,
@@ -9103,7 +9104,7 @@ function compileSelectStar(query, aliases, joinstar) {
9103
9104
  }
9104
9105
  }
9105
9106
 
9106
- query.selectColumns[escapeq(tcol.columnid)] = true;
9107
+ query.selectColumns[escapedColumnId] = true;
9107
9108
 
9108
9109
  var coldef = {
9109
9110
  columnid: tcol.columnid,
@@ -9119,7 +9120,7 @@ function compileSelectStar(query, aliases, joinstar) {
9119
9120
  } else {
9120
9121
 
9121
9122
  // if column not exist, then copy all
9122
- sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
9123
+ sp += 'var w=p["' + alias + '"];for(var k in w){if(/^__proto__$/.test(k))Object.defineProperty(r,k,{writable:true,enumerable:true,configurable:true});r[k]=w[k]};';
9123
9124
 
9124
9125
  query.dirtyColumns = true;
9125
9126
  }
@@ -9447,10 +9448,10 @@ yy.Select.prototype.compileSelectGroup1 = function (query) {
9447
9448
  self.columns.forEach(function (col) {
9448
9449
 
9449
9450
  if (col instanceof yy.Column && col.columnid === '*') {
9450
- // s += 'for(var k in g){r[k]=g[k]};';
9451
+ // s += 'for(var k in g){if(/^__proto__$/.test(k))Object.defineProperty(r,k,{writable:true,enumerable:true,configurable:true});r[k]=g[k]};';
9451
9452
  // s += 'for(var k in this.query.groupColumns){r[k]=g[this.query.groupColumns[k]]};';
9452
9453
 
9453
- s += 'for(var k in g) {r[k]=g[k]};';
9454
+ s += 'for(var k in g) {if(/^__proto__$/.test(k))Object.defineProperty(r,k,{writable:true,enumerable:true,configurable:true});r[k]=g[k]};';
9454
9455
  return '';
9455
9456
 
9456
9457
  } else {
@@ -10581,7 +10582,7 @@ yy.Over = class Over {
10581
10582
  var ljs = '(' + leftJS() + '||{})';
10582
10583
 
10583
10584
  if (typeof this.right === 'string') {
10584
- s = ljs + '["' + this.right + '"]';
10585
+ s = ljs + '["' + escapeq(this.right) + '"]';
10585
10586
  } else if (typeof this.right === 'number') {
10586
10587
  s = ljs + '[' + this.right + ']';
10587
10588
  } else if (this.right instanceof yy.FuncValue) {
@@ -10820,7 +10821,7 @@ yy.Over = class Over {
10820
10821
  }
10821
10822
 
10822
10823
  toJS() {
10823
- return "alasql.vars['" + this.variable + "']";
10824
+ return "alasql.vars['" + escapeq(this.variable) + "']";
10824
10825
  }
10825
10826
  }
10826
10827
 
@@ -11209,7 +11210,7 @@ yy.Over = class Over {
11209
11210
  toJS() {
11210
11211
  var colas = this.nick;
11211
11212
  if (colas === undefined) {
11212
- colas = this.toString();
11213
+ colas = escapeq(this.toString());
11213
11214
  }
11214
11215
  return "g['" + colas + "']";
11215
11216
  }
@@ -12805,7 +12806,7 @@ yy.CreateTable.prototype.execute = function (databaseid, params, cb) {
12805
12806
 
12806
12807
  table.update(
12807
12808
  function (t) {
12808
- for (var f in r) t[f] = r[f];
12809
+ for (var f in r) {if(/^__proto__$/.test(f))Object.defineProperty(t,f,{writable:true,enumerable:true,configurable:true});t[f] = r[f];}
12809
12810
  },
12810
12811
  table.data.indexOf(toreplace),
12811
12812
  params
@@ -14379,7 +14380,7 @@ yy.Insert.prototype.compile = function (databaseid) {
14379
14380
  });
14380
14381
  } else {
14381
14382
 
14382
- // sw = 'var w='+JSONtoJS(values)+';for(var k in w){r[k]=w[k]};';
14383
+ // sw = 'var w='+JSONtoJS(values)+';for(var k in w){if(/^__proto__$/.test(k))Object.defineProperty(r,k,{writable:true,enumerable:true,configurable:true});r[k]=w[k]};';
14383
14384
  sw = JSONtoJS(values);
14384
14385
  }
14385
14386
  }