Skip to content

Commit ac97c44

Browse files
committed
feat(schema-compiler): Upgrade babel and support objectRestSpread for schema generation
1 parent 736b907 commit ac97c44

File tree

6 files changed

+789
-178
lines changed

6 files changed

+789
-178
lines changed

packages/cubejs-schema-compiler/compiler/CubePropContextTranspiler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const t = require('babel-types');
1+
const t = require('@babel/types');
22
const R = require('ramda');
33

44
class CubePropContextTranspiler {

packages/cubejs-schema-compiler/compiler/DataSchemaCompiler.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ const vm = require('vm');
22
const syntaxCheck = require('syntax-error');
33
const CompileError = require('./CompileError');
44
const UserError = require('./UserError');
5-
const babylon = require("babylon");
6-
const babelGenerator = require("babel-generator").default;
7-
const babelTraverse = require("babel-traverse").default;
5+
const { parse } = require("@babel/parser");
6+
const babelGenerator = require("@babel/generator").default;
7+
const babelTraverse = require("@babel/traverse").default;
88
const fs = require('fs');
99
const path = require('path');
1010

@@ -105,8 +105,14 @@ class DataSchemaCompiler {
105105

106106
transpileFile(file, errorsReport) {
107107
try {
108-
babelTraverse.clearCache();
109-
const ast = babylon.parse(file.content, { sourceFilename: file.fileName, sourceType: 'module' });
108+
const ast = parse(
109+
file.content,
110+
{
111+
sourceFilename: file.fileName,
112+
sourceType: 'module',
113+
plugins: ['objectRestSpread']
114+
},
115+
);
110116
this.transpilers.forEach((t) => babelTraverse(ast, t.traverseObject()));
111117
const content = babelGenerator(ast, {}, file.content).code;
112118
return Object.assign({}, file, { content });

packages/cubejs-schema-compiler/compiler/ImportExportTranspiler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const t = require('babel-types');
1+
const t = require('@babel/types');
22
const R = require('ramda');
33

44
class ImportExportTranspiler {

packages/cubejs-schema-compiler/package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
},
1717
"dependencies": {
1818
"@hapi/joi": "^14.3.1",
19-
"babel-generator": "^6.25.0",
20-
"babel-traverse": "^6.25.0",
21-
"babel-types": "^6.25.0",
22-
"babylon": "^6.17.4",
19+
"@babel/generator": "^7.4.0",
20+
"@babel/parser": "^7.4.2",
21+
"@babel/preset-env": "^7.3.4",
22+
"@babel/standalone": "^7.3.4",
23+
"@babel/traverse": "^7.4.0",
24+
"@babel/types": "^7.4.0",
2325
"humps": "^2.0.1",
2426
"inflection": "^1.12.0",
2527
"moment-range": "^4.0.1",

packages/cubejs-schema-compiler/test/SQLGenerationTest.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ describe('SQL Generation', function test() {
9999
averageCheckins: {
100100
type: 'avg',
101101
sql: \`\${doubledCheckings}\`
102-
}
102+
},
103+
...(['foo', 'bar'].map(m => ({ [m]: { type: 'count' } })).reduce((a, b) => ({ ...a, ...b })))
103104
},
104105
105106
dimensions: {
@@ -1441,4 +1442,18 @@ describe('SQL Generation', function test() {
14411442

14421443
query.dataSource.should.be.deepEqual('oracle');
14431444
}));
1445+
1446+
it(
1447+
'objectRestSpread generator',
1448+
() => runQueryTest({
1449+
measures: ['visitors.foo'],
1450+
dimensions: [],
1451+
timeDimensions: [],
1452+
timezone: 'America/Los_Angeles',
1453+
filters: [],
1454+
order: []
1455+
}, [
1456+
{ "visitors__foo": '6' }
1457+
])
1458+
);
14441459
});

0 commit comments

Comments
 (0)