cubejs-cli 0.29.1 → 0.29.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/CHANGELOG.md CHANGED
@@ -3,6 +3,41 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.29.5](https://github.com/cube-js/cube.js/compare/v0.29.4...v0.29.5) (2021-12-17)
7
+
8
+
9
+ ### Features
10
+
11
+ * **cubejs-cli:** generate TypeScript types from API for use by `@cubejs-client/core` ([b97d9ca](https://github.com/cube-js/cube.js/commit/b97d9ca7f1d611c73fdd4ef3ff8ebfc77bc8aff7))
12
+
13
+
14
+
15
+
16
+
17
+ ## [0.29.4](https://github.com/cube-js/cube.js/compare/v0.29.3...v0.29.4) (2021-12-16)
18
+
19
+ **Note:** Version bump only for package cubejs-cli
20
+
21
+
22
+
23
+
24
+
25
+ ## [0.29.3](https://github.com/cube-js/cube.js/compare/v0.29.2...v0.29.3) (2021-12-15)
26
+
27
+ **Note:** Version bump only for package cubejs-cli
28
+
29
+
30
+
31
+
32
+
33
+ ## [0.29.2](https://github.com/cube-js/cube.js/compare/v0.29.1...v0.29.2) (2021-12-15)
34
+
35
+ **Note:** Version bump only for package cubejs-cli
36
+
37
+
38
+
39
+
40
+
6
41
  ## [0.29.1](https://github.com/cube-js/cube.js/compare/v0.29.0...v0.29.1) (2021-12-15)
7
42
 
8
43
  **Note:** Version bump only for package cubejs-cli
package/dist/src/cli.js CHANGED
@@ -9,6 +9,7 @@ const deploy_1 = require("./command/deploy");
9
9
  const create_1 = require("./command/create");
10
10
  const generate_1 = require("./command/generate");
11
11
  const token_1 = require("./command/token");
12
+ const typegen_1 = require("./command/typegen");
12
13
  const auth_1 = require("./command/auth");
13
14
  const utils_1 = require("./utils");
14
15
  const packageJson = utils_1.loadCliManifest();
@@ -24,6 +25,7 @@ commander_1.default
24
25
  (async () => {
25
26
  await auth_1.configureAuthCommand(commander_1.default);
26
27
  await token_1.configureTokenCommand(commander_1.default);
28
+ await typegen_1.configureTypegenCommand(commander_1.default);
27
29
  await create_1.configureCreateCommand(commander_1.default);
28
30
  await generate_1.configureGenerateCommand(commander_1.default);
29
31
  await deploy_1.configureDeployCommand(commander_1.default);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;;;AAAA,0DAAgC;AAEhC,6CAA0D;AAC1D,6CAA0D;AAC1D,6CAA0D;AAC1D,iDAA8D;AAC9D,2CAAwD;AACxD,yCAAsD;AACtD,mCAA0C;AAE1C,MAAM,WAAW,GAAG,uBAAe,EAAE,CAAC;AAEtC,mBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,mBAAO;KACJ,KAAK,CAAC,qBAAqB,CAAC;KAC5B,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,CAAC,KAAK,IAAI,EAAE;IACV,MAAM,2BAAoB,CAAC,mBAAO,CAAC,CAAC;IACpC,MAAM,6BAAqB,CAAC,mBAAO,CAAC,CAAC;IACrC,MAAM,+BAAsB,CAAC,mBAAO,CAAC,CAAC;IACtC,MAAM,mCAAwB,CAAC,mBAAO,CAAC,CAAC;IACxC,MAAM,+BAAsB,CAAC,mBAAO,CAAC,CAAC;IACtC,MAAM,+BAAsB,CAAC,mBAAO,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QACjC,mBAAO,CAAC,IAAI,EAAE,CAAC;KAChB;IAED,mBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;;;AAAA,0DAAgC;AAEhC,6CAA0D;AAC1D,6CAA0D;AAC1D,6CAA0D;AAC1D,iDAA8D;AAC9D,2CAAwD;AACxD,+CAA4D;AAC5D,yCAAsD;AACtD,mCAA0C;AAE1C,MAAM,WAAW,GAAG,uBAAe,EAAE,CAAC;AAEtC,mBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,mBAAO;KACJ,KAAK,CAAC,qBAAqB,CAAC;KAC5B,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,CAAC,KAAK,IAAI,EAAE;IACV,MAAM,2BAAoB,CAAC,mBAAO,CAAC,CAAC;IACpC,MAAM,6BAAqB,CAAC,mBAAO,CAAC,CAAC;IACrC,MAAM,iCAAuB,CAAC,mBAAO,CAAC,CAAC;IACvC,MAAM,+BAAsB,CAAC,mBAAO,CAAC,CAAC;IACtC,MAAM,mCAAwB,CAAC,mBAAO,CAAC,CAAC;IACxC,MAAM,+BAAsB,CAAC,mBAAO,CAAC,CAAC;IACtC,MAAM,+BAAsB,CAAC,mBAAO,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QACjC,mBAAO,CAAC,IAAI,EAAE,CAAC;KAChB;IAED,mBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CommanderStatic } from 'commander';
2
+ export declare function configureTypegenCommand(program: CommanderStatic): void;
3
+ //# sourceMappingURL=typegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typegen.d.ts","sourceRoot":"","sources":["../../../src/command/typegen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAgGjD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAetE"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.configureTypegenCommand = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const request_promise_1 = __importDefault(require("request-promise"));
9
+ const utils_1 = require("../utils");
10
+ const wrapInQuotes = (values) => {
11
+ if (values.length === 0) {
12
+ return '\'\'';
13
+ }
14
+ return values
15
+ .map(m => `'${m}'`)
16
+ .join('\n | ');
17
+ };
18
+ const stripSpaces = (str) => str.replace(/\s/g, '');
19
+ const selectName = (o) => o.name;
20
+ const createCubeProps = (cube) => {
21
+ const cubeName = stripSpaces(cube.name);
22
+ const dimensions = cube.dimensions.map(selectName);
23
+ const measures = cube.measures.map(selectName);
24
+ const timeDimensions = cube.dimensions.filter((d) => d.type === 'time').map(selectName);
25
+ const segments = cube.segments.map(selectName);
26
+ return `export type ${cubeName}Measure = ${wrapInQuotes(measures)};
27
+ export type ${cubeName}Dimension = ${wrapInQuotes(dimensions)};
28
+ export type ${cubeName}TimeDimension = ${wrapInQuotes(timeDimensions)};
29
+ export type ${cubeName}Segment = ${wrapInQuotes(segments)};
30
+ `;
31
+ };
32
+ const createTypeDefinitions = (cubes) => {
33
+ const cubeNames = cubes.map(cube => cube.name);
34
+ const topLevelTypes = [
35
+ 'Measure',
36
+ 'Dimension',
37
+ 'TimeDimension',
38
+ 'Segment',
39
+ ];
40
+ return `// DO NOT MANUALLY EDIT - THIS FILE IS AUTOMATICALLY GENERATED
41
+
42
+ export type Cubes = ${cubeNames.map(c => `'${c}'`).join('\n | ')};
43
+
44
+ ${cubes.map(createCubeProps).join('\n')}
45
+ ${topLevelTypes.map((topLevelType) => `
46
+ export type Introspected${topLevelType}Name = ${cubeNames.map(c => `${c}${topLevelType}`).join('\n | ')};
47
+ `).join('\n')}`;
48
+ };
49
+ const generateQueryTypes = async (apiUrl, { token }) => {
50
+ if (!token) {
51
+ await utils_1.displayError('Type generation requires a token. Please generate one and try again');
52
+ }
53
+ let meta = {
54
+ cubes: [],
55
+ };
56
+ try {
57
+ meta = await request_promise_1.default({
58
+ headers: {
59
+ authorization: token,
60
+ },
61
+ url: `${apiUrl}/meta`,
62
+ json: true,
63
+ });
64
+ }
65
+ catch (e) {
66
+ await utils_1.displayError(e.error.error);
67
+ }
68
+ if (meta.cubes.length === 0) {
69
+ await utils_1.displayError('No cubes were found. Please create a cube and try again');
70
+ }
71
+ const typeDefs = createTypeDefinitions(meta.cubes);
72
+ const pathToCubeDX = require.resolve('@cubejs-client/dx');
73
+ const pathToDefinitionFile = pathToCubeDX.replace('/src/index.js', '/generated.d.ts');
74
+ try {
75
+ await fs_extra_1.default.writeFile(pathToDefinitionFile, typeDefs);
76
+ await utils_1.event({
77
+ event: 'cli:typegen:success',
78
+ area: 'cli:typegen'
79
+ });
80
+ console.log('Types successfully generated!');
81
+ }
82
+ catch (e) {
83
+ await utils_1.displayError('Could not persist types to disk. Please file a GitHub issue reporting this', {
84
+ area: 'cli:typegen',
85
+ });
86
+ }
87
+ };
88
+ function configureTypegenCommand(program) {
89
+ program
90
+ .command('typegen <apiUrl>')
91
+ .description('Generate types from your Cube API for your frontend project')
92
+ .option('--token <token>', 'A valid JWT for your Cube project')
93
+ .action((apiUrl, options) => generateQueryTypes(apiUrl, options)
94
+ .catch(e => utils_1.displayError(e.stack || e)))
95
+ .on('--help', () => {
96
+ console.log('');
97
+ console.log('Example:');
98
+ console.log('');
99
+ console.log(' $ cubejs typegen http://localhost:4000/cubejs-api/v1 --token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkZXBsb3ltZW50SWQiOiIxIiwidXJsIjoiaHR0cHM6Ly9leGFtcGxlcy5jdWJlY2xvdWQuZGV2IiwiaWF0IjoxNTE2MjM5MDIyfQ.La3MiuqfGigfzADl1wpxZ7jlb6dY60caezgqIOoHt-c');
100
+ });
101
+ }
102
+ exports.configureTypegenCommand = configureTypegenCommand;
103
+ //# sourceMappingURL=typegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../../src/command/typegen.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "cubejs-cli",
3
3
  "description": "Cube.js Command Line Interface",
4
4
  "author": "Cube Dev, Inc.",
5
- "version": "0.29.1",
5
+ "version": "0.29.5",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/cube-js/cube.js.git",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "devDependencies": {
48
48
  "@cubejs-backend/linter": "^0.29.0",
49
- "@cubejs-backend/server": "^0.29.1",
49
+ "@cubejs-backend/server": "^0.29.5",
50
50
  "@oclif/command": "^1.8.0",
51
51
  "@types/cli-progress": "^3.8.0",
52
52
  "@types/cross-spawn": "^6.0.2",
@@ -65,5 +65,5 @@
65
65
  "eslintConfig": {
66
66
  "extends": "../cubejs-linter"
67
67
  },
68
- "gitHead": "46d6462b1b81da36c2a1896ba8fed709c8f18fb3"
68
+ "gitHead": "518281dea6e0c511813df4502f3aa97038f9be23"
69
69
  }