@sap/artifact-management 1.25.0 → 1.26.0

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.
Files changed (42) hide show
  1. package/dist/projectapi.js +1 -1
  2. package/dist/projectapi.js.LICENSE.txt +139 -0
  3. package/dist/src/cp/CFProjectBuilder.js +20 -6
  4. package/dist/src/cp/CFProjectBuilder.js.map +1 -1
  5. package/dist/src/cp/templates/launchpad-ui5-app-template/package.json +1 -1
  6. package/dist/src/plugins/cap/generators/CapDestinationModuleGenerator.js +1 -0
  7. package/dist/src/plugins/cap/generators/CapDestinationModuleGenerator.js.map +1 -1
  8. package/dist/src/plugins/cap/generators/CapProjectGenerator.js +15 -0
  9. package/dist/src/plugins/cap/generators/CapProjectGenerator.js.map +1 -1
  10. package/dist/src/plugins/cap/readers/CapModuleReader.js +9 -1
  11. package/dist/src/plugins/cap/readers/CapModuleReader.js.map +1 -1
  12. package/dist/src/plugins/cap/readers/calculation-view/CalculationViewItemReader.js +446 -0
  13. package/dist/src/plugins/cap/readers/calculation-view/CalculationViewItemReader.js.map +1 -0
  14. package/dist/src/plugins/cap/readers/calculation-view/model/XmlReader.js +406 -0
  15. package/dist/src/plugins/cap/readers/calculation-view/model/XmlReader.js.map +1 -0
  16. package/dist/src/plugins/cap/readers/calculation-view/model/common.js +101 -0
  17. package/dist/src/plugins/cap/readers/calculation-view/model/common.js.map +1 -0
  18. package/dist/src/plugins/cap/readers/calculation-view/model/model.js +858 -0
  19. package/dist/src/plugins/cap/readers/calculation-view/model/model.js.map +1 -0
  20. package/dist/src/plugins/cap/readers/calculation-view/model/modelbase.js +387 -0
  21. package/dist/src/plugins/cap/readers/calculation-view/model/modelbase.js.map +1 -0
  22. package/dist/src/plugins/cap/readers/calculation-view/model/sharedmodel.js +96 -0
  23. package/dist/src/plugins/cap/readers/calculation-view/model/sharedmodel.js.map +1 -0
  24. package/dist/src/plugins/cap/readers/calculation-view/viewmodel/CalculationViewXmlParser.js +2278 -0
  25. package/dist/src/plugins/cap/readers/calculation-view/viewmodel/CalculationViewXmlParser.js.map +1 -0
  26. package/dist/src/plugins/cap/readers/calculation-view/viewmodel/CalculationViewXmlParserHelper.js +194 -0
  27. package/dist/src/plugins/cap/readers/calculation-view/viewmodel/CalculationViewXmlParserHelper.js.map +1 -0
  28. package/dist/src/project-api/ProjectImpl.js +37 -2
  29. package/dist/src/project-api/ProjectImpl.js.map +1 -1
  30. package/dist/templates/launchpad-ui5-app-template/package.json +1 -1
  31. package/dist/tsconfig.tsbuildinfo +115 -29
  32. package/dist/types/src/cp/CFProjectBuilder.d.ts +1 -1
  33. package/dist/types/src/plugins/cap/readers/calculation-view/CalculationViewItemReader.d.ts +33 -0
  34. package/dist/types/src/plugins/cap/readers/calculation-view/model/XmlReader.d.ts +38 -0
  35. package/dist/types/src/plugins/cap/readers/calculation-view/model/common.d.ts +44 -0
  36. package/dist/types/src/plugins/cap/readers/calculation-view/model/model.d.ts +401 -0
  37. package/dist/types/src/plugins/cap/readers/calculation-view/model/modelbase.d.ts +105 -0
  38. package/dist/types/src/plugins/cap/readers/calculation-view/model/sharedmodel.d.ts +33 -0
  39. package/dist/types/src/plugins/cap/readers/calculation-view/viewmodel/CalculationViewXmlParser.d.ts +62 -0
  40. package/dist/types/src/plugins/cap/readers/calculation-view/viewmodel/CalculationViewXmlParserHelper.d.ts +14 -0
  41. package/dist/types/src/project-api/ProjectImpl.d.ts +2 -0
  42. package/package.json +6 -5
@@ -0,0 +1,446 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ProjectApiGeneralReader = exports.ProxyResolver = void 0;
26
+ const fs_1 = require("fs");
27
+ const path = __importStar(require("path"));
28
+ const artifact_management_base_1 = require("@sap/artifact-management-base");
29
+ const model_1 = require("./model/model");
30
+ const CalculationViewXmlParser_1 = __importDefault(require("./viewmodel/CalculationViewXmlParser"));
31
+ const xml2js = require('xml2js');
32
+ class CalculationViewItemReader {
33
+ parseBaseMeasureColumns(columns, parsedXML) {
34
+ var _a, _b;
35
+ try {
36
+ (_b = (_a = parsedXML['Calculation:scenario'].logicalModel[0]) === null || _a === void 0 ? void 0 : _a.baseMeasures[0]) === null || _b === void 0 ? void 0 : _b.measure.forEach((column) => {
37
+ columns.push(column.$.id);
38
+ });
39
+ }
40
+ catch (e) {
41
+ // no-op
42
+ }
43
+ }
44
+ parseCalculatedMeasureColumns(columns, parsedXML) {
45
+ var _a, _b;
46
+ try {
47
+ (_b = (_a = parsedXML['Calculation:scenario'].logicalModel[0]) === null || _a === void 0 ? void 0 : _a.calculatedMeasures[0]) === null || _b === void 0 ? void 0 : _b.measure.forEach((column) => {
48
+ columns.push(column.$.id);
49
+ });
50
+ }
51
+ catch (e) {
52
+ // no-op
53
+ }
54
+ }
55
+ parseRestrictedMeasureColumns(columns, parsedXML) {
56
+ var _a, _b;
57
+ try {
58
+ (_b = (_a = parsedXML['Calculation:scenario'].logicalModel[0]) === null || _a === void 0 ? void 0 : _a.restrictedMeasures[0]) === null || _b === void 0 ? void 0 : _b.measure.forEach((column) => {
59
+ columns.push(column.$.id);
60
+ });
61
+ }
62
+ catch (e) {
63
+ // no-op
64
+ }
65
+ }
66
+ parseCalculatedColumns(columns, parsedXML) {
67
+ var _a, _b;
68
+ try {
69
+ (_b = (_a = parsedXML['Calculation:scenario'].logicalModel[0]) === null || _a === void 0 ? void 0 : _a.calculatedAttributes[0]) === null || _b === void 0 ? void 0 : _b.calculatedAttribute.forEach((column) => {
70
+ columns.push(column.$.id);
71
+ });
72
+ }
73
+ catch (e) {
74
+ // no-op
75
+ }
76
+ }
77
+ parseDataSourceColumns(columns, parsedXML) {
78
+ var _a, _b;
79
+ try {
80
+ (_b = (_a = parsedXML['Calculation:scenario'].logicalModel[0]) === null || _a === void 0 ? void 0 : _a.attributes[0]) === null || _b === void 0 ? void 0 : _b.attribute.forEach((column) => {
81
+ columns.push(column.$.id);
82
+ });
83
+ }
84
+ catch (e) {
85
+ // no-op
86
+ }
87
+ }
88
+ parseDataSources(links, parsedXML) {
89
+ try {
90
+ parsedXML['Calculation:scenario'].dataSources[0].DataSource
91
+ .forEach((dataSource) => {
92
+ links.push({
93
+ linkType: artifact_management_base_1.LinkType.DEPENDS_ON,
94
+ ref: dataSource.$.id,
95
+ type: artifact_management_base_1.ItemType.CDSEntity,
96
+ });
97
+ });
98
+ }
99
+ catch (e) {
100
+ // no-op
101
+ }
102
+ }
103
+ getExposedColumns(parsedXML) {
104
+ const columns = [];
105
+ this.parseDataSourceColumns(columns, parsedXML);
106
+ this.parseCalculatedColumns(columns, parsedXML);
107
+ this.parseBaseMeasureColumns(columns, parsedXML);
108
+ this.parseCalculatedMeasureColumns(columns, parsedXML);
109
+ this.parseRestrictedMeasureColumns(columns, parsedXML);
110
+ return columns;
111
+ }
112
+ async getParsedXML(fs, fileName) {
113
+ const absolutePath = path.join(fs.path(), fileName);
114
+ const parser = new xml2js.Parser();
115
+ return (await parser.parseStringPromise(fs_1.readFileSync(absolutePath, 'utf-8')));
116
+ }
117
+ getNameAndNamespace(parsedXML) {
118
+ const calcViewName = parsedXML['Calculation:scenario'].$.id;
119
+ const calcViewNameParts = calcViewName.split();
120
+ const namespace = calcViewNameParts.length === 2 ? calcViewNameParts[0] : '';
121
+ return { calcViewName, namespace };
122
+ }
123
+ async getDetails({ fs, matchedFiles }) {
124
+ const items = [];
125
+ try {
126
+ let files = [];
127
+ const itemTags = Array.from(CalculationViewItemReader.itemTags);
128
+ for (const pattern of Object.keys(matchedFiles)) {
129
+ files = files.concat(matchedFiles[pattern]);
130
+ }
131
+ for (const file of files) {
132
+ const links = [];
133
+ const info = {};
134
+ const filePath = fs.relativeToRoot(file).split('\\').join('/');
135
+ const parsedXML = await this.getParsedXML(fs, file);
136
+ let calcViewName = '';
137
+ let namespace = '';
138
+ if (parsedXML) {
139
+ const nameTokens = this.getNameAndNamespace(parsedXML);
140
+ calcViewName = nameTokens.calcViewName;
141
+ namespace = nameTokens.namespace;
142
+ this.parseDataSources(links, parsedXML);
143
+ info['exposedColumns'] = this.getExposedColumns(parsedXML);
144
+ }
145
+ if (namespace) {
146
+ info['namespace'] = namespace;
147
+ }
148
+ const calcViewItem = {
149
+ type: artifact_management_base_1.ItemType.CalculationView,
150
+ name: calcViewName,
151
+ ref: filePath,
152
+ path: filePath,
153
+ tags: itemTags,
154
+ links: links,
155
+ info,
156
+ };
157
+ items.push(calcViewItem);
158
+ }
159
+ }
160
+ catch (e) {
161
+ // no-op
162
+ }
163
+ return items;
164
+ }
165
+ static async getDetail(fs, filePath) {
166
+ artifact_management_base_1.getLogger().trace(`CalculationViewColumnReader.getDetails() - ${filePath}`);
167
+ const absolutePath = path.join(fs.rootPath, filePath);
168
+ let xml;
169
+ try {
170
+ xml = await fs.readTextFile(absolutePath, true);
171
+ }
172
+ catch (e) {
173
+ artifact_management_base_1.getLogger().warn(`failed to get XML content - ${absolutePath}`, e);
174
+ return null;
175
+ }
176
+ const viewModel = new model_1.ViewModel();
177
+ // 1. parse XML file, get output column names, without data type(int/varchar)
178
+ // which data source is output column from
179
+ CalculationViewXmlParser_1.default.parseScenario(xml, viewModel, false, false);
180
+ const isAssociation = false;
181
+ // 2. get details info of data sources, by data source name
182
+ // from HANA backend, from a deployed entity(cds/table/view)
183
+ await exports.ProxyResolver.resolve(fs, viewModel, isAssociation);
184
+ // 3. map data type(int/varchar) in step2 to object in step1
185
+ CalculationViewXmlParser_1.default.propagateDataTypeToDefaultNode(viewModel.columnView);
186
+ const defaultNode = viewModel.columnView.getDefaultNode();
187
+ if (defaultNode.isStarJoin()) {
188
+ let sharedDimensionsCount = 0;
189
+ defaultNode.inputs.foreach(input => {
190
+ if (input.getSource() instanceof model_1.Entity) {
191
+ sharedDimensionsCount++;
192
+ }
193
+ });
194
+ artifact_management_base_1.getLogger().trace(`StarJoin node, shared dimensions count: ${sharedDimensionsCount}`);
195
+ }
196
+ artifact_management_base_1.getLogger().trace(`private elements count: ${defaultNode.elements.count()}`);
197
+ return viewModel;
198
+ }
199
+ static viewModelToItem(viewModel, file) {
200
+ const elements = [];
201
+ if (viewModel.columnView.getDefaultNode().isStarJoin()) {
202
+ viewModel.columnView.getDefaultNode().inputs.foreach(input => {
203
+ if (input.getSource() instanceof model_1.Entity) {
204
+ const sharedDimension = input.getSource();
205
+ sharedDimension === null || sharedDimension === void 0 ? void 0 : sharedDimension.elements.foreach(element => {
206
+ elements.push(element);
207
+ });
208
+ }
209
+ });
210
+ }
211
+ viewModel.columnView.getDefaultNode().elements.foreach(element => {
212
+ if (element.measureType === undefined) {
213
+ elements.push(element);
214
+ }
215
+ });
216
+ viewModel.columnView.getDefaultNode().elements.foreach(element => {
217
+ if (element.measureType === model_1.MeasureType.CALCULATED_MEASURE) {
218
+ elements.push(element);
219
+ }
220
+ });
221
+ viewModel.columnView.getDefaultNode().elements.foreach(element => {
222
+ if (element.measureType === model_1.MeasureType.COUNTER) {
223
+ elements.push(element);
224
+ }
225
+ });
226
+ viewModel.columnView.getDefaultNode().elements.foreach(element => {
227
+ if (element.measureType === model_1.MeasureType.RESTRICTION) {
228
+ elements.push(element);
229
+ }
230
+ });
231
+ const columns = elements.map(element => {
232
+ var _a, _b, _c, _d;
233
+ return ({
234
+ name: element.name,
235
+ type: (_a = element.inlineType) === null || _a === void 0 ? void 0 : _a.primitiveType,
236
+ length: (_b = element.inlineType) === null || _b === void 0 ? void 0 : _b.length,
237
+ precision: (_c = element.inlineType) === null || _c === void 0 ? void 0 : _c.precision,
238
+ scale: (_d = element.inlineType) === null || _d === void 0 ? void 0 : _d.scale,
239
+ });
240
+ });
241
+ const calcViewItem = {
242
+ type: artifact_management_base_1.ItemType.CalculationView,
243
+ name: viewModel.columnView.id,
244
+ ref: file,
245
+ path: file,
246
+ tags: Array.from(this.itemTags),
247
+ // links: links,
248
+ info: {
249
+ dataCategory: viewModel.columnView.dataCategory,
250
+ exposedColumns: columns,
251
+ },
252
+ };
253
+ return calcViewItem;
254
+ }
255
+ }
256
+ exports.default = CalculationViewItemReader;
257
+ CalculationViewItemReader.itemTags = [artifact_management_base_1.Tag.Item, artifact_management_base_1.Tag.CalculationView];
258
+ exports.ProxyResolver = {
259
+ async resolve(fs, rootModel, isAssociation) {
260
+ return this._resolveEntities(fs, rootModel, isAssociation);
261
+ },
262
+ async _resolveEntities(fs, rootModel, isAssociation) {
263
+ const promises = [];
264
+ rootModel._entities.foreach(entity => {
265
+ if (entity.isProxy === true || entity.isLoadFromXML === true) {
266
+ promises.push(new Promise(async (resolve, reject) => {
267
+ try {
268
+ const entityDetail = await ProjectApiGeneralReader.getDetailByName(fs, entity.id);
269
+ let columns = [];
270
+ if (entityDetail) {
271
+ columns = entityDetail.columns;
272
+ }
273
+ processElements(columns, entity);
274
+ resolve();
275
+ }
276
+ catch (e) {
277
+ artifact_management_base_1.getLogger().error(`error when resolving: ${entity.id}`, e);
278
+ reject(e);
279
+ }
280
+ }));
281
+ }
282
+ });
283
+ return Promise.all(promises);
284
+ },
285
+ };
286
+ const processElements = (columnsArray, entity) => {
287
+ var _a, _b, _c, _d;
288
+ for (const column of columnsArray) {
289
+ const elementAttributes = {
290
+ name: column.name,
291
+ };
292
+ const element = entity.createOrMergeElement(elementAttributes);
293
+ const primitiveType = (_a = column.inlineType) === null || _a === void 0 ? void 0 : _a.primitiveType;
294
+ const length = (_b = column.inlineType) === null || _b === void 0 ? void 0 : _b.length;
295
+ const precision = (_c = column.inlineType) === null || _c === void 0 ? void 0 : _c.precision;
296
+ const scale = (_d = column.inlineType) === null || _d === void 0 ? void 0 : _d.scale;
297
+ const simpleTypeAttributes = {
298
+ primitiveType,
299
+ length,
300
+ precision,
301
+ scale,
302
+ };
303
+ element.isProxy = false;
304
+ element.createOrMergeSimpleType(simpleTypeAttributes);
305
+ }
306
+ };
307
+ class ProjectApiGeneralReader {
308
+ static async getDetailByName(fs, entityName) {
309
+ const cdsEntityDetail = await this.getCdsEntityDetail(fs, entityName);
310
+ if (cdsEntityDetail !== null) {
311
+ return cdsEntityDetail;
312
+ }
313
+ const calcView = await this.getCalculationViewDetail(fs, entityName);
314
+ if (calcView) {
315
+ return calcView;
316
+ }
317
+ return null;
318
+ }
319
+ static async getCdsEntityDetail(fs, entityName) {
320
+ const capApi = new artifact_management_base_1.CapApi(fs, ['.']);
321
+ await capApi.load();
322
+ for (const entity of capApi.entities()) {
323
+ const entityNameParts = entity.name.split(/\./);
324
+ const entityNameCds = entityNameParts[entityNameParts.length - 1];
325
+ if (entityNameCds === entityName) {
326
+ const columns = [];
327
+ for (const elementEntry of Object.entries(entity.elements)) {
328
+ const cdsElement = elementEntry[1];
329
+ let primitiveType;
330
+ let length = cdsElement.length;
331
+ const precision = cdsElement.precision;
332
+ const scale = cdsElement.scale;
333
+ const element = new model_1.Element({
334
+ name: cdsElement.name,
335
+ });
336
+ // data type mapping:
337
+ // https://help.sap.com/docs/SAP_HANA_PLATFORM/09b6623836854766b682356393c6c416/cf394efd3fb4400f9c09d10315028515.html
338
+ switch (cdsElement.type) {
339
+ case 'cds.UUID':
340
+ primitiveType = model_1.PrimitiveType.NVARCHAR;
341
+ length = 36;
342
+ break;
343
+ case 'cds.Binary':
344
+ primitiveType = model_1.PrimitiveType.VARBINARY;
345
+ break;
346
+ case 'cds.LargeBinary':
347
+ primitiveType = model_1.PrimitiveType.BLOB;
348
+ break;
349
+ case 'cds.Boolean':
350
+ primitiveType = model_1.PrimitiveType.BOOLEAN;
351
+ break;
352
+ case 'cds.Date':
353
+ primitiveType = model_1.PrimitiveType.DATE;
354
+ break;
355
+ case 'cds.DateTime':
356
+ primitiveType = model_1.PrimitiveType.SECONDDATE;
357
+ break;
358
+ case 'cds.Time':
359
+ primitiveType = model_1.PrimitiveType.TIME;
360
+ break;
361
+ case 'cds.Timestamp':
362
+ primitiveType = model_1.PrimitiveType.TIMESTAMP;
363
+ break;
364
+ case 'cds.Integer':
365
+ primitiveType = model_1.PrimitiveType.INTEGER;
366
+ break;
367
+ case 'cds.Integer64':
368
+ primitiveType = model_1.PrimitiveType.BIGINT;
369
+ break;
370
+ case 'cds.Decimal':
371
+ primitiveType = model_1.PrimitiveType.DECIMAL;
372
+ // in Calculation view editor and HRTT-service API,
373
+ // `length` field is wrongly used to hold decimal's precision
374
+ length = cdsElement.precision;
375
+ break;
376
+ case 'cds.Double':
377
+ primitiveType = model_1.PrimitiveType.DOUBLE;
378
+ break;
379
+ case 'cds.LargeString':
380
+ primitiveType = model_1.PrimitiveType.NCLOB;
381
+ break;
382
+ case 'cds.String':
383
+ primitiveType = model_1.PrimitiveType.NVARCHAR;
384
+ break;
385
+ default:
386
+ // unknown data type, no-op
387
+ }
388
+ element.createOrMergeSimpleType({
389
+ primitiveType,
390
+ length,
391
+ precision,
392
+ scale,
393
+ });
394
+ columns.push(element);
395
+ }
396
+ return {
397
+ type: model_1.EntityType.DATABASE_TABLE,
398
+ columns,
399
+ };
400
+ }
401
+ }
402
+ return null;
403
+ }
404
+ static async getCalculationViewDetail(fs, entityName) {
405
+ const calcViewFilePath = await this.getCalculationViewFile(entityName, fs);
406
+ if (calcViewFilePath) {
407
+ const viewModel = await CalculationViewItemReader.getDetail(fs, calcViewFilePath);
408
+ if (viewModel !== null) {
409
+ const columns = [];
410
+ if (viewModel.columnView.getDefaultNode().isStarJoin()) {
411
+ viewModel._entities.foreach(entity => {
412
+ if (entity instanceof model_1.Entity) {
413
+ entity.elements.foreach(element => columns.push(element));
414
+ }
415
+ });
416
+ }
417
+ const entityElements = viewModel.columnView.getDefaultNode().elements;
418
+ entityElements.foreach((element) => columns.push(element));
419
+ return {
420
+ type: model_1.EntityType.CALCULATION_VIEW,
421
+ columns,
422
+ };
423
+ }
424
+ }
425
+ return null;
426
+ }
427
+ static async getCalculationViewFile(calcViewName, fs) {
428
+ const pattern = '**/src/**/*.hdbcalculationview';
429
+ const calcViewPaths = await fs.glob(pattern, { onlyFiles: true });
430
+ const itemReader = new CalculationViewItemReader();
431
+ const calcViewItems = await itemReader.getDetails({
432
+ fs,
433
+ matchedFiles: {
434
+ [pattern]: calcViewPaths,
435
+ },
436
+ });
437
+ for (const calcViewItem of calcViewItems) {
438
+ if (calcViewItem.name === calcViewName) {
439
+ return calcViewItem.ref;
440
+ }
441
+ }
442
+ return '';
443
+ }
444
+ }
445
+ exports.ProjectApiGeneralReader = ProjectApiGeneralReader;
446
+ //# sourceMappingURL=CalculationViewItemReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalculationViewItemReader.js","sourceRoot":"","sources":["../../../../../../src/plugins/cap/readers/calculation-view/CalculationViewItemReader.ts"],"names":[],"mappings":"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"}