@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,508 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertAnnotationFile = void 0;
|
|
4
|
+
const odata_annotation_core_types_1 = require("@sap-ux/odata-annotation-core-types");
|
|
5
|
+
const odata_annotation_core_1 = require("@sap-ux/odata-annotation-core");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
/**
|
|
8
|
+
* Converts internal representation annotation files to AVT format.
|
|
9
|
+
*
|
|
10
|
+
* @param file - Internal representation root.
|
|
11
|
+
* @param serviceName - Service Name.
|
|
12
|
+
* @param options - Conversion options.
|
|
13
|
+
* @returns AVT annotations.
|
|
14
|
+
*/
|
|
15
|
+
function convertAnnotationFile(file, serviceName, options) {
|
|
16
|
+
var _a, _b, _c, _d;
|
|
17
|
+
if (!file.references) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
const annotations = [];
|
|
21
|
+
const namespaceMap = getNamespaceMap(file.references);
|
|
22
|
+
const namespace = file.uri.startsWith(odata_annotation_core_types_1.GHOST_FILENAME_PREFIX) || !file.namespace ? serviceName : (_b = (_a = file.namespace) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '';
|
|
23
|
+
const alias = (_d = (_c = file.namespace) === null || _c === void 0 ? void 0 : _c.alias) !== null && _d !== void 0 ? _d : '';
|
|
24
|
+
Object.freeze(namespaceMap);
|
|
25
|
+
for (let targetIndex = 0; targetIndex < file.targets.length; targetIndex++) {
|
|
26
|
+
const target = file.targets[targetIndex];
|
|
27
|
+
const cache = new Map();
|
|
28
|
+
const terms = [];
|
|
29
|
+
const origins = [];
|
|
30
|
+
const targetNamespaceMap = Object.assign(Object.assign({}, namespaceMap), { [namespace]: namespace });
|
|
31
|
+
if (alias) {
|
|
32
|
+
targetNamespaceMap[alias] = namespace;
|
|
33
|
+
}
|
|
34
|
+
const targetName = (0, utils_1.resolvePath)(targetNamespaceMap, namespace, target.name);
|
|
35
|
+
for (let termIndex = 0; termIndex < target.terms.length; termIndex++) {
|
|
36
|
+
const term = target.terms[termIndex];
|
|
37
|
+
const annotation = convertAnnotation(targetNamespaceMap, target.name, term, options);
|
|
38
|
+
const qualifier = annotation.qualifier ? '#' + annotation.qualifier : '';
|
|
39
|
+
const id = `${targetName}@${annotation.term}${qualifier}`;
|
|
40
|
+
const existingAnnotation = cache.get(id);
|
|
41
|
+
if ((options === null || options === void 0 ? void 0 : options.mergeSplitAnnotations) && existingAnnotation) {
|
|
42
|
+
mergeAnnotation(options.mergeMap, `${id}/0/0`, `${id}/${targetIndex}/${termIndex}`, existingAnnotation, annotation);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
cache.set(id, annotation);
|
|
46
|
+
terms.push(annotation);
|
|
47
|
+
}
|
|
48
|
+
origins.push(term.range);
|
|
49
|
+
}
|
|
50
|
+
const annotationList = {
|
|
51
|
+
target: targetName,
|
|
52
|
+
annotations: terms
|
|
53
|
+
};
|
|
54
|
+
if (options === null || options === void 0 ? void 0 : options.addOrigins) {
|
|
55
|
+
annotationList.origins = origins;
|
|
56
|
+
}
|
|
57
|
+
annotations.push(annotationList);
|
|
58
|
+
}
|
|
59
|
+
return annotations;
|
|
60
|
+
}
|
|
61
|
+
exports.convertAnnotationFile = convertAnnotationFile;
|
|
62
|
+
// split values in generic format will have duplicated structures e.g
|
|
63
|
+
// annotations -> multiple elements with matching Target/Term/Qualifier combination, but partial values
|
|
64
|
+
// records -> multiple PropertyValue elements with the same name, but partial values
|
|
65
|
+
// all of these values are flattened
|
|
66
|
+
function mergeAnnotation(mergeMap, targetPath, sourcePath, target, source) {
|
|
67
|
+
mergeAnnotationAnnotations(mergeMap, targetPath, sourcePath, target, source);
|
|
68
|
+
if (target.record && source.record) {
|
|
69
|
+
mergeRecord(mergeMap, targetPath, sourcePath, target.record, source.record, true);
|
|
70
|
+
}
|
|
71
|
+
else if (target.value && source.value) {
|
|
72
|
+
target.value = source.value;
|
|
73
|
+
}
|
|
74
|
+
else if (target.collection && source.collection) {
|
|
75
|
+
target.collection = source.collection;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function mergeRecord(mergeMap, targetPath, sourcePath, target, source, directTermValue) {
|
|
79
|
+
mergeRecordAnnotations(mergeMap, targetPath, sourcePath, target, source, directTermValue);
|
|
80
|
+
const offset = target.propertyValues.length;
|
|
81
|
+
const propertyName = directTermValue ? 'record' : 'Record';
|
|
82
|
+
const mergedPaths = {};
|
|
83
|
+
for (let i = 0; i < source.propertyValues.length; i++) {
|
|
84
|
+
const property = source.propertyValues[i];
|
|
85
|
+
const mergedPath = mergedPaths[property.name];
|
|
86
|
+
if (mergedPath) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const existingIndex = target.propertyValues.findIndex((p) => p.name === property.name);
|
|
90
|
+
if (existingIndex !== -1) {
|
|
91
|
+
const mergedKey = `${targetPath}/${propertyName}/propertyValues/${existingIndex}`;
|
|
92
|
+
mergedPaths[property.name] = mergedKey;
|
|
93
|
+
}
|
|
94
|
+
else if (property.value.type === 'Record') {
|
|
95
|
+
const mergedKey = `${targetPath}/${propertyName}/propertyValues/${i + offset}`;
|
|
96
|
+
mergedPaths[property.name] = mergedKey;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
mergeProperties(mergeMap, targetPath, sourcePath, target, source, mergedPaths, propertyName, offset);
|
|
100
|
+
if (directTermValue) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function mergeProperties(mergeMap, targetPath, sourcePath, target, source, mergedPaths, propertyName, offset) {
|
|
105
|
+
var _a;
|
|
106
|
+
for (let i = 0; i < source.propertyValues.length; i++) {
|
|
107
|
+
const property = source.propertyValues[i];
|
|
108
|
+
const existingIndex = target.propertyValues.findIndex((p) => p.name === property.name);
|
|
109
|
+
const mergedKey = (_a = mergedPaths[property.name]) !== null && _a !== void 0 ? _a : `${targetPath}/${propertyName}/propertyValues/${i + offset}`;
|
|
110
|
+
const key = `${sourcePath}/${propertyName}/propertyValues/${i}`;
|
|
111
|
+
if (existingIndex !== -1) {
|
|
112
|
+
const existing = target.propertyValues[existingIndex];
|
|
113
|
+
if (existing.value.type === 'Record' && property.value.type === 'Record') {
|
|
114
|
+
mergeRecord(mergeMap, `${mergedKey}/value`, `${key}/value`, existing.value.Record, property.value.Record, false);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
existing.value = property.value;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
mergeMap[mergedKey] = key;
|
|
122
|
+
target.propertyValues.push(property);
|
|
123
|
+
if (target.propertyValuesOrigins && source.propertyValuesOrigins) {
|
|
124
|
+
target.propertyValuesOrigins.push(source.propertyValuesOrigins[i]);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function mergeAnnotationAnnotations(mergeMap, targetPath, sourcePath, target, source) {
|
|
130
|
+
if (source.annotations) {
|
|
131
|
+
if (!target.annotations) {
|
|
132
|
+
target.annotations = [];
|
|
133
|
+
for (let i = 0; i < source.annotations.length; i++) {
|
|
134
|
+
const annotation = source.annotations[i];
|
|
135
|
+
const mergedKey = `${targetPath}/annotations/${i}`;
|
|
136
|
+
const key = `${sourcePath}/annotations/${i}`;
|
|
137
|
+
mergeMap[mergedKey] = key;
|
|
138
|
+
target.annotations.push(annotation);
|
|
139
|
+
}
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const offset = target.annotations.length;
|
|
143
|
+
for (let i = 0; i < source.annotations.length; i++) {
|
|
144
|
+
const annotation = source.annotations[i];
|
|
145
|
+
const existing = target.annotations.find((a) => a.term === annotation.term && a.qualifier === annotation.qualifier);
|
|
146
|
+
const mergedKey = `${targetPath}/annotations/${i + offset}`;
|
|
147
|
+
const key = `${sourcePath}/annotations/${i}`;
|
|
148
|
+
if (existing) {
|
|
149
|
+
mergeAnnotation(mergeMap, mergedKey, key, existing, annotation);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
mergeMap[mergedKey] = key;
|
|
153
|
+
target.annotations.push(annotation);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function mergeRecordAnnotations(mergeMap, targetPath, sourcePath, target, source, directTermValue) {
|
|
159
|
+
if (source.annotations) {
|
|
160
|
+
const propertyName = directTermValue ? 'record' : 'Record';
|
|
161
|
+
if (!target.annotations) {
|
|
162
|
+
target.annotations = [];
|
|
163
|
+
for (let i = 0; i < source.annotations.length; i++) {
|
|
164
|
+
const annotation = source.annotations[i];
|
|
165
|
+
const mergedKey = `${targetPath}/${propertyName}/annotations/${i}`;
|
|
166
|
+
const key = `${sourcePath}/${propertyName}/annotations/${i}`;
|
|
167
|
+
mergeMap[mergedKey] = key;
|
|
168
|
+
target.annotations.push(annotation);
|
|
169
|
+
}
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const offset = target.annotations.length;
|
|
173
|
+
for (let i = 0; i < source.annotations.length; i++) {
|
|
174
|
+
const annotation = source.annotations[i];
|
|
175
|
+
const existing = target.annotations.find((a) => a.term === annotation.term && a.qualifier === annotation.qualifier);
|
|
176
|
+
const mergedKey = `${targetPath}/${propertyName}/annotations/${i + offset}`;
|
|
177
|
+
const key = `${sourcePath}/${propertyName}/annotations/${i}`;
|
|
178
|
+
if (existing) {
|
|
179
|
+
mergeAnnotation(mergeMap, mergedKey, key, existing, annotation);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
mergeMap[mergedKey] = key;
|
|
183
|
+
target.annotations.push(annotation);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function getNamespaceMap(references) {
|
|
189
|
+
const namespaceMap = {};
|
|
190
|
+
for (const reference of references) {
|
|
191
|
+
namespaceMap[reference.name] = reference.name;
|
|
192
|
+
if (reference.alias) {
|
|
193
|
+
namespaceMap[reference.alias] = reference.name;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
namespaceMap['Edm'] = 'Edm';
|
|
197
|
+
return namespaceMap;
|
|
198
|
+
}
|
|
199
|
+
function convertAnnotation(namespaceMap, currentNamespace, annotationElement, options) {
|
|
200
|
+
var _a, _b, _c, _d;
|
|
201
|
+
const termAttributeValue = (0, odata_annotation_core_1.getElementAttributeValue)(annotationElement, 'Term');
|
|
202
|
+
const term = (0, odata_annotation_core_1.parseIdentifier)(termAttributeValue);
|
|
203
|
+
let fqTerm = (0, odata_annotation_core_1.toFullyQualifiedName)(namespaceMap, '', term);
|
|
204
|
+
const qualifier = (0, odata_annotation_core_1.getElementAttributeValue)(annotationElement, 'Qualifier');
|
|
205
|
+
if (fqTerm === null || fqTerm === void 0 ? void 0 : fqTerm.startsWith('com.sap.vocabularies.CDS.v1.')) {
|
|
206
|
+
const result = (_a = options === null || options === void 0 ? void 0 : options.vocabularyService) === null || _a === void 0 ? void 0 : _a.cdsVocabulary.reverseNameMap.get(term.namespaceOrAlias + '.' + term.name);
|
|
207
|
+
if (result) {
|
|
208
|
+
fqTerm = result;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const value = convertExpression(namespaceMap, currentNamespace, annotationElement, options);
|
|
212
|
+
const annotation = {
|
|
213
|
+
term: fqTerm !== null && fqTerm !== void 0 ? fqTerm : termAttributeValue,
|
|
214
|
+
value
|
|
215
|
+
};
|
|
216
|
+
if (options === null || options === void 0 ? void 0 : options.addOrigins) {
|
|
217
|
+
annotation.origin = annotationElement.range;
|
|
218
|
+
}
|
|
219
|
+
if (qualifier) {
|
|
220
|
+
annotation.qualifier = qualifier;
|
|
221
|
+
}
|
|
222
|
+
if (((_b = annotation.value) === null || _b === void 0 ? void 0 : _b.type) === 'Record') {
|
|
223
|
+
annotation.record = annotation.value.Record;
|
|
224
|
+
delete annotation.value;
|
|
225
|
+
}
|
|
226
|
+
else if (((_c = annotation.value) === null || _c === void 0 ? void 0 : _c.type) === 'Collection') {
|
|
227
|
+
annotation.collection = annotation.value.Collection;
|
|
228
|
+
if (options === null || options === void 0 ? void 0 : options.addOrigins) {
|
|
229
|
+
annotation.collectionOrigins = annotation.value.collectionOrigins;
|
|
230
|
+
}
|
|
231
|
+
delete annotation.value;
|
|
232
|
+
}
|
|
233
|
+
else if (((_d = annotation.value) === null || _d === void 0 ? void 0 : _d.type) === 'Unknown' && Object.keys(annotation.value).length === 1) {
|
|
234
|
+
delete annotation.value; // did not appear in parseEdmx output
|
|
235
|
+
}
|
|
236
|
+
const embeddedAnnotations = convertEmbeddedAnnotations(namespaceMap, currentNamespace, annotationElement, options);
|
|
237
|
+
if (embeddedAnnotations.length) {
|
|
238
|
+
annotation.annotations = embeddedAnnotations;
|
|
239
|
+
}
|
|
240
|
+
return annotation;
|
|
241
|
+
}
|
|
242
|
+
function convertEmbeddedAnnotations(namespaceMap, currentNamespace, element, options) {
|
|
243
|
+
var _a;
|
|
244
|
+
return ((_a = element.content) !== null && _a !== void 0 ? _a : [])
|
|
245
|
+
.filter((child) => child.type === odata_annotation_core_types_1.ELEMENT_TYPE && child.name === "Annotation" /* Edm.Annotation */)
|
|
246
|
+
.map((embeddedAnnotation) => convertAnnotation(namespaceMap, currentNamespace, embeddedAnnotation, options));
|
|
247
|
+
}
|
|
248
|
+
const EXPRESSION_TYPES = new Set([
|
|
249
|
+
"String" /* Edm.String */,
|
|
250
|
+
"Bool" /* Edm.Bool */,
|
|
251
|
+
"Decimal" /* Edm.Decimal */,
|
|
252
|
+
"Date" /* Edm.Date */,
|
|
253
|
+
"Float" /* Edm.Float */,
|
|
254
|
+
"Int" /* Edm.Int */,
|
|
255
|
+
"Path" /* Edm.Path */,
|
|
256
|
+
"PropertyPath" /* Edm.PropertyPath */,
|
|
257
|
+
"AnnotationPath" /* Edm.AnnotationPath */,
|
|
258
|
+
"NavigationPropertyPath" /* Edm.NavigationPropertyPath */,
|
|
259
|
+
"EnumMember" /* Edm.EnumMember */,
|
|
260
|
+
"Collection" /* Edm.Collection */,
|
|
261
|
+
"Record" /* Edm.Record */,
|
|
262
|
+
"Apply" /* Edm.Apply */,
|
|
263
|
+
"Null" /* Edm.Null */
|
|
264
|
+
]);
|
|
265
|
+
function convertExpression(namespaceMap, currentNamespace, element, options) {
|
|
266
|
+
var _a;
|
|
267
|
+
const expressionValues = [];
|
|
268
|
+
// check if element itself represents the value
|
|
269
|
+
if (EXPRESSION_TYPES.has(element.name)) {
|
|
270
|
+
expressionValues.push(convertExpressionValue(namespaceMap, currentNamespace, element, options));
|
|
271
|
+
}
|
|
272
|
+
// check if value is provided as attribute
|
|
273
|
+
for (const attributeName of Object.keys(element.attributes)) {
|
|
274
|
+
if (EXPRESSION_TYPES.has(attributeName)) {
|
|
275
|
+
const attribute = (0, odata_annotation_core_1.getElementAttribute)(element, attributeName);
|
|
276
|
+
if (attribute) {
|
|
277
|
+
expressionValues.push(createExpression(namespaceMap, currentNamespace, attribute.name, attribute.value));
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// check if value is provided as sub node
|
|
282
|
+
const children = ((_a = element.content) !== null && _a !== void 0 ? _a : []).filter((child) => child.type === odata_annotation_core_types_1.ELEMENT_TYPE && EXPRESSION_TYPES.has(child.name));
|
|
283
|
+
for (const child of children) {
|
|
284
|
+
expressionValues.push(convertExpressionValue(namespaceMap, currentNamespace, child, options));
|
|
285
|
+
}
|
|
286
|
+
return expressionValues[0];
|
|
287
|
+
}
|
|
288
|
+
function createExpression(namespaceMap, currentNamespace, name, value) {
|
|
289
|
+
switch (name) {
|
|
290
|
+
case 'String':
|
|
291
|
+
return {
|
|
292
|
+
type: 'String',
|
|
293
|
+
String: value
|
|
294
|
+
};
|
|
295
|
+
case 'Bool':
|
|
296
|
+
return {
|
|
297
|
+
type: 'Bool',
|
|
298
|
+
Bool: value === 'true'
|
|
299
|
+
};
|
|
300
|
+
case 'Decimal':
|
|
301
|
+
return {
|
|
302
|
+
type: 'Decimal',
|
|
303
|
+
Decimal: parseFloat(value)
|
|
304
|
+
};
|
|
305
|
+
case 'Date':
|
|
306
|
+
return {
|
|
307
|
+
type: 'Date',
|
|
308
|
+
Date: value
|
|
309
|
+
};
|
|
310
|
+
case 'Int':
|
|
311
|
+
return {
|
|
312
|
+
type: 'Int',
|
|
313
|
+
Int: parseInt(value, 10)
|
|
314
|
+
};
|
|
315
|
+
case 'Path':
|
|
316
|
+
return {
|
|
317
|
+
type: 'Path',
|
|
318
|
+
Path: (0, utils_1.resolvePath)(namespaceMap, currentNamespace, value)
|
|
319
|
+
};
|
|
320
|
+
case 'PropertyPath':
|
|
321
|
+
return {
|
|
322
|
+
type: 'PropertyPath',
|
|
323
|
+
PropertyPath: (0, utils_1.resolvePath)(namespaceMap, currentNamespace, value)
|
|
324
|
+
};
|
|
325
|
+
case 'AnnotationPath':
|
|
326
|
+
return {
|
|
327
|
+
type: 'AnnotationPath',
|
|
328
|
+
AnnotationPath: (0, utils_1.resolvePath)(namespaceMap, currentNamespace, value)
|
|
329
|
+
};
|
|
330
|
+
case 'NavigationPropertyPath':
|
|
331
|
+
return {
|
|
332
|
+
type: 'NavigationPropertyPath',
|
|
333
|
+
NavigationPropertyPath: (0, utils_1.resolvePath)(namespaceMap, currentNamespace, value)
|
|
334
|
+
};
|
|
335
|
+
case 'EnumMember':
|
|
336
|
+
return {
|
|
337
|
+
type: 'EnumMember',
|
|
338
|
+
EnumMember: (0, utils_1.resolveEnumMemberValue)(namespaceMap, currentNamespace, value)
|
|
339
|
+
};
|
|
340
|
+
case 'Null':
|
|
341
|
+
return {
|
|
342
|
+
type: 'Null'
|
|
343
|
+
};
|
|
344
|
+
default:
|
|
345
|
+
return {
|
|
346
|
+
type: 'Unknown'
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Convert expression value from internal:
|
|
352
|
+
* - value for an expression can be primitive or non primitive (AnnotationRecord, Collection, Apply).
|
|
353
|
+
* - all primitive values are returned in their stringified version.
|
|
354
|
+
*
|
|
355
|
+
* @param namespaceMap - Namespace and alias mapping.
|
|
356
|
+
* @param currentNamespace - Current files namespace.
|
|
357
|
+
* @param element - Is supposed to represent a value of an expression.
|
|
358
|
+
* @param options - Conversion options.
|
|
359
|
+
* @returns AVT expression.
|
|
360
|
+
*/
|
|
361
|
+
function convertExpressionValue(namespaceMap, currentNamespace, element, options) {
|
|
362
|
+
var _a;
|
|
363
|
+
switch (element.name) {
|
|
364
|
+
case 'Collection': {
|
|
365
|
+
const { collection, collectionOrigins } = convertCollection(namespaceMap, currentNamespace, element, options);
|
|
366
|
+
const result = {
|
|
367
|
+
type: 'Collection',
|
|
368
|
+
Collection: collection
|
|
369
|
+
};
|
|
370
|
+
if (options === null || options === void 0 ? void 0 : options.addOrigins) {
|
|
371
|
+
result.collectionOrigins = collectionOrigins;
|
|
372
|
+
}
|
|
373
|
+
return result;
|
|
374
|
+
}
|
|
375
|
+
case 'Record':
|
|
376
|
+
return {
|
|
377
|
+
type: 'Record',
|
|
378
|
+
Record: convertRecord(namespaceMap, currentNamespace, element, options)
|
|
379
|
+
};
|
|
380
|
+
case 'Apply':
|
|
381
|
+
return {
|
|
382
|
+
type: 'Apply',
|
|
383
|
+
Apply: convertApply(namespaceMap, currentNamespace, element)
|
|
384
|
+
};
|
|
385
|
+
default: {
|
|
386
|
+
const singleTextNode = (0, odata_annotation_core_1.getSingleTextNode)(element);
|
|
387
|
+
const value = (_a = singleTextNode === null || singleTextNode === void 0 ? void 0 : singleTextNode.text) !== null && _a !== void 0 ? _a : '';
|
|
388
|
+
return createExpression(namespaceMap, currentNamespace, element.name, value);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
function convertRecord(namespaceMap, currentNamespace, recordElement, options) {
|
|
393
|
+
const origins = [];
|
|
394
|
+
const type = (0, odata_annotation_core_1.getElementAttributeValue)(recordElement, 'Type');
|
|
395
|
+
let resolvedRecordType;
|
|
396
|
+
if (type) {
|
|
397
|
+
const parsedIdentifier = (0, odata_annotation_core_1.parseIdentifier)(type);
|
|
398
|
+
resolvedRecordType = (0, odata_annotation_core_1.toFullyQualifiedName)(namespaceMap, '', parsedIdentifier);
|
|
399
|
+
}
|
|
400
|
+
const propertyValues = (recordElement.content || [])
|
|
401
|
+
.filter((child) => child.type === odata_annotation_core_types_1.ELEMENT_TYPE && child.name === "PropertyValue" /* Edm.PropertyValue */)
|
|
402
|
+
.map((propValueChild) => {
|
|
403
|
+
var _a;
|
|
404
|
+
if (options === null || options === void 0 ? void 0 : options.addOrigins) {
|
|
405
|
+
origins.push(propValueChild.range);
|
|
406
|
+
}
|
|
407
|
+
const name = (0, odata_annotation_core_1.getElementAttributeValue)(propValueChild, 'Property');
|
|
408
|
+
const propertyValue = {
|
|
409
|
+
name,
|
|
410
|
+
value: convertExpression(namespaceMap, currentNamespace, propValueChild, options) || { type: 'Unknown' } // when property value have default value
|
|
411
|
+
};
|
|
412
|
+
const annotations = convertEmbeddedAnnotations(namespaceMap, currentNamespace, propValueChild, options);
|
|
413
|
+
if (annotations === null || annotations === void 0 ? void 0 : annotations.length) {
|
|
414
|
+
propertyValue.annotations = annotations;
|
|
415
|
+
}
|
|
416
|
+
if (((_a = propertyValue === null || propertyValue === void 0 ? void 0 : propertyValue.value) === null || _a === void 0 ? void 0 : _a.type) === 'Unknown' && Object.keys(propertyValue === null || propertyValue === void 0 ? void 0 : propertyValue.value).length === 1) {
|
|
417
|
+
propertyValue.value = { type: 'Bool', Bool: true }; // presumably boolean property with default value true
|
|
418
|
+
}
|
|
419
|
+
return propertyValue;
|
|
420
|
+
});
|
|
421
|
+
const record = { propertyValues };
|
|
422
|
+
if (options === null || options === void 0 ? void 0 : options.addOrigins) {
|
|
423
|
+
record.propertyValuesOrigins = origins;
|
|
424
|
+
}
|
|
425
|
+
if (resolvedRecordType) {
|
|
426
|
+
record.type = resolvedRecordType;
|
|
427
|
+
}
|
|
428
|
+
const annotations = convertEmbeddedAnnotations(namespaceMap, currentNamespace, recordElement, options);
|
|
429
|
+
if (annotations.length) {
|
|
430
|
+
record.annotations = annotations;
|
|
431
|
+
}
|
|
432
|
+
return record;
|
|
433
|
+
}
|
|
434
|
+
function convertCollection(namespaceMap, currentNamespace, collectionElement, options) {
|
|
435
|
+
const collection = [];
|
|
436
|
+
const collectionOrigins = [];
|
|
437
|
+
(collectionElement.content || [])
|
|
438
|
+
.filter((child) => child.type === odata_annotation_core_types_1.ELEMENT_TYPE)
|
|
439
|
+
.forEach((collectionEntryElement) => {
|
|
440
|
+
const value = convertExpression(namespaceMap, currentNamespace, collectionEntryElement, options);
|
|
441
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
442
|
+
let entry = value;
|
|
443
|
+
if (value && value.type) {
|
|
444
|
+
// record and string can be used directly as collection entries
|
|
445
|
+
if (value.type === 'Record') {
|
|
446
|
+
entry = value.Record;
|
|
447
|
+
}
|
|
448
|
+
else if (value.type === 'String') {
|
|
449
|
+
entry = value.String;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
collection.push(entry);
|
|
453
|
+
if ((options === null || options === void 0 ? void 0 : options.addOrigins) && collectionEntryElement.range) {
|
|
454
|
+
collectionOrigins.push(collectionEntryElement.range);
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
return { collection, collectionOrigins };
|
|
458
|
+
}
|
|
459
|
+
function convertApply(namespaceMap, currentNamespace, element) {
|
|
460
|
+
// use internal representation (without alias) to represent Apply value
|
|
461
|
+
const clone = JSON.parse(JSON.stringify(element));
|
|
462
|
+
return replaceAliasInElement(namespaceMap, currentNamespace, clone);
|
|
463
|
+
}
|
|
464
|
+
function replaceAliasInElement(namespaceMap, currentNamespace, element) {
|
|
465
|
+
const result = element;
|
|
466
|
+
// replace aliased in all attributes/sub nodes with full namespaces (reverse = true ? vice versa):
|
|
467
|
+
// in attributes: term or type attributes, enumValue and any path values provided as attributes
|
|
468
|
+
Object.keys(result.attributes || {}).forEach((attributeName) => {
|
|
469
|
+
const attribute = result.attributes[attributeName];
|
|
470
|
+
if (attributeName === "Term" /* Edm.Term */ || attributeName === 'Type') {
|
|
471
|
+
const parsedIdentifier = (0, odata_annotation_core_1.parseIdentifier)(attribute.value);
|
|
472
|
+
const fullyQualifiedName = (0, odata_annotation_core_1.toFullyQualifiedName)(namespaceMap, '', parsedIdentifier);
|
|
473
|
+
if (fullyQualifiedName) {
|
|
474
|
+
attribute.value = fullyQualifiedName;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
else if (attributeName === 'EnumMember') {
|
|
478
|
+
attribute.value = (0, utils_1.resolveEnumMemberValue)(namespaceMap, currentNamespace, attribute.value);
|
|
479
|
+
}
|
|
480
|
+
else if (attributeName.endsWith('Path')) {
|
|
481
|
+
attribute.value = (0, utils_1.resolvePath)(namespaceMap, currentNamespace, attribute.value);
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
if ((result.content || []).some((entry) => entry.type === odata_annotation_core_types_1.ELEMENT_TYPE)) {
|
|
485
|
+
// sub elements present: filter out empty text nodes
|
|
486
|
+
result.content = result.content.filter((entry) => !(entry.type === odata_annotation_core_types_1.TEXT_TYPE && !(entry.text || '').trim()));
|
|
487
|
+
}
|
|
488
|
+
// in sub nodes
|
|
489
|
+
replaceAliasInElementContent(namespaceMap, currentNamespace, result);
|
|
490
|
+
return result;
|
|
491
|
+
}
|
|
492
|
+
function replaceAliasInElementContent(namespaceMap, currentNamespace, element) {
|
|
493
|
+
for (const subNode of element.content || []) {
|
|
494
|
+
if (subNode.type === odata_annotation_core_types_1.ELEMENT_TYPE) {
|
|
495
|
+
replaceAliasInElement(namespaceMap, currentNamespace, subNode);
|
|
496
|
+
}
|
|
497
|
+
else if (subNode.type === odata_annotation_core_types_1.TEXT_TYPE) {
|
|
498
|
+
const text = subNode.text;
|
|
499
|
+
if (element.name === 'EnumMember') {
|
|
500
|
+
subNode.text = (0, utils_1.resolveEnumMemberValue)(namespaceMap, currentNamespace, text);
|
|
501
|
+
}
|
|
502
|
+
else if (subNode.type === odata_annotation_core_types_1.TEXT_TYPE && element.name.endsWith('Path')) {
|
|
503
|
+
subNode.text = (0, utils_1.resolvePath)(namespaceMap, currentNamespace, text);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/avt/annotations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AnnotationPathExpression, Collection, NavigationPropertyPathExpression, PathExpression, PropertyPathExpression } from '@sap-ux/vocabularies-types';
|
|
2
|
+
/**
|
|
3
|
+
* all attribute or node names that can provide a value representing an Expression (according to typescript definition)
|
|
4
|
+
* - each entry has the corresponding primitive JS type as string value
|
|
5
|
+
*/
|
|
6
|
+
export declare const expressionNames: Record<string, string>;
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param value - Node.
|
|
10
|
+
* @returns True if node is an expression.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isExpression(value: Collection[number]): value is PropertyPathExpression | PathExpression | NavigationPropertyPathExpression | AnnotationPathExpression;
|
|
13
|
+
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/avt/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,wBAAwB,EACxB,UAAU,EACV,gCAAgC,EAChC,cAAc,EACd,sBAAsB,EACzB,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBlD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,GAC1B,KAAK,IAAI,sBAAsB,GAAG,cAAc,GAAG,gCAAgC,GAAG,wBAAwB,CAEhH"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isExpression = exports.expressionNames = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* all attribute or node names that can provide a value representing an Expression (according to typescript definition)
|
|
6
|
+
* - each entry has the corresponding primitive JS type as string value
|
|
7
|
+
*/
|
|
8
|
+
exports.expressionNames = {
|
|
9
|
+
String: 'string',
|
|
10
|
+
Bool: 'boolean',
|
|
11
|
+
Decimal: 'number',
|
|
12
|
+
Date: 'string',
|
|
13
|
+
Float: 'number',
|
|
14
|
+
Int: 'number',
|
|
15
|
+
Path: 'string',
|
|
16
|
+
PropertyPath: 'string',
|
|
17
|
+
AnnotationPath: 'string',
|
|
18
|
+
NavigationPropertyPath: 'string',
|
|
19
|
+
EnumMember: 'string',
|
|
20
|
+
Collection: 'array',
|
|
21
|
+
Record: 'object',
|
|
22
|
+
Apply: 'object',
|
|
23
|
+
Null: 'null'
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @param value - Node.
|
|
28
|
+
* @returns True if node is an expression.
|
|
29
|
+
*/
|
|
30
|
+
function isExpression(value) {
|
|
31
|
+
return typeof value === 'object' && value.type !== undefined && exports.expressionNames[value.type] !== undefined;
|
|
32
|
+
}
|
|
33
|
+
exports.isExpression = isExpression;
|
|
34
|
+
//# sourceMappingURL=expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../src/avt/expressions.ts"],"names":[],"mappings":";;;AAQA;;;GAGG;AACU,QAAA,eAAe,GAA2B;IACnD,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,QAAQ;IACtB,cAAc,EAAE,QAAQ;IACxB,sBAAsB,EAAE,QAAQ;IAChC,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,MAAM;CACf,CAAC;AAEF;;;;GAIG;AACH,SAAgB,YAAY,CACxB,KAAyB;IAEzB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,uBAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AAC9G,CAAC;AAJD,oCAIC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { RawAnnotation, AnnotationList } from '@sap-ux/vocabularies-types';
|
|
2
|
+
import type { AliasInformation, AnnotationFile, Element, Target } from '@sap-ux/odata-annotation-core-types';
|
|
3
|
+
import type { AnnotationReference } from '../types';
|
|
4
|
+
import type { AVTNode } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Finds a node matching to the pointer from root.
|
|
7
|
+
*
|
|
8
|
+
* @param root - Root node.
|
|
9
|
+
* @param pointer - Pointer to a node.
|
|
10
|
+
* @returns Node matching pointer.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getAvtNodeFromPointer(root: RawAnnotation, pointer: string): AVTNode | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Fins first annotation matching the reference.
|
|
15
|
+
*
|
|
16
|
+
* @param annotationLists - Annotation lists.
|
|
17
|
+
* @param reference - Annotation reference.
|
|
18
|
+
* @returns Matching annotation.
|
|
19
|
+
*/
|
|
20
|
+
export declare function findAnnotation(annotationLists: AnnotationList[], reference: AnnotationReference): RawAnnotation | undefined;
|
|
21
|
+
export interface SearchResult {
|
|
22
|
+
element: Element;
|
|
23
|
+
target: Target;
|
|
24
|
+
targetPointer: string;
|
|
25
|
+
internalPointer: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param aliasInfo - Alias information.
|
|
30
|
+
* @param file - Internal representation.
|
|
31
|
+
* @param mergeMap - Annotation merge map.
|
|
32
|
+
* @param reference - Annotation reference.
|
|
33
|
+
* @param pointer - Pointer to a node.
|
|
34
|
+
* @param mergeAnnotations - Flag indicating if annotations were merged.
|
|
35
|
+
* @param valueType - Current value type.
|
|
36
|
+
* @returns Annotation search result.
|
|
37
|
+
*/
|
|
38
|
+
export declare function findAnnotationByReference(aliasInfo: AliasInformation, file: AnnotationFile, mergeMap: Record<string, string>, reference: AnnotationReference, pointer: string, mergeAnnotations: boolean, valueType?: string): SearchResult;
|
|
39
|
+
//# sourceMappingURL=find.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../src/avt/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAE7G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAKpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAkB/F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC1B,eAAe,EAAE,cAAc,EAAE,EACjC,SAAS,EAAE,mBAAmB,GAC/B,aAAa,GAAG,SAAS,CAW3B;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACrC,SAAS,EAAE,gBAAgB,EAC3B,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,OAAO,EACzB,SAAS,CAAC,EAAE,MAAM,GACnB,YAAY,CA+Bd"}
|