@sap-ux/fiori-annotation-api 0.1.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.
- package/LICENSE +201 -0
- package/Readme.md +35 -0
- package/dist/avt/annotations.d.ts +72 -0
- package/dist/avt/annotations.d.ts.map +1 -0
- package/dist/avt/annotations.js +508 -0
- package/dist/avt/annotations.js.map +1 -0
- package/dist/avt/expressions.d.ts +13 -0
- package/dist/avt/expressions.d.ts.map +1 -0
- package/dist/avt/expressions.js +34 -0
- package/dist/avt/expressions.js.map +1 -0
- package/dist/avt/find.d.ts +39 -0
- package/dist/avt/find.d.ts.map +1 -0
- package/dist/avt/find.js +130 -0
- package/dist/avt/find.js.map +1 -0
- package/dist/avt/index.d.ts +9 -0
- package/dist/avt/index.d.ts.map +1 -0
- package/dist/avt/index.js +32 -0
- package/dist/avt/index.js.map +1 -0
- package/dist/avt/metadata.d.ts +10 -0
- package/dist/avt/metadata.d.ts.map +1 -0
- package/dist/avt/metadata.js +346 -0
- package/dist/avt/metadata.js.map +1 -0
- package/dist/avt/pointer.d.ts +12 -0
- package/dist/avt/pointer.d.ts.map +1 -0
- package/dist/avt/pointer.js +188 -0
- package/dist/avt/pointer.js.map +1 -0
- package/dist/avt/to-internal.d.ts +81 -0
- package/dist/avt/to-internal.d.ts.map +1 -0
- package/dist/avt/to-internal.js +340 -0
- package/dist/avt/to-internal.js.map +1 -0
- package/dist/avt/types.d.ts +3 -0
- package/dist/avt/types.d.ts.map +1 -0
- package/dist/avt/types.js +3 -0
- package/dist/avt/types.js.map +1 -0
- package/dist/avt/utils.d.ts +61 -0
- package/dist/avt/utils.d.ts.map +1 -0
- package/dist/avt/utils.js +87 -0
- package/dist/avt/utils.js.map +1 -0
- package/dist/cds/adapter.d.ts +112 -0
- package/dist/cds/adapter.d.ts.map +1 -0
- package/dist/cds/adapter.js +703 -0
- package/dist/cds/adapter.js.map +1 -0
- package/dist/cds/cds-compiler-tokens.d.ts +30 -0
- package/dist/cds/cds-compiler-tokens.d.ts.map +1 -0
- package/dist/cds/cds-compiler-tokens.js +57 -0
- package/dist/cds/cds-compiler-tokens.js.map +1 -0
- package/dist/cds/change.d.ts +347 -0
- package/dist/cds/change.d.ts.map +1 -0
- package/dist/cds/change.js +232 -0
- package/dist/cds/change.js.map +1 -0
- package/dist/cds/comments.d.ts +15 -0
- package/dist/cds/comments.d.ts.map +1 -0
- package/dist/cds/comments.js +56 -0
- package/dist/cds/comments.js.map +1 -0
- package/dist/cds/deletion.d.ts +59 -0
- package/dist/cds/deletion.d.ts.map +1 -0
- package/dist/cds/deletion.js +821 -0
- package/dist/cds/deletion.js.map +1 -0
- package/dist/cds/document.d.ts +52 -0
- package/dist/cds/document.d.ts.map +1 -0
- package/dist/cds/document.js +98 -0
- package/dist/cds/document.js.map +1 -0
- package/dist/cds/indent.d.ts +20 -0
- package/dist/cds/indent.d.ts.map +1 -0
- package/dist/cds/indent.js +86 -0
- package/dist/cds/indent.js.map +1 -0
- package/dist/cds/index.d.ts +3 -0
- package/dist/cds/index.d.ts.map +1 -0
- package/dist/cds/index.js +21 -0
- package/dist/cds/index.js.map +1 -0
- package/dist/cds/pointer.d.ts +23 -0
- package/dist/cds/pointer.d.ts.map +1 -0
- package/dist/cds/pointer.js +438 -0
- package/dist/cds/pointer.js.map +1 -0
- package/dist/cds/preprocessor.d.ts +12 -0
- package/dist/cds/preprocessor.d.ts.map +1 -0
- package/dist/cds/preprocessor.js +338 -0
- package/dist/cds/preprocessor.js.map +1 -0
- package/dist/cds/references.d.ts +35 -0
- package/dist/cds/references.d.ts.map +1 -0
- package/dist/cds/references.js +413 -0
- package/dist/cds/references.js.map +1 -0
- package/dist/cds/service.d.ts +11 -0
- package/dist/cds/service.d.ts.map +1 -0
- package/dist/cds/service.js +37 -0
- package/dist/cds/service.js.map +1 -0
- package/dist/cds/utils.d.ts +35 -0
- package/dist/cds/utils.d.ts.map +1 -0
- package/dist/cds/utils.js +75 -0
- package/dist/cds/utils.js.map +1 -0
- package/dist/cds/writer.d.ts +104 -0
- package/dist/cds/writer.d.ts.map +1 -0
- package/dist/cds/writer.js +1086 -0
- package/dist/cds/writer.js.map +1 -0
- package/dist/change-converter.d.ts +54 -0
- package/dist/change-converter.d.ts.map +1 -0
- package/dist/change-converter.js +639 -0
- package/dist/change-converter.js.map +1 -0
- package/dist/error.d.ts +35 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +64 -0
- package/dist/error.js.map +1 -0
- package/dist/fiori-service.d.ts +130 -0
- package/dist/fiori-service.d.ts.map +1 -0
- package/dist/fiori-service.js +362 -0
- package/dist/fiori-service.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/protected.d.ts +3 -0
- package/dist/protected.d.ts.map +1 -0
- package/dist/protected.js +11 -0
- package/dist/protected.js.map +1 -0
- package/dist/types/adapter.d.ts +46 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +3 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/change.d.ts +187 -0
- package/dist/types/change.d.ts.map +1 -0
- package/dist/types/change.js +52 -0
- package/dist/types/change.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +33 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/internal-change.d.ts +98 -0
- package/dist/types/internal-change.d.ts.map +1 -0
- package/dist/types/internal-change.js +18 -0
- package/dist/types/internal-change.js.map +1 -0
- package/dist/types/project-info.d.ts +6 -0
- package/dist/types/project-info.d.ts.map +1 -0
- package/dist/types/project-info.js +3 -0
- package/dist/types/project-info.js.map +1 -0
- package/dist/types/service.d.ts +27 -0
- package/dist/types/service.d.ts.map +1 -0
- package/dist/types/service.js +3 -0
- package/dist/types/service.js.map +1 -0
- package/dist/types/text-file.d.ts +12 -0
- package/dist/types/text-file.d.ts.map +1 -0
- package/dist/types/text-file.js +3 -0
- package/dist/types/text-file.js.map +1 -0
- package/dist/utils/constants.d.ts +2 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +24 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/indent.d.ts +10 -0
- package/dist/utils/indent.d.ts.map +1 -0
- package/dist/utils/indent.js +36 -0
- package/dist/utils/indent.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +16 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/path.d.ts +8 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +31 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/pointer.d.ts +11 -0
- package/dist/utils/pointer.d.ts.map +1 -0
- package/dist/utils/pointer.js +26 -0
- package/dist/utils/pointer.js.map +1 -0
- package/dist/utils/reference.d.ts +10 -0
- package/dist/utils/reference.d.ts.map +1 -0
- package/dist/utils/reference.js +20 -0
- package/dist/utils/reference.js.map +1 -0
- package/dist/utils/text-edits.d.ts +12 -0
- package/dist/utils/text-edits.d.ts.map +1 -0
- package/dist/utils/text-edits.js +29 -0
- package/dist/utils/text-edits.js.map +1 -0
- package/dist/vocabularies.d.ts +11 -0
- package/dist/vocabularies.d.ts.map +1 -0
- package/dist/vocabularies.js +26 -0
- package/dist/vocabularies.js.map +1 -0
- package/dist/xml/adapter.d.ts +85 -0
- package/dist/xml/adapter.d.ts.map +1 -0
- package/dist/xml/adapter.js +579 -0
- package/dist/xml/adapter.js.map +1 -0
- package/dist/xml/changes.d.ts +117 -0
- package/dist/xml/changes.d.ts.map +1 -0
- package/dist/xml/changes.js +34 -0
- package/dist/xml/changes.js.map +1 -0
- package/dist/xml/comments.d.ts +17 -0
- package/dist/xml/comments.d.ts.map +1 -0
- package/dist/xml/comments.js +49 -0
- package/dist/xml/comments.js.map +1 -0
- package/dist/xml/document.d.ts +11 -0
- package/dist/xml/document.d.ts.map +1 -0
- package/dist/xml/document.js +3 -0
- package/dist/xml/document.js.map +1 -0
- package/dist/xml/index.d.ts +3 -0
- package/dist/xml/index.d.ts.map +1 -0
- package/dist/xml/index.js +8 -0
- package/dist/xml/index.js.map +1 -0
- package/dist/xml/pointer.d.ts +10 -0
- package/dist/xml/pointer.d.ts.map +1 -0
- package/dist/xml/pointer.js +29 -0
- package/dist/xml/pointer.js.map +1 -0
- package/dist/xml/references.d.ts +9 -0
- package/dist/xml/references.d.ts.map +1 -0
- package/dist/xml/references.js +87 -0
- package/dist/xml/references.js.map +1 -0
- package/dist/xml/service.d.ts +12 -0
- package/dist/xml/service.d.ts.map +1 -0
- package/dist/xml/service.js +55 -0
- package/dist/xml/service.js.map +1 -0
- package/dist/xml/writer.d.ts +39 -0
- package/dist/xml/writer.d.ts.map +1 -0
- package/dist/xml/writer.js +855 -0
- package/dist/xml/writer.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preprocessChanges = void 0;
|
|
4
|
+
const odata_annotation_core_types_1 = require("@sap-ux/odata-annotation-core-types");
|
|
5
|
+
const cds_annotation_parser_1 = require("@sap-ux/cds-annotation-parser");
|
|
6
|
+
const change_1 = require("./change");
|
|
7
|
+
const pointer_1 = require("./pointer");
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
class ChangePreprocessor {
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param document - CDS document object.
|
|
15
|
+
* @param input - CDS document changes.
|
|
16
|
+
*/
|
|
17
|
+
constructor(document, input) {
|
|
18
|
+
this.document = document;
|
|
19
|
+
this.input = input;
|
|
20
|
+
this.commands = new Map();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Optimizes changes to remove duplicates and conflicting changes.
|
|
24
|
+
*
|
|
25
|
+
* @returns Optimized CDS document changes.
|
|
26
|
+
*/
|
|
27
|
+
run() {
|
|
28
|
+
this.removeDuplicates();
|
|
29
|
+
this.combineInsertsWithDeletions();
|
|
30
|
+
this.expandToCompoundAnnotations();
|
|
31
|
+
this.mergeDeletes();
|
|
32
|
+
const result = [];
|
|
33
|
+
for (let index = 0; index < this.input.length; index++) {
|
|
34
|
+
const change = this.input[index];
|
|
35
|
+
const command = this.commands.get(index);
|
|
36
|
+
if ((command === null || command === void 0 ? void 0 : command.type) === 'drop') {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
else if ((command === null || command === void 0 ? void 0 : command.type) === 'replace') {
|
|
40
|
+
result.push(...command.changes);
|
|
41
|
+
}
|
|
42
|
+
else if (command === undefined || (command === null || command === void 0 ? void 0 : command.type) === 'pick') {
|
|
43
|
+
result.push(change);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
removeDuplicates() {
|
|
49
|
+
for (let index = this.input.length - 1; index >= 0; index--) {
|
|
50
|
+
const currentChange = this.input[index];
|
|
51
|
+
if (!currentChange.type.startsWith('delete') &&
|
|
52
|
+
!currentChange.type.startsWith('replace') &&
|
|
53
|
+
currentChange.type !== change_1.UPDATE_PRIMITIVE_VALUE_CHANGE_TYPE &&
|
|
54
|
+
currentChange.type !== change_1.SET_FLAGS_CHANGE_TYPE) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
for (let j = 0; j < index; j++) {
|
|
58
|
+
const otherChange = this.input[j];
|
|
59
|
+
const isOtherChangeDestructive = otherChange.type.startsWith('delete') || otherChange.type.startsWith('replace');
|
|
60
|
+
if (index !== j &&
|
|
61
|
+
((currentChange.type === otherChange.type && currentChange.pointer === otherChange.pointer) ||
|
|
62
|
+
// if parent element is modified, child can't be modified => drop child changes
|
|
63
|
+
(isOtherChangeDestructive && isChildOf(otherChange.pointer, currentChange.pointer)))) {
|
|
64
|
+
this.commands.set(j, {
|
|
65
|
+
type: 'drop'
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else if (index !== j &&
|
|
69
|
+
isOtherChangeDestructive &&
|
|
70
|
+
// child property change is after parent property deletion => drop child change
|
|
71
|
+
isChildOf(currentChange.pointer, otherChange.pointer)) {
|
|
72
|
+
this.commands.set(index, {
|
|
73
|
+
type: 'drop'
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
mergeDeletes() {
|
|
80
|
+
var _a, _b;
|
|
81
|
+
var _c;
|
|
82
|
+
const deletionMap = {};
|
|
83
|
+
const insertionMap = {};
|
|
84
|
+
// optimize deletion changes
|
|
85
|
+
for (let index = 0; index < this.input.length; index++) {
|
|
86
|
+
const command = this.commands.get(index);
|
|
87
|
+
if ((command === null || command === void 0 ? void 0 : command.type) === 'drop') {
|
|
88
|
+
// if the change is already dropped it is not relevant for further processing
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const change = this.input[index];
|
|
92
|
+
if (change.type === change_1.DELETE_TARGET_CHANGE_TYPE) {
|
|
93
|
+
const deletionsInParent = ((_a = deletionMap[_c = change.pointer]) !== null && _a !== void 0 ? _a : (deletionMap[_c] = []));
|
|
94
|
+
deletionsInParent.push({
|
|
95
|
+
change,
|
|
96
|
+
index
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (change.type === change_1.DELETE_ANNOTATION_CHANGE_TYPE ||
|
|
100
|
+
change.type === change_1.DELETE_ANNOTATION_GROUP_CHANGE_TYPE ||
|
|
101
|
+
change.type === change_1.DELETE_EMBEDDED_ANNOTATION_CHANGE_TYPE ||
|
|
102
|
+
change.type === change_1.DELETE_RECORD_PROPERTY_CHANGE_TYPE) {
|
|
103
|
+
const parentPointer = change.pointer.split('/').slice(0, -2).join('/');
|
|
104
|
+
const realPointer = parentPointer === '' ? change.pointer : parentPointer;
|
|
105
|
+
const deletionsInParent = ((_b = deletionMap[realPointer]) !== null && _b !== void 0 ? _b : (deletionMap[realPointer] = []));
|
|
106
|
+
deletionsInParent.push({
|
|
107
|
+
change,
|
|
108
|
+
index
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
if (change.type === change_1.INSERT_RECORD_PROPERTY_CHANGE_TYPE ||
|
|
112
|
+
change.type === change_1.INSERT_EMBEDDED_ANNOTATION_CHANGE_TYPE ||
|
|
113
|
+
change.type === change_1.INSERT_ANNOTATION_CHANGE_TYPE) {
|
|
114
|
+
insertionMap[change.pointer] = true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
this.processDeletionMap(deletionMap, insertionMap);
|
|
118
|
+
}
|
|
119
|
+
processDeletionMap(deletionMap, insertionMap) {
|
|
120
|
+
while (Object.keys(deletionMap).length > 0) {
|
|
121
|
+
// picking longest pointer ensures that the deletion changes are bubbling up
|
|
122
|
+
const parentPointer = Object.keys(deletionMap).reduce((longest, pointer) => (longest.split('/').length < pointer.split('/').length ? pointer : longest), '/');
|
|
123
|
+
const [parent, grandParent, greatGrandParent] = (0, pointer_1.getAstNodesFromPointer)(this.document, parentPointer).reverse();
|
|
124
|
+
if ((parent === null || parent === void 0 ? void 0 : parent.type) === cds_annotation_parser_1.RECORD_TYPE) {
|
|
125
|
+
this.processRecordDeletion(parent, grandParent, greatGrandParent, parentPointer, deletionMap, insertionMap);
|
|
126
|
+
}
|
|
127
|
+
else if ((parent === null || parent === void 0 ? void 0 : parent.type) === odata_annotation_core_types_1.TARGET_TYPE) {
|
|
128
|
+
this.processTargetDeletion(parent, parentPointer, deletionMap, insertionMap);
|
|
129
|
+
}
|
|
130
|
+
else if ((parent === null || parent === void 0 ? void 0 : parent.type) === cds_annotation_parser_1.ANNOTATION_GROUP_TYPE && (grandParent === null || grandParent === void 0 ? void 0 : grandParent.type) === odata_annotation_core_types_1.TARGET_TYPE) {
|
|
131
|
+
this.processAnnotationGroupDeletion(parent, grandParent, parentPointer, deletionMap, insertionMap);
|
|
132
|
+
}
|
|
133
|
+
delete deletionMap[parentPointer];
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
processRecordDeletion(parent, grandParent, greatGrandParent, parentPointer, deletionMap, insertionMap) {
|
|
137
|
+
var _a;
|
|
138
|
+
const childPointers = new Set([
|
|
139
|
+
...parent.properties.map((_, i) => `${parentPointer}/properties/${i}`),
|
|
140
|
+
...((_a = parent.annotations) !== null && _a !== void 0 ? _a : []).map((_, i) => `${parentPointer}/annotations/${i}`)
|
|
141
|
+
]);
|
|
142
|
+
for (const indexedValue of deletionMap[parentPointer]) {
|
|
143
|
+
childPointers.delete(indexedValue.change.pointer);
|
|
144
|
+
}
|
|
145
|
+
if (childPointers.size === 0 && !insertionMap[parentPointer]) {
|
|
146
|
+
this.bubbleUpDeleteChange(deletionMap, grandParent, greatGrandParent, parentPointer);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
processTargetDeletion(parent, parentPointer, deletionMap, insertionMap) {
|
|
150
|
+
const childPointers = new Set([...parent.assignments.map((_, i) => `${parentPointer}/assignments/${i}`)]);
|
|
151
|
+
for (const indexedValue of deletionMap[parentPointer]) {
|
|
152
|
+
childPointers.delete(indexedValue.change.pointer);
|
|
153
|
+
}
|
|
154
|
+
if (childPointers.size === 0 && !insertionMap[parentPointer]) {
|
|
155
|
+
this.bubbleUpDeleteChange(deletionMap, parent, undefined, parentPointer);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
processAnnotationGroupDeletion(parent, grandParent, parentPointer, deletionMap, insertionMap) {
|
|
159
|
+
const childPointers = new Set([...parent.items.items.map((_, i) => `${parentPointer}/items/items/${i}`)]);
|
|
160
|
+
for (const indexedValue of deletionMap[parentPointer]) {
|
|
161
|
+
childPointers.delete(indexedValue.change.pointer);
|
|
162
|
+
}
|
|
163
|
+
if (childPointers.size === 0 && !insertionMap[parentPointer]) {
|
|
164
|
+
this.bubbleUpDeleteChange(deletionMap, parent, grandParent, parentPointer);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
bubbleUpDeleteChange(deletionMap, grandParent, greatGrandParent, parentPointer) {
|
|
168
|
+
// no more children => delete record
|
|
169
|
+
// propagate change of the parent up (if required)
|
|
170
|
+
// only skip for collection entries
|
|
171
|
+
var _a;
|
|
172
|
+
const lastChange = this.dropMergedDeletionChanges(deletionMap[parentPointer]);
|
|
173
|
+
if (lastChange === -1 || !grandParent) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const nextParentPointer = this.getBubbleUpParentPointer(grandParent, greatGrandParent, parentPointer);
|
|
177
|
+
const newChange = this.getMergedChange(grandParent, parentPointer, greatGrandParent);
|
|
178
|
+
if (!newChange) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (nextParentPointer) {
|
|
182
|
+
const deletionsInParent = ((_a = deletionMap[nextParentPointer]) !== null && _a !== void 0 ? _a : (deletionMap[nextParentPointer] = []));
|
|
183
|
+
deletionsInParent.push({
|
|
184
|
+
change: newChange,
|
|
185
|
+
index: lastChange
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
this.commands.set(lastChange, {
|
|
189
|
+
type: 'replace',
|
|
190
|
+
changes: [newChange]
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
getBubbleUpParentPointer(grandParent, greatGrandParent, parentPointer) {
|
|
194
|
+
if ((greatGrandParent === null || greatGrandParent === void 0 ? void 0 : greatGrandParent.type) === cds_annotation_parser_1.RECORD_TYPE) {
|
|
195
|
+
return parentPointer.split('/').slice(0, -3).join('/');
|
|
196
|
+
}
|
|
197
|
+
else if ((greatGrandParent === null || greatGrandParent === void 0 ? void 0 : greatGrandParent.type) === cds_annotation_parser_1.ANNOTATION_GROUP_ITEMS_TYPE) {
|
|
198
|
+
return parentPointer.split('/').slice(0, -4).join('/');
|
|
199
|
+
}
|
|
200
|
+
else if ((greatGrandParent === null || greatGrandParent === void 0 ? void 0 : greatGrandParent.type) === odata_annotation_core_types_1.TARGET_TYPE) {
|
|
201
|
+
if ((grandParent === null || grandParent === void 0 ? void 0 : grandParent.type) === cds_annotation_parser_1.ANNOTATION_GROUP_TYPE) {
|
|
202
|
+
return parentPointer.split('/').slice(0, -2).join('/');
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
return parentPointer.split('/').slice(0, -3).join('/');
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
getMergedChange(grandParent, parentPointer, greatGrandParent) {
|
|
211
|
+
const grandParentPointer = parentPointer.split('/').slice(0, -1).join('/');
|
|
212
|
+
if (grandParent.type === cds_annotation_parser_1.ANNOTATION_TYPE) {
|
|
213
|
+
if ((greatGrandParent === null || greatGrandParent === void 0 ? void 0 : greatGrandParent.type) === odata_annotation_core_types_1.TARGET_TYPE || (greatGrandParent === null || greatGrandParent === void 0 ? void 0 : greatGrandParent.type) === cds_annotation_parser_1.ANNOTATION_GROUP_ITEMS_TYPE) {
|
|
214
|
+
return (0, change_1.createDeleteAnnotationChange)(grandParentPointer);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
return (0, change_1.createDeleteEmbeddedChange)(grandParentPointer);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else if (grandParent.type === cds_annotation_parser_1.RECORD_PROPERTY_TYPE) {
|
|
221
|
+
return (0, change_1.createDeleteRecordPropertyChange)(grandParentPointer);
|
|
222
|
+
}
|
|
223
|
+
else if (grandParent.type === cds_annotation_parser_1.COLLECTION_TYPE) {
|
|
224
|
+
return (0, change_1.createDeleteRecordChange)(parentPointer);
|
|
225
|
+
}
|
|
226
|
+
else if (grandParent.type === odata_annotation_core_types_1.TARGET_TYPE) {
|
|
227
|
+
return (0, change_1.createDeleteTargetChange)(parentPointer);
|
|
228
|
+
}
|
|
229
|
+
else if (grandParent.type === cds_annotation_parser_1.ANNOTATION_GROUP_TYPE) {
|
|
230
|
+
return (0, change_1.createDeleteAnnotationGroupChange)(parentPointer);
|
|
231
|
+
}
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Avoid conflicting insert and deletion changes for the same position.
|
|
236
|
+
*/
|
|
237
|
+
combineInsertsWithDeletions() {
|
|
238
|
+
var _a;
|
|
239
|
+
// Inserts are usually merged together, so we need to replace the last insert of the batch for the same index
|
|
240
|
+
for (let i = 0; i < this.input.length; i++) {
|
|
241
|
+
const change = this.input[i];
|
|
242
|
+
const [parent] = (0, pointer_1.getAstNodesFromPointer)(this.document, change.pointer).reverse();
|
|
243
|
+
if (change.type !== change_1.INSERT_ANNOTATION_CHANGE_TYPE || (parent === null || parent === void 0 ? void 0 : parent.type) !== odata_annotation_core_types_1.TARGET_TYPE) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
// merge inserts and deletions
|
|
247
|
+
const index = (_a = change.index) !== null && _a !== void 0 ? _a : parent.assignments.length - 1;
|
|
248
|
+
const pointer = `${change.pointer}/assignments/${index}`;
|
|
249
|
+
const deletionChangeIndex = this.input.findIndex((c) => c.pointer === pointer && c.type === change_1.DELETE_ANNOTATION_CHANGE_TYPE);
|
|
250
|
+
const command = this.commands.get(deletionChangeIndex);
|
|
251
|
+
if ((command === null || command === void 0 ? void 0 : command.type) === 'drop') {
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
if (deletionChangeIndex !== -1) {
|
|
255
|
+
this.commands.set(i, {
|
|
256
|
+
type: 'replace',
|
|
257
|
+
changes: [(0, change_1.createReplaceNodeChange)(pointer, change.element)]
|
|
258
|
+
});
|
|
259
|
+
this.commands.set(deletionChangeIndex, {
|
|
260
|
+
type: 'drop'
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
expandToCompoundAnnotations() {
|
|
266
|
+
// Inserts are usually merged together, so we need to replace the last insert of the batch for the same index
|
|
267
|
+
const handledAssignments = new Set();
|
|
268
|
+
// we need to start from the end because the conversion change should come after last insert
|
|
269
|
+
for (let i = this.input.length - 1; i >= 0; i--) {
|
|
270
|
+
const change = this.input[i];
|
|
271
|
+
const [parent] = (0, pointer_1.getAstNodesFromPointer)(this.document, change.pointer).reverse();
|
|
272
|
+
if (change.type !== change_1.INSERT_ANNOTATION_CHANGE_TYPE || (parent === null || parent === void 0 ? void 0 : parent.type) !== odata_annotation_core_types_1.TARGET_TYPE) {
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
const command = this.commands.get(i);
|
|
276
|
+
if (command && command.type !== 'pick') {
|
|
277
|
+
// if the change is replaced or dropped we shouldn't do anything
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
if (!handledAssignments.has(change.pointer)) {
|
|
281
|
+
handledAssignments.add(change.pointer);
|
|
282
|
+
const deletion = this.input.find((c) => (c.type.startsWith('delete') || c.type.startsWith('replace')) &&
|
|
283
|
+
c.pointer.startsWith(change.pointer));
|
|
284
|
+
this.commands.set(i, {
|
|
285
|
+
type: 'replace',
|
|
286
|
+
changes: [change, (0, change_1.createConvertToCompoundAnnotationChange)(change.pointer, deletion === undefined)]
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
dropMergedDeletionChanges(index) {
|
|
292
|
+
let lastChange = -1;
|
|
293
|
+
for (const indexedValue of index) {
|
|
294
|
+
if (indexedValue.index > lastChange) {
|
|
295
|
+
lastChange = indexedValue.index;
|
|
296
|
+
}
|
|
297
|
+
this.commands.set(indexedValue.index, { type: 'drop' });
|
|
298
|
+
}
|
|
299
|
+
return lastChange;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Checks if pointer of first element is a child of the second one.
|
|
304
|
+
*
|
|
305
|
+
* @param child - Pointer to the child.
|
|
306
|
+
* @param parent - Pointer to the parent.
|
|
307
|
+
* @returns True if first pointer is a child of the second pointer.
|
|
308
|
+
*/
|
|
309
|
+
function isChildOf(child, parent) {
|
|
310
|
+
const childSegments = child.split('/');
|
|
311
|
+
const parentSegments = parent.split('/');
|
|
312
|
+
if (childSegments.length < parentSegments.length) {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
for (let index = 0; index < parentSegments.length; index++) {
|
|
316
|
+
const parentSegment = parentSegments[index];
|
|
317
|
+
const childSegment = childSegments[index];
|
|
318
|
+
if (childSegment !== parentSegment) {
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return true;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Prepares changes so that they can be processed sequentially without interfering with each other.
|
|
326
|
+
* This includes removing duplicates, merging deletions etc.
|
|
327
|
+
*
|
|
328
|
+
* @param document - CDS document.
|
|
329
|
+
* @param changes - CDS document changes.
|
|
330
|
+
* @returns Optimized CDS document changes.
|
|
331
|
+
*/
|
|
332
|
+
function preprocessChanges(document, changes) {
|
|
333
|
+
//
|
|
334
|
+
const preprocessor = new ChangePreprocessor(document, changes);
|
|
335
|
+
return preprocessor.run();
|
|
336
|
+
}
|
|
337
|
+
exports.preprocessChanges = preprocessChanges;
|
|
338
|
+
//# sourceMappingURL=preprocessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../../src/cds/preprocessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AliasInformation, Element, PathValue, Reference, Target as AnnotationFileTarget } from '@sap-ux/odata-annotation-core-types';
|
|
2
|
+
import type { MetadataService } from '@sap-ux/odata-entity-model';
|
|
3
|
+
import type { Document } from './document';
|
|
4
|
+
import type { ProjectInfo } from '../types';
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param projectRoot - Absolute path to the projects root.
|
|
8
|
+
* @param references - Reference objects.
|
|
9
|
+
* @param relativePath - Relative file path to be checked.
|
|
10
|
+
* @param name - Name of the imported object.
|
|
11
|
+
* @returns If the given reference is available in the document.
|
|
12
|
+
*/
|
|
13
|
+
export declare const isAvailable: (projectRoot: string, references: Reference[], relativePath?: string, name?: string) => boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Converts path to namespace qualified path.
|
|
16
|
+
*
|
|
17
|
+
* @param path - Input path value.
|
|
18
|
+
* @param aliasInfo - Documents alias information.
|
|
19
|
+
* @returns Namespace qualified path.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolvePath(path: PathValue, aliasInfo: AliasInformation): PathValue;
|
|
22
|
+
/**
|
|
23
|
+
* Get all missing references for target and its annotations.
|
|
24
|
+
*
|
|
25
|
+
* @param documents - URI to Document map.
|
|
26
|
+
* @param fileUri - Identification of current file (relative to project root).
|
|
27
|
+
* @param targetName - Annotation target name.
|
|
28
|
+
* @param targetOrElement - Internal representation of the target or subtree element.
|
|
29
|
+
* @param aliasInfo - Alias information for the document.
|
|
30
|
+
* @param metadataService - Metadata service.
|
|
31
|
+
* @param projectInfo - Data about applications in the project.
|
|
32
|
+
* @returns A set of missing references in the document.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getMissingRefs(documents: Map<string, Document>, fileUri: string, targetName: string, targetOrElement: AnnotationFileTarget | Element, aliasInfo: AliasInformation, metadataService: MetadataService, projectInfo: ProjectInfo): Set<string>;
|
|
35
|
+
//# sourceMappingURL=references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../src/cds/references.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,gBAAgB,EAEhB,OAAO,EACP,SAAS,EACT,SAAS,EACT,MAAM,IAAI,oBAAoB,EAGjC,MAAM,qCAAqC,CAAC;AAO7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAyR5C;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gBACP,MAAM,cACP,SAAS,EAAE,iBACR,MAAM,SACd,MAAM,KACd,OAeF,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAInF;AAmFD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,oBAAoB,GAAG,OAAO,EAC/C,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,GACzB,GAAG,CAAC,MAAM,CAAC,CA2Db"}
|