@sap/ux-specification 1.84.129 → 1.84.131

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 (191) hide show
  1. package/CHANGELOG.md +466 -399
  2. package/dist/documentation/v2/v2-AnalyticalListPage.html +2 -2
  3. package/dist/documentation/v2/v2-ApplicationV2.html +2 -2
  4. package/dist/documentation/v2/v2-ListReport.html +2 -2
  5. package/dist/documentation/v2/v2-ListReportNew.html +2 -2
  6. package/dist/documentation/v2/v2-ObjectPage.html +2 -2
  7. package/dist/documentation/v2/v2-OverviewPage.html +2 -2
  8. package/dist/documentation/v4/v4-ApplicationV4.html +2 -2
  9. package/dist/documentation/v4/v4-ListReport.html +2 -2
  10. package/dist/documentation/v4/v4-ObjectPage.html +2 -2
  11. package/dist/index-min.js +182 -180
  12. package/dist/index-min.js.map +4 -4
  13. package/dist/schemas/v2/AnalyticalListPageConfig.json +3 -3
  14. package/dist/schemas/v2/ListReportConfig.json +5 -5
  15. package/dist/schemas/v2/ListReportNewConfig.json +1 -1
  16. package/dist/schemas/v2/ObjectPageConfig.json +5 -5
  17. package/dist/specification/package.json +12 -9
  18. package/dist/specification/scripts/extractDocu.js +18 -1
  19. package/dist/specification/scripts/extractDocu.js.map +1 -1
  20. package/dist/specification/scripts/generate-validity-report.d.ts +15 -0
  21. package/dist/specification/scripts/generate-validity-report.d.ts.map +1 -0
  22. package/dist/specification/scripts/generate-validity-report.js +320 -0
  23. package/dist/specification/scripts/generate-validity-report.js.map +1 -0
  24. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +501 -0
  25. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts.map +1 -0
  26. package/dist/specification/src/sync/common/decoration/decorator-paths.js +497 -0
  27. package/dist/specification/src/sync/common/decoration/decorator-paths.js.map +1 -0
  28. package/dist/specification/src/sync/common/decoration/decorators.d.ts +149 -23
  29. package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
  30. package/dist/specification/src/sync/common/decoration/decorators.js +369 -74
  31. package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
  32. package/dist/specification/src/sync/common/decoration/index.d.ts +1 -0
  33. package/dist/specification/src/sync/common/decoration/index.d.ts.map +1 -1
  34. package/dist/specification/src/sync/common/decoration/index.js +1 -0
  35. package/dist/specification/src/sync/common/decoration/index.js.map +1 -1
  36. package/dist/specification/src/sync/common/dist_tag.json +8 -3
  37. package/dist/specification/src/sync/common/i18n.json +2 -1
  38. package/dist/specification/src/sync/common/importProject.d.ts.map +1 -1
  39. package/dist/specification/src/sync/common/importProject.js +2 -0
  40. package/dist/specification/src/sync/common/importProject.js.map +1 -1
  41. package/dist/specification/src/sync/common/utils.d.ts +35 -7
  42. package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
  43. package/dist/specification/src/sync/common/utils.js +224 -21
  44. package/dist/specification/src/sync/common/utils.js.map +1 -1
  45. package/dist/specification/src/sync/v2/export/exportPageGeneric.d.ts.map +1 -1
  46. package/dist/specification/src/sync/v2/export/exportPageGeneric.js +3 -13
  47. package/dist/specification/src/sync/v2/export/exportPageGeneric.js.map +1 -1
  48. package/dist/specification/src/sync/v2/generate/analyticalListReport.d.ts.map +1 -1
  49. package/dist/specification/src/sync/v2/generate/analyticalListReport.js +48 -0
  50. package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  51. package/dist/specification/src/sync/v2/generate/listReport.d.ts.map +1 -1
  52. package/dist/specification/src/sync/v2/generate/listReport.js +3 -1
  53. package/dist/specification/src/sync/v2/generate/listReport.js.map +1 -1
  54. package/dist/specification/src/sync/v2/generate/objectPage.d.ts.map +1 -1
  55. package/dist/specification/src/sync/v2/generate/objectPage.js +2 -0
  56. package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
  57. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts +1 -8
  58. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts.map +1 -1
  59. package/dist/specification/src/sync/v2/generate/overviewPage.js +30 -1
  60. package/dist/specification/src/sync/v2/generate/overviewPage.js.map +1 -1
  61. package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts.map +1 -1
  62. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js +28 -1
  63. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js.map +1 -1
  64. package/dist/specification/src/sync/v2/import/app/appProvider.d.ts.map +1 -1
  65. package/dist/specification/src/sync/v2/import/app/appProvider.js +2 -0
  66. package/dist/specification/src/sync/v2/import/app/appProvider.js.map +1 -1
  67. package/dist/specification/src/sync/v2/import/importPage.d.ts.map +1 -1
  68. package/dist/specification/src/sync/v2/import/importPage.js +5 -6
  69. package/dist/specification/src/sync/v2/import/importPage.js.map +1 -1
  70. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts +2 -1
  71. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts.map +1 -1
  72. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js +5 -0
  73. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
  74. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts +2 -1
  75. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts.map +1 -1
  76. package/dist/specification/src/sync/v2/import/pages/listReport.js +5 -0
  77. package/dist/specification/src/sync/v2/import/pages/listReport.js.map +1 -1
  78. package/dist/specification/src/sync/v2/import/pages/objectPage.d.ts.map +1 -1
  79. package/dist/specification/src/sync/v2/import/pages/objectPage.js +2 -1
  80. package/dist/specification/src/sync/v2/import/pages/objectPage.js.map +1 -1
  81. package/dist/specification/src/sync/v2/import/utils.d.ts +28 -1
  82. package/dist/specification/src/sync/v2/import/utils.d.ts.map +1 -1
  83. package/dist/specification/src/sync/v2/import/utils.js +37 -0
  84. package/dist/specification/src/sync/v2/import/utils.js.map +1 -1
  85. package/dist/specification/src/sync/v2/utils.d.ts +12 -2
  86. package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
  87. package/dist/specification/src/sync/v2/utils.js +19 -2
  88. package/dist/specification/src/sync/v2/utils.js.map +1 -1
  89. package/dist/specification/src/sync/v4/application.d.ts +39 -4
  90. package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
  91. package/dist/specification/src/sync/v4/application.js +67 -6
  92. package/dist/specification/src/sync/v4/application.js.map +1 -1
  93. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts +2 -1
  94. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts.map +1 -1
  95. package/dist/specification/src/sync/v4/export/controls/FilterBar.js +2 -1
  96. package/dist/specification/src/sync/v4/export/controls/FilterBar.js.map +1 -1
  97. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +2 -1
  98. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts.map +1 -1
  99. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js +2 -1
  100. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
  101. package/dist/specification/src/sync/v4/export/controls/Table.d.ts +19 -6
  102. package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
  103. package/dist/specification/src/sync/v4/export/controls/Table.js +24 -8
  104. package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
  105. package/dist/specification/src/sync/v4/export/controls/TableColumn.d.ts.map +1 -1
  106. package/dist/specification/src/sync/v4/export/controls/TableColumn.js +2 -2
  107. package/dist/specification/src/sync/v4/export/controls/TableColumn.js.map +1 -1
  108. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts +2 -1
  109. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts.map +1 -1
  110. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js +2 -1
  111. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
  112. package/dist/specification/src/sync/v4/export/export.d.ts.map +1 -1
  113. package/dist/specification/src/sync/v4/export/export.js +38 -8
  114. package/dist/specification/src/sync/v4/export/export.js.map +1 -1
  115. package/dist/specification/src/sync/v4/export/pages/ListReport.js +1 -1
  116. package/dist/specification/src/sync/v4/export/pages/ListReport.js.map +1 -1
  117. package/dist/specification/src/sync/v4/generate/index.d.ts +1 -1
  118. package/dist/specification/src/sync/v4/generate/index.d.ts.map +1 -1
  119. package/dist/specification/src/sync/v4/generate/index.js +1 -1
  120. package/dist/specification/src/sync/v4/generate/index.js.map +1 -1
  121. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts +72 -0
  122. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts.map +1 -0
  123. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js +299 -0
  124. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js.map +1 -0
  125. package/dist/specification/src/sync/v4/generate/{listReport.d.ts → list-report/listReport.d.ts} +24 -14
  126. package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts.map +1 -0
  127. package/dist/specification/src/sync/v4/generate/{listReport.js → list-report/listReport.js} +135 -130
  128. package/dist/specification/src/sync/v4/generate/list-report/listReport.js.map +1 -0
  129. package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
  130. package/dist/specification/src/sync/v4/generate/objectPage.js +99 -16
  131. package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
  132. package/dist/specification/src/sync/v4/import/pages/listReport.d.ts.map +1 -1
  133. package/dist/specification/src/sync/v4/import/pages/listReport.js +15 -9
  134. package/dist/specification/src/sync/v4/import/pages/listReport.js.map +1 -1
  135. package/dist/specification/src/sync/v4/sync-rules/App.d.ts +9 -7
  136. package/dist/specification/src/sync/v4/sync-rules/App.d.ts.map +1 -1
  137. package/dist/specification/src/sync/v4/sync-rules/App.js +4 -8
  138. package/dist/specification/src/sync/v4/sync-rules/App.js.map +1 -1
  139. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts +2 -9
  140. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts.map +1 -1
  141. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js +2 -11
  142. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js.map +1 -1
  143. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts +177 -46
  144. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
  145. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +498 -152
  146. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js.map +1 -1
  147. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts +17 -22
  148. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts.map +1 -1
  149. package/dist/specification/src/sync/v4/sync-rules/Page.js +15 -22
  150. package/dist/specification/src/sync/v4/sync-rules/Page.js.map +1 -1
  151. package/dist/specification/src/sync/v4/sync-rules/index.d.ts +5 -0
  152. package/dist/specification/src/sync/v4/sync-rules/index.d.ts.map +1 -0
  153. package/dist/specification/src/sync/v4/sync-rules/index.js +21 -0
  154. package/dist/specification/src/sync/v4/sync-rules/index.js.map +1 -0
  155. package/dist/specification/src/sync/v4/sync-rules/utils.d.ts.map +1 -1
  156. package/dist/specification/src/sync/v4/sync-rules/utils.js +4 -0
  157. package/dist/specification/src/sync/v4/sync-rules/utils.js.map +1 -1
  158. package/dist/specification/src/sync/v4/utils/index.d.ts +2 -0
  159. package/dist/specification/src/sync/v4/utils/index.d.ts.map +1 -0
  160. package/dist/specification/src/sync/v4/utils/index.js +18 -0
  161. package/dist/specification/src/sync/v4/utils/index.js.map +1 -0
  162. package/dist/specification/src/sync/v4/utils/utils.d.ts +9 -1
  163. package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
  164. package/dist/specification/src/sync/v4/utils/utils.js +19 -4
  165. package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
  166. package/dist/specification/test/test-projects/v2sttaProdMan2/webapp/manifest.json +549 -0
  167. package/dist/specification/test/test-projects/v4new/webapp/manifest.json +147 -0
  168. package/dist/specification/test/test-utils/utils.d.ts +55 -0
  169. package/dist/specification/test/test-utils/utils.d.ts.map +1 -0
  170. package/dist/specification/test/test-utils/utils.js +346 -0
  171. package/dist/specification/test/test-utils/utils.js.map +1 -0
  172. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts +274 -0
  173. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts.map +1 -0
  174. package/dist/specification/test/unit/decorators/validity-test-utils.js +583 -0
  175. package/dist/specification/test/unit/decorators/validity-test-utils.js.map +1 -0
  176. package/dist/types/src/apiTypes.d.ts +2 -3
  177. package/dist/types/src/apiTypes.d.ts.map +1 -1
  178. package/dist/types/src/apiTypes.js.map +1 -1
  179. package/dist/types/src/common/types.d.ts +126 -13
  180. package/dist/types/src/common/types.d.ts.map +1 -1
  181. package/dist/types/src/common/types.js +5 -1
  182. package/dist/types/src/common/types.js.map +1 -1
  183. package/dist/types/src/v2/controls/ObjectPageTable.d.ts +1 -1
  184. package/dist/types/src/v2/controls/Table.d.ts +1 -1
  185. package/package.json +13 -10
  186. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts +0 -74
  187. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts.map +0 -1
  188. package/dist/specification/src/sync/v4/generate/ListReportUtils.js +0 -262
  189. package/dist/specification/src/sync/v4/generate/ListReportUtils.js.map +0 -1
  190. package/dist/specification/src/sync/v4/generate/listReport.d.ts.map +0 -1
  191. package/dist/specification/src/sync/v4/generate/listReport.js.map +0 -1
@@ -0,0 +1,147 @@
1
+ {
2
+ "_version": "1.15.0",
3
+ "sap.app": {
4
+ "id": "Namespace1.v4new",
5
+ "type": "application",
6
+ "i18n": "i18n/i18n.properties",
7
+ "applicationVersion": {
8
+ "version": "1.0.0"
9
+ },
10
+ "title": "{{appTitle}}",
11
+ "description": "{{appDescription}}",
12
+ "ach": "CA-UI5-FE",
13
+ "dataSources": {
14
+ "mainService": {
15
+ "uri": "/catalog-admin-noauth/",
16
+ "type": "OData",
17
+ "settings": {
18
+ "annotations": [
19
+ "annotation"
20
+ ],
21
+ "odataVersion": "4.0",
22
+ "localUri": "localService/metadata.xml"
23
+ }
24
+ },
25
+ "annotation": {
26
+ "type": "ODataAnnotation",
27
+ "uri": "annotations/annotation.xml",
28
+ "settings": {
29
+ "localUri": "annotations/annotation.xml"
30
+ }
31
+ }
32
+ },
33
+ "offline": false,
34
+ "resources": "resources.json",
35
+ "sourceTemplate": {
36
+ "id": "ui5template.fiorielements.v4.lrop",
37
+ "version": "1.0.0"
38
+ }
39
+ },
40
+ "sap.ui": {
41
+ "technology": "UI5",
42
+ "icons": {
43
+ "icon": "",
44
+ "favIcon": "",
45
+ "phone": "",
46
+ "phone@2": "",
47
+ "tablet": "",
48
+ "tablet@2": ""
49
+ },
50
+ "deviceTypes": {
51
+ "desktop": true,
52
+ "tablet": true,
53
+ "phone": true
54
+ }
55
+ },
56
+ "sap.ui5": {
57
+ "resources": {
58
+ "js": [],
59
+ "css": []
60
+ },
61
+ "dependencies": {
62
+ "minUI5Version": "1.76.0",
63
+ "libs": {
64
+ "sap.fe": {},
65
+ "sap.ui.fl": {}
66
+ }
67
+ },
68
+ "models": {
69
+ "i18n": {
70
+ "type": "sap.ui.model.resource.ResourceModel",
71
+ "uri": "i18n/i18n.properties"
72
+ },
73
+ "": {
74
+ "dataSource": "mainService",
75
+ "settings": {
76
+ "synchronizationMode": "None",
77
+ "operationMode": "Server",
78
+ "autoExpandSelect": true,
79
+ "earlyRequests": true
80
+ }
81
+ }
82
+ },
83
+ "routing": {
84
+ "targets": {
85
+ "ProductsList": {
86
+ "type": "Component",
87
+ "id": "ProductsList",
88
+ "name": "sap.fe.templates.ListReport",
89
+ "options": {
90
+ "settings": {
91
+ "entitySet": "Products",
92
+ "defaultTemplateAnnotationPath": "com.sap.vocabularies.UI.v1.SelectionPresentationVariant",
93
+ "variantManagement": "Page",
94
+ "navigation": {
95
+ "Products": {
96
+ "detail": {
97
+ "route": "ProductsObjectPage"
98
+ }
99
+ }
100
+ }
101
+ }
102
+ }
103
+ },
104
+ "ProductsObjectPage": {
105
+ "type": "Component",
106
+ "id": "ProductsObjectPage",
107
+ "name": "sap.fe.templates.ObjectPage",
108
+ "options": {
109
+ "settings": {
110
+ "entitySet": "Products",
111
+ "navigation": {}
112
+ }
113
+ }
114
+ }
115
+ },
116
+ "routes": [
117
+ {
118
+ "pattern": ":?query:",
119
+ "name": "ProductsList",
120
+ "target": "ProductsList"
121
+ },
122
+ {
123
+ "pattern": "Products({key}):?query:",
124
+ "name": "ProductsObjectPage",
125
+ "target": "ProductsObjectPage"
126
+ }
127
+ ]
128
+ },
129
+ "contentDensities": {
130
+ "compact": true,
131
+ "cozy": true
132
+ }
133
+ },
134
+ "sap.platform.abap": {
135
+ "_version": "1.1.0",
136
+ "uri": ""
137
+ },
138
+ "sap.platform.hcp": {
139
+ "_version": "1.1.0",
140
+ "uri": ""
141
+ },
142
+ "sap.fiori": {
143
+ "_version": "1.1.0",
144
+ "registrationIds": [],
145
+ "archeType": "transactional"
146
+ }
147
+ }
@@ -0,0 +1,55 @@
1
+ import type { ExportResults, ExtensionLogger, FileData, LogMessage, Manifest, SchemaDefinition } from '@sap/ux-specification-types';
2
+ import type { Definition } from 'typescript-json-schema';
3
+ export declare class Logger implements ExtensionLogger {
4
+ logInfo: string[];
5
+ logWarning: string[];
6
+ logError: string[];
7
+ private enrichLogMessage;
8
+ constructor();
9
+ info(message: string, meta?: LogMessage): void;
10
+ warning(message: string, meta?: LogMessage): void;
11
+ error(message: string, meta?: LogMessage): void;
12
+ reset(): void;
13
+ }
14
+ export declare function createTestLogger(): Logger;
15
+ /**
16
+ * Returns the content of a list of files that are indicated by a list of file paths
17
+ */
18
+ export declare function retrieveFileContent(path: string): string;
19
+ export declare function prepareFileData(path: string): FileData;
20
+ export declare function getSTTAAnnotations(): FileData[];
21
+ export declare function getSDV4Annotations(): FileData[];
22
+ export declare function getSTTAAnnotationsProdMan2(): FileData[];
23
+ /**
24
+ * Provides access to the manifest for the v2sttaProdMan2 project.
25
+ * Thereby it is possible to get a modified manifest containing an extended multi-view multi-table setting.
26
+ *
27
+ * @param forMultiView - information whether the extended multi-view setting should be provided
28
+ * @param: hasAlsoQuickVariantSelection - if true, the manifest will contain both quickVariantSelectionX and quickVariantSelection settings
29
+ * @returns the manifest as specified
30
+ */
31
+ export declare function getSTTAManifestProdMan2(forMultiView: boolean, hasAlsoQuickVariantSelection?: boolean): Manifest;
32
+ export declare function getALPAnnotations(): FileData[];
33
+ export declare function getALPVisualizationsAnnotations(): FileData[];
34
+ export declare function getExtensionsProdMan2(): FileData[];
35
+ export declare function getSEPMRAAnnotations(): FileData[];
36
+ export declare function getExtensionsForS2pMmPurSrcgprojMaintains1(specificFiles?: string[]): FileData[];
37
+ export declare function findFlexChangeBySelector(exportResult: ExportResults, selectorId: string, property: string): object;
38
+ /**
39
+ * Function to find out the flexChange from a list. Uses global variable exportResult
40
+ *
41
+ * @param {string} property Property for which the flexChange is to be found
42
+ * @returns {object} contents of the flexChange
43
+ */
44
+ export declare function findFlexChange(exportResult: ExportResults, property: string): object;
45
+ export declare const getOrderedEntries: (schemaDefinition: SchemaDefinition) => string[];
46
+ export declare function findManifestSettingV4(exportResult: ExportResults, pageName: string): object;
47
+ /**
48
+ * Returns the definition of the referred type of a schema element.
49
+ *
50
+ * @param element - the schema element that may refer to another type
51
+ * @param schema - the global schema
52
+ * @returns the definition of the type the elements refers to, or undefined if it does not refer to any type
53
+ */
54
+ export declare function getReferredTypeDefinition(element: Definition, schema: Definition): Definition | undefined;
55
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../test/test-utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,aAAa,EACb,eAAe,EACf,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,EACnB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,qBAAa,MAAO,YAAW,eAAe;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAE1B,OAAO,CAAC,gBAAgB;;IAsBjB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI;IAQ9C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI;IAOjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI;IAQ/C,KAAK,IAAI,IAAI;CAKvB;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAMtD;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,EAAE,CAsB/C;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,EAAE,CAU/C;AAED,wBAAgB,0BAA0B,IAAI,QAAQ,EAAE,CAcvD;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACnC,YAAY,EAAE,OAAO,EACrB,4BAA4B,GAAE,OAAe,GAC9C,QAAQ,CAmDV;AAED,wBAAgB,iBAAiB,IAAI,QAAQ,EAAE,CAc9C;AAED,wBAAgB,+BAA+B,IAAI,QAAQ,EAAE,CAgB5D;AAED,wBAAgB,qBAAqB,IAAI,QAAQ,EAAE,CAuKlD;AAED,wBAAgB,oBAAoB,IAAI,QAAQ,EAAE,CAejD;AAED,wBAAgB,0CAA0C,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CA0D/F;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOlH;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMpF;AAED,eAAO,MAAM,iBAAiB,GAAI,kBAAkB,gBAAgB,KAAG,MAAM,EAW5E,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAMzG"}
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.getOrderedEntries = exports.Logger = void 0;
40
+ exports.createTestLogger = createTestLogger;
41
+ exports.retrieveFileContent = retrieveFileContent;
42
+ exports.prepareFileData = prepareFileData;
43
+ exports.getSTTAAnnotations = getSTTAAnnotations;
44
+ exports.getSDV4Annotations = getSDV4Annotations;
45
+ exports.getSTTAAnnotationsProdMan2 = getSTTAAnnotationsProdMan2;
46
+ exports.getSTTAManifestProdMan2 = getSTTAManifestProdMan2;
47
+ exports.getALPAnnotations = getALPAnnotations;
48
+ exports.getALPVisualizationsAnnotations = getALPVisualizationsAnnotations;
49
+ exports.getExtensionsProdMan2 = getExtensionsProdMan2;
50
+ exports.getSEPMRAAnnotations = getSEPMRAAnnotations;
51
+ exports.getExtensionsForS2pMmPurSrcgprojMaintains1 = getExtensionsForS2pMmPurSrcgprojMaintains1;
52
+ exports.findFlexChangeBySelector = findFlexChangeBySelector;
53
+ exports.findFlexChange = findFlexChange;
54
+ exports.findManifestSettingV4 = findManifestSettingV4;
55
+ exports.getReferredTypeDefinition = getReferredTypeDefinition;
56
+ const ux_specification_types_1 = require("@sap/ux-specification-types");
57
+ const fs = __importStar(require("fs"));
58
+ const path_1 = require("path");
59
+ const manifest_json_1 = __importDefault(require("../test-projects/v2sttaProdMan2/webapp/manifest.json"));
60
+ class Logger {
61
+ enrichLogMessage(meta, message) {
62
+ let logMessage = message;
63
+ const location = meta['location'];
64
+ if (location) {
65
+ if (location?.path) {
66
+ logMessage += '; location: ' + location.path;
67
+ }
68
+ if (typeof location['range'] === 'object') {
69
+ const range = '/' + location.range.join('/');
70
+ logMessage = (logMessage + range).replace(/\/\//g, '/');
71
+ }
72
+ }
73
+ return logMessage;
74
+ }
75
+ constructor() {
76
+ this.logInfo = [];
77
+ this.logError = [];
78
+ this.logWarning = [];
79
+ }
80
+ info(message, meta) {
81
+ if (meta) {
82
+ this.logInfo.push(this.enrichLogMessage(meta, message));
83
+ }
84
+ else {
85
+ this.logInfo.push(message);
86
+ }
87
+ }
88
+ warning(message, meta) {
89
+ if (meta) {
90
+ this.logWarning.push(this.enrichLogMessage(meta, message));
91
+ }
92
+ else {
93
+ this.logWarning.push(message);
94
+ }
95
+ }
96
+ error(message, meta) {
97
+ if (meta) {
98
+ this.logError.push(this.enrichLogMessage(meta, message));
99
+ }
100
+ else {
101
+ this.logError.push(message);
102
+ }
103
+ }
104
+ reset() {
105
+ this.logInfo = [];
106
+ this.logWarning = [];
107
+ this.logError = [];
108
+ }
109
+ }
110
+ exports.Logger = Logger;
111
+ function createTestLogger() {
112
+ return new Logger();
113
+ }
114
+ /**
115
+ * Returns the content of a list of files that are indicated by a list of file paths
116
+ */
117
+ function retrieveFileContent(path) {
118
+ if (path) {
119
+ return fs.readFileSync(path, 'utf8');
120
+ }
121
+ }
122
+ function prepareFileData(path) {
123
+ const fileData = {
124
+ dataSourceUri: path,
125
+ fileContent: retrieveFileContent(path)
126
+ };
127
+ return fileData;
128
+ }
129
+ function getSTTAAnnotations() {
130
+ const allAnnotationData = [];
131
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan', 'webapp', 'localService', 'metadata.xml')));
132
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan', 'webapp', 'localService', 'Z2SEPMRA_C_PD_PRODUCT_CDS_VAN.xml')));
133
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan', 'webapp', 'annotations', 'annotation.xml')));
134
+ return allAnnotationData;
135
+ }
136
+ function getSDV4Annotations() {
137
+ const allAnnotationData = [];
138
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v4Salesorder', 'webapp', 'localService', 'metadata.xml')));
139
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v4Salesorder', 'webapp', 'annotations', 'annotation.xml')));
140
+ return allAnnotationData;
141
+ }
142
+ function getSTTAAnnotationsProdMan2() {
143
+ const allAnnotationData = [];
144
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'localService', 'metadata.xml')));
145
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'localService', 'STTA_PROD_MAN_ANNO_MDL.xml')));
146
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'annotations', 'annotations.xml')));
147
+ return allAnnotationData;
148
+ }
149
+ /**
150
+ * Provides access to the manifest for the v2sttaProdMan2 project.
151
+ * Thereby it is possible to get a modified manifest containing an extended multi-view multi-table setting.
152
+ *
153
+ * @param forMultiView - information whether the extended multi-view setting should be provided
154
+ * @param: hasAlsoQuickVariantSelection - if true, the manifest will contain both quickVariantSelectionX and quickVariantSelection settings
155
+ * @returns the manifest as specified
156
+ */
157
+ function getSTTAManifestProdMan2(forMultiView, hasAlsoQuickVariantSelection = false) {
158
+ const manifest = structuredClone(manifest_json_1.default);
159
+ if (forMultiView) {
160
+ manifest['sap.ui.generic.app']['pages']['ListReport|STTA_C_MP_Product']['component']['settings']['quickVariantSelectionX'] = {
161
+ variants: {
162
+ // view containing a key containing special characters:
163
+ 'o\\me"g\\a': {
164
+ key: 'beta--gamma1::delta',
165
+ annotationPath: 'com.sap.vocabularies.UI.v1.SelectionPresentationVariant#SPVInline'
166
+ },
167
+ // view with a key that is numeric, use default line item of that entity set
168
+ '03': {
169
+ key: '3',
170
+ entitySet: 'STTA_C_MP_ProductSalesPrice'
171
+ },
172
+ // chart view:
173
+ chart: {
174
+ key: 'chart',
175
+ annotationPath: 'com.sap.vocabularies.UI.v1.SelectionPresentationVariant#SPVInlineChart'
176
+ },
177
+ // view with key and accessor being identical:
178
+ xyz: {
179
+ key: 'xyz',
180
+ entitySet: 'STTA_C_MP_ProductSalesPrice',
181
+ annotationPath: 'com.sap.vocabularies.UI.v1.SelectionPresentationVariant#SPVInline'
182
+ },
183
+ // view with key and accessor being different:
184
+ hugo: {
185
+ key: 'bla',
186
+ entitySet: 'STTA_C_MP_ProductSalesPrice',
187
+ annotationPath: 'com.sap.vocabularies.UI.v1.SelectionVariant'
188
+ }
189
+ },
190
+ enableAutoBinding: true
191
+ };
192
+ }
193
+ if (hasAlsoQuickVariantSelection) {
194
+ // Note that the quickVariantSelection content is already prepared in the base manifest.
195
+ manifest['sap.ui.generic.app']['pages']['ListReport|STTA_C_MP_Product']['component']['settings']['quickVariantSelection'] =
196
+ manifest['sap.ui.generic.app']['pages']['ListReport|STTA_C_MP_Product']['component']['settings']['_quickVariantSelection'];
197
+ delete manifest['sap.ui.generic.app']['pages']['ListReport|STTA_C_MP_Product']['component']['settings']['_quickVariantSelection'];
198
+ }
199
+ return manifest;
200
+ }
201
+ function getALPAnnotations() {
202
+ const allAnnotationData = [];
203
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2alp', 'webapp', 'localService', 'metadata.xml')));
204
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2alp', 'webapp', 'localService', 'MM_PUR_SUPLRCONF_MNTR_ANNO_MDL.xml')));
205
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2alp', 'webapp', 'annotations', 'annotation.xml')));
206
+ return allAnnotationData;
207
+ }
208
+ function getALPVisualizationsAnnotations() {
209
+ const allAnnotationData = [];
210
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2alp-visualizations', 'webapp', 'localService', 'metadata.xml')));
211
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2alp-visualizations', 'webapp', 'localService', 'SEPMRA_ALP_SO_ANA_SRV.xml')));
212
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2alp-visualizations', 'webapp', 'annotations', 'annotation.xml')));
213
+ return allAnnotationData;
214
+ }
215
+ function getExtensionsProdMan2() {
216
+ const allExtensionData = [];
217
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'ApplicationLogBreakout.fragment.xml')));
218
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'CustomFilter.fragment.xml')));
219
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'DonutChart.fragment.xml')));
220
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'HeaderExtensionFacet.view.xml')));
221
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'ListReportGridTableColumns.fragment.xml')));
222
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'ListReportResponsiveTableCells.fragment.xml')));
223
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'ListReportResponsiveTableColumns.fragment.xml')));
224
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'OPCustomFilter.fragment.xml')));
225
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'ProductSalesDataAnalyticalTableColumns.fragment.xml')));
226
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'ProductTextGridTableColumns.fragment.xml')));
227
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'ProductTextResponsiveTableCells.fragment.xml')));
228
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'ProductTextResponsiveTableColumns.fragment.xml')));
229
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'SideContentExtension.fragment.xml')));
230
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'SmartFormGroupElement.fragment.xml')));
231
+ allExtensionData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2sttaProdMan2', 'webapp', 'ext', 'fragments', 'TextFacet.fragment.xml')));
232
+ return allExtensionData;
233
+ }
234
+ function getSEPMRAAnnotations() {
235
+ const allAnnotationData = [];
236
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2SEPMRA_PROD_MAN', 'webapp', 'localService', 'metadata.xml')));
237
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2SEPMRA_PROD_MAN', 'webapp', 'localService', 'SEPMRA_PROD_MAN.xml')));
238
+ allAnnotationData.push(prepareFileData((0, path_1.join)('test', 'test-projects', 'v2SEPMRA_PROD_MAN', 'webapp', 'annotations', 'annotation.xml')));
239
+ return allAnnotationData;
240
+ }
241
+ function getExtensionsForS2pMmPurSrcgprojMaintains1(specificFiles) {
242
+ const allExtensionData = [];
243
+ const projectFragmentPath = [
244
+ 'test',
245
+ 'test-projects',
246
+ 's2p.mm.pur.srcgproj.maintains1',
247
+ 'webapp',
248
+ 'ext',
249
+ 'fragments'
250
+ ];
251
+ const files = [
252
+ 'ChangeDocsDialog',
253
+ 'ChangeItemClfnActionSheet',
254
+ 'ContactsCells',
255
+ 'ContactsColumns',
256
+ 'CreateItemActionSheet',
257
+ 'CustomFilter',
258
+ 'DistributionFollowOnExt',
259
+ 'DmndDistrDetailsCells',
260
+ 'DmndDistrDetailsColumns',
261
+ 'ErrorDialog',
262
+ 'FollowOnExt',
263
+ 'GeneralInfoFormExt',
264
+ 'ItemLinkageCells',
265
+ 'ItemLinkageColumns',
266
+ 'ItemLinkageDialog',
267
+ 'ItemLinkageErrorDialog',
268
+ 'ItemSourceExt',
269
+ 'LegalDocumentsPopover',
270
+ 'LegalTransactionsCells',
271
+ 'LegalTransactionsColumns',
272
+ 'ListReportCells',
273
+ 'ListReportColumns',
274
+ 'MilestonesFiltersDialog',
275
+ 'NegotiationActionSheet',
276
+ 'PaymentTermsActionSheet',
277
+ 'PaymentTermsFormExt',
278
+ 'RestrictionPopover',
279
+ 'SourceSourcingProject',
280
+ 'SourcingProjectCancel',
281
+ 'SourcingProjectItemColumns',
282
+ 'SourcingProjectItemToolbar',
283
+ 'SourcingProjectSetToUnconfirmedDialog',
284
+ 'SourcingProjectVersion',
285
+ 'SrcgProjImprtdSuplrListFacet',
286
+ 'SrcgProjItemPaymentTermsToolbar',
287
+ 'SrcgProjPubdSuplrListFacet',
288
+ 'SupplierActionHistoryDialog',
289
+ 'SupplierDeclineParticipationDialog',
290
+ 'SupplierQuotationTableCells',
291
+ 'SupplierQuotationTableColumns',
292
+ 'UnlockSupplierDialog'
293
+ ];
294
+ (specificFiles || files).forEach((file) => allExtensionData.push(prepareFileData((0, path_1.join)(...projectFragmentPath, `${file}.fragment.xml`))));
295
+ return allExtensionData;
296
+ }
297
+ function findFlexChangeBySelector(exportResult, selectorId, property) {
298
+ const filteredList = exportResult['flexChanges'].filter((change) => {
299
+ const changeObject = JSON.parse(change);
300
+ return changeObject.selector.id === selectorId && changeObject.content.property === property;
301
+ });
302
+ return filteredList && filteredList[0] && JSON.parse(filteredList[0]);
303
+ }
304
+ /**
305
+ * Function to find out the flexChange from a list. Uses global variable exportResult
306
+ *
307
+ * @param {string} property Property for which the flexChange is to be found
308
+ * @returns {object} contents of the flexChange
309
+ */
310
+ function findFlexChange(exportResult, property) {
311
+ const filteredList = exportResult['flexChanges'].filter((change) => {
312
+ return JSON.parse(change).content.property === property;
313
+ });
314
+ return filteredList && filteredList[0] && JSON.parse(filteredList[0]);
315
+ }
316
+ const getOrderedEntries = (schemaDefinition) => {
317
+ const entries = Object.keys(schemaDefinition.properties || {});
318
+ entries.sort((key1, key2) => {
319
+ const property1 = schemaDefinition.properties[key1];
320
+ const property2 = schemaDefinition.properties[key2];
321
+ if (property1.propertyIndex === property2.propertyIndex) {
322
+ return 0;
323
+ }
324
+ return property1.propertyIndex > property2.propertyIndex ? 1 : -1;
325
+ });
326
+ return entries;
327
+ };
328
+ exports.getOrderedEntries = getOrderedEntries;
329
+ function findManifestSettingV4(exportResult, pageName) {
330
+ return exportResult['manifest'][ux_specification_types_1.ManifestSection.ui5]['routing']['targets'][pageName]['options']['settings'];
331
+ }
332
+ /**
333
+ * Returns the definition of the referred type of a schema element.
334
+ *
335
+ * @param element - the schema element that may refer to another type
336
+ * @param schema - the global schema
337
+ * @returns the definition of the type the elements refers to, or undefined if it does not refer to any type
338
+ */
339
+ function getReferredTypeDefinition(element, schema) {
340
+ if (element.$ref) {
341
+ const typeName = element.$ref.replace('#/definitions/', '');
342
+ return schema.definitions[typeName]; // as this function will normally only called when checkReferentialCorrectness has succeeded, we can exclude Boolean.
343
+ }
344
+ return undefined;
345
+ }
346
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../test/test-utils/utils.ts"],"names":[],"mappings":"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"}