alasql 4.0.4 → 4.0.5

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/dist/alasql.js CHANGED
@@ -1,7 +1,7 @@
1
- //! AlaSQL v4.0.3 build: develop-37eea424 | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
1
+ //! AlaSQL v4.0.4 build: develop-d4d5cdec | © 2014-2023 Andrey Gershun & Mathias Wulff | License: MIT
2
2
  /*
3
3
  @module alasql
4
- @version 4.0.3
4
+ @version 4.0.4
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 = '4.0.3';
146
- alasql.build = 'develop-37eea424';
145
+ alasql.version = '4.0.4';
146
+ alasql.build = 'develop-d4d5cdec';
147
147
 
148
148
  /**
149
149
  Debug flag
@@ -4864,6 +4864,17 @@ var promiseExec = function (sql, params, counterStep, counterTotal) {
4864
4864
  });
4865
4865
  };
4866
4866
 
4867
+ const sequentialPromiseResolver = (promiseData, Promise) => {
4868
+ var startingPoint = Promise.resolve([]);
4869
+ promiseData.forEach((p) => {
4870
+ startingPoint = startingPoint.then((previousResult) =>
4871
+ promiseExec(p.sql, p.params, p.i, p.length).then((result) => [...previousResult, result])
4872
+ );
4873
+ });
4874
+
4875
+ return startingPoint;
4876
+ };
4877
+
4867
4878
  var promiseAll = function (sqlParamsArray) {
4868
4879
  if (sqlParamsArray.length < 1) {
4869
4880
  return;
@@ -4887,10 +4898,19 @@ var promiseAll = function (sqlParamsArray) {
4887
4898
  sql = active[0];
4888
4899
  params = active[1] || undefined;
4889
4900
 
4890
- execArray.push(promiseExec(sql, params, i, sqlParamsArray.length));
4901
+ execArray.push({
4902
+ sql,
4903
+ params,
4904
+ i,
4905
+ length: sqlParamsArray.length,
4906
+ });
4891
4907
  }
4892
4908
 
4893
- return utils.global.Promise.all(execArray);
4909
+ // in case of indexdb the version does not update
4910
+ // if create table queries are run in parallel
4911
+ // this causes certain DML queries to not execute
4912
+ // running them sequentially fixes this issue
4913
+ return sequentialPromiseResolver(execArray, utils.global.Promise);
4894
4914
  };
4895
4915
 
4896
4916
  alasql.promise = function (sql, params) {
@@ -12110,216 +12130,139 @@ yy.Convert.prototype.toJS = function (context, tableid, defcols) {
12110
12130
  throw new Error('There is not such type conversion for ' + this.toString());
12111
12131
  };
12112
12132
 
12133
+ function structuredDate(unFormattedDate) {
12134
+ var month = unFormattedDate.getMonth() + 1;
12135
+ var year = unFormattedDate.getYear();
12136
+ var fullYear = unFormattedDate.getFullYear();
12137
+ var date = unFormattedDate.getDate();
12138
+ var day = unFormattedDate.toString().substr(4, 3);
12139
+ var formattedDate = ('0' + date).substr(-2);
12140
+ var formattedMonth = ('0' + month).substr(-2);
12141
+ var formattedYear = ('0' + year).substr(-2);
12142
+ var formattedHour = ('0' + unFormattedDate.getHours()).substr(-2);
12143
+ var formattedMinutes = ('0' + unFormattedDate.getMinutes()).substr(-2);
12144
+ var formattedSeconds = ('0' + unFormattedDate.getSeconds()).substr(-2);
12145
+ var formattedMilliseconds = ('00' + unFormattedDate.getMilliseconds()).substr(-3);
12146
+ return {
12147
+ month: month,
12148
+ year: year,
12149
+ fullYear: fullYear,
12150
+ date: date,
12151
+ day: day,
12152
+ formattedDate: formattedDate,
12153
+ formattedMonth: formattedMonth,
12154
+ formattedYear: formattedYear,
12155
+ formattedHour: formattedHour,
12156
+ formattedMinutes: formattedMinutes,
12157
+ formattedSeconds: formattedSeconds,
12158
+ formattedMilliseconds: formattedMilliseconds,
12159
+ };
12160
+ }
12161
+
12113
12162
  /**
12114
12163
  Convert one type to another
12115
12164
  */
12116
12165
  alasql.stdfn.CONVERT = function (value, args) {
12117
12166
  var val = value;
12167
+ var udbtypeid = args.dbtypeid.toUpperCase();
12118
12168
 
12119
- if (args.style) {
12120
- // TODO 9,109, 20,120,21,121,126,130,131 conversions
12121
- var t;
12169
+ var t;
12170
+ var s;
12171
+ if (
12172
+ args.style ||
12173
+ args.dbtypeid == 'Date' ||
12174
+ ['DATE', 'DATETIME', 'DATETIME2'].indexOf(udbtypeid) > -1
12175
+ ) {
12122
12176
  if (/\d{8}/.test(val)) {
12123
12177
  t = new Date(+val.substr(0, 4), +val.substr(4, 2) - 1, +val.substr(6, 2));
12124
12178
  } else {
12125
12179
  t = newDate(val);
12126
12180
  }
12181
+ s = structuredDate(t);
12182
+ }
12183
+
12184
+ if (args.style) {
12185
+ // TODO 9,109, 20,120,21,121,126,130,131 conversions
12127
12186
  switch (args.style) {
12128
12187
  case 1: // mm/dd/yy
12129
- val =
12130
- ('0' + (t.getMonth() + 1)).substr(-2) +
12131
- '/' +
12132
- ('0' + t.getDate()).substr(-2) +
12133
- '/' +
12134
- ('0' + t.getYear()).substr(-2);
12188
+ val = s.formattedMonth + '/' + s.formattedDate + '/' + s.formattedYear;
12135
12189
  break;
12136
12190
  case 2: // yy.mm.dd
12137
- val =
12138
- ('0' + t.getYear()).substr(-2) +
12139
- '.' +
12140
- ('0' + (t.getMonth() + 1)).substr(-2) +
12141
- '.' +
12142
- ('0' + t.getDate()).substr(-2);
12191
+ val = s.formattedYear + '.' + s.formattedMonth + '.' + s.formattedDate;
12143
12192
  break;
12144
12193
  case 3: // dd/mm/yy
12145
- val =
12146
- ('0' + t.getDate()).substr(-2) +
12147
- '/' +
12148
- ('0' + (t.getMonth() + 1)).substr(-2) +
12149
- '/' +
12150
- ('0' + t.getYear()).substr(-2);
12194
+ val = s.formattedDate + '/' + s.formattedMonth + '/' + s.formattedYear;
12151
12195
  break;
12152
12196
  case 4: // dd.mm.yy
12153
- val =
12154
- ('0' + t.getDate()).substr(-2) +
12155
- '.' +
12156
- ('0' + (t.getMonth() + 1)).substr(-2) +
12157
- '.' +
12158
- ('0' + t.getYear()).substr(-2);
12197
+ val = s.formattedDate + '.' + s.formattedMonth + '.' + s.formattedYear;
12159
12198
  break;
12160
12199
  case 5: // dd-mm-yy
12161
- val =
12162
- ('0' + t.getDate()).substr(-2) +
12163
- '-' +
12164
- ('0' + (t.getMonth() + 1)).substr(-2) +
12165
- '-' +
12166
- ('0' + t.getYear()).substr(-2);
12200
+ val = s.formattedDate + '-' + s.formattedMonth + '-' + s.formattedYear;
12167
12201
  break;
12168
12202
  case 6: // dd mon yy
12169
- val =
12170
- ('0' + t.getDate()).substr(-2) +
12171
- ' ' +
12172
- t.toString().substr(4, 3).toLowerCase() +
12173
- ' ' +
12174
- ('0' + t.getYear()).substr(-2);
12203
+ val = s.formattedDate + ' ' + s.day.toLowerCase() + ' ' + s.formattedYear;
12175
12204
  break;
12176
12205
  case 7: // Mon dd,yy
12177
- val =
12178
- t.toString().substr(4, 3) +
12179
- ' ' +
12180
- ('0' + t.getDate()).substr(-2) +
12181
- ',' +
12182
- ('0' + t.getYear()).substr(-2);
12206
+ val = s.day + ' ' + s.formattedDate + ',' + s.formattedYear;
12183
12207
  break;
12184
12208
  case 8: // hh:mm:ss
12185
12209
  case 108: // hh:mm:ss
12186
- val =
12187
- ('0' + t.getHours()).substr(-2) +
12188
- ':' +
12189
- ('0' + t.getMinutes()).substr(-2) +
12190
- ':' +
12191
- ('0' + t.getSeconds()).substr(-2);
12210
+ val = s.formattedHour + ':' + s.formattedMinutes + ':' + s.formattedSeconds;
12192
12211
  break;
12193
12212
  case 10: // mm-dd-yy
12194
- val =
12195
- ('0' + (t.getMonth() + 1)).substr(-2) +
12196
- '-' +
12197
- ('0' + t.getDate()).substr(-2) +
12198
- '-' +
12199
- ('0' + t.getYear()).substr(-2);
12213
+ val = s.formattedMonth + '-' + s.formattedDate + '-' + s.formattedYear;
12200
12214
  break;
12201
12215
  case 11: // yy/mm/dd
12202
- val =
12203
- ('0' + t.getYear()).substr(-2) +
12204
- '/' +
12205
- ('0' + (t.getMonth() + 1)).substr(-2) +
12206
- '/' +
12207
- ('0' + t.getDate()).substr(-2);
12216
+ val = s.formattedYear + '/' + s.formattedMonth + '/' + s.formattedDate;
12208
12217
  break;
12209
12218
  case 12: // yymmdd
12210
- val =
12211
- ('0' + t.getYear()).substr(-2) +
12212
- ('0' + (t.getMonth() + 1)).substr(-2) +
12213
- ('0' + t.getDate()).substr(-2);
12219
+ val = s.formattedYear + s.formattedMonth + s.formattedDate;
12214
12220
  break;
12215
12221
  case 101: // mm/dd/yyyy
12216
- val =
12217
- ('0' + (t.getMonth() + 1)).substr(-2) +
12218
- '/' +
12219
- ('0' + t.getDate()).substr(-2) +
12220
- '/' +
12221
- t.getFullYear();
12222
+ val = s.formattedMonth + '/' + s.formattedDate + '/' + s.fullYear;
12222
12223
  break;
12223
12224
  case 102: // yyyy.mm.dd
12224
- val =
12225
- t.getFullYear() +
12226
- '.' +
12227
- ('0' + (t.getMonth() + 1)).substr(-2) +
12228
- '.' +
12229
- ('0' + t.getDate()).substr(-2);
12225
+ val = s.fullYear + '.' + s.formattedMonth + '.' + s.formattedDate;
12230
12226
  break;
12231
12227
  case 103: // dd/mm/yyyy
12232
- val =
12233
- ('0' + t.getDate()).substr(-2) +
12234
- '/' +
12235
- ('0' + (t.getMonth() + 1)).substr(-2) +
12236
- '/' +
12237
- t.getFullYear();
12228
+ val = s.formattedDate + '/' + s.formattedMonth + '/' + s.fullYear;
12238
12229
  break;
12239
12230
  case 104: // dd.mm.yyyy
12240
- val =
12241
- ('0' + t.getDate()).substr(-2) +
12242
- '.' +
12243
- ('0' + (t.getMonth() + 1)).substr(-2) +
12244
- '.' +
12245
- t.getFullYear();
12231
+ val = s.formattedDate + '.' + s.formattedMonth + '.' + s.fullYear;
12246
12232
  break;
12247
12233
  case 105: // dd-mm-yyyy
12248
- val =
12249
- ('0' + t.getDate()).substr(-2) +
12250
- '-' +
12251
- ('0' + (t.getMonth() + 1)).substr(-2) +
12252
- '-' +
12253
- t.getFullYear();
12234
+ val = s.formattedDate + '-' + s.formattedMonth + '-' + s.fullYear;
12254
12235
  break;
12255
12236
  case 106: // dd mon yyyy
12256
- val =
12257
- ('0' + t.getDate()).substr(-2) +
12258
- ' ' +
12259
- t.toString().substr(4, 3).toLowerCase() +
12260
- ' ' +
12261
- t.getFullYear();
12237
+ val = s.formattedDate + ' ' + s.day.toLowerCase() + ' ' + s.fullYear;
12262
12238
  break;
12263
12239
  case 107: // Mon dd,yyyy
12264
- val =
12265
- t.toString().substr(4, 3) + ' ' + ('0' + t.getDate()).substr(-2) + ',' + t.getFullYear();
12240
+ val = s.day + ' ' + s.formattedDate + ',' + s.fullYear;
12266
12241
  break;
12267
12242
  case 110: // mm-dd-yyyy
12268
- val =
12269
- ('0' + (t.getMonth() + 1)).substr(-2) +
12270
- '-' +
12271
- ('0' + t.getDate()).substr(-2) +
12272
- '-' +
12273
- t.getFullYear();
12243
+ val = s.formattedMonth + '-' + s.formattedDate + '-' + s.fullYear;
12274
12244
  break;
12275
12245
  case 111: // yyyy/mm/dd
12276
- val =
12277
- t.getFullYear() +
12278
- '/' +
12279
- ('0' + (t.getMonth() + 1)).substr(-2) +
12280
- '/' +
12281
- ('0' + t.getDate()).substr(-2);
12246
+ val = s.fullYear + '/' + s.formattedMonth + '/' + s.formattedDate;
12282
12247
  break;
12283
12248
 
12284
12249
  case 112: // yyyymmdd
12285
- val =
12286
- t.getFullYear() + ('0' + (t.getMonth() + 1)).substr(-2) + ('0' + t.getDate()).substr(-2);
12250
+ val = s.fullYear + s.formattedMonth + s.formattedDate;
12287
12251
  break;
12288
12252
  default:
12289
12253
  throw new Error('The CONVERT style ' + args.style + ' is not realized yet.');
12290
12254
  }
12291
12255
  }
12292
12256
 
12293
- var udbtypeid = args.dbtypeid.toUpperCase();
12294
-
12295
12257
  if (args.dbtypeid == 'Date') {
12296
- return newDate(val);
12258
+ return t;
12297
12259
  } else if (udbtypeid == 'DATE') {
12298
- var d = newDate(val);
12299
- var s =
12300
- d.getFullYear() +
12301
- '.' +
12302
- ('0' + (d.getMonth() + 1)).substr(-2) +
12303
- '.' +
12304
- ('0' + d.getDate()).substr(-2);
12305
- return s;
12260
+ return s.formattedYear + '.' + s.formattedMonth + '.' + s.formattedDate;
12306
12261
  } else if (udbtypeid == 'DATETIME' || udbtypeid == 'DATETIME2') {
12307
- var d = newDate(val);
12308
- var s =
12309
- d.getFullYear() +
12310
- '.' +
12311
- ('0' + (d.getMonth() + 1)).substr(-2) +
12312
- '.' +
12313
- ('0' + d.getDate()).substr(-2);
12314
- s +=
12315
- ' ' +
12316
- ('0' + d.getHours()).substr(-2) +
12317
- ':' +
12318
- ('0' + d.getMinutes()).substr(-2) +
12319
- ':' +
12320
- ('0' + d.getSeconds()).substr(-2);
12321
- s += '.' + ('00' + d.getMilliseconds()).substr(-3);
12322
- return s;
12262
+ var f = s.fullYear + '.' + s.formattedMonth + '.' + s.formattedDate;
12263
+ f += ' ' + s.formattedHour + ':' + s.formattedMinutes + ':' + s.formattedSeconds;
12264
+ f += '.' + s.formattedMilliseconds;
12265
+ return f;
12323
12266
  } else if (['MONEY'].indexOf(udbtypeid) > -1) {
12324
12267
  var m = +val;
12325
12268
  return (m | 0) + ((m * 100) % 100) / 100;