@cubejs-backend/schema-compiler 0.31.15 → 0.31.18
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/src/adapter/PreAggregations.d.ts +1 -0
- package/dist/src/adapter/PreAggregations.d.ts.map +1 -1
- package/dist/src/adapter/PreAggregations.js +1 -0
- package/dist/src/adapter/PreAggregations.js.map +1 -1
- package/dist/src/compiler/CubeValidator.d.ts.map +1 -1
- package/dist/src/compiler/CubeValidator.js +1 -0
- package/dist/src/compiler/CubeValidator.js.map +1 -1
- package/dist/src/scaffolding/ScaffoldingSchema.d.ts +2 -1
- package/dist/src/scaffolding/ScaffoldingSchema.d.ts.map +1 -1
- package/dist/src/scaffolding/ScaffoldingSchema.js +29 -2
- package/dist/src/scaffolding/ScaffoldingSchema.js.map +1 -1
- package/dist/src/scaffolding/ScaffoldingTemplate.d.ts +16 -52
- package/dist/src/scaffolding/ScaffoldingTemplate.d.ts.map +1 -1
- package/dist/src/scaffolding/ScaffoldingTemplate.js +14 -171
- package/dist/src/scaffolding/ScaffoldingTemplate.js.map +1 -1
- package/dist/src/scaffolding/descriptors/MemberReference.d.ts +5 -0
- package/dist/src/scaffolding/descriptors/MemberReference.d.ts.map +1 -0
- package/dist/src/scaffolding/descriptors/MemberReference.js +11 -0
- package/dist/src/scaffolding/descriptors/MemberReference.js.map +1 -0
- package/dist/src/scaffolding/{ValueWithComments.d.ts → descriptors/ValueWithComments.d.ts} +0 -0
- package/dist/src/scaffolding/descriptors/ValueWithComments.d.ts.map +1 -0
- package/dist/src/scaffolding/{ValueWithComments.js → descriptors/ValueWithComments.js} +0 -0
- package/dist/src/scaffolding/descriptors/ValueWithComments.js.map +1 -0
- package/dist/src/scaffolding/formatters/BaseSchemaFormatter.d.ts +52 -0
- package/dist/src/scaffolding/formatters/BaseSchemaFormatter.d.ts.map +1 -0
- package/dist/src/scaffolding/formatters/BaseSchemaFormatter.js +124 -0
- package/dist/src/scaffolding/formatters/BaseSchemaFormatter.js.map +1 -0
- package/dist/src/scaffolding/formatters/JavaScriptSchemaFormatter.d.ts +9 -0
- package/dist/src/scaffolding/formatters/JavaScriptSchemaFormatter.d.ts.map +1 -0
- package/dist/src/scaffolding/formatters/JavaScriptSchemaFormatter.js +48 -0
- package/dist/src/scaffolding/formatters/JavaScriptSchemaFormatter.js.map +1 -0
- package/dist/src/scaffolding/formatters/YamlSchemaFormatter.d.ts +10 -0
- package/dist/src/scaffolding/formatters/YamlSchemaFormatter.d.ts.map +1 -0
- package/dist/src/scaffolding/formatters/YamlSchemaFormatter.js +84 -0
- package/dist/src/scaffolding/formatters/YamlSchemaFormatter.js.map +1 -0
- package/dist/src/scaffolding/formatters/index.d.ts +4 -0
- package/dist/src/scaffolding/formatters/index.d.ts.map +1 -0
- package/dist/src/scaffolding/formatters/index.js +16 -0
- package/dist/src/scaffolding/formatters/index.js.map +1 -0
- package/dist/src/scaffolding/index.d.ts +1 -0
- package/dist/src/scaffolding/index.d.ts.map +1 -1
- package/dist/src/scaffolding/index.js +1 -0
- package/dist/src/scaffolding/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/scaffolding/ValueWithComments.d.ts.map +0 -1
- package/dist/src/scaffolding/ValueWithComments.js.map +0 -1
|
@@ -1,182 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ScaffoldingTemplate = void 0;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
this.member = member;
|
|
14
|
-
this.member = member;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
3
|
+
exports.ScaffoldingTemplate = exports.SchemaFormat = void 0;
|
|
4
|
+
const formatters_1 = require("./formatters");
|
|
5
|
+
var SchemaFormat;
|
|
6
|
+
(function (SchemaFormat) {
|
|
7
|
+
SchemaFormat["JavaScript"] = "js";
|
|
8
|
+
SchemaFormat["Yaml"] = "yaml";
|
|
9
|
+
})(SchemaFormat = exports.SchemaFormat || (exports.SchemaFormat = {}));
|
|
17
10
|
class ScaffoldingTemplate {
|
|
18
|
-
constructor(dbSchema, driver) {
|
|
19
|
-
this.dbSchema = dbSchema;
|
|
11
|
+
constructor(dbSchema, driver, format) {
|
|
20
12
|
this.driver = driver;
|
|
21
|
-
this.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return name;
|
|
26
|
-
}
|
|
27
|
-
return this.driver.quoteIdentifier(name);
|
|
28
|
-
}
|
|
29
|
-
eligibleIdentifier(name) {
|
|
30
|
-
return !!name.match(/^[a-z0-9_]+$/);
|
|
13
|
+
this.formatStrategy =
|
|
14
|
+
format === SchemaFormat.Yaml
|
|
15
|
+
? new formatters_1.YamlSchemaFormatter(dbSchema, this.driver)
|
|
16
|
+
: new formatters_1.JavaScriptSchemaFormatter(dbSchema, this.driver);
|
|
31
17
|
}
|
|
32
18
|
generateFilesByTableNames(tableNames, schemaContext = {}) {
|
|
33
|
-
|
|
34
|
-
return schemaForTables.map(tableSchema => ({
|
|
35
|
-
// eslint-disable-next-line prefer-template
|
|
36
|
-
fileName: tableSchema.cube + '.js',
|
|
37
|
-
content: this.renderFile(this.schemaDescriptorForTable(tableSchema, schemaContext))
|
|
38
|
-
}));
|
|
19
|
+
return this.formatStrategy.generateFilesByTableNames(tableNames, schemaContext);
|
|
39
20
|
}
|
|
40
21
|
generateFilesByCubeDescriptors(cubeDescriptors, schemaContext = {}) {
|
|
41
|
-
|
|
42
|
-
const generatedSchemaForTables = this.scaffoldingSchema.generateForTables(tableNames.map(n => this.resolveTableName(n)));
|
|
43
|
-
const schemaForTables = cubeDescriptors.map((descriptor) => {
|
|
44
|
-
var _a;
|
|
45
|
-
const generatedDescriptor = generatedSchemaForTables.find(({ cube }) => cube === descriptor.cube);
|
|
46
|
-
const cubeMembers = descriptor.members.reduce((memo, member) => ({
|
|
47
|
-
measures: [...memo.measures].concat(member.memberType === ScaffoldingSchema_1.MemberType.Measure ? [member] : []),
|
|
48
|
-
dimensions: [...memo.dimensions].concat(member.memberType === ScaffoldingSchema_1.MemberType.Dimension ? [member] : []),
|
|
49
|
-
}), {
|
|
50
|
-
measures: [],
|
|
51
|
-
dimensions: []
|
|
52
|
-
});
|
|
53
|
-
const dimensionNames = cubeMembers.dimensions.filter((d) => d.included || d.included == null).map((d) => d.name);
|
|
54
|
-
return {
|
|
55
|
-
...generatedDescriptor,
|
|
56
|
-
...descriptor,
|
|
57
|
-
...cubeMembers,
|
|
58
|
-
drillMembers: (_a = generatedDescriptor === null || generatedDescriptor === void 0 ? void 0 : generatedDescriptor.drillMembers) === null || _a === void 0 ? void 0 : _a.filter((dm) => dimensionNames.includes(dm.name))
|
|
59
|
-
};
|
|
60
|
-
});
|
|
61
|
-
return schemaForTables.map(tableSchema => ({
|
|
62
|
-
fileName: `${tableSchema.cube}.js`,
|
|
63
|
-
content: this.renderFile(this.schemaDescriptorForTable(tableSchema, schemaContext))
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
// eslint-disable-next-line consistent-return
|
|
67
|
-
resolveTableName(tableName) {
|
|
68
|
-
let tableParts;
|
|
69
|
-
if (Array.isArray(tableName)) {
|
|
70
|
-
tableParts = tableName;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
tableParts = tableName.match(/(["`].*?["`]|[^`".]+)+(?=\s*|\s*$)/g);
|
|
74
|
-
}
|
|
75
|
-
if (tableParts.length === 2) {
|
|
76
|
-
this.scaffoldingSchema.resolveTableDefinition(tableName);
|
|
77
|
-
return tableName;
|
|
78
|
-
}
|
|
79
|
-
else if (tableParts.length === 1 && typeof tableName === 'string') {
|
|
80
|
-
const schema = Object.keys(this.dbSchema).find(tableSchema => this.dbSchema[tableSchema][tableName] ||
|
|
81
|
-
this.dbSchema[tableSchema][inflection_1.default.tableize(tableName)]);
|
|
82
|
-
if (!schema) {
|
|
83
|
-
throw new compiler_1.UserError(`Can't find any table with '${tableName}' name`);
|
|
84
|
-
}
|
|
85
|
-
if (this.dbSchema[schema][tableName]) {
|
|
86
|
-
return `${schema}.${tableName}`;
|
|
87
|
-
}
|
|
88
|
-
if (this.dbSchema[schema][inflection_1.default.tableize(tableName)]) {
|
|
89
|
-
return `${schema}.${inflection_1.default.tableize(tableName)}`;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
throw new compiler_1.UserError('Table names should be in <table> or <schema>.<table> format');
|
|
93
|
-
}
|
|
94
|
-
schemaDescriptorForTable(tableSchema, schemaContext = {}) {
|
|
95
|
-
return {
|
|
96
|
-
cube: tableSchema.cube,
|
|
97
|
-
sql: `SELECT * FROM ${tableSchema.schema && tableSchema.schema.length ? `${this.escapeName(tableSchema.schema)}.` : ''}${this.escapeName(tableSchema.table)}`,
|
|
98
|
-
preAggregations: new ValueWithComments_1.ValueWithComments({}, [
|
|
99
|
-
'Pre-Aggregations definitions go here',
|
|
100
|
-
'Learn more here: https://cube.dev/docs/caching/pre-aggregations/getting-started'
|
|
101
|
-
]),
|
|
102
|
-
joins: tableSchema.joins.map(j => ({
|
|
103
|
-
[j.cubeToJoin]: {
|
|
104
|
-
sql: `\${CUBE}.${this.escapeName(j.thisTableColumn)} = \${${j.cubeToJoin}}.${this.escapeName(j.columnToJoin)}`,
|
|
105
|
-
relationship: j.relationship
|
|
106
|
-
}
|
|
107
|
-
})).reduce((a, b) => ({ ...a, ...b }), {}),
|
|
108
|
-
measures: tableSchema.measures.map(m => {
|
|
109
|
-
var _a;
|
|
110
|
-
return ({
|
|
111
|
-
[this.memberName(m)]: {
|
|
112
|
-
sql: this.sqlForMember(m),
|
|
113
|
-
type: (_a = m.type) !== null && _a !== void 0 ? _a : m.types[0],
|
|
114
|
-
title: this.memberTitle(m)
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
}).reduce((a, b) => ({ ...a, ...b }), {
|
|
118
|
-
count: {
|
|
119
|
-
type: 'count',
|
|
120
|
-
drillMembers: (tableSchema.drillMembers || []).map(m => new MemberReference(this.memberName(m)))
|
|
121
|
-
}
|
|
122
|
-
}),
|
|
123
|
-
dimensions: tableSchema.dimensions.map(m => {
|
|
124
|
-
var _a;
|
|
125
|
-
return ({
|
|
126
|
-
[this.memberName(m)]: {
|
|
127
|
-
sql: this.sqlForMember(m),
|
|
128
|
-
type: (_a = m.type) !== null && _a !== void 0 ? _a : m.types[0],
|
|
129
|
-
title: this.memberTitle(m),
|
|
130
|
-
primaryKey: m.isPrimaryKey ? true : undefined
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}).reduce((a, b) => ({ ...a, ...b }), {}),
|
|
134
|
-
...schemaContext
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
sqlForMember(m) {
|
|
138
|
-
// eslint-disable-next-line no-template-curly-in-string
|
|
139
|
-
return `${this.escapeName(m.name) !== m.name || !this.eligibleIdentifier(m.name) ? '${CUBE}.' : ''}${this.escapeName(m.name)}`;
|
|
140
|
-
}
|
|
141
|
-
memberTitle(m) {
|
|
142
|
-
return inflection_1.default.titleize(inflection_1.default.underscore(this.memberName(m))) !== m.title ? m.title : undefined;
|
|
143
|
-
}
|
|
144
|
-
memberName(member) {
|
|
145
|
-
return inflection_1.default.camelize(member.title.replace(/[^A-Za-z0-9]+/g, '_').toLowerCase(), true);
|
|
146
|
-
}
|
|
147
|
-
renderFile(fileDescriptor) {
|
|
148
|
-
const { cube, ...descriptor } = fileDescriptor;
|
|
149
|
-
return `cube(\`${cube}\`, ${this.render(descriptor, 0)});\n`;
|
|
150
|
-
}
|
|
151
|
-
render(descriptor, level, appendComment = '') {
|
|
152
|
-
// eslint-disable-next-line prefer-template
|
|
153
|
-
const lineSeparator = ',\n' + (level < 2 ? '\n' : '');
|
|
154
|
-
if (Array.isArray(descriptor)) {
|
|
155
|
-
const items = descriptor.map(desc => this.render(desc, level + 1)).join(', ');
|
|
156
|
-
return `[${items}]`;
|
|
157
|
-
}
|
|
158
|
-
else if (typeof descriptor === 'string') {
|
|
159
|
-
return `\`${descriptor.replace(/`/g, '\\`')}\``;
|
|
160
|
-
}
|
|
161
|
-
else if (descriptor instanceof MemberReference) {
|
|
162
|
-
return descriptor.member;
|
|
163
|
-
}
|
|
164
|
-
else if (descriptor instanceof ValueWithComments_1.ValueWithComments) {
|
|
165
|
-
return this.render(descriptor.value, level, descriptor.comments.map((comment) => ` // ${comment}`).join('\n'));
|
|
166
|
-
}
|
|
167
|
-
else if (typeof descriptor === 'object') {
|
|
168
|
-
const content = Object.keys(descriptor)
|
|
169
|
-
.filter(k => descriptor[k] != null)
|
|
170
|
-
.map(key => `${key}: ${this.render(descriptor[key], level + 1)}`)
|
|
171
|
-
.join(lineSeparator)
|
|
172
|
-
.split('\n')
|
|
173
|
-
.map(l => ` ${l}`)
|
|
174
|
-
.join('\n');
|
|
175
|
-
return `{\n${appendComment}${content}\n}`;
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
return descriptor.toString();
|
|
179
|
-
}
|
|
22
|
+
return this.formatStrategy.generateFilesByCubeDescriptors(cubeDescriptors, schemaContext);
|
|
180
23
|
}
|
|
181
24
|
}
|
|
182
25
|
exports.ScaffoldingTemplate = ScaffoldingTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScaffoldingTemplate.js","sourceRoot":"","sources":["../../../src/scaffolding/ScaffoldingTemplate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScaffoldingTemplate.js","sourceRoot":"","sources":["../../../src/scaffolding/ScaffoldingTemplate.ts"],"names":[],"mappings":";;;AAEA,6CAA8E;AA0B9E,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,6BAAa,CAAA;AACf,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED,MAAa,mBAAmB;IAG9B,YACE,QAAwB,EACP,MAAM,EACvB,MAAqB;QADJ,WAAM,GAAN,MAAM,CAAA;QAGvB,IAAI,CAAC,cAAc;YACjB,MAAM,KAAK,YAAY,CAAC,IAAI;gBAC1B,CAAC,CAAC,IAAI,gCAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;gBAChD,CAAC,CAAC,IAAI,sCAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAEM,yBAAyB,CAC9B,UAAuB,EACvB,gBAA+B,EAAE;QAEjC,OAAO,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAClD,UAAU,EACV,aAAa,CACd,CAAC;IACJ,CAAC;IAEM,8BAA8B,CACnC,eAAiC,EACjC,gBAA+B,EAAE;QAEjC,OAAO,IAAI,CAAC,cAAc,CAAC,8BAA8B,CACvD,eAAe,EACf,aAAa,CACd,CAAC;IACJ,CAAC;CACF;AAjCD,kDAiCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberReference.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/descriptors/MemberReference.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IACA,MAAM;gBAAN,MAAM,KAAA;CAGjC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemberReference = void 0;
|
|
4
|
+
class MemberReference {
|
|
5
|
+
constructor(member) {
|
|
6
|
+
this.member = member;
|
|
7
|
+
this.member = member;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.MemberReference = MemberReference;
|
|
11
|
+
//# sourceMappingURL=MemberReference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberReference.js","sourceRoot":"","sources":["../../../../src/scaffolding/descriptors/MemberReference.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAe;IAC1B,YAA0B,MAAM;QAAN,WAAM,GAAN,MAAM,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAJD,0CAIC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValueWithComments.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/descriptors/ValueWithComments.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;aAEV,KAAK,EAAE,GAAG;aACV,QAAQ,EAAE,MAAM,EAAE;gBADlB,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,MAAM,EAAE;CAGrC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValueWithComments.js","sourceRoot":"","sources":["../../../../src/scaffolding/descriptors/ValueWithComments.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;IAC5B,YACkB,KAAU,EACV,QAAkB;QADlB,UAAK,GAAL,KAAK,CAAK;QACV,aAAQ,GAAR,QAAQ,CAAU;IAEpC,CAAC;CACF;AAND,8CAMC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { SchemaContext } from '../ScaffoldingTemplate';
|
|
2
|
+
import { CubeDescriptor, DatabaseSchema, ScaffoldingSchema, TableName, TableSchema } from '../ScaffoldingSchema';
|
|
3
|
+
import { MemberReference } from '../descriptors/MemberReference';
|
|
4
|
+
import { ValueWithComments } from '../descriptors/ValueWithComments';
|
|
5
|
+
export declare type SchemaFile = {
|
|
6
|
+
fileName: string;
|
|
7
|
+
content: string;
|
|
8
|
+
};
|
|
9
|
+
export declare abstract class BaseSchemaFormatter {
|
|
10
|
+
protected readonly dbSchema: DatabaseSchema;
|
|
11
|
+
protected readonly driver: any;
|
|
12
|
+
protected readonly scaffoldingSchema: ScaffoldingSchema;
|
|
13
|
+
constructor(dbSchema: DatabaseSchema, driver: any);
|
|
14
|
+
abstract fileExtension(): string;
|
|
15
|
+
protected abstract cubeReference(cube: string): string;
|
|
16
|
+
protected abstract renderFile(fileDescriptor: Record<string, unknown>): string;
|
|
17
|
+
generateFilesByTableNames(tableNames: TableName[], schemaContext?: SchemaContext): SchemaFile[];
|
|
18
|
+
generateFilesByCubeDescriptors(cubeDescriptors: CubeDescriptor[], schemaContext?: SchemaContext): SchemaFile[];
|
|
19
|
+
protected sqlForMember(m: any): string;
|
|
20
|
+
protected memberTitle(m: any): any;
|
|
21
|
+
protected memberName(member: any): string;
|
|
22
|
+
protected escapeName(name: any): any;
|
|
23
|
+
protected eligibleIdentifier(name: string): boolean;
|
|
24
|
+
schemaDescriptorForTable(tableSchema: TableSchema, schemaContext?: SchemaContext): {
|
|
25
|
+
dataSource?: string | undefined;
|
|
26
|
+
cube: string;
|
|
27
|
+
sql: string;
|
|
28
|
+
preAggregations: ValueWithComments;
|
|
29
|
+
joins: {
|
|
30
|
+
[x: string]: {
|
|
31
|
+
sql: string;
|
|
32
|
+
relationship: "hasOne" | "hasMany" | "belongsTo";
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
measures: {
|
|
36
|
+
count: {
|
|
37
|
+
type: string;
|
|
38
|
+
drillMembers: MemberReference[];
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
dimensions: {
|
|
42
|
+
[x: string]: {
|
|
43
|
+
sql: string;
|
|
44
|
+
type: any;
|
|
45
|
+
title: any;
|
|
46
|
+
primaryKey: boolean | undefined;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
protected schemaForTablesByCubeDescriptors(cubeDescriptors: CubeDescriptor[]): TableSchema[];
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=BaseSchemaFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseSchemaFormatter.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/BaseSchemaFormatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAc,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAG,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,oBAAY,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,8BAAsB,mBAAmB;IAIrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc;IAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG;IAJhC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;gBAGnC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,GAAG;aAKhB,aAAa,IAAI,MAAM;IAEvC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAEtD,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAEvE,yBAAyB,CAC9B,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,GAAE,aAAkB,GAChC,UAAU,EAAE;IAaR,8BAA8B,CACnC,eAAe,EAAE,cAAc,EAAE,EACjC,aAAa,GAAE,aAAkB,GAChC,UAAU,EAAE;IASf,SAAS,CAAC,YAAY,CAAC,CAAC,KAAA;IASxB,SAAS,CAAC,WAAW,CAAC,CAAC,KAAA;IAOvB,SAAS,CAAC,UAAU,CAAC,MAAM,KAAA;IAO3B,SAAS,CAAC,UAAU,CAAC,IAAI,KAAA;IAOzB,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM;IAIlC,wBAAwB,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,GAAE,aAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;IAsC3F,SAAS,CAAC,gCAAgC,CAAC,eAAe,EAAE,cAAc,EAAE;CAsC7E"}
|
|
@@ -0,0 +1,124 @@
|
|
|
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.BaseSchemaFormatter = void 0;
|
|
7
|
+
const inflection_1 = __importDefault(require("inflection"));
|
|
8
|
+
const ScaffoldingSchema_1 = require("../ScaffoldingSchema");
|
|
9
|
+
const MemberReference_1 = require("../descriptors/MemberReference");
|
|
10
|
+
const ValueWithComments_1 = require("../descriptors/ValueWithComments");
|
|
11
|
+
class BaseSchemaFormatter {
|
|
12
|
+
constructor(dbSchema, driver) {
|
|
13
|
+
this.dbSchema = dbSchema;
|
|
14
|
+
this.driver = driver;
|
|
15
|
+
this.scaffoldingSchema = new ScaffoldingSchema_1.ScaffoldingSchema(dbSchema, driver);
|
|
16
|
+
}
|
|
17
|
+
generateFilesByTableNames(tableNames, schemaContext = {}) {
|
|
18
|
+
const schemaForTables = this.scaffoldingSchema.generateForTables(tableNames.map((n) => this.scaffoldingSchema.resolveTableName(n)));
|
|
19
|
+
return schemaForTables.map((tableSchema) => ({
|
|
20
|
+
fileName: `${tableSchema.cube}.${this.fileExtension()}`,
|
|
21
|
+
content: this.renderFile(this.schemaDescriptorForTable(tableSchema, schemaContext)),
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
generateFilesByCubeDescriptors(cubeDescriptors, schemaContext = {}) {
|
|
25
|
+
return this.schemaForTablesByCubeDescriptors(cubeDescriptors).map((tableSchema) => ({
|
|
26
|
+
fileName: `${tableSchema.cube}.${this.fileExtension()}`,
|
|
27
|
+
content: this.renderFile(this.schemaDescriptorForTable(tableSchema, schemaContext)),
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
sqlForMember(m) {
|
|
31
|
+
return `${this.escapeName(m.name) !== m.name || !this.eligibleIdentifier(m.name)
|
|
32
|
+
?
|
|
33
|
+
`${this.cubeReference('CUBE')}.`
|
|
34
|
+
: ''}${this.escapeName(m.name)}`;
|
|
35
|
+
}
|
|
36
|
+
memberTitle(m) {
|
|
37
|
+
return inflection_1.default.titleize(inflection_1.default.underscore(this.memberName(m))) !==
|
|
38
|
+
m.title
|
|
39
|
+
? m.title
|
|
40
|
+
: undefined;
|
|
41
|
+
}
|
|
42
|
+
memberName(member) {
|
|
43
|
+
return inflection_1.default.camelize(member.title.replace(/[^A-Za-z0-9]+/g, '_').toLowerCase(), true);
|
|
44
|
+
}
|
|
45
|
+
escapeName(name) {
|
|
46
|
+
if (this.eligibleIdentifier(name)) {
|
|
47
|
+
return name;
|
|
48
|
+
}
|
|
49
|
+
return this.driver.quoteIdentifier(name);
|
|
50
|
+
}
|
|
51
|
+
eligibleIdentifier(name) {
|
|
52
|
+
return !!name.match(/^[a-z0-9_]+$/);
|
|
53
|
+
}
|
|
54
|
+
schemaDescriptorForTable(tableSchema, schemaContext = {}) {
|
|
55
|
+
var _a;
|
|
56
|
+
return {
|
|
57
|
+
cube: tableSchema.cube,
|
|
58
|
+
sql: `SELECT * FROM ${((_a = tableSchema.schema) === null || _a === void 0 ? void 0 : _a.length) ? `${this.escapeName(tableSchema.schema)}.` : ''}${this.escapeName(tableSchema.table)}`,
|
|
59
|
+
preAggregations: new ValueWithComments_1.ValueWithComments(null, [
|
|
60
|
+
'Pre-Aggregations definitions go here',
|
|
61
|
+
'Learn more here: https://cube.dev/docs/caching/pre-aggregations/getting-started'
|
|
62
|
+
]),
|
|
63
|
+
joins: tableSchema.joins.map(j => ({
|
|
64
|
+
[j.cubeToJoin]: {
|
|
65
|
+
sql: `${this.cubeReference('CUBE')}.${this.escapeName(j.thisTableColumn)} = ${this.cubeReference(j.cubeToJoin)}.${this.escapeName(j.columnToJoin)}`,
|
|
66
|
+
relationship: j.relationship
|
|
67
|
+
}
|
|
68
|
+
})).reduce((a, b) => ({ ...a, ...b }), {}),
|
|
69
|
+
measures: tableSchema.measures.map(m => {
|
|
70
|
+
var _a;
|
|
71
|
+
return ({
|
|
72
|
+
[this.memberName(m)]: {
|
|
73
|
+
sql: this.sqlForMember(m),
|
|
74
|
+
type: (_a = m.type) !== null && _a !== void 0 ? _a : m.types[0],
|
|
75
|
+
title: this.memberTitle(m)
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}).reduce((a, b) => ({ ...a, ...b }), {
|
|
79
|
+
count: {
|
|
80
|
+
type: 'count',
|
|
81
|
+
drillMembers: (tableSchema.drillMembers || []).map(m => new MemberReference_1.MemberReference(this.memberName(m)))
|
|
82
|
+
}
|
|
83
|
+
}),
|
|
84
|
+
dimensions: tableSchema.dimensions.map(m => {
|
|
85
|
+
var _a;
|
|
86
|
+
return ({
|
|
87
|
+
[this.memberName(m)]: {
|
|
88
|
+
sql: this.sqlForMember(m),
|
|
89
|
+
type: (_a = m.type) !== null && _a !== void 0 ? _a : m.types[0],
|
|
90
|
+
title: this.memberTitle(m),
|
|
91
|
+
primaryKey: m.isPrimaryKey ? true : undefined
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}).reduce((a, b) => ({ ...a, ...b }), {}),
|
|
95
|
+
...schemaContext
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
schemaForTablesByCubeDescriptors(cubeDescriptors) {
|
|
99
|
+
const tableNames = cubeDescriptors.map(({ tableName }) => tableName);
|
|
100
|
+
const generatedSchemaForTables = this.scaffoldingSchema.generateForTables(tableNames.map((n) => this.scaffoldingSchema.resolveTableName(n)));
|
|
101
|
+
return cubeDescriptors.map((descriptor) => {
|
|
102
|
+
var _a;
|
|
103
|
+
const generatedDescriptor = generatedSchemaForTables.find(({ cube }) => cube === descriptor.cube);
|
|
104
|
+
const cubeMembers = descriptor.members.reduce((memo, member) => ({
|
|
105
|
+
measures: [...memo.measures].concat(member.memberType === ScaffoldingSchema_1.MemberType.Measure ? [member] : []),
|
|
106
|
+
dimensions: [...memo.dimensions].concat(member.memberType === ScaffoldingSchema_1.MemberType.Dimension ? [member] : []),
|
|
107
|
+
}), {
|
|
108
|
+
measures: [],
|
|
109
|
+
dimensions: [],
|
|
110
|
+
});
|
|
111
|
+
const dimensionNames = cubeMembers.dimensions
|
|
112
|
+
.filter((d) => d.included || d.included == null)
|
|
113
|
+
.map((d) => d.name);
|
|
114
|
+
return {
|
|
115
|
+
...generatedDescriptor,
|
|
116
|
+
...descriptor,
|
|
117
|
+
...cubeMembers,
|
|
118
|
+
drillMembers: (_a = generatedDescriptor === null || generatedDescriptor === void 0 ? void 0 : generatedDescriptor.drillMembers) === null || _a === void 0 ? void 0 : _a.filter((dm) => dimensionNames.includes(dm.name)),
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.BaseSchemaFormatter = BaseSchemaFormatter;
|
|
124
|
+
//# sourceMappingURL=BaseSchemaFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseSchemaFormatter.js","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/BaseSchemaFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SchemaDescriptor } from '../ScaffoldingTemplate';
|
|
2
|
+
import { BaseSchemaFormatter } from './BaseSchemaFormatter';
|
|
3
|
+
export declare class JavaScriptSchemaFormatter extends BaseSchemaFormatter {
|
|
4
|
+
fileExtension(): string;
|
|
5
|
+
protected cubeReference(cube: string): string;
|
|
6
|
+
protected renderFile(fileDescriptor: Record<string, unknown>): string;
|
|
7
|
+
protected render(descriptor: SchemaDescriptor, level: number, appendComment?: string): string;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=JavaScriptSchemaFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JavaScriptSchemaFormatter.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/JavaScriptSchemaFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,yBAA0B,SAAQ,mBAAmB;IACzD,aAAa;IAIpB,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7C,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAKrE,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,SAAK,GAAG,MAAM;CA+B1F"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JavaScriptSchemaFormatter = void 0;
|
|
4
|
+
const MemberReference_1 = require("../descriptors/MemberReference");
|
|
5
|
+
const ValueWithComments_1 = require("../descriptors/ValueWithComments");
|
|
6
|
+
const BaseSchemaFormatter_1 = require("./BaseSchemaFormatter");
|
|
7
|
+
class JavaScriptSchemaFormatter extends BaseSchemaFormatter_1.BaseSchemaFormatter {
|
|
8
|
+
fileExtension() {
|
|
9
|
+
return 'js';
|
|
10
|
+
}
|
|
11
|
+
cubeReference(cube) {
|
|
12
|
+
return `\${${cube}}`;
|
|
13
|
+
}
|
|
14
|
+
renderFile(fileDescriptor) {
|
|
15
|
+
const { cube, ...descriptor } = fileDescriptor;
|
|
16
|
+
return `cube(\`${cube}\`, ${this.render(descriptor, 0)});\n`;
|
|
17
|
+
}
|
|
18
|
+
render(descriptor, level, appendComment = '') {
|
|
19
|
+
// eslint-disable-next-line prefer-template
|
|
20
|
+
const lineSeparator = ',\n' + (level < 2 ? '\n' : '');
|
|
21
|
+
if (Array.isArray(descriptor)) {
|
|
22
|
+
const items = descriptor.map(desc => this.render(desc, level + 1)).join(', ');
|
|
23
|
+
return `[${items}]`;
|
|
24
|
+
}
|
|
25
|
+
else if (typeof descriptor === 'string') {
|
|
26
|
+
return `\`${descriptor.replace(/`/g, '\\`')}\``;
|
|
27
|
+
}
|
|
28
|
+
else if (descriptor instanceof MemberReference_1.MemberReference) {
|
|
29
|
+
return descriptor.member;
|
|
30
|
+
}
|
|
31
|
+
else if (descriptor instanceof ValueWithComments_1.ValueWithComments) {
|
|
32
|
+
return this.render(descriptor.value, level, descriptor.comments.map((comment) => ` // ${comment}`).join('\n'));
|
|
33
|
+
}
|
|
34
|
+
else if (typeof descriptor === 'object') {
|
|
35
|
+
const content = descriptor != null ? Object.keys(descriptor)
|
|
36
|
+
.filter(k => descriptor[k] != null)
|
|
37
|
+
.map(key => `${key}: ${this.render(descriptor[key], level + 1)}`)
|
|
38
|
+
.join(lineSeparator)
|
|
39
|
+
.split('\n')
|
|
40
|
+
.map(l => ` ${l}`)
|
|
41
|
+
.join('\n') : '';
|
|
42
|
+
return `{\n${appendComment}${content}\n}`;
|
|
43
|
+
}
|
|
44
|
+
return descriptor.toString();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.JavaScriptSchemaFormatter = JavaScriptSchemaFormatter;
|
|
48
|
+
//# sourceMappingURL=JavaScriptSchemaFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JavaScriptSchemaFormatter.js","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/JavaScriptSchemaFormatter.ts"],"names":[],"mappings":";;;AAAA,oEAAiE;AACjE,wEAAqE;AAErE,+DAA4D;AAE5D,MAAa,yBAA0B,SAAQ,yCAAmB;IACzD,aAAa;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,aAAa,CAAC,IAAY;QAClC,OAAO,MAAM,IAAI,GAAG,CAAC;IACvB,CAAC;IAES,UAAU,CAAC,cAAuC;QAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,cAAc,CAAC;QAC/C,OAAO,UAAU,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;IAC/D,CAAC;IAES,MAAM,CAAC,UAA4B,EAAE,KAAa,EAAE,aAAa,GAAG,EAAE;QAC9E,2CAA2C;QAC3C,MAAM,aAAa,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEtD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO,IAAI,KAAK,GAAG,CAAC;SACrB;aAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YACzC,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;SACjD;aAAM,IAAI,UAAU,YAAY,iCAAe,EAAE;YAChD,OAAO,UAAU,CAAC,MAAM,CAAC;SAC1B;aAAM,IAAI,UAAU,YAAY,qCAAiB,EAAE;YAClD,OAAO,IAAI,CAAC,MAAM,CAChB,UAAU,CAAC,KAAK,EAChB,KAAK,EACL,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACnE,CAAC;SACH;aAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YACzC,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;iBACzD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;iBAClC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;iBAChE,IAAI,CAAC,aAAa,CAAC;iBACnB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;iBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnB,OAAO,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC;SAC3C;QAED,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF;AA7CD,8DA6CC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SchemaDescriptor } from '../ScaffoldingTemplate';
|
|
2
|
+
import { BaseSchemaFormatter } from './BaseSchemaFormatter';
|
|
3
|
+
export declare class YamlSchemaFormatter extends BaseSchemaFormatter {
|
|
4
|
+
fileExtension(): string;
|
|
5
|
+
protected cubeReference(cube: string): string;
|
|
6
|
+
protected renderFile(fileDescriptor: Record<string, unknown>): string;
|
|
7
|
+
protected render(value: SchemaDescriptor, level?: number, parent?: SchemaDescriptor): any;
|
|
8
|
+
private escapedValue;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=YamlSchemaFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YamlSchemaFormatter.d.ts","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/YamlSchemaFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAS5D,qBAAa,mBAAoB,SAAQ,mBAAmB;IACnD,aAAa,IAAI,MAAM;IAI9B,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7C,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAgBrE,SAAS,CAAC,MAAM,CACd,KAAK,EAAE,gBAAgB,EACvB,KAAK,SAAI,EACT,MAAM,CAAC,EAAE,gBAAgB;IAmE3B,OAAO,CAAC,YAAY;CAOrB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.YamlSchemaFormatter = void 0;
|
|
4
|
+
const MemberReference_1 = require("../descriptors/MemberReference");
|
|
5
|
+
const ValueWithComments_1 = require("../descriptors/ValueWithComments");
|
|
6
|
+
const BaseSchemaFormatter_1 = require("./BaseSchemaFormatter");
|
|
7
|
+
function isPlainObject(value) {
|
|
8
|
+
if (typeof value !== 'object' || value === null) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return Object.getPrototypeOf(value) === Object.getPrototypeOf({});
|
|
12
|
+
}
|
|
13
|
+
class YamlSchemaFormatter extends BaseSchemaFormatter_1.BaseSchemaFormatter {
|
|
14
|
+
fileExtension() {
|
|
15
|
+
return 'yaml';
|
|
16
|
+
}
|
|
17
|
+
cubeReference(cube) {
|
|
18
|
+
return `{${cube}}`;
|
|
19
|
+
}
|
|
20
|
+
renderFile(fileDescriptor) {
|
|
21
|
+
const { cube, sql, preAggregations: _, ...descriptor } = fileDescriptor;
|
|
22
|
+
return `cubes:\n - name: ${cube}${this.render({
|
|
23
|
+
sql: new ValueWithComments_1.ValueWithComments(sql, [
|
|
24
|
+
'preAggregations:',
|
|
25
|
+
'Pre-Aggregations definitions go here',
|
|
26
|
+
'Learn more here: https://cube.dev/docs/caching/pre-aggregations/getting-started',
|
|
27
|
+
]),
|
|
28
|
+
...descriptor,
|
|
29
|
+
}, 2)}\n`;
|
|
30
|
+
}
|
|
31
|
+
render(value, level = 0, parent) {
|
|
32
|
+
const indent = Array(level * 2)
|
|
33
|
+
.fill(0)
|
|
34
|
+
.reduce((memo) => `${memo} `, '');
|
|
35
|
+
if (value instanceof MemberReference_1.MemberReference) {
|
|
36
|
+
return value.member;
|
|
37
|
+
}
|
|
38
|
+
else if (value instanceof ValueWithComments_1.ValueWithComments) {
|
|
39
|
+
const comments = `\n${value.comments
|
|
40
|
+
.map((comment) => `${indent}# ${comment}`)
|
|
41
|
+
.join('\n')}`;
|
|
42
|
+
return value.value ? `${this.render(value.value)}${comments}` : comments;
|
|
43
|
+
}
|
|
44
|
+
else if (Array.isArray(value)) {
|
|
45
|
+
if (value.every((v) => typeof v !== 'object' || v instanceof MemberReference_1.MemberReference)) {
|
|
46
|
+
return ` [${value.map(this.render).join(', ')}]`;
|
|
47
|
+
}
|
|
48
|
+
return `\n${value
|
|
49
|
+
.map((v) => `${indent}- ${this.render(v, level + 1, value)}`)
|
|
50
|
+
.join('\n')}`;
|
|
51
|
+
}
|
|
52
|
+
else if (typeof value === 'object') {
|
|
53
|
+
if (parent) {
|
|
54
|
+
return `${!Array.isArray(parent) ? '\n' : ''}${Object.entries(value)
|
|
55
|
+
.map(([k, v], index) => `${Array.isArray(parent) && index === 0 ? '' : `${indent}`}${k}:${this.render(v, level + 1, value)}`)
|
|
56
|
+
.join('\n')}`;
|
|
57
|
+
}
|
|
58
|
+
const content = Object.keys(value)
|
|
59
|
+
.map((key) => {
|
|
60
|
+
if (!isPlainObject(value[key])) {
|
|
61
|
+
return `${indent}${key}:${this.render(value[key], level + 1, value)}`;
|
|
62
|
+
}
|
|
63
|
+
return `${indent}${key}:${this.render(Object.entries(value[key] || {}).map(([ok, ov]) => ({
|
|
64
|
+
name: ok,
|
|
65
|
+
// @ts-ignore
|
|
66
|
+
...Object.entries(ov)
|
|
67
|
+
.filter(([, v]) => v != null)
|
|
68
|
+
.reduce((memo, [k, v]) => ({ ...memo, [k]: v }), {}),
|
|
69
|
+
})), level + 1, value)}`;
|
|
70
|
+
})
|
|
71
|
+
.join('\n');
|
|
72
|
+
return `\n${content}`;
|
|
73
|
+
}
|
|
74
|
+
return `${Array.isArray(parent) ? '' : ' '}${this.escapedValue(value)}`;
|
|
75
|
+
}
|
|
76
|
+
escapedValue(value) {
|
|
77
|
+
if (typeof value !== 'string') {
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
return value.match(/[{}]/) ? `"${value.replace(/"/g, '\\"')}"` : value;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.YamlSchemaFormatter = YamlSchemaFormatter;
|
|
84
|
+
//# sourceMappingURL=YamlSchemaFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YamlSchemaFormatter.js","sourceRoot":"","sources":["../../../../src/scaffolding/formatters/YamlSchemaFormatter.ts"],"names":[],"mappings":"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"}
|