alasql 0.0.50 → 0.0.52
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/.bower.json +44 -3
- package/CHANGELOG.md +9 -0
- package/README.md +13 -4
- package/RELEASES.md +4 -2
- package/alasql.js +772 -598
- package/console/alasql.js +8 -8
- package/console/alasql.min.js +9 -9
- package/dist/alasql-worker.js +1 -1
- package/dist/alasql.js +772 -598
- package/dist/alasql.js.map +1 -1
- package/dist/alasql.min.js +9 -9
- package/examples/country/city.js +16 -0
- package/examples/nodesample.js +16 -0
- package/examples/other/test.js +20 -0
- package/examples/param.js +4 -0
- package/examples/promise.js +10 -0
- package/examples/simple/ex102.js +10 -0
- package/examples/simple/jquery.js +6 -0
- package/examples/sqlite/test.js +5 -0
- package/gulpfile.js +386 -0
- package/package.json +1 -1
- package/src/05copyright.js +1 -1
- package/src/10start.js +1 -1
- package/src/15utility.js +3 -3
- package/src/17alasql.js +6 -0
- package/src/38query.js +56 -9
- package/src/39dojoin.js +4 -1
- package/src/40select.js +55 -17
- package/src/420from.js +17 -4
- package/src/421join.js +14 -4
- package/src/423groupby.js +5 -3
- package/src/424select.js +36 -5
- package/src/55functions.js +12 -0
- package/src/70insert.js +1 -1
- package/src/72delete.js +206 -0
- package/src/84from.js +1 -0
- package/src/alasqlparser.jison +27 -7
- package/src/alasqlparser.js +560 -549
- package/test/callback/cb1.js +59 -0
- package/test/callback/cb2.js +45 -0
- package/test/future/test119.js +77 -0
- package/test/future/test123.js +91 -0
- package/test/future/test131.js +30 -0
- package/test/future/test132.js +69 -0
- package/test/future/test134.js +51 -0
- package/test/future/test135.js +28 -0
- package/test/future/test136.js +23 -0
- package/test/future/test147.js +27 -0
- package/test/graph/CREATE CLASS G1 +39 -0
- package/test/graph/README.md +3 -0
- package/test/graph/SEARCH.md +110 -0
- package/test/graph/idea.txt +22 -0
- package/test/graph/ides 150428.txt +24 -0
- package/test/graph/index.html +68 -0
- package/test/graph/miserables.json +337 -0
- package/test/index.html +10 -1
- package/test/minisql/minisql.js +377 -0
- package/test/test018.js +0 -3
- package/test/test132.js +18 -1
- package/test/test193.js +1 -1
- package/test/test240.js +132 -0
- package/test/test245.js +100 -0
- package/test/test247.js +84 -0
- package/test/test266.js +117 -0
- package/test/test267.js +79 -0
- package/test/test268.js +92 -0
- package/test/test269.js +123 -0
- package/test/test270.js +299 -0
- package/test/test271.js +22 -0
- package/test/test272.js +66 -0
- package/test/test273.js +69 -0
- package/test/test274.js +31 -0
package/gulpfile.js
CHANGED
|
@@ -1,3 +1,388 @@
|
|
|
1
|
+
<<<<<<< HEAD
|
|
2
|
+
//
|
|
3
|
+
// gulpfile.js
|
|
4
|
+
// Gulp for Alasql
|
|
5
|
+
// Дата: 06.08.2014
|
|
6
|
+
// (c) 2014, Andrey Gershun
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
var gulp = require('gulp');
|
|
10
|
+
module.exports = gulp;
|
|
11
|
+
//var connect = require('gulp-connect');
|
|
12
|
+
//var livereload = require('gulp-livereload');
|
|
13
|
+
//var changed = require('gulp-changed');
|
|
14
|
+
//var jison = require('gulp-jison');
|
|
15
|
+
var concat = require('gulp-concat-sourcemap');
|
|
16
|
+
//var uglify = require('gulp-uglify');
|
|
17
|
+
//var jisonLex = require('gulp-jison-lex');
|
|
18
|
+
var shell = require('gulp-shell');
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
gulp.task('js-merge-worker', function () {
|
|
22
|
+
return gulp.src([
|
|
23
|
+
'./src/05copyright.js',
|
|
24
|
+
'./src/99worker-start.js',
|
|
25
|
+
'./src/99worker.js',
|
|
26
|
+
'./src/99worker-finish.js',
|
|
27
|
+
])
|
|
28
|
+
// .pipe(changed('./dist/'))
|
|
29
|
+
.pipe(concat('alasql-worker.js'))
|
|
30
|
+
// .pipe(uglify())
|
|
31
|
+
.pipe(gulp.dest('./dist'))
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
gulp.task('js-merge', function () {
|
|
35
|
+
return gulp.src([
|
|
36
|
+
'./src/05copyright.js',
|
|
37
|
+
'./src/10start.js',
|
|
38
|
+
'./src/alasqlparser.js',
|
|
39
|
+
'./src/12pretty.js',
|
|
40
|
+
'./src/15utility.js',
|
|
41
|
+
'./src/16comments.js',
|
|
42
|
+
'./src/17alasql.js',
|
|
43
|
+
'./src/20database.js',
|
|
44
|
+
'./src/21transaction.js',
|
|
45
|
+
// './src/22store.js',
|
|
46
|
+
'./src/23table.js',
|
|
47
|
+
'./src/24view.js',
|
|
48
|
+
'./src/25queryclass.js',
|
|
49
|
+
'./src/28yy.js',
|
|
50
|
+
'./src/30statements.js',
|
|
51
|
+
'./src/38query.js',
|
|
52
|
+
'./src/39dojoin.js',
|
|
53
|
+
'./src/40select.js',
|
|
54
|
+
'./src/41exists.js',
|
|
55
|
+
'./src/420from.js',
|
|
56
|
+
'./src/421join.js',
|
|
57
|
+
'./src/422where.js',
|
|
58
|
+
'./src/423groupby.js',
|
|
59
|
+
'./src/424select.js',
|
|
60
|
+
'./src/425having.js',
|
|
61
|
+
'./src/426orderby.js',
|
|
62
|
+
'./src/43rollup.js',
|
|
63
|
+
'./src/44defcols.js',
|
|
64
|
+
'./src/45union.js',
|
|
65
|
+
'./src/46apply.js',
|
|
66
|
+
'./src/47over.js',
|
|
67
|
+
'./src/50expression.js',
|
|
68
|
+
'./src/52linq.js',
|
|
69
|
+
'./src/55functions.js',
|
|
70
|
+
'./src/56datetime.js',
|
|
71
|
+
'./src/57case.js',
|
|
72
|
+
'./src/58json.js',
|
|
73
|
+
'./src/59convert.js',
|
|
74
|
+
'./src/60createtable.js',
|
|
75
|
+
'./src/61date.js',
|
|
76
|
+
'./src/62droptable.js',
|
|
77
|
+
'./src/64altertable.js',
|
|
78
|
+
'./src/65createindex.js',
|
|
79
|
+
'./src/66dropindex.js',
|
|
80
|
+
'./src/67withselect.js',
|
|
81
|
+
'./src/68if.js',
|
|
82
|
+
'./src/69while.js',
|
|
83
|
+
'./src/70insert.js',
|
|
84
|
+
'./src/72delete.js',
|
|
85
|
+
'./src/74update.js',
|
|
86
|
+
'./src/74update.js',
|
|
87
|
+
'./src/75merge.js',
|
|
88
|
+
'./src/76usedatabase.js',
|
|
89
|
+
'./src/77declare.js',
|
|
90
|
+
'./src/78show.js',
|
|
91
|
+
'./src/79set.js',
|
|
92
|
+
'./src/80console.js',
|
|
93
|
+
'./src/81commit.js',
|
|
94
|
+
'./src/83into.js',
|
|
95
|
+
'./src/84from.js',
|
|
96
|
+
'./src/85help.js',
|
|
97
|
+
'./src/86print.js',
|
|
98
|
+
'./src/87source.js',
|
|
99
|
+
'./src/88require.js',
|
|
100
|
+
'./src/89assert.js',
|
|
101
|
+
'./src/90websql.js',
|
|
102
|
+
'./src/91indexeddb.js',
|
|
103
|
+
'./src/92localstorage.js',
|
|
104
|
+
'./src/93sqlite.js',
|
|
105
|
+
'./src/94filestorage.js',
|
|
106
|
+
'./src/97saveas.js',
|
|
107
|
+
'./src/FileSaver.js',
|
|
108
|
+
'./src/98finish.js',
|
|
109
|
+
'./src/99worker.js'
|
|
110
|
+
])
|
|
111
|
+
// .pipe(changed('./dist/'))
|
|
112
|
+
.pipe(concat('alasql.js'))
|
|
113
|
+
// .pipe(uglify())
|
|
114
|
+
.pipe(gulp.dest('./dist'))
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
gulp.task('jison-compile', function () {
|
|
119
|
+
return gulp.src('./src/*.jison', {read: false})
|
|
120
|
+
.pipe(shell([
|
|
121
|
+
'jison ./src/alasqlparser.jison -o ./src/alasqlparser.js',
|
|
122
|
+
]));
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
gulp.task('uglify', function () {
|
|
127
|
+
return gulp.src('./alasql.js', {read: false})
|
|
128
|
+
.pipe(shell([
|
|
129
|
+
'uglifyjs dist/alasql.js -o dist/alasql.min.js',
|
|
130
|
+
'uglifyjs dist/alasql-worker.js -o dist/alasql-worker.min.js',
|
|
131
|
+
]));
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
gulp.task('copy-dist', function(){
|
|
135
|
+
gulp.src(['./dist/alasql.js','./alasql.js.map'])
|
|
136
|
+
.pipe(gulp.dest('./'));
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
gulp.task('copy-dist-org', function(){
|
|
140
|
+
gulp.src(['./dist/alasql.min.js','./dist/alasql-worker.min.js'])
|
|
141
|
+
.pipe(gulp.dest('./console/'));
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Additional task to update alasql.org/console directory
|
|
145
|
+
gulp.task('copy-console-org', function(){
|
|
146
|
+
gulp.src(['./console/*'])
|
|
147
|
+
.pipe(gulp.dest('../alasql-org/console/'));
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
// , {
|
|
151
|
+
// templateData: {
|
|
152
|
+
// f: function (s) {
|
|
153
|
+
// return s.replace(/$/, '.bak')
|
|
154
|
+
// }
|
|
155
|
+
// }
|
|
156
|
+
// }))
|
|
157
|
+
|
|
158
|
+
// gulp.task('jison-compile', function () {
|
|
159
|
+
// return gulp.src('./src/*.jison')
|
|
160
|
+
// .pipe(changed('./dist/'))
|
|
161
|
+
// .pipe(jison({ moduleType: 'commonjs' }))
|
|
162
|
+
// .pipe(gulp.dest('./src/'))
|
|
163
|
+
// // .pipe(livereload());
|
|
164
|
+
// });
|
|
165
|
+
|
|
166
|
+
// gulp.task('jison-lex-compile', function () {
|
|
167
|
+
// return gulp.src('./src/*.jisonlex')
|
|
168
|
+
// // .pipe(changed('./dist/'))
|
|
169
|
+
// .pipe(jisonLex())
|
|
170
|
+
// .pipe(gulp.dest('./src2/'))
|
|
171
|
+
// // .pipe(livereload());
|
|
172
|
+
// });
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
// Главная задача
|
|
176
|
+
gulp.task('default', ['js-merge' /*, 'jison-compile', 'jison-lex-compile' */], function(){
|
|
177
|
+
gulp.watch('./src/*.js',function(){ gulp.run('js-merge'); });
|
|
178
|
+
gulp.watch('./src/99worker*.js',function(){ gulp.run('js-merge-worker'); });
|
|
179
|
+
gulp.watch('./src/*.jison',function(){ gulp.run('jison-compile'); });
|
|
180
|
+
gulp.watch('./dist/alasql.js',function(){ gulp.run('uglify'); });
|
|
181
|
+
gulp.watch('./dist/alasql.min.js',function(){
|
|
182
|
+
gulp.run('copy-dist');
|
|
183
|
+
gulp.run('copy-dist-org');
|
|
184
|
+
});
|
|
185
|
+
gulp.watch('./dist/alasql-worker.js',function(){
|
|
186
|
+
gulp.run('copy-dist');
|
|
187
|
+
gulp.run('copy-dist-org');
|
|
188
|
+
});
|
|
189
|
+
gulp.watch('./console/*',function(){ gulp.run('copy-console-org'); });
|
|
190
|
+
// gulp.watch('./src/*.jison',function(){ gulp.run('jison-compile'); gulp.run('js-merge');});
|
|
191
|
+
// gulp.watch('./src/*.jisonlex',function(){ gulp.run('jison-lex-compile'); gulp.run('js-merge');});
|
|
192
|
+
});
|
|
193
|
+
||||||| merged common ancestors
|
|
194
|
+
//
|
|
195
|
+
// gulpfile.js
|
|
196
|
+
// Gulp for Alasql
|
|
197
|
+
// Дата: 06.08.2014
|
|
198
|
+
// (c) 2014, Andrey Gershun
|
|
199
|
+
//
|
|
200
|
+
|
|
201
|
+
var gulp = require('gulp');
|
|
202
|
+
module.exports = gulp;
|
|
203
|
+
//var connect = require('gulp-connect');
|
|
204
|
+
//var livereload = require('gulp-livereload');
|
|
205
|
+
//var changed = require('gulp-changed');
|
|
206
|
+
//var jison = require('gulp-jison');
|
|
207
|
+
var concat = require('gulp-concat-sourcemap');
|
|
208
|
+
//var uglify = require('gulp-uglify');
|
|
209
|
+
//var jisonLex = require('gulp-jison-lex');
|
|
210
|
+
var shell = require('gulp-shell');
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
gulp.task('js-merge-worker', function () {
|
|
214
|
+
return gulp.src([
|
|
215
|
+
'./src/05copyright.js',
|
|
216
|
+
'./src/99worker-start.js',
|
|
217
|
+
'./src/99worker.js',
|
|
218
|
+
'./src/99worker-finish.js',
|
|
219
|
+
])
|
|
220
|
+
// .pipe(changed('./dist/'))
|
|
221
|
+
.pipe(concat('alasql-worker.js'))
|
|
222
|
+
// .pipe(uglify())
|
|
223
|
+
.pipe(gulp.dest('./dist'))
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
gulp.task('js-merge', function () {
|
|
227
|
+
return gulp.src([
|
|
228
|
+
'./src/05copyright.js',
|
|
229
|
+
'./src/10start.js',
|
|
230
|
+
'./src/alasqlparser.js',
|
|
231
|
+
'./src/12pretty.js',
|
|
232
|
+
'./src/15utility.js',
|
|
233
|
+
'./src/16comments.js',
|
|
234
|
+
'./src/17alasql.js',
|
|
235
|
+
'./src/20database.js',
|
|
236
|
+
'./src/21transaction.js',
|
|
237
|
+
// './src/22store.js',
|
|
238
|
+
'./src/23table.js',
|
|
239
|
+
'./src/24view.js',
|
|
240
|
+
'./src/25queryclass.js',
|
|
241
|
+
'./src/28yy.js',
|
|
242
|
+
'./src/30statements.js',
|
|
243
|
+
'./src/38query.js',
|
|
244
|
+
'./src/39dojoin.js',
|
|
245
|
+
'./src/40select.js',
|
|
246
|
+
'./src/41exists.js',
|
|
247
|
+
'./src/420from.js',
|
|
248
|
+
'./src/421join.js',
|
|
249
|
+
'./src/422where.js',
|
|
250
|
+
'./src/423groupby.js',
|
|
251
|
+
'./src/424select.js',
|
|
252
|
+
'./src/425having.js',
|
|
253
|
+
'./src/426orderby.js',
|
|
254
|
+
'./src/43rollup.js',
|
|
255
|
+
'./src/44defcols.js',
|
|
256
|
+
'./src/45union.js',
|
|
257
|
+
'./src/46apply.js',
|
|
258
|
+
'./src/47over.js',
|
|
259
|
+
'./src/50expression.js',
|
|
260
|
+
'./src/52linq.js',
|
|
261
|
+
'./src/55functions.js',
|
|
262
|
+
'./src/56datetime.js',
|
|
263
|
+
'./src/57case.js',
|
|
264
|
+
'./src/58json.js',
|
|
265
|
+
'./src/59convert.js',
|
|
266
|
+
'./src/60createtable.js',
|
|
267
|
+
'./src/61date.js',
|
|
268
|
+
'./src/62droptable.js',
|
|
269
|
+
'./src/64altertable.js',
|
|
270
|
+
'./src/65createindex.js',
|
|
271
|
+
'./src/66dropindex.js',
|
|
272
|
+
'./src/67withselect.js',
|
|
273
|
+
'./src/68if.js',
|
|
274
|
+
'./src/69while.js',
|
|
275
|
+
'./src/70insert.js',
|
|
276
|
+
'./src/72delete.js',
|
|
277
|
+
'./src/74update.js',
|
|
278
|
+
'./src/74update.js',
|
|
279
|
+
'./src/75merge.js',
|
|
280
|
+
'./src/76usedatabase.js',
|
|
281
|
+
'./src/77declare.js',
|
|
282
|
+
'./src/78show.js',
|
|
283
|
+
'./src/79set.js',
|
|
284
|
+
'./src/80console.js',
|
|
285
|
+
'./src/81commit.js',
|
|
286
|
+
'./src/83into.js',
|
|
287
|
+
'./src/84from.js',
|
|
288
|
+
'./src/85help.js',
|
|
289
|
+
'./src/86print.js',
|
|
290
|
+
'./src/87source.js',
|
|
291
|
+
'./src/88require.js',
|
|
292
|
+
'./src/89assert.js',
|
|
293
|
+
'./src/90websql.js',
|
|
294
|
+
'./src/91indexeddb.js',
|
|
295
|
+
'./src/92localstorage.js',
|
|
296
|
+
'./src/93sqlite.js',
|
|
297
|
+
'./src/94filestorage.js',
|
|
298
|
+
'./src/97saveas.js',
|
|
299
|
+
'./src/FileSaver.js',
|
|
300
|
+
'./src/98finish.js',
|
|
301
|
+
'./src/99worker.js'
|
|
302
|
+
])
|
|
303
|
+
// .pipe(changed('./dist/'))
|
|
304
|
+
.pipe(concat('alasql.js'))
|
|
305
|
+
// .pipe(uglify())
|
|
306
|
+
.pipe(gulp.dest('./dist'))
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
gulp.task('jison-compile', function () {
|
|
311
|
+
return gulp.src('./src/*.jison', {read: false})
|
|
312
|
+
.pipe(shell([
|
|
313
|
+
'jison ./src/alasqlparser.jison -o ./src/alasqlparser.js',
|
|
314
|
+
]));
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
gulp.task('uglify', function () {
|
|
319
|
+
return gulp.src('./alasql.js', {read: false})
|
|
320
|
+
.pipe(shell([
|
|
321
|
+
'uglifyjs dist/alasql.js -o dist/alasql.min.js',
|
|
322
|
+
'uglifyjs dist/alasql-worker.js -o dist/alasql-worker.min.js',
|
|
323
|
+
]));
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
gulp.task('copy-dist', function(){
|
|
327
|
+
gulp.src(['./dist/alasql.js','./alasql.js.map'])
|
|
328
|
+
.pipe(gulp.dest('./'));
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
gulp.task('copy-dist-org', function(){
|
|
332
|
+
gulp.src(['./dist/alasql.min.js','./dist/alasql-worker.min.js'])
|
|
333
|
+
.pipe(gulp.dest('./console/'));
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
// Additional task to update alasql.org/console directory
|
|
337
|
+
gulp.task('copy-console-org', function(){
|
|
338
|
+
gulp.src(['./console/*'])
|
|
339
|
+
.pipe(gulp.dest('../alasql-org/console/'));
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
// , {
|
|
343
|
+
// templateData: {
|
|
344
|
+
// f: function (s) {
|
|
345
|
+
// return s.replace(/$/, '.bak')
|
|
346
|
+
// }
|
|
347
|
+
// }
|
|
348
|
+
// }))
|
|
349
|
+
|
|
350
|
+
// gulp.task('jison-compile', function () {
|
|
351
|
+
// return gulp.src('./src/*.jison')
|
|
352
|
+
// .pipe(changed('./dist/'))
|
|
353
|
+
// .pipe(jison({ moduleType: 'commonjs' }))
|
|
354
|
+
// .pipe(gulp.dest('./src/'))
|
|
355
|
+
// // .pipe(livereload());
|
|
356
|
+
// });
|
|
357
|
+
|
|
358
|
+
// gulp.task('jison-lex-compile', function () {
|
|
359
|
+
// return gulp.src('./src/*.jisonlex')
|
|
360
|
+
// // .pipe(changed('./dist/'))
|
|
361
|
+
// .pipe(jisonLex())
|
|
362
|
+
// .pipe(gulp.dest('./src2/'))
|
|
363
|
+
// // .pipe(livereload());
|
|
364
|
+
// });
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
// Главная задача
|
|
368
|
+
gulp.task('default', ['js-merge' /*, 'jison-compile', 'jison-lex-compile' */], function(){
|
|
369
|
+
gulp.watch('./src/*.js',function(){ gulp.run('js-merge'); });
|
|
370
|
+
gulp.watch('./src/99worker*.js',function(){ gulp.run('js-merge-worker'); });
|
|
371
|
+
gulp.watch('./src/*.jison',function(){ gulp.run('jison-compile'); });
|
|
372
|
+
gulp.watch('./dist/alasql.js',function(){ gulp.run('uglify'); });
|
|
373
|
+
gulp.watch('./dist/alasql.min.js',function(){
|
|
374
|
+
gulp.run('copy-dist');
|
|
375
|
+
gulp.run('copy-dist-org');
|
|
376
|
+
});
|
|
377
|
+
gulp.watch('./dist/alasql-worker.js',function(){
|
|
378
|
+
gulp.run('copy-dist');
|
|
379
|
+
gulp.run('copy-dist-org');
|
|
380
|
+
});
|
|
381
|
+
gulp.watch('./console/*',function(){ gulp.run('copy-console-org'); });
|
|
382
|
+
// gulp.watch('./src/*.jison',function(){ gulp.run('jison-compile'); gulp.run('js-merge');});
|
|
383
|
+
// gulp.watch('./src/*.jisonlex',function(){ gulp.run('jison-lex-compile'); gulp.run('js-merge');});
|
|
384
|
+
});
|
|
385
|
+
=======
|
|
1
386
|
//
|
|
2
387
|
// gulpfile.js
|
|
3
388
|
// Gulp for Alasql
|
|
@@ -191,3 +576,4 @@ gulp.task('default', ['js-merge' /*, 'jison-compile', 'jison-lex-compile' */], f
|
|
|
191
576
|
// gulp.watch('./src/*.jison',function(){ gulp.run('jison-compile'); gulp.run('js-merge');});
|
|
192
577
|
// gulp.watch('./src/*.jisonlex',function(){ gulp.run('jison-lex-compile'); gulp.run('js-merge');});
|
|
193
578
|
});
|
|
579
|
+
>>>>>>> release/0.0.46
|
package/package.json
CHANGED
package/src/05copyright.js
CHANGED
package/src/10start.js
CHANGED
package/src/15utility.js
CHANGED
|
@@ -565,11 +565,11 @@ var cloneDeep = utils.cloneDeep = function cloneDeep(obj) {
|
|
|
565
565
|
if(obj == null || typeof(obj) != 'object')
|
|
566
566
|
return obj;
|
|
567
567
|
|
|
568
|
-
var temp = obj.constructor(); // changed
|
|
568
|
+
var temp = (Object.prototype.hasOwnProperty.call(obj, 'constructor') ? Object : obj.constructor)(); // changed
|
|
569
569
|
|
|
570
570
|
for(var key in obj) {
|
|
571
571
|
if(obj.hasOwnProperty(key)) {
|
|
572
|
-
temp[key] = cloneDeep(obj[key]);
|
|
572
|
+
/* 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]); }
|
|
573
573
|
}
|
|
574
574
|
}
|
|
575
575
|
return temp;
|
|
@@ -649,7 +649,7 @@ var extend = utils.extend = function extend (a,b){
|
|
|
649
649
|
if(typeof a == 'undefined') a = {};
|
|
650
650
|
for(var key in b) {
|
|
651
651
|
if(b.hasOwnProperty(key)) {
|
|
652
|
-
a[key] = b[key]
|
|
652
|
+
/* 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]; }
|
|
653
653
|
}
|
|
654
654
|
}
|
|
655
655
|
return a;
|
package/src/17alasql.js
CHANGED
|
@@ -51,6 +51,12 @@ alasql.options.casesensitive = true; // Table and column names are case sensitiv
|
|
|
51
51
|
alasql.options.logtarget = 'output'; // target for log. Values: 'console', 'output', 'id' of html tag
|
|
52
52
|
alasql.options.logprompt = true; // Print SQL at log
|
|
53
53
|
|
|
54
|
+
// Default modifier
|
|
55
|
+
// values: RECORDSET, VALUE, ROW, COLUMN, MATRIX, TEXTSTRING, INDEX
|
|
56
|
+
alasql.options.modifier = undefined;
|
|
57
|
+
// How many rows to lookup to define columns
|
|
58
|
+
alasql.options.columnlookup = 10;
|
|
59
|
+
|
|
54
60
|
//alasql.options.worker = false;
|
|
55
61
|
// Variables
|
|
56
62
|
alasql.vars = {};
|
package/src/38query.js
CHANGED
|
@@ -212,16 +212,63 @@ function queryfn3(query) {
|
|
|
212
212
|
|
|
213
213
|
// console.log('removeKeys:',query.removeKeys);
|
|
214
214
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
215
|
+
if(typeof query.removeKeys != 'undefined' && query.removeKeys.length > 0) {
|
|
216
|
+
var removeKeys = query.removeKeys;
|
|
217
|
+
|
|
218
|
+
// TODO: Check what artefacts rest from Angular.js
|
|
219
|
+
if(typeof angular != "undefined") removeKeys.push('$$hashKey');
|
|
220
|
+
|
|
221
|
+
// Remove from data
|
|
222
|
+
var jlen = removeKeys.length;
|
|
223
|
+
if(jlen > 0) {
|
|
224
|
+
for(var i=0,ilen=query.data.length;i<ilen;i++) {
|
|
225
|
+
for(var j=0; j<jlen;j++) {
|
|
226
|
+
delete query.data[i][removeKeys[j]];
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
// Remove from columns list
|
|
232
|
+
if(query.columns.length > 0) {
|
|
233
|
+
query.columns = query.columns.filter(function(column){
|
|
234
|
+
var found = false;
|
|
235
|
+
removeKeys.forEach(function(key){
|
|
236
|
+
if(column.columnid == key) found = true;
|
|
237
|
+
});
|
|
238
|
+
return !found;
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if(typeof query.removeLikeKeys != 'undefined' && query.removeLikeKeys.length > 0) {
|
|
245
|
+
|
|
246
|
+
var removeLikeKeys = query.removeLikeKeys;
|
|
247
|
+
|
|
248
|
+
// Remove unused columns
|
|
249
|
+
// SELECT * REMOVE COLUMNS LIKE "%b"
|
|
250
|
+
for(var i=0,ilen=query.data.length;i<ilen;i++) {
|
|
251
|
+
var r = query.data[i];
|
|
252
|
+
for(var k in r) {
|
|
253
|
+
for(var j=0;j<query.removeLikeKeys.length;j++) {
|
|
254
|
+
if(k.match(query.removeLikeKeys[j])) {
|
|
255
|
+
delete r[k];
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
}
|
|
224
260
|
|
|
261
|
+
if(query.columns.length > 0) {
|
|
262
|
+
query.columns = query.columns.filter(function(column){
|
|
263
|
+
var found = false;
|
|
264
|
+
removeLikeKeys.forEach(function(key){
|
|
265
|
+
if(column.columnid.match(key)) found = true;
|
|
266
|
+
});
|
|
267
|
+
return !found;
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
}
|
|
225
272
|
// console.log(query.intoallfns);
|
|
226
273
|
|
|
227
274
|
// if(query.explain) {
|
package/src/39dojoin.js
CHANGED
|
@@ -18,7 +18,7 @@ function doJoin (query, scope, h) {
|
|
|
18
18
|
// console.log("last",res);
|
|
19
19
|
// If there is a GROUP BY then pipe to groupping function
|
|
20
20
|
if(query.groupfn) {
|
|
21
|
-
query.groupfn(scope, query.params,
|
|
21
|
+
query.groupfn(scope, query.params, alasql)
|
|
22
22
|
} else {
|
|
23
23
|
// query.qwerty = 999;
|
|
24
24
|
//console.log(query.qwerty, query.queriesfn && query.queriesfn.length,2);
|
|
@@ -85,6 +85,9 @@ function doJoin (query, scope, h) {
|
|
|
85
85
|
|
|
86
86
|
// Main cycle
|
|
87
87
|
var i = 0;
|
|
88
|
+
if(typeof data == 'undefined') {
|
|
89
|
+
throw new Error('Data source number '+h+' in undefined')
|
|
90
|
+
}
|
|
88
91
|
var ilen=data.length;
|
|
89
92
|
var dataw;
|
|
90
93
|
// console.log(h,opt,source.data,i,source.dontcache);
|
package/src/40select.js
CHANGED
|
@@ -98,6 +98,7 @@ yy.Select.prototype.compile = function(databaseid) {
|
|
|
98
98
|
// Create variable for query
|
|
99
99
|
var query = new Query();
|
|
100
100
|
|
|
101
|
+
// Array with columns to be removed
|
|
101
102
|
query.removeKeys = [];
|
|
102
103
|
|
|
103
104
|
query.explain = this.explain; // Explain
|
|
@@ -128,6 +129,10 @@ yy.Select.prototype.compile = function(databaseid) {
|
|
|
128
129
|
} else {
|
|
129
130
|
query.selectfns = this.compileSelect1(query);
|
|
130
131
|
}
|
|
132
|
+
|
|
133
|
+
// Remove columns clause
|
|
134
|
+
this.compileRemoveColumns(query);
|
|
135
|
+
|
|
131
136
|
// 5. Optimize WHERE and JOINS
|
|
132
137
|
if(this.where) this.compileWhereJoins(query);
|
|
133
138
|
|
|
@@ -288,21 +293,42 @@ yy.Select.prototype.compile = function(databaseid) {
|
|
|
288
293
|
};
|
|
289
294
|
|
|
290
295
|
function modify(query, res) {
|
|
291
|
-
|
|
296
|
+
var modifier = query.modifier || alasql.options.modifier;
|
|
297
|
+
var columns = query.columns;
|
|
298
|
+
if(typeof columns == 'undefined' || columns.length == 0) {
|
|
299
|
+
// Try to create columns
|
|
300
|
+
if(res.length > 0) {
|
|
301
|
+
var allcol = {};
|
|
302
|
+
for(var i=0;i<Math.min(res.length,alasql.options.columnlookup||10);i++) {
|
|
303
|
+
for(var key in res[i]) {
|
|
304
|
+
allcol[key] = true;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
columns = Object.keys(allcol).map(function(columnid){
|
|
309
|
+
return {columnid:columnid};
|
|
310
|
+
});
|
|
311
|
+
} else {
|
|
312
|
+
// Cannot recognize columns
|
|
313
|
+
columns = [];
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// console.log(columns);
|
|
318
|
+
|
|
319
|
+
if(modifier == 'VALUE') {
|
|
292
320
|
// console.log(222,res);
|
|
293
321
|
if(res.length > 0) {
|
|
294
322
|
var key;
|
|
295
|
-
if(
|
|
323
|
+
if(columns && columns.length > 0) key = columns[0].columnid;
|
|
296
324
|
else key = Object.keys(res[0])[0];
|
|
297
325
|
res = res[0][key];
|
|
298
326
|
} else {
|
|
299
327
|
res = undefined;
|
|
300
328
|
}
|
|
301
|
-
} if(
|
|
329
|
+
} if(modifier == 'ROW') {
|
|
302
330
|
if(res.length > 0) {
|
|
303
331
|
var key;
|
|
304
|
-
if(query.columns && query.columns.length > 0) key = query.columns[0].columnid;
|
|
305
|
-
else key = Object.keys(res[0])[0];
|
|
306
332
|
var a = [];
|
|
307
333
|
for(var key in res[0]) {
|
|
308
334
|
a.push(res[0][key]);
|
|
@@ -311,25 +337,37 @@ function modify(query, res) {
|
|
|
311
337
|
} else {
|
|
312
338
|
res = undefined;
|
|
313
339
|
}
|
|
314
|
-
} if(
|
|
340
|
+
} if(modifier == 'COLUMN') {
|
|
315
341
|
var ar = [];
|
|
316
342
|
if(res.length > 0) {
|
|
317
343
|
var key;
|
|
318
|
-
if(
|
|
344
|
+
if(columns && columns.length > 0) key = columns[0].columnid;
|
|
319
345
|
else key = Object.keys(res[0])[0];
|
|
320
346
|
for(var i=0, ilen=res.length; i<ilen; i++){
|
|
321
347
|
ar.push(res[i][key]);
|
|
322
348
|
}
|
|
323
349
|
};
|
|
324
350
|
res = ar;
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
351
|
+
|
|
352
|
+
} if(modifier == 'MATRIX') {
|
|
353
|
+
// Returns square matrix of rows
|
|
354
|
+
var ar = [];
|
|
355
|
+
for(var i=0;i<res.length;i++) {
|
|
356
|
+
var a = [];
|
|
357
|
+
var r = res[i];
|
|
358
|
+
for(var j=0;j<columns.length;j++) {
|
|
359
|
+
a.push(r[columns[j].columnid]);
|
|
360
|
+
}
|
|
361
|
+
ar.push(a);
|
|
362
|
+
}
|
|
363
|
+
res = ar;
|
|
364
|
+
|
|
365
|
+
} if(modifier == 'INDEX') {
|
|
328
366
|
var ar = {};
|
|
329
367
|
var key,val;
|
|
330
|
-
if(
|
|
331
|
-
key =
|
|
332
|
-
val =
|
|
368
|
+
if(columns && columns.length > 0) {
|
|
369
|
+
key = columns[0].columnid;
|
|
370
|
+
val = columns[1].columnid;
|
|
333
371
|
} else {
|
|
334
372
|
var okeys = Object.keys(res[0]);
|
|
335
373
|
key = okeys[0];
|
|
@@ -340,12 +378,12 @@ function modify(query, res) {
|
|
|
340
378
|
}
|
|
341
379
|
res = ar;
|
|
342
380
|
// res = arrayOfArrays(res);
|
|
343
|
-
} if(
|
|
344
|
-
res = new alasql.Recordset({data:res, columns:
|
|
381
|
+
} if(modifier == 'RECORDSET') {
|
|
382
|
+
res = new alasql.Recordset({data:res, columns:columns});
|
|
345
383
|
// res = arrayOfArrays(res);
|
|
346
|
-
} if(
|
|
384
|
+
} if(modifier == 'TEXTSTRING') {
|
|
347
385
|
var key;
|
|
348
|
-
if(
|
|
386
|
+
if(columns && columns.length > 0) key = columns[0].columnid;
|
|
349
387
|
else key = Object.keys(res[0])[0];
|
|
350
388
|
var s = '';
|
|
351
389
|
for(var i=0, ilen=res.length; i<ilen; i++){
|