@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.
Files changed (211) hide show
  1. package/LICENSE +201 -0
  2. package/Readme.md +35 -0
  3. package/dist/avt/annotations.d.ts +72 -0
  4. package/dist/avt/annotations.d.ts.map +1 -0
  5. package/dist/avt/annotations.js +508 -0
  6. package/dist/avt/annotations.js.map +1 -0
  7. package/dist/avt/expressions.d.ts +13 -0
  8. package/dist/avt/expressions.d.ts.map +1 -0
  9. package/dist/avt/expressions.js +34 -0
  10. package/dist/avt/expressions.js.map +1 -0
  11. package/dist/avt/find.d.ts +39 -0
  12. package/dist/avt/find.d.ts.map +1 -0
  13. package/dist/avt/find.js +130 -0
  14. package/dist/avt/find.js.map +1 -0
  15. package/dist/avt/index.d.ts +9 -0
  16. package/dist/avt/index.d.ts.map +1 -0
  17. package/dist/avt/index.js +32 -0
  18. package/dist/avt/index.js.map +1 -0
  19. package/dist/avt/metadata.d.ts +10 -0
  20. package/dist/avt/metadata.d.ts.map +1 -0
  21. package/dist/avt/metadata.js +346 -0
  22. package/dist/avt/metadata.js.map +1 -0
  23. package/dist/avt/pointer.d.ts +12 -0
  24. package/dist/avt/pointer.d.ts.map +1 -0
  25. package/dist/avt/pointer.js +188 -0
  26. package/dist/avt/pointer.js.map +1 -0
  27. package/dist/avt/to-internal.d.ts +81 -0
  28. package/dist/avt/to-internal.d.ts.map +1 -0
  29. package/dist/avt/to-internal.js +340 -0
  30. package/dist/avt/to-internal.js.map +1 -0
  31. package/dist/avt/types.d.ts +3 -0
  32. package/dist/avt/types.d.ts.map +1 -0
  33. package/dist/avt/types.js +3 -0
  34. package/dist/avt/types.js.map +1 -0
  35. package/dist/avt/utils.d.ts +61 -0
  36. package/dist/avt/utils.d.ts.map +1 -0
  37. package/dist/avt/utils.js +87 -0
  38. package/dist/avt/utils.js.map +1 -0
  39. package/dist/cds/adapter.d.ts +112 -0
  40. package/dist/cds/adapter.d.ts.map +1 -0
  41. package/dist/cds/adapter.js +703 -0
  42. package/dist/cds/adapter.js.map +1 -0
  43. package/dist/cds/cds-compiler-tokens.d.ts +30 -0
  44. package/dist/cds/cds-compiler-tokens.d.ts.map +1 -0
  45. package/dist/cds/cds-compiler-tokens.js +57 -0
  46. package/dist/cds/cds-compiler-tokens.js.map +1 -0
  47. package/dist/cds/change.d.ts +347 -0
  48. package/dist/cds/change.d.ts.map +1 -0
  49. package/dist/cds/change.js +232 -0
  50. package/dist/cds/change.js.map +1 -0
  51. package/dist/cds/comments.d.ts +15 -0
  52. package/dist/cds/comments.d.ts.map +1 -0
  53. package/dist/cds/comments.js +56 -0
  54. package/dist/cds/comments.js.map +1 -0
  55. package/dist/cds/deletion.d.ts +59 -0
  56. package/dist/cds/deletion.d.ts.map +1 -0
  57. package/dist/cds/deletion.js +821 -0
  58. package/dist/cds/deletion.js.map +1 -0
  59. package/dist/cds/document.d.ts +52 -0
  60. package/dist/cds/document.d.ts.map +1 -0
  61. package/dist/cds/document.js +98 -0
  62. package/dist/cds/document.js.map +1 -0
  63. package/dist/cds/indent.d.ts +20 -0
  64. package/dist/cds/indent.d.ts.map +1 -0
  65. package/dist/cds/indent.js +86 -0
  66. package/dist/cds/indent.js.map +1 -0
  67. package/dist/cds/index.d.ts +3 -0
  68. package/dist/cds/index.d.ts.map +1 -0
  69. package/dist/cds/index.js +21 -0
  70. package/dist/cds/index.js.map +1 -0
  71. package/dist/cds/pointer.d.ts +23 -0
  72. package/dist/cds/pointer.d.ts.map +1 -0
  73. package/dist/cds/pointer.js +438 -0
  74. package/dist/cds/pointer.js.map +1 -0
  75. package/dist/cds/preprocessor.d.ts +12 -0
  76. package/dist/cds/preprocessor.d.ts.map +1 -0
  77. package/dist/cds/preprocessor.js +338 -0
  78. package/dist/cds/preprocessor.js.map +1 -0
  79. package/dist/cds/references.d.ts +35 -0
  80. package/dist/cds/references.d.ts.map +1 -0
  81. package/dist/cds/references.js +413 -0
  82. package/dist/cds/references.js.map +1 -0
  83. package/dist/cds/service.d.ts +11 -0
  84. package/dist/cds/service.d.ts.map +1 -0
  85. package/dist/cds/service.js +37 -0
  86. package/dist/cds/service.js.map +1 -0
  87. package/dist/cds/utils.d.ts +35 -0
  88. package/dist/cds/utils.d.ts.map +1 -0
  89. package/dist/cds/utils.js +75 -0
  90. package/dist/cds/utils.js.map +1 -0
  91. package/dist/cds/writer.d.ts +104 -0
  92. package/dist/cds/writer.d.ts.map +1 -0
  93. package/dist/cds/writer.js +1086 -0
  94. package/dist/cds/writer.js.map +1 -0
  95. package/dist/change-converter.d.ts +54 -0
  96. package/dist/change-converter.d.ts.map +1 -0
  97. package/dist/change-converter.js +639 -0
  98. package/dist/change-converter.js.map +1 -0
  99. package/dist/error.d.ts +35 -0
  100. package/dist/error.d.ts.map +1 -0
  101. package/dist/error.js +64 -0
  102. package/dist/error.js.map +1 -0
  103. package/dist/fiori-service.d.ts +130 -0
  104. package/dist/fiori-service.d.ts.map +1 -0
  105. package/dist/fiori-service.js +362 -0
  106. package/dist/fiori-service.js.map +1 -0
  107. package/dist/index.d.ts +5 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +25 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/protected.d.ts +3 -0
  112. package/dist/protected.d.ts.map +1 -0
  113. package/dist/protected.js +11 -0
  114. package/dist/protected.js.map +1 -0
  115. package/dist/types/adapter.d.ts +46 -0
  116. package/dist/types/adapter.d.ts.map +1 -0
  117. package/dist/types/adapter.js +3 -0
  118. package/dist/types/adapter.js.map +1 -0
  119. package/dist/types/change.d.ts +187 -0
  120. package/dist/types/change.d.ts.map +1 -0
  121. package/dist/types/change.js +52 -0
  122. package/dist/types/change.js.map +1 -0
  123. package/dist/types/index.d.ts +7 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +33 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/dist/types/internal-change.d.ts +98 -0
  128. package/dist/types/internal-change.d.ts.map +1 -0
  129. package/dist/types/internal-change.js +18 -0
  130. package/dist/types/internal-change.js.map +1 -0
  131. package/dist/types/project-info.d.ts +6 -0
  132. package/dist/types/project-info.d.ts.map +1 -0
  133. package/dist/types/project-info.js +3 -0
  134. package/dist/types/project-info.js.map +1 -0
  135. package/dist/types/service.d.ts +27 -0
  136. package/dist/types/service.d.ts.map +1 -0
  137. package/dist/types/service.js +3 -0
  138. package/dist/types/service.js.map +1 -0
  139. package/dist/types/text-file.d.ts +12 -0
  140. package/dist/types/text-file.d.ts.map +1 -0
  141. package/dist/types/text-file.js +3 -0
  142. package/dist/types/text-file.js.map +1 -0
  143. package/dist/utils/constants.d.ts +2 -0
  144. package/dist/utils/constants.d.ts.map +1 -0
  145. package/dist/utils/constants.js +24 -0
  146. package/dist/utils/constants.js.map +1 -0
  147. package/dist/utils/indent.d.ts +10 -0
  148. package/dist/utils/indent.d.ts.map +1 -0
  149. package/dist/utils/indent.js +36 -0
  150. package/dist/utils/indent.js.map +1 -0
  151. package/dist/utils/index.d.ts +7 -0
  152. package/dist/utils/index.d.ts.map +1 -0
  153. package/dist/utils/index.js +16 -0
  154. package/dist/utils/index.js.map +1 -0
  155. package/dist/utils/path.d.ts +8 -0
  156. package/dist/utils/path.d.ts.map +1 -0
  157. package/dist/utils/path.js +31 -0
  158. package/dist/utils/path.js.map +1 -0
  159. package/dist/utils/pointer.d.ts +11 -0
  160. package/dist/utils/pointer.d.ts.map +1 -0
  161. package/dist/utils/pointer.js +26 -0
  162. package/dist/utils/pointer.js.map +1 -0
  163. package/dist/utils/reference.d.ts +10 -0
  164. package/dist/utils/reference.d.ts.map +1 -0
  165. package/dist/utils/reference.js +20 -0
  166. package/dist/utils/reference.js.map +1 -0
  167. package/dist/utils/text-edits.d.ts +12 -0
  168. package/dist/utils/text-edits.d.ts.map +1 -0
  169. package/dist/utils/text-edits.js +29 -0
  170. package/dist/utils/text-edits.js.map +1 -0
  171. package/dist/vocabularies.d.ts +11 -0
  172. package/dist/vocabularies.d.ts.map +1 -0
  173. package/dist/vocabularies.js +26 -0
  174. package/dist/vocabularies.js.map +1 -0
  175. package/dist/xml/adapter.d.ts +85 -0
  176. package/dist/xml/adapter.d.ts.map +1 -0
  177. package/dist/xml/adapter.js +579 -0
  178. package/dist/xml/adapter.js.map +1 -0
  179. package/dist/xml/changes.d.ts +117 -0
  180. package/dist/xml/changes.d.ts.map +1 -0
  181. package/dist/xml/changes.js +34 -0
  182. package/dist/xml/changes.js.map +1 -0
  183. package/dist/xml/comments.d.ts +17 -0
  184. package/dist/xml/comments.d.ts.map +1 -0
  185. package/dist/xml/comments.js +49 -0
  186. package/dist/xml/comments.js.map +1 -0
  187. package/dist/xml/document.d.ts +11 -0
  188. package/dist/xml/document.d.ts.map +1 -0
  189. package/dist/xml/document.js +3 -0
  190. package/dist/xml/document.js.map +1 -0
  191. package/dist/xml/index.d.ts +3 -0
  192. package/dist/xml/index.d.ts.map +1 -0
  193. package/dist/xml/index.js +8 -0
  194. package/dist/xml/index.js.map +1 -0
  195. package/dist/xml/pointer.d.ts +10 -0
  196. package/dist/xml/pointer.d.ts.map +1 -0
  197. package/dist/xml/pointer.js +29 -0
  198. package/dist/xml/pointer.js.map +1 -0
  199. package/dist/xml/references.d.ts +9 -0
  200. package/dist/xml/references.d.ts.map +1 -0
  201. package/dist/xml/references.js +87 -0
  202. package/dist/xml/references.js.map +1 -0
  203. package/dist/xml/service.d.ts +12 -0
  204. package/dist/xml/service.d.ts.map +1 -0
  205. package/dist/xml/service.js +55 -0
  206. package/dist/xml/service.js.map +1 -0
  207. package/dist/xml/writer.d.ts +39 -0
  208. package/dist/xml/writer.d.ts.map +1 -0
  209. package/dist/xml/writer.js +855 -0
  210. package/dist/xml/writer.js.map +1 -0
  211. package/package.json +47 -0
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertPointer = exports.getAstNodesFromPointer = void 0;
4
+ const cds_annotation_parser_1 = require("@sap-ux/cds-annotation-parser");
5
+ const cds_odata_annotation_converter_1 = require("@sap-ux/cds-odata-annotation-converter");
6
+ const odata_annotation_core_1 = require("@sap-ux/odata-annotation-core");
7
+ const odata_annotation_core_types_1 = require("@sap-ux/odata-annotation-core-types");
8
+ const error_1 = require("../error");
9
+ const utils_1 = require("../utils");
10
+ /**
11
+ *
12
+ */
13
+ class Visitor {
14
+ constructor() {
15
+ this.containsFlattenedNodes = false;
16
+ this.inVocabularyGroup = false;
17
+ this.currentFlattenedSegmentIndexInPath = -1;
18
+ this.flattenedSegments = [];
19
+ }
20
+ /**
21
+ * Converts pointer from internal representation to CDS AST pointer.
22
+ *
23
+ * @param astNode - CDS document root.
24
+ * @param node - Internal representation root.
25
+ * @param pointer - Pointer segments.
26
+ * @returns Converted pointer.
27
+ */
28
+ document(astNode, node, pointer) {
29
+ const [segment, indexSegment, ...segments] = pointer;
30
+ const index = parseInt(indexSegment, 10);
31
+ if (!isNaN(index)) {
32
+ if (segment === 'targets') {
33
+ if (segments.length === 0) {
34
+ return {
35
+ pointer: [segment, indexSegment]
36
+ };
37
+ }
38
+ const result = this.target(astNode.targets[index], node.targets[index], segments);
39
+ if (result) {
40
+ result.pointer = [segment, indexSegment, ...result.pointer];
41
+ return result;
42
+ }
43
+ }
44
+ }
45
+ return {
46
+ pointer: []
47
+ };
48
+ }
49
+ target(astNode, node, pointer) {
50
+ if (astNode.type === cds_odata_annotation_converter_1.TARGET_TYPE) {
51
+ const [segment, indexSegment, ...segments] = pointer;
52
+ const index = parseInt(indexSegment, 10);
53
+ const nextGenericNode = node.terms[index];
54
+ if (segment === 'terms') {
55
+ if (nextGenericNode === null || nextGenericNode === void 0 ? void 0 : nextGenericNode.range) {
56
+ const assignmentIndex = findNodeIndexByRange(astNode.assignments, nextGenericNode.range);
57
+ const assignment = astNode.assignments[assignmentIndex];
58
+ if (assignmentIndex !== -1 && assignment) {
59
+ const result = this.assignment(assignment, nextGenericNode, segments);
60
+ if (result) {
61
+ result.pointer = ['assignments', assignmentIndex.toString(), ...result.pointer];
62
+ return result;
63
+ }
64
+ if (segments.length === 0) {
65
+ return {
66
+ pointer: ['assignments', assignmentIndex.toString()]
67
+ };
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ return undefined;
74
+ }
75
+ assignment(astNode, node, pointer) {
76
+ if (astNode.type === cds_annotation_parser_1.ANNOTATION_TYPE) {
77
+ const result = this.annotation(astNode, node, pointer);
78
+ if (result) {
79
+ return result;
80
+ }
81
+ else {
82
+ return undefined;
83
+ }
84
+ }
85
+ else if (astNode.type === cds_annotation_parser_1.ANNOTATION_GROUP_TYPE && node.range) {
86
+ const annotationIndex = findNodeIndexByRange(astNode.items.items, node.range);
87
+ const annotation = astNode.items.items[annotationIndex];
88
+ this.inVocabularyGroup = true;
89
+ const result = this.annotation(annotation, node, pointer);
90
+ if (result) {
91
+ result.pointer = ['items', 'items', annotationIndex.toString(), ...result.pointer];
92
+ return result;
93
+ }
94
+ else {
95
+ return {
96
+ pointer: ['items', 'items', annotationIndex.toString()]
97
+ };
98
+ }
99
+ }
100
+ return undefined;
101
+ }
102
+ annotation(astNode, node, pointer, embedded = false) {
103
+ const termSegmentLength = this.inVocabularyGroup && !embedded ? 1 : 2;
104
+ if (astNode.term.segments.length > termSegmentLength && this.flattenedSegments.length === 0) {
105
+ this.flattenedSegments = astNode.term.segments.slice(termSegmentLength).map((segment) => segment.value);
106
+ this.containsFlattenedNodes = true;
107
+ this.currentFlattenedSegmentIndexInPath = termSegmentLength - 1;
108
+ }
109
+ const [segment, indexSegment, ...segments] = pointer;
110
+ const index = parseInt(indexSegment, 10);
111
+ if (!isNaN(index) && segment === 'content' && astNode.value) {
112
+ const annotationFileNode = node.content[index];
113
+ if (annotationFileNode) {
114
+ if (this.flattenedSegments.length > 0) {
115
+ const result = this.flattenedAnnotation(astNode, node.content[index], segments);
116
+ if (result) {
117
+ result.pointer = [...result.pointer];
118
+ return result;
119
+ }
120
+ return {
121
+ pointer: []
122
+ };
123
+ }
124
+ else {
125
+ const result = this.value(astNode.value, annotationFileNode, segments);
126
+ if (result) {
127
+ result.pointer = ['value', ...result.pointer];
128
+ return result;
129
+ }
130
+ }
131
+ return {
132
+ pointer: ['value']
133
+ };
134
+ }
135
+ }
136
+ if (segment === 'attributes' && indexSegment === "Qualifier" /* Edm.Qualifier */ && astNode.qualifier) {
137
+ return {
138
+ pointer: ['qualifier']
139
+ };
140
+ }
141
+ if (segment === 'attributes' && indexSegment === "Term" /* Edm.Term */ && astNode.term) {
142
+ return {
143
+ pointer: ['term']
144
+ };
145
+ }
146
+ return undefined;
147
+ }
148
+ value(astNode, node, pointer) {
149
+ var _a, _b;
150
+ if (astNode.type === cds_annotation_parser_1.COLLECTION_TYPE && node.type === odata_annotation_core_types_1.ELEMENT_TYPE && node.name === "Collection" /* Edm.Collection */) {
151
+ const [segment, indexSegment, ...segments] = pointer;
152
+ const index = parseInt(indexSegment, 10);
153
+ if (!isNaN(index)) {
154
+ const nextAstNode = astNode.items[index];
155
+ if (segment === 'content' && nextAstNode) {
156
+ const result = this.value(nextAstNode, node.content[index], segments);
157
+ if (result) {
158
+ result.pointer = ['items', indexSegment, ...result.pointer];
159
+ return result;
160
+ }
161
+ return {
162
+ pointer: ['items', indexSegment]
163
+ };
164
+ }
165
+ }
166
+ else if (pointer.length === 0) {
167
+ return {
168
+ pointer: []
169
+ };
170
+ }
171
+ }
172
+ if (astNode.type === cds_annotation_parser_1.RECORD_TYPE && node.type === odata_annotation_core_types_1.ELEMENT_TYPE && node.name === "Record" /* Edm.Record */) {
173
+ const [segment, indexSegment, ...segments] = pointer;
174
+ const index = parseInt(indexSegment, 10);
175
+ if (!isNaN(index)) {
176
+ const nextGenericNode = node.content[index];
177
+ if (segment === 'content' && nextGenericNode.type === odata_annotation_core_types_1.ELEMENT_TYPE && nextGenericNode.range) {
178
+ const propertyIndex = findNodeIndexByRange(astNode.properties, nextGenericNode.range);
179
+ const property = astNode.properties[propertyIndex];
180
+ if (nextGenericNode.name === "PropertyValue" /* Edm.PropertyValue */ && property) {
181
+ const result = this.recordProperty(property, nextGenericNode, segments);
182
+ if (result) {
183
+ result.pointer = ['properties', propertyIndex.toString(), ...result.pointer];
184
+ return result;
185
+ }
186
+ return {
187
+ pointer: ['properties', propertyIndex.toString()]
188
+ };
189
+ }
190
+ if (nextGenericNode.name === "Annotation" /* Edm.Annotation */ && astNode.annotations) {
191
+ const annotationIndex = findNodeIndexByRange(astNode.annotations, nextGenericNode.range);
192
+ const annotation = (_a = astNode.annotations) === null || _a === void 0 ? void 0 : _a[annotationIndex];
193
+ if (annotation) {
194
+ const result = this.annotation(annotation, nextGenericNode, segments, true);
195
+ if (result) {
196
+ result.pointer = ['annotations', annotationIndex.toString(), ...result.pointer];
197
+ return result;
198
+ }
199
+ return {
200
+ pointer: ['annotations', annotationIndex.toString()]
201
+ };
202
+ }
203
+ }
204
+ }
205
+ }
206
+ else if (indexSegment === "Type" /* Edm.Type */ && segment === 'attributes') {
207
+ const recordTypePropIdx = astNode.properties.findIndex((prop) => prop.name.type === 'path' && prop.name.value === '$Type');
208
+ if (recordTypePropIdx > -1) {
209
+ return {
210
+ pointer: ['properties', recordTypePropIdx.toString(), 'value']
211
+ };
212
+ }
213
+ }
214
+ }
215
+ if (astNode.type === cds_annotation_parser_1.RECORD_TYPE && node.type === odata_annotation_core_types_1.ELEMENT_TYPE && node.name !== "Record" /* Edm.Record */) {
216
+ if (node.range) {
217
+ const valuePropertyIndex = astNode.properties.findIndex((prop) => prop.name.value === cds_annotation_parser_1.ReservedProperties.Value);
218
+ const valueProperty = astNode.properties[valuePropertyIndex];
219
+ if (valueProperty) {
220
+ if (node.name === "Annotation" /* Edm.Annotation */ && astNode.annotations) {
221
+ const annotationIndex = findNodeIndexByRange(astNode.annotations, node.range);
222
+ const annotation = (_b = astNode.annotations) === null || _b === void 0 ? void 0 : _b[annotationIndex];
223
+ if (annotation) {
224
+ const result = this.annotation(annotation, node, pointer, true);
225
+ if (result) {
226
+ result.pointer = ['annotations', annotationIndex.toString(), ...result.pointer];
227
+ return result;
228
+ }
229
+ return {
230
+ pointer: ['annotations', annotationIndex.toString()]
231
+ };
232
+ }
233
+ }
234
+ else if (valueProperty.value) {
235
+ const result = this.value(valueProperty.value, node, pointer);
236
+ if (result) {
237
+ result.pointer = ['properties', valuePropertyIndex.toString(), 'value', ...result.pointer];
238
+ return result;
239
+ }
240
+ return {
241
+ pointer: ['properties', valuePropertyIndex.toString()]
242
+ };
243
+ }
244
+ }
245
+ }
246
+ }
247
+ if (node.type === odata_annotation_core_types_1.ELEMENT_TYPE && utils_1.PRIMITIVE_TYPE_NAMES.includes(node.name)) {
248
+ return {
249
+ pointer: []
250
+ };
251
+ }
252
+ return undefined;
253
+ }
254
+ recordProperty(astNode, node, pointer) {
255
+ if (node.type !== odata_annotation_core_types_1.ELEMENT_TYPE || node.name !== "PropertyValue" /* Edm.PropertyValue */) {
256
+ return undefined;
257
+ }
258
+ const [segment, indexSegment, ...segments] = pointer;
259
+ if (astNode.name.segments.length > 1 && this.flattenedSegments.length === 0) {
260
+ this.flattenedSegments = astNode.name.segments.map((segment) => segment.value);
261
+ this.currentFlattenedSegmentIndexInPath = 0;
262
+ this.containsFlattenedNodes = true;
263
+ }
264
+ if (segment === 'attributes') {
265
+ if (indexSegment === "Property" /* Edm.Property */) {
266
+ if (this.flattenedSegments.length > 0) {
267
+ return {
268
+ pointer: ['name', 'segments', this.currentFlattenedSegmentIndexInPath.toString()]
269
+ };
270
+ }
271
+ return {
272
+ pointer: ['name']
273
+ };
274
+ }
275
+ }
276
+ else if (segment === 'content') {
277
+ const index = parseInt(indexSegment, 10);
278
+ if (!isNaN(index) && segment === 'content' && astNode.value) {
279
+ if (this.flattenedSegments.length > 1) {
280
+ const result = this.flattenedProperty(astNode, node.content[index], segments);
281
+ if (result) {
282
+ result.pointer = [...result.pointer];
283
+ return result;
284
+ }
285
+ }
286
+ else {
287
+ const result = this.value(astNode.value, node.content[index], segments);
288
+ if (result) {
289
+ result.pointer = ['value', ...result.pointer];
290
+ return result;
291
+ }
292
+ }
293
+ return {
294
+ pointer: ['value']
295
+ };
296
+ }
297
+ }
298
+ return undefined;
299
+ }
300
+ flattenedProperty(astNode, node, pointer) {
301
+ if (node.type !== odata_annotation_core_types_1.ELEMENT_TYPE || node.name !== "Record" /* Edm.Record */) {
302
+ return undefined;
303
+ }
304
+ const [segment, indexSegment, ...segments] = pointer;
305
+ if (segment === 'content') {
306
+ const index = parseInt(indexSegment, 10);
307
+ if (!isNaN(index) && segment === 'content' && astNode.value) {
308
+ this.flattenedSegments.shift();
309
+ this.currentFlattenedSegmentIndexInPath++;
310
+ const result = this.flattenedSegments.length > 0
311
+ ? this.recordProperty(astNode, node.content[index], segments)
312
+ : this.value(astNode.value, node.content[index], segments);
313
+ if (result) {
314
+ result.pointer = [...result.pointer];
315
+ return result;
316
+ }
317
+ return {
318
+ pointer: []
319
+ };
320
+ }
321
+ }
322
+ else if (segment === 'attributes' && indexSegment === "Property" /* Edm.Property */) {
323
+ return {
324
+ pointer: ['name', 'segments', this.currentFlattenedSegmentIndexInPath.toString()]
325
+ };
326
+ }
327
+ return undefined;
328
+ }
329
+ flattenedAnnotation(astNode, node, pointer) {
330
+ if (node.type !== odata_annotation_core_types_1.ELEMENT_TYPE || node.name !== "Record" /* Edm.Record */) {
331
+ return undefined;
332
+ }
333
+ const [segment, indexSegment, ...segments] = pointer;
334
+ if (segment === 'content') {
335
+ const index = parseInt(indexSegment, 10);
336
+ if (!isNaN(index) && segment === 'content') {
337
+ this.flattenedSegments.shift();
338
+ this.currentFlattenedSegmentIndexInPath++;
339
+ const propertyValue = node.content[index];
340
+ if (segment.length === 0) {
341
+ return undefined;
342
+ }
343
+ return this.flattenedAnnotationPropertyValue(astNode, propertyValue, segments);
344
+ }
345
+ }
346
+ return undefined;
347
+ }
348
+ flattenedAnnotationPropertyValue(astNode, node, pointer) {
349
+ if ((node === null || node === void 0 ? void 0 : node.type) !== odata_annotation_core_types_1.ELEMENT_TYPE || node.name !== "PropertyValue" /* Edm.PropertyValue */ || !astNode.value) {
350
+ return undefined;
351
+ }
352
+ const [segment, indexSegment, ...segments] = pointer;
353
+ const index = parseInt(indexSegment, 10);
354
+ if (!Number.isNaN(index) && segment === 'content') {
355
+ const next = node.content[index];
356
+ if ((next === null || next === void 0 ? void 0 : next.type) !== odata_annotation_core_types_1.ELEMENT_TYPE) {
357
+ return undefined;
358
+ }
359
+ const result = this.flattenedSegments.length > 0
360
+ ? this.flattenedAnnotation(astNode, next, segments)
361
+ : this.value(astNode.value, next, segments);
362
+ if (result) {
363
+ result.pointer = ['value', ...result.pointer];
364
+ return result;
365
+ }
366
+ }
367
+ else if (segment === 'attributes' && indexSegment === "Property" /* Edm.Property */) {
368
+ return {
369
+ pointer: ['term', 'segments', this.currentFlattenedSegmentIndexInPath.toString()]
370
+ };
371
+ }
372
+ return undefined;
373
+ }
374
+ }
375
+ function findNodeIndexByRange(nodes, range) {
376
+ for (let index = 0; index < nodes.length; index++) {
377
+ const node = nodes[index];
378
+ if (!node.range) {
379
+ continue;
380
+ }
381
+ if ((0, odata_annotation_core_1.rangeContained)(node.range, range)) {
382
+ return index;
383
+ }
384
+ }
385
+ return -1;
386
+ }
387
+ /**
388
+ * Finds a matching node to the pointer.
389
+ *
390
+ * @param document - CDS document root.
391
+ * @param pointer - Pointer matching a node in the document.
392
+ * @returns All the nodes in path to the matching node.
393
+ */
394
+ function getAstNodesFromPointer(document, pointer) {
395
+ const [, ...segments] = pointer.split('/');
396
+ const path = [];
397
+ if (segments.length === 0) {
398
+ return [];
399
+ }
400
+ let node = document;
401
+ for (const segment of segments) {
402
+ const next = node === null || node === void 0 ? void 0 : node[segment];
403
+ if (next) {
404
+ if (!Array.isArray(next)) {
405
+ path.push(next);
406
+ }
407
+ node = next;
408
+ }
409
+ else {
410
+ // TODO: check if we should throw an error here
411
+ return path;
412
+ }
413
+ }
414
+ return path;
415
+ }
416
+ exports.getAstNodesFromPointer = getAstNodesFromPointer;
417
+ /**
418
+ * Converts pointer from internal representation to CDS AST pointer.
419
+ *
420
+ * @param annotationFile - Internal representation root.
421
+ * @param pointer - Pointer pointing to a node in the internal representation tree.
422
+ * @param cdsDocument - Internal representation root.
423
+ * @returns Converted pointer.
424
+ */
425
+ function convertPointer(annotationFile, pointer, cdsDocument) {
426
+ const [prefix, ...segments] = pointer.split('/');
427
+ if (prefix !== '') {
428
+ throw new error_1.ApiError(`Invalid pointer! ${pointer} must be absolute pointer starting with "/".`);
429
+ }
430
+ const visitor = new Visitor();
431
+ const result = visitor.document(cdsDocument, annotationFile, segments);
432
+ if (result.pointer.length === 0) {
433
+ throw new error_1.ApiError(`Could not convert pointer! ${pointer} must lead to existing node in annotation file.`);
434
+ }
435
+ return Object.assign(Object.assign({}, result), { pointer: ['', ...result.pointer].join('/'), containsFlattenedNodes: visitor.containsFlattenedNodes });
436
+ }
437
+ exports.convertPointer = convertPointer;
438
+ //# sourceMappingURL=pointer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointer.js","sourceRoot":"","sources":["../../src/cds/pointer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CDSDocumentChange } from './change';
2
+ import type { CDSDocument } from './document';
3
+ /**
4
+ * Prepares changes so that they can be processed sequentially without interfering with each other.
5
+ * This includes removing duplicates, merging deletions etc.
6
+ *
7
+ * @param document - CDS document.
8
+ * @param changes - CDS document changes.
9
+ * @returns Optimized CDS document changes.
10
+ */
11
+ export declare function preprocessChanges(document: CDSDocument, changes: CDSDocumentChange[]): CDSDocumentChange[];
12
+ //# sourceMappingURL=preprocessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../../src/cds/preprocessor.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,YAAY,CAAC;AAwZvD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAI1G"}