@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,413 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMissingRefs = exports.resolvePath = exports.isAvailable = void 0;
4
+ const url_1 = require("url");
5
+ const path_1 = require("path");
6
+ const os_1 = require("os");
7
+ const odata_annotation_core_types_1 = require("@sap-ux/odata-annotation-core-types");
8
+ const odata_annotation_core_1 = require("@sap-ux/odata-annotation-core");
9
+ const error_1 = require("../error");
10
+ const utils_1 = require("./utils");
11
+ function buildDefinitionIndex(metadataService, files) {
12
+ /**
13
+ * Mapping annotation path to file uri where the annotation is defined
14
+ */
15
+ const definitionIndex = new Map();
16
+ const virtualProperties = new Map();
17
+ for (const file of files) {
18
+ for (const target of file.targets) {
19
+ const metadataElement = metadataService.getMetadataElement(target.name);
20
+ if (!metadataElement) {
21
+ continue;
22
+ }
23
+ buildDefinitionIndexForTarget(definitionIndex, virtualProperties, metadataElement, target, file.uri);
24
+ }
25
+ }
26
+ return { definitionIndex, virtualProperties };
27
+ }
28
+ function buildDefinitionIndexForTarget(definitionIndex, virtualProperties, metadataElement, target, fileUri) {
29
+ var _a;
30
+ for (const annotation of target.terms) {
31
+ const qualifier = (_a = annotation.attributes["Qualifier" /* Edm.Qualifier */]) === null || _a === void 0 ? void 0 : _a.value;
32
+ const termName = annotation.attributes["Term" /* Edm.Term */].value;
33
+ const suffix = qualifier ? `#${qualifier}` : '';
34
+ const path = `${metadataElement.path}/@${termName}${suffix}`;
35
+ if (annotation.range) {
36
+ // only consider previously existing annotations
37
+ registerReference(definitionIndex, fileUri, path);
38
+ collectAnnotations(definitionIndex, fileUri, path, annotation);
39
+ if (termName === 'Analytics.AggregatedProperties') {
40
+ const collection = annotation.content.find((element) => element.type === odata_annotation_core_types_1.ELEMENT_TYPE && element.name === "Collection" /* Edm.Collection */);
41
+ if (!collection) {
42
+ continue;
43
+ }
44
+ collectVirtualProperties(virtualProperties, fileUri, metadataElement, collection);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ function collectVirtualProperties(virtualProperties, fileUri, metadataElement, collection) {
50
+ for (const record of collection.content) {
51
+ if (record.type === odata_annotation_core_types_1.ELEMENT_TYPE && record.name === "Record" /* Edm.Record */) {
52
+ const nameElement = record.content.find((element) => {
53
+ var _a;
54
+ return element.type === odata_annotation_core_types_1.ELEMENT_TYPE &&
55
+ element.name === "PropertyValue" /* Edm.PropertyValue */ &&
56
+ ((_a = element.attributes["Property" /* Edm.Property */]) === null || _a === void 0 ? void 0 : _a.value) === 'Name';
57
+ });
58
+ if (nameElement) {
59
+ const valueElement = nameElement.content.find((element) => element.type === odata_annotation_core_types_1.ELEMENT_TYPE && element.name === "String" /* Edm.String */);
60
+ if (valueElement) {
61
+ const textNode = valueElement.content.find((element) => element.type === odata_annotation_core_types_1.TEXT_TYPE);
62
+ virtualProperties.set(`${metadataElement.path}/${textNode === null || textNode === void 0 ? void 0 : textNode.text}`, fileUri);
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ function collectAnnotations(definitionIndex, fileUri, prefix, element) {
69
+ for (const child of element.content) {
70
+ if (child.type !== 'element') {
71
+ continue;
72
+ }
73
+ if (child.name === "Annotation" /* Edm.Annotation */) {
74
+ traverseAnnotation(definitionIndex, fileUri, prefix, child);
75
+ }
76
+ else if (child.name === "Record" /* Edm.Record */) {
77
+ traverseRecord(definitionIndex, fileUri, prefix, child);
78
+ }
79
+ else if (child.name === "Collection" /* Edm.Collection */) {
80
+ traverseCollection(definitionIndex, fileUri, prefix, child);
81
+ }
82
+ }
83
+ }
84
+ function traverseCollection(definitionIndex, fileUri, prefix, collection) {
85
+ const elements = collection.content.filter((node) => node.type === odata_annotation_core_types_1.ELEMENT_TYPE);
86
+ for (let i = 0; i < elements.length; i++) {
87
+ const element = elements[i];
88
+ const path = `${prefix}/${i.toString()}`;
89
+ if (element.range) {
90
+ // only consider previously existing annotations
91
+ registerReference(definitionIndex, fileUri, path);
92
+ for (const grandChild of element.content) {
93
+ if (grandChild.type === 'element') {
94
+ collectAnnotations(definitionIndex, fileUri, path, grandChild);
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ function traverseRecord(definitionIndex, fileUri, prefix, element) {
101
+ var _a;
102
+ for (const property of element.content) {
103
+ if (property.type !== 'element' || property.name !== "PropertyValue" /* Edm.PropertyValue */) {
104
+ continue;
105
+ }
106
+ const name = (_a = property.attributes["Property" /* Edm.Property */]) === null || _a === void 0 ? void 0 : _a.value;
107
+ const suffix = name !== null && name !== void 0 ? name : '';
108
+ const path = `${prefix}/${suffix}`;
109
+ if (element.range) {
110
+ // only consider previously existing annotations
111
+ registerReference(definitionIndex, fileUri, path);
112
+ for (const grandChild of property.content) {
113
+ if (grandChild.type === 'element') {
114
+ collectAnnotations(definitionIndex, fileUri, path, grandChild);
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ function traverseAnnotation(definitionIndex, fileUri, prefix, element) {
121
+ var _a;
122
+ const qualifier = (_a = element.attributes["Qualifier" /* Edm.Qualifier */]) === null || _a === void 0 ? void 0 : _a.value;
123
+ const suffix = qualifier ? `#${qualifier}` : '';
124
+ const path = `${prefix}@${element.attributes["Term" /* Edm.Term */].value}${suffix}`;
125
+ if (element.range) {
126
+ // only consider previously existing annotations
127
+ registerReference(definitionIndex, fileUri, path);
128
+ collectAnnotations(definitionIndex, fileUri, path, element);
129
+ }
130
+ }
131
+ function registerReference(definitionIndex, fileUri, path) {
132
+ const entry = definitionIndex.get(path);
133
+ // We can't point to ghost files, we need to use the real url
134
+ const normalizedUri = fileUri.startsWith(odata_annotation_core_types_1.GHOST_FILENAME_PREFIX) ? fileUri.substring(1) : fileUri;
135
+ if (entry) {
136
+ entry.push(normalizedUri);
137
+ }
138
+ else {
139
+ definitionIndex.set(path, [normalizedUri]);
140
+ }
141
+ }
142
+ function getPathsInElement(element, basePath) {
143
+ const paths = [];
144
+ // add all paths in attributes
145
+ Object.keys(element.attributes || {}).forEach((attrName) => {
146
+ if (attrName.indexOf('Path') >= 0) {
147
+ let path = element.attributes[attrName].value;
148
+ if (!path.startsWith('/')) {
149
+ path = basePath + '/' + path;
150
+ }
151
+ paths.push({ path });
152
+ }
153
+ });
154
+ // add all paths from content
155
+ (element.content || []).forEach((entry) => {
156
+ if (entry.type === 'text' && element.name.indexOf('Path') >= 0) {
157
+ let path = entry.text;
158
+ if (!path.startsWith('/')) {
159
+ path = basePath + '/' + path;
160
+ }
161
+ paths.push({ path });
162
+ }
163
+ else if (entry.type === 'element') {
164
+ paths.push(...getPathsInElement(entry, basePath));
165
+ }
166
+ });
167
+ return paths;
168
+ }
169
+ function getPathsInTarget(target, metadata, aliasInfo) {
170
+ var _a;
171
+ const paths = [];
172
+ paths.push({ path: target.name });
173
+ // find base path (for relative paths in annotation value) for target
174
+ const pathBaseMdElement = (0, odata_annotation_core_1.getPathBaseMetadataElement)(metadata, target.name, aliasInfo);
175
+ const pathBase = (_a = pathBaseMdElement === null || pathBaseMdElement === void 0 ? void 0 : pathBaseMdElement.path) !== null && _a !== void 0 ? _a : target.name;
176
+ target.terms.forEach((term) => {
177
+ getPathsInAnnotation(term, paths, target.name, pathBase);
178
+ });
179
+ return paths;
180
+ }
181
+ function getPathsInAnnotation(element, paths, targetName, pathBase) {
182
+ // new target term qualifier combination in this file ? then avoid duplicates in unrelated layers!
183
+ const termName = (0, odata_annotation_core_1.getElementAttributeValue)(element, "Term" /* Edm.Term */);
184
+ const qualifier = (0, odata_annotation_core_1.getElementAttributeValue)(element, "Qualifier" /* Edm.Qualifier */);
185
+ // new target/term/qualifier: add path pointing to this term, then using statement will be created if this combination exists elsewhere
186
+ paths.push({
187
+ path: targetName + '/@' + termName + (qualifier ? '#' + qualifier : ''),
188
+ forOverriding: true
189
+ });
190
+ paths.push(...getPathsInElement(element, pathBase));
191
+ }
192
+ function addAvailableNamespaces(fileUri, namespaceMap, projectRoot, documents, fileUrisDone = new Set()) {
193
+ var _a;
194
+ if (!fileUrisDone.has(fileUri)) {
195
+ fileUrisDone.add(fileUri);
196
+ let filePath = (0, url_1.pathToFileURL)((0, path_1.join)(projectRoot, fileUri)).toString();
197
+ if ((0, os_1.platform)() === 'win32' && !documents.has(filePath)) {
198
+ // we can't find the document by uri, it is likely that the drive letter case does not match
199
+ // temporary workaround, this should not be needed once URIs are used everywhere
200
+ let driveLetter = filePath[8];
201
+ if (driveLetter === driveLetter.toLowerCase()) {
202
+ driveLetter = driveLetter.toUpperCase();
203
+ }
204
+ else {
205
+ driveLetter = driveLetter.toLowerCase();
206
+ }
207
+ filePath = filePath.slice(0, 8) + driveLetter + filePath.slice(9);
208
+ }
209
+ const annotationFileInternal = (_a = documents.get(filePath)) === null || _a === void 0 ? void 0 : _a.annotationFile;
210
+ if (annotationFileInternal) {
211
+ const references = annotationFileInternal.references;
212
+ references
213
+ .filter((reference) => !!(reference === null || reference === void 0 ? void 0 : reference.uri))
214
+ .forEach((reference) => {
215
+ const refUri = reference === null || reference === void 0 ? void 0 : reference.uri;
216
+ if (refUri) {
217
+ const relativeString = (0, path_1.relative)(projectRoot, refUri);
218
+ namespaceMap.set(reference.name + '|' + relativeString, {
219
+ uri: refUri,
220
+ name: reference.name,
221
+ type: 'reference'
222
+ });
223
+ addAvailableNamespaces(relativeString, namespaceMap, projectRoot, documents, fileUrisDone);
224
+ }
225
+ });
226
+ }
227
+ }
228
+ }
229
+ /**
230
+ *
231
+ * @param projectRoot - Absolute path to the projects root.
232
+ * @param references - Reference objects.
233
+ * @param relativePath - Relative file path to be checked.
234
+ * @param name - Name of the imported object.
235
+ * @returns If the given reference is available in the document.
236
+ */
237
+ const isAvailable = (projectRoot, references, relativePath, name) => {
238
+ const matchedReferences = references.filter((reference) => {
239
+ let absoluteUri = (0, path_1.join)(projectRoot, relativePath !== null && relativePath !== void 0 ? relativePath : '');
240
+ if (absoluteUri && process.platform === 'win32') {
241
+ absoluteUri = absoluteUri.charAt(0).toUpperCase() + absoluteUri.slice(1);
242
+ }
243
+ if (!reference.uri || reference.uri !== absoluteUri) {
244
+ return false; // different file
245
+ }
246
+ else if (reference.name && name && !name.startsWith(reference.name)) {
247
+ return false; // imported namespace does not include requested name
248
+ }
249
+ else {
250
+ return true;
251
+ }
252
+ });
253
+ return matchedReferences.length > 0;
254
+ };
255
+ exports.isAvailable = isAvailable;
256
+ /**
257
+ * Converts path to namespace qualified path.
258
+ *
259
+ * @param path - Input path value.
260
+ * @param aliasInfo - Documents alias information.
261
+ * @returns Namespace qualified path.
262
+ */
263
+ function resolvePath(path, aliasInfo) {
264
+ const segments = path.split('/');
265
+ const segmentsNoAlias = segments.map((segment) => (0, odata_annotation_core_1.getSegmentWithoutAlias)(aliasInfo, segment));
266
+ return segmentsNoAlias.join('/');
267
+ }
268
+ exports.resolvePath = resolvePath;
269
+ function checkSegments(fileUri, references, missingReferences, segments, metadataService, projectRoot) {
270
+ var _a;
271
+ let currentMdElementPath;
272
+ for (const segment of segments) {
273
+ let metadataElement = metadataService.getMetadataElement(segment);
274
+ if (currentMdElementPath) {
275
+ metadataElement = metadataService.getMetadataElement(currentMdElementPath + '/' + segment);
276
+ }
277
+ if (!metadataElement) {
278
+ break;
279
+ }
280
+ currentMdElementPath = metadataElement.path;
281
+ const importUri = metadataElement.importUri;
282
+ if (![fileUri, undefined].includes(importUri) &&
283
+ !(0, exports.isAvailable)(projectRoot, references, metadataElement === null || metadataElement === void 0 ? void 0 : metadataElement.importUri, metadataElement.originalName)) {
284
+ missingReferences.add(importUri);
285
+ }
286
+ if (metadataService.getEdmTargetKinds(currentMdElementPath).includes('NavigationProperty')) {
287
+ // navigation property : continue with target entity
288
+ const structuredType = metadataElement === null || metadataElement === void 0 ? void 0 : metadataElement.structuredType;
289
+ currentMdElementPath = structuredType ? (_a = metadataService.getMetadataElement(structuredType)) === null || _a === void 0 ? void 0 : _a.path : '';
290
+ }
291
+ }
292
+ return currentMdElementPath;
293
+ }
294
+ function checkMetadataDefinitions(fileUri, aliasInfo, references, missingReferences, virtualProperties, entry, metadataService, projectRoot) {
295
+ const atIndex = entry.path.indexOf('@');
296
+ // check path segments involving only metadata
297
+ const metadataPath = atIndex >= 0 ? entry.path.substring(0, Math.max(0, atIndex - 1)) : entry.path;
298
+ const fullyQualifiedPath = resolvePath(metadataPath, aliasInfo);
299
+ const metadataSegments = fullyQualifiedPath.split('/');
300
+ const virtualPropertyUri = virtualProperties.get(fullyQualifiedPath);
301
+ if (virtualPropertyUri &&
302
+ !(0, exports.isAvailable)(projectRoot, references, (0, path_1.relative)(projectRoot, (0, url_1.fileURLToPath)(virtualPropertyUri)), fullyQualifiedPath)) {
303
+ missingReferences.add(virtualPropertyUri);
304
+ }
305
+ const currentMdElementPath = checkSegments(fileUri, references, missingReferences, metadataSegments, metadataService, projectRoot);
306
+ let result;
307
+ if (atIndex !== -1) {
308
+ const termCast = entry.path.slice(atIndex - 1);
309
+ const target = entry.forOverriding ? fullyQualifiedPath : currentMdElementPath;
310
+ result = `${target}${termCast}`;
311
+ }
312
+ return result;
313
+ }
314
+ /**
315
+ * Get all missing references for target and its annotations.
316
+ *
317
+ * @param documents - URI to Document map.
318
+ * @param fileUri - Identification of current file (relative to project root).
319
+ * @param targetName - Annotation target name.
320
+ * @param targetOrElement - Internal representation of the target or subtree element.
321
+ * @param aliasInfo - Alias information for the document.
322
+ * @param metadataService - Metadata service.
323
+ * @param projectInfo - Data about applications in the project.
324
+ * @returns A set of missing references in the document.
325
+ */
326
+ function getMissingRefs(documents, fileUri, targetName, targetOrElement, aliasInfo, metadataService, projectInfo) {
327
+ var _a;
328
+ const relativePath = (0, path_1.relative)(projectInfo.projectRoot, (0, url_1.fileURLToPath)(fileUri));
329
+ const { appName, apps, projectRoot } = projectInfo;
330
+ const missingReferences = new Set();
331
+ // get all paths contained in target and its annotations
332
+ let paths = [];
333
+ if (targetOrElement.type === 'target') {
334
+ paths = getPathsInTarget(targetOrElement, metadataService, aliasInfo);
335
+ }
336
+ else {
337
+ const pathBaseMdElement = (0, odata_annotation_core_1.getPathBaseMetadataElement)(metadataService, targetName, aliasInfo);
338
+ const pathBase = (_a = pathBaseMdElement === null || pathBaseMdElement === void 0 ? void 0 : pathBaseMdElement.path) !== null && _a !== void 0 ? _a : targetName;
339
+ if (targetOrElement.name === "Annotation" /* Edm.Annotation */) {
340
+ getPathsInAnnotation(targetOrElement, paths, targetName, pathBase);
341
+ }
342
+ else {
343
+ paths = getPathsInElement(targetOrElement, pathBase);
344
+ }
345
+ }
346
+ // get all namespaces available for current file
347
+ const nameSpacesMap = new Map();
348
+ addAvailableNamespaces(relativePath, nameSpacesMap, projectRoot, documents);
349
+ const references = [...nameSpacesMap.values()];
350
+ const annotationFiles = [...documents].map(([, document]) => document.annotationFile).reverse();
351
+ const { definitionIndex, virtualProperties } = buildDefinitionIndex(metadataService, annotationFiles);
352
+ for (const entry of paths) {
353
+ const annotationPath = checkMetadataDefinitions(relativePath, aliasInfo, references, missingReferences, virtualProperties, entry, metadataService, projectRoot);
354
+ const uris = findDefinitionForEntry(projectRoot, definitionIndex, annotationPath);
355
+ const addToMissing = hasMissingUri(uris, relativePath, references, projectRoot);
356
+ // if not: collect as missing using statement
357
+ if (!addToMissing) {
358
+ continue;
359
+ }
360
+ const missingUri = uris[0];
361
+ const unifiedMissingUri = (0, utils_1.toUnifiedUri)(missingUri);
362
+ const crossAppFolder = getCrossAppFolder(unifiedMissingUri, appName, apps);
363
+ if (crossAppFolder && entry.forOverriding) {
364
+ // cross app using statement needed for overriding annotation: this will most likely cause cds compiler error -> throw exception
365
+ const message = `Aborted to avoid cross app using statement in '${relativePath}' pointing to '${crossAppFolder}'`;
366
+ throw new error_1.ApiError(message, error_1.ApiErrorCode.General);
367
+ }
368
+ if (!crossAppFolder) {
369
+ // no cross app using statements allowed - ignore missing reference required for referenced path in annotation (we tolerate potential warning message)
370
+ missingReferences.add(missingUri);
371
+ }
372
+ }
373
+ return missingReferences;
374
+ }
375
+ exports.getMissingRefs = getMissingRefs;
376
+ function findDefinitionForEntry(projectRoot, definitionIndex, annotationPath) {
377
+ const uris = [];
378
+ if (annotationPath) {
379
+ const references = definitionIndex.get(annotationPath);
380
+ if (references) {
381
+ const relativePath = (0, path_1.relative)(projectRoot, (0, url_1.fileURLToPath)(references[0]));
382
+ uris.push(relativePath);
383
+ }
384
+ }
385
+ return uris;
386
+ }
387
+ function getCrossAppFolder(uri, appName, apps) {
388
+ let crossAppFolder = '';
389
+ if (!isSubDirectory((0, utils_1.toUnifiedUri)(`${appName}/`), uri)) {
390
+ (apps || []).forEach((appFolder) => {
391
+ if (isSubDirectory((0, utils_1.toUnifiedUri)(`${appFolder}/`), uri)) {
392
+ crossAppFolder = appFolder;
393
+ }
394
+ });
395
+ }
396
+ return crossAppFolder;
397
+ }
398
+ function isSubDirectory(parent, child) {
399
+ const relativePath = (0, path_1.relative)(parent, child);
400
+ return !!(relativePath && !relativePath.startsWith('..') && !(0, path_1.isAbsolute)(relativePath));
401
+ }
402
+ function hasMissingUri(uris, fileUri, references, projectRoot) {
403
+ if (uris.length === 0) {
404
+ return false;
405
+ }
406
+ for (const uri of uris) {
407
+ if (uri === fileUri || (0, exports.isAvailable)(projectRoot, references, uri)) {
408
+ return false;
409
+ }
410
+ }
411
+ return true;
412
+ }
413
+ //# sourceMappingURL=references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/cds/references.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { CDSService } from '../types';
2
+ /**
3
+ * Creates CDS service structure.
4
+ *
5
+ * @param projectRoot - Absolute path of the project.
6
+ * @param serviceName - Name of the CDS service.
7
+ * @param clearCache - Flag indicating if the CDS file resolution cache should be cleared.
8
+ * @returns CDS service structure.
9
+ */
10
+ export declare function getCDSService(projectRoot: string, serviceName: string, clearCache?: boolean): Promise<CDSService>;
11
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cds/service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,UAAU,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAUrH"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getCDSService = void 0;
13
+ const url_1 = require("url");
14
+ const ux_cds_compiler_facade_1 = require("@sap/ux-cds-compiler-facade");
15
+ /**
16
+ * Creates CDS service structure.
17
+ *
18
+ * @param projectRoot - Absolute path of the project.
19
+ * @param serviceName - Name of the CDS service.
20
+ * @param clearCache - Flag indicating if the CDS file resolution cache should be cleared.
21
+ * @returns CDS service structure.
22
+ */
23
+ function getCDSService(projectRoot, serviceName, clearCache = false) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const files = yield (0, ux_cds_compiler_facade_1.getCdsFiles)(projectRoot, clearCache);
26
+ const serviceFiles = files.map((uri) => {
27
+ return { uri: (0, url_1.pathToFileURL)(uri).toString(), isReadOnly: uri.indexOf('node_modules') !== -1 };
28
+ });
29
+ return {
30
+ type: 'cap-cds',
31
+ serviceName,
32
+ serviceFiles: serviceFiles
33
+ };
34
+ });
35
+ }
36
+ exports.getCDSService = getCDSService;
37
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cds/service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAoC;AAEpC,wEAA0D;AAI1D;;;;;;;GAOG;AACH,SAAsB,aAAa,CAAC,WAAmB,EAAE,WAAmB,EAAE,UAAU,GAAG,KAAK;;QAC5F,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAW,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,EAAE;YAC7C,OAAO,EAAE,GAAG,EAAE,IAAA,mBAAa,EAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClG,CAAC,CAAC,CAAC;QACH,OAAO;YACH,IAAI,EAAE,SAAS;YACf,WAAW;YACX,YAAY,EAAE,YAAY;SAC7B,CAAC;IACN,CAAC;CAAA;AAVD,sCAUC"}
@@ -0,0 +1,35 @@
1
+ import type { CdsCompilerFacade } from '@sap/ux-cds-compiler-facade';
2
+ import type { Range } from '@sap-ux/odata-annotation-core-types';
3
+ import type { Annotation } from '@sap-ux/cds-annotation-parser';
4
+ import type { AstNode } from './document';
5
+ import type { CompilerToken } from './cds-compiler-tokens';
6
+ /**
7
+ * Normalizes URI.
8
+ *
9
+ * @param fileUri - URI as a string.
10
+ * @param removeGhostFilePrefix - Flag indicating if the ghost file prefix should be removed from the uri.
11
+ * @returns Normalized file URI.
12
+ */
13
+ export declare function toUnifiedUri(fileUri: string | undefined, removeGhostFilePrefix?: boolean): string;
14
+ /**
15
+ * Get token indices for the corresponding range.
16
+ *
17
+ * @param tokens - All tokens in the document.
18
+ * @param range - Range for which tokens will be matched.
19
+ * @returns Start and end token indices for the range.
20
+ */
21
+ export declare function getTokenRange(tokens: CompilerToken[], range: Range): {
22
+ start: number;
23
+ end: number;
24
+ };
25
+ /**
26
+ * Finds annotation in assignment based on AST node.
27
+ *
28
+ * @param facade - CDS compiler facade instance.
29
+ * @param node - AST node.
30
+ * @param parent - Parent AST node.
31
+ * @param greatGrandParent - Great grand parent node.
32
+ * @returns Annotation node and EDMX path.
33
+ */
34
+ export declare function getAnnotationFromAssignment(facade: CdsCompilerFacade, node: AstNode, parent?: AstNode, greatGrandParent?: AstNode): [Annotation, string];
35
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cds/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAGjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAMhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,qBAAqB,UAAO,GAAG,MAAM,CAG9F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAgBnG;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACvC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,OAAO,EAChB,gBAAgB,CAAC,EAAE,OAAO,GAC3B,CAAC,UAAU,EAAE,MAAM,CAAC,CAStB"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAnnotationFromAssignment = exports.getTokenRange = exports.toUnifiedUri = void 0;
4
+ const ux_cds_compiler_facade_1 = require("@sap/ux-cds-compiler-facade");
5
+ const odata_annotation_core_types_1 = require("@sap-ux/odata-annotation-core-types");
6
+ const cds_annotation_parser_1 = require("@sap-ux/cds-annotation-parser");
7
+ const cds_odata_annotation_converter_1 = require("@sap-ux/cds-odata-annotation-converter");
8
+ const error_1 = require("../error");
9
+ /**
10
+ * Normalizes URI.
11
+ *
12
+ * @param fileUri - URI as a string.
13
+ * @param removeGhostFilePrefix - Flag indicating if the ghost file prefix should be removed from the uri.
14
+ * @returns Normalized file URI.
15
+ */
16
+ function toUnifiedUri(fileUri, removeGhostFilePrefix = true) {
17
+ const unifiedUri = (fileUri !== null && fileUri !== void 0 ? fileUri : '').replace(/\\/g, '/').replace(/\/\//g, '/');
18
+ return removeGhostFilePrefix ? unifiedUri.replace(odata_annotation_core_types_1.GHOST_FILENAME_PREFIX, '') : unifiedUri;
19
+ }
20
+ exports.toUnifiedUri = toUnifiedUri;
21
+ /**
22
+ * Get token indices for the corresponding range.
23
+ *
24
+ * @param tokens - All tokens in the document.
25
+ * @param range - Range for which tokens will be matched.
26
+ * @returns Start and end token indices for the range.
27
+ */
28
+ function getTokenRange(tokens, range) {
29
+ const start = tokens.findIndex((token) => token.line === range.start.line + 1 && token.column === range.start.character);
30
+ let end = -1;
31
+ if (start > -1) {
32
+ end = tokens
33
+ .slice(start)
34
+ .findIndex((token) => token.line > range.end.line + 1 ||
35
+ (token.line === range.end.line + 1 && token.column >= range.end.character));
36
+ end = start + end - 1;
37
+ }
38
+ return { start, end };
39
+ }
40
+ exports.getTokenRange = getTokenRange;
41
+ /**
42
+ * Finds annotation in assignment based on AST node.
43
+ *
44
+ * @param facade - CDS compiler facade instance.
45
+ * @param node - AST node.
46
+ * @param parent - Parent AST node.
47
+ * @param greatGrandParent - Great grand parent node.
48
+ * @returns Annotation node and EDMX path.
49
+ */
50
+ function getAnnotationFromAssignment(facade, node, parent, greatGrandParent) {
51
+ const [annotation, target] = findAnnotation(node, parent, greatGrandParent);
52
+ const { edmxPath } = facade.collectMetadataForAbsolutePath(target.name, target.kind, (0, ux_cds_compiler_facade_1.createMetadataCollector)(new Map(), facade));
53
+ return [annotation, edmxPath];
54
+ }
55
+ exports.getAnnotationFromAssignment = getAnnotationFromAssignment;
56
+ function findAnnotation(node, parent, greatGrandParent) {
57
+ if (node.type === cds_odata_annotation_converter_1.TARGET_TYPE) {
58
+ // if no assignment is specified we default to the first one
59
+ const assignment = node.assignments[0];
60
+ if (assignment) {
61
+ const annotation = (assignment === null || assignment === void 0 ? void 0 : assignment.type) === 'annotation-group' ? assignment.items.items[0] : assignment;
62
+ return [annotation, node];
63
+ }
64
+ }
65
+ else if ((node === null || node === void 0 ? void 0 : node.type) === cds_annotation_parser_1.ANNOTATION_TYPE) {
66
+ if ((parent === null || parent === void 0 ? void 0 : parent.type) === cds_odata_annotation_converter_1.TARGET_TYPE) {
67
+ return [node, parent];
68
+ }
69
+ else if ((greatGrandParent === null || greatGrandParent === void 0 ? void 0 : greatGrandParent.type) === cds_odata_annotation_converter_1.TARGET_TYPE && (parent === null || parent === void 0 ? void 0 : parent.type) === cds_annotation_parser_1.ANNOTATION_GROUP_ITEMS_TYPE) {
70
+ return [node, greatGrandParent];
71
+ }
72
+ }
73
+ throw new error_1.ApiError(`Could not find annotation in node of type ${node.type}.`, error_1.ApiErrorCode.General);
74
+ }
75
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cds/utils.ts"],"names":[],"mappings":"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"}