@sap/ux-specification 1.90.5 → 1.90.9

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 (228) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/dist/index-min.js +1 -1
  3. package/dist/schemas/v2/AnalyticalListPageConfig.json +460 -53
  4. package/dist/schemas/v2/ListReportConfig.json +358 -104
  5. package/dist/schemas/v2/ObjectPageConfig.json +293 -92
  6. package/dist/schemas/v2/OverviewPageConfig.json +126 -46
  7. package/dist/schemas/v4/AnalyticalListPageConfig.json +110 -36
  8. package/dist/schemas/v4/ApplicationV4.json +0 -6
  9. package/dist/schemas/v4/ListReportConfig.json +110 -36
  10. package/dist/schemas/v4/ObjectPageConfig.json +349 -68
  11. package/dist/scripts/extractDocu.d.ts +1 -0
  12. package/dist/scripts/extractDocu.js +311 -0
  13. package/dist/scripts/extractDocu.js.map +1 -0
  14. package/dist/scripts/spec.d.ts +1 -0
  15. package/dist/scripts/spec.js +114 -0
  16. package/dist/scripts/spec.js.map +1 -0
  17. package/dist/scripts/to-json-schema.d.ts +10 -0
  18. package/dist/scripts/to-json-schema.js +121 -0
  19. package/dist/scripts/to-json-schema.js.map +1 -0
  20. package/dist/specification/v2/index-min.js +1 -1
  21. package/dist/specification/v4/index-min.js +1 -1
  22. package/dist/src/api.js +3 -5
  23. package/dist/src/api.js.map +1 -1
  24. package/dist/src/apiTypes.d.ts +2 -1
  25. package/dist/src/extensionLogger.js +6 -0
  26. package/dist/src/extensionLogger.js.map +1 -1
  27. package/dist/src/specification/common/types.d.ts +4 -0
  28. package/dist/src/specification/common/types.js +5 -0
  29. package/dist/src/specification/common/types.js.map +1 -1
  30. package/dist/src/specification/common/webapp/manifest/Manifest.d.ts +7 -0
  31. package/dist/src/specification/common/webapp/manifest/Manifest.js +8 -0
  32. package/dist/src/specification/common/webapp/manifest/Manifest.js.map +1 -1
  33. package/dist/src/specification/v2/controls/Card.d.ts +8 -2
  34. package/dist/src/specification/v2/controls/Card.js +2 -0
  35. package/dist/src/specification/v2/controls/Card.js.map +1 -1
  36. package/dist/src/specification/v2/controls/FilterBar.d.ts +20 -0
  37. package/dist/src/specification/v2/controls/FilterBar.js +51 -0
  38. package/dist/src/specification/v2/controls/FilterBar.js.map +1 -1
  39. package/dist/src/specification/v2/controls/ObjectPageTable.d.ts +12 -3
  40. package/dist/src/specification/v2/controls/ObjectPageTable.js.map +1 -1
  41. package/dist/src/specification/v2/controls/ObjectPageToolBar.d.ts +19 -0
  42. package/dist/src/specification/v2/controls/ObjectPageToolBar.js +3 -0
  43. package/dist/src/specification/v2/controls/ObjectPageToolBar.js.map +1 -0
  44. package/dist/src/specification/v2/controls/Table.d.ts +53 -5
  45. package/dist/src/specification/v2/controls/Table.js.map +1 -1
  46. package/dist/src/specification/v2/controls/ToolBar.d.ts +19 -0
  47. package/dist/src/specification/v2/controls/ToolBar.js +3 -0
  48. package/dist/src/specification/v2/controls/ToolBar.js.map +1 -0
  49. package/dist/src/specification/v2/controls/index.d.ts +2 -0
  50. package/dist/src/specification/v2/controls/index.js.map +1 -1
  51. package/dist/src/specification/v2/pages/AnalyticalListPageConfig.d.ts +2 -2
  52. package/dist/src/specification/v2/webapp/manifest/sapUi5.d.ts +2 -1
  53. package/dist/src/specification/v2/webapp/manifest/sapUi5.js +1 -0
  54. package/dist/src/specification/v2/webapp/manifest/sapUi5.js.map +1 -1
  55. package/dist/src/specification/v4/controls/FilterBar.d.ts +1 -1
  56. package/dist/src/specification/v4/controls/ObjectPageHeader.d.ts +2 -0
  57. package/dist/src/specification/v4/controls/ObjectPageHeaderSection.d.ts +58 -0
  58. package/dist/src/specification/v4/controls/ObjectPageHeaderSection.js +7 -0
  59. package/dist/src/specification/v4/controls/ObjectPageHeaderSection.js.map +1 -0
  60. package/dist/src/specification/v4/controls/ObjectPageSection.d.ts +27 -3
  61. package/dist/src/specification/v4/controls/ObjectPageSection.js.map +1 -1
  62. package/dist/src/specification/v4/controls/ObjectPageTable.d.ts +71 -2
  63. package/dist/src/specification/v4/controls/ObjectPageToolBar.d.ts +25 -0
  64. package/dist/src/specification/v4/controls/ObjectPageToolBar.js +3 -0
  65. package/dist/src/specification/v4/controls/ObjectPageToolBar.js.map +1 -0
  66. package/dist/src/specification/v4/controls/Table.d.ts +7 -1
  67. package/dist/src/specification/v4/controls/Table.js +1 -1
  68. package/dist/src/specification/v4/controls/Table.js.map +1 -1
  69. package/dist/src/specification/v4/controls/ToolBar.d.ts +28 -0
  70. package/dist/src/specification/v4/controls/ToolBar.js +8 -0
  71. package/dist/src/specification/v4/controls/ToolBar.js.map +1 -0
  72. package/dist/src/specification/v4/controls/index.d.ts +3 -0
  73. package/dist/src/specification/v4/controls/index.js +2 -0
  74. package/dist/src/specification/v4/controls/index.js.map +1 -1
  75. package/dist/src/specification/v4/page.d.ts +0 -2
  76. package/dist/src/specification/v4/webapp/manifest/ManifestSettings.d.ts +34 -2
  77. package/dist/src/specification/v4/webapp/manifest/ManifestSettings.js.map +1 -1
  78. package/dist/src/specification/v4/webapp/manifest/sapUi5.d.ts +6 -1
  79. package/dist/src/specification/v4/webapp/manifest/sapUi5.js.map +1 -1
  80. package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.d.ts +1 -0
  81. package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.js +1 -0
  82. package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.js.map +1 -1
  83. package/dist/src/sync/common/appProvider.d.ts +3 -1
  84. package/dist/src/sync/common/appProvider.js +2 -1
  85. package/dist/src/sync/common/appProvider.js.map +1 -1
  86. package/dist/src/sync/common/decoration/control.js +7 -4
  87. package/dist/src/sync/common/decoration/control.js.map +1 -1
  88. package/dist/src/sync/common/decoration/factory.d.ts +1 -1
  89. package/dist/src/sync/common/decoration/factory.js.map +1 -1
  90. package/dist/src/sync/common/flexUtils.d.ts +3 -2
  91. package/dist/src/sync/common/flexUtils.js +4 -1
  92. package/dist/src/sync/common/flexUtils.js.map +1 -1
  93. package/dist/src/sync/common/i18n.json +2 -1
  94. package/dist/src/sync/common/importProject.js +6 -6
  95. package/dist/src/sync/common/importProject.js.map +1 -1
  96. package/dist/src/sync/common/types.d.ts +22 -5
  97. package/dist/src/sync/common/types.js +20 -4
  98. package/dist/src/sync/common/types.js.map +1 -1
  99. package/dist/src/sync/common/utils.d.ts +72 -20
  100. package/dist/src/sync/common/utils.js +233 -97
  101. package/dist/src/sync/common/utils.js.map +1 -1
  102. package/dist/src/sync/v2/application.js +7 -6
  103. package/dist/src/sync/v2/application.js.map +1 -1
  104. package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.d.ts +1 -0
  105. package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js +5 -5
  106. package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js.map +1 -1
  107. package/dist/src/sync/v2/export/controls/Card.d.ts +2 -1
  108. package/dist/src/sync/v2/export/controls/Card.js +7 -0
  109. package/dist/src/sync/v2/export/controls/Card.js.map +1 -1
  110. package/dist/src/sync/v2/export/controls/FilterBar.d.ts +3 -0
  111. package/dist/src/sync/v2/export/controls/FilterBar.js +36 -0
  112. package/dist/src/sync/v2/export/controls/FilterBar.js.map +1 -1
  113. package/dist/src/sync/v2/export/controls/ObjectPageCustomSection.js +2 -1
  114. package/dist/src/sync/v2/export/controls/ObjectPageCustomSection.js.map +1 -1
  115. package/dist/src/sync/v2/export/controls/ObjectPageTable.d.ts +1 -0
  116. package/dist/src/sync/v2/export/controls/ObjectPageTable.js +12 -0
  117. package/dist/src/sync/v2/export/controls/ObjectPageTable.js.map +1 -1
  118. package/dist/src/sync/v2/export/controls/Table.d.ts +11 -2
  119. package/dist/src/sync/v2/export/controls/Table.js +38 -5
  120. package/dist/src/sync/v2/export/controls/Table.js.map +1 -1
  121. package/dist/src/sync/v2/export/export.d.ts +2 -2
  122. package/dist/src/sync/v2/export/export.js +15 -13
  123. package/dist/src/sync/v2/export/export.js.map +1 -1
  124. package/dist/src/sync/v2/export/pages/AnalyticalListPage.js +1 -1
  125. package/dist/src/sync/v2/generate/analyticalListReport.d.ts +3 -1
  126. package/dist/src/sync/v2/generate/analyticalListReport.js +59 -16
  127. package/dist/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  128. package/dist/src/sync/v2/generate/generate.d.ts +5 -2
  129. package/dist/src/sync/v2/generate/generate.js +7 -4
  130. package/dist/src/sync/v2/generate/generate.js.map +1 -1
  131. package/dist/src/sync/v2/generate/listReport.d.ts +5 -2
  132. package/dist/src/sync/v2/generate/listReport.js +63 -30
  133. package/dist/src/sync/v2/generate/listReport.js.map +1 -1
  134. package/dist/src/sync/v2/generate/objectPage.js +75 -56
  135. package/dist/src/sync/v2/generate/objectPage.js.map +1 -1
  136. package/dist/src/sync/v2/generate/utils.d.ts +19 -2
  137. package/dist/src/sync/v2/generate/utils.js +134 -57
  138. package/dist/src/sync/v2/generate/utils.js.map +1 -1
  139. package/dist/src/sync/v2/import/app/appProvider.d.ts +3 -2
  140. package/dist/src/sync/v2/import/app/appProvider.js +10 -9
  141. package/dist/src/sync/v2/import/app/appProvider.js.map +1 -1
  142. package/dist/src/sync/v2/import/app/ovpProvider.js +6 -6
  143. package/dist/src/sync/v2/import/app/ovpProvider.js.map +1 -1
  144. package/dist/src/sync/v2/import/common/index.d.ts +1 -0
  145. package/dist/src/sync/v2/import/common/index.js +11 -7
  146. package/dist/src/sync/v2/import/common/index.js.map +1 -1
  147. package/dist/src/sync/v2/import/pages/analyticalListPage.d.ts +1 -1
  148. package/dist/src/sync/v2/import/pages/analyticalListPage.js +15 -14
  149. package/dist/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
  150. package/dist/src/sync/v2/import/pages/listReport.d.ts +1 -1
  151. package/dist/src/sync/v2/import/pages/listReport.js +15 -15
  152. package/dist/src/sync/v2/import/pages/listReport.js.map +1 -1
  153. package/dist/src/sync/v2/import/pages/objectPage.js +12 -11
  154. package/dist/src/sync/v2/import/pages/objectPage.js.map +1 -1
  155. package/dist/src/sync/v2/import/pages/overviewPage.js +5 -3
  156. package/dist/src/sync/v2/import/pages/overviewPage.js.map +1 -1
  157. package/dist/src/sync/v2/import/utils.d.ts +0 -12
  158. package/dist/src/sync/v2/import/utils.js +0 -35
  159. package/dist/src/sync/v2/import/utils.js.map +1 -1
  160. package/dist/src/sync/v4/application.d.ts +3 -0
  161. package/dist/src/sync/v4/application.js +9 -0
  162. package/dist/src/sync/v4/application.js.map +1 -1
  163. package/dist/src/sync/v4/export/controls/ObjectPageHeader.d.ts +2 -1
  164. package/dist/src/sync/v4/export/controls/ObjectPageHeader.js.map +1 -1
  165. package/dist/src/sync/v4/export/controls/ObjectPageHeaderSection.d.ts +21 -0
  166. package/dist/src/sync/v4/export/controls/ObjectPageHeaderSection.js +65 -0
  167. package/dist/src/sync/v4/export/controls/ObjectPageHeaderSection.js.map +1 -0
  168. package/dist/src/sync/v4/export/controls/ObjectPageTable.d.ts +18 -4
  169. package/dist/src/sync/v4/export/controls/ObjectPageTable.js +96 -0
  170. package/dist/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  171. package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.d.ts +6 -2
  172. package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.js +17 -0
  173. package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.js.map +1 -1
  174. package/dist/src/sync/v4/export/controls/ObjectPageToolBarAction.d.ts +4 -0
  175. package/dist/src/sync/v4/export/controls/ObjectPageToolBarAction.js +21 -0
  176. package/dist/src/sync/v4/export/controls/ObjectPageToolBarAction.js.map +1 -0
  177. package/dist/src/sync/v4/export/controls/Table.d.ts +25 -1
  178. package/dist/src/sync/v4/export/controls/Table.js +169 -0
  179. package/dist/src/sync/v4/export/controls/Table.js.map +1 -1
  180. package/dist/src/sync/v4/export/controls/TableColumn.d.ts +5 -1
  181. package/dist/src/sync/v4/export/controls/TableColumn.js +17 -0
  182. package/dist/src/sync/v4/export/controls/TableColumn.js.map +1 -1
  183. package/dist/src/sync/v4/export/controls/ToolBar.d.ts +4 -0
  184. package/dist/src/sync/v4/export/controls/ToolBar.js +6 -0
  185. package/dist/src/sync/v4/export/controls/ToolBar.js.map +1 -0
  186. package/dist/src/sync/v4/export/controls/ToolBarAction.d.ts +4 -0
  187. package/dist/src/sync/v4/export/controls/ToolBarAction.js +21 -0
  188. package/dist/src/sync/v4/export/controls/ToolBarAction.js.map +1 -0
  189. package/dist/src/sync/v4/export/controls/index.d.ts +4 -0
  190. package/dist/src/sync/v4/export/controls/index.js +4 -0
  191. package/dist/src/sync/v4/export/controls/index.js.map +1 -1
  192. package/dist/src/sync/v4/export/export.d.ts +2 -1
  193. package/dist/src/sync/v4/export/export.js +60 -50
  194. package/dist/src/sync/v4/export/export.js.map +1 -1
  195. package/dist/src/sync/v4/export/factory.js +3 -1
  196. package/dist/src/sync/v4/export/factory.js.map +1 -1
  197. package/dist/src/sync/v4/export/manifest.js +28 -7
  198. package/dist/src/sync/v4/export/manifest.js.map +1 -1
  199. package/dist/src/sync/v4/export/pages/AnalyticalListPage.js +2 -2
  200. package/dist/src/sync/v4/export/pages/AnalyticalListPage.js.map +1 -1
  201. package/dist/src/sync/v4/export/pages/ListReport.js +1 -4
  202. package/dist/src/sync/v4/export/pages/ListReport.js.map +1 -1
  203. package/dist/src/sync/v4/generate/listReport.d.ts +1 -0
  204. package/dist/src/sync/v4/generate/listReport.js +7 -2
  205. package/dist/src/sync/v4/generate/listReport.js.map +1 -1
  206. package/dist/src/sync/v4/generate/objectPage.js +167 -69
  207. package/dist/src/sync/v4/generate/objectPage.js.map +1 -1
  208. package/dist/src/sync/v4/import/app/appProvider.d.ts +2 -1
  209. package/dist/src/sync/v4/import/app/appProvider.js +25 -11
  210. package/dist/src/sync/v4/import/app/appProvider.js.map +1 -1
  211. package/dist/src/sync/v4/import/fragment.js +4 -3
  212. package/dist/src/sync/v4/import/fragment.js.map +1 -1
  213. package/dist/src/sync/v4/import/pages/analyticalListPage.js +7 -6
  214. package/dist/src/sync/v4/import/pages/analyticalListPage.js.map +1 -1
  215. package/dist/src/sync/v4/import/pages/listReport.d.ts +2 -2
  216. package/dist/src/sync/v4/import/pages/listReport.js +32 -19
  217. package/dist/src/sync/v4/import/pages/listReport.js.map +1 -1
  218. package/dist/src/sync/v4/import/pages/objectPage.d.ts +3 -1
  219. package/dist/src/sync/v4/import/pages/objectPage.js +74 -21
  220. package/dist/src/sync/v4/import/pages/objectPage.js.map +1 -1
  221. package/dist/src/sync/v4/utils/StableIdHelper.js +12 -1
  222. package/dist/src/sync/v4/utils/StableIdHelper.js.map +1 -1
  223. package/dist/src/sync/v4/utils/utils.d.ts +13 -2
  224. package/dist/src/sync/v4/utils/utils.js +49 -29
  225. package/dist/src/sync/v4/utils/utils.js.map +1 -1
  226. package/dist/test/test-utils/utils.d.ts +0 -1
  227. package/dist/test/unit/import/importAppV4.test.d.ts +1 -0
  228. package/package.json +9 -9
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+ var __importStar = (this && this.__importStar) || function (mod) {
3
+ if (mod && mod.__esModule) return mod;
4
+ var result = {};
5
+ if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
6
+ result["default"] = mod;
7
+ return result;
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ /**
11
+ * This script extracts all existing documentation (i.e. descriptions) from the generic schemas of a certain OData version (V2 or V4).
12
+ * All descriptions are collected in an Excel sheet that you afterwards can find under dist/documentation: it is named Specificationv2.xslx or Specificationv4.xslx, depending on the chosen version.
13
+ * You can find one worksheet for each generic schema file.
14
+ *
15
+ * The script expects that you supply an argument --version with either v2 or v4.
16
+ * You can also start it from one of the debugger scripts named in launch.json: "Extract V2 documentation" or "Extract V4 documentation".
17
+ */
18
+ const page_1 = require("../src/specification/common/page");
19
+ const path_1 = require("path");
20
+ const fs = __importStar(require("fs"));
21
+ const excel = __importStar(require("excel4node"));
22
+ /**
23
+ * Handles reference ($ref) within the schema, finds the corresponding definition
24
+ * @param schema - Object representing the whole generic schema
25
+ * @param reference - Content for the $ref property
26
+ * @param output - Array of descriptions with assigned hierarchy elements, all separated by ';' (csv like)
27
+ * @param definition - The current hierarchy element (list of path parts separated by ';')
28
+ */
29
+ function dereference(schema, reference, output, definition, description) {
30
+ const currentDefinition = reference.split('#/definitions/')[1];
31
+ try {
32
+ parseSchema(schema, schema['definitions'][currentDefinition], output, definition, description);
33
+ }
34
+ catch (error) {
35
+ console.log(error);
36
+ }
37
+ }
38
+ /**
39
+ * Handles one property of a sub-schema
40
+ * @param schema - Object representing the whole generic schema
41
+ * @param subSchema - Object representing the current sub-structure of the schema
42
+ * @param property - Name of the property ithin the subSchema
43
+ * @param output - Array of descriptions with assigned hierarchy elements, all separated by ';' (csv like)
44
+ * @param definition - The current hierarchy element (list of path parts separated by ';')
45
+ */
46
+ function processElement(schema, subSchema, property, output, definition) {
47
+ if (['$schema', 'id', 'pages', 'home', 'custom', '1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(property)) {
48
+ return;
49
+ }
50
+ const element = subSchema[property];
51
+ definition = definition ? definition + ';' + property : property;
52
+ if (property === 'columns') {
53
+ definition = definition + ';columnId';
54
+ }
55
+ if (property === 'sections') {
56
+ definition = definition + ';sectionId';
57
+ }
58
+ if (property === 'cards') {
59
+ definition = definition + ';cardKey';
60
+ }
61
+ if (element['description'] !== undefined) {
62
+ if (element['$ref'] !== undefined) {
63
+ dereference(schema, element['$ref'], output, definition, element['description']);
64
+ return;
65
+ }
66
+ else if (element['anyOf'] !== undefined) {
67
+ handleAnyOf(schema, element['anyOf'], output, definition, element['description']);
68
+ return;
69
+ }
70
+ if (element['type'] !== undefined && element['items']) {
71
+ const reference = element['items']['$ref'] || (element['items'][0] && element['items'][0]['$ref']);
72
+ if (reference) {
73
+ dereference(schema, reference, output, definition, element['description']);
74
+ }
75
+ else {
76
+ output.push(definition + ';' + `TYPE_${element['type']}` + ';' + element['description']);
77
+ }
78
+ return;
79
+ }
80
+ if (element['type'] !== undefined) {
81
+ output.push(definition + ';' + `TYPE_${element['type']}` + ';' + element['description']);
82
+ }
83
+ }
84
+ // Temporary as Description is not maintained for some properties - description should be added
85
+ if (!element['description'] && element['type'] !== undefined) {
86
+ output.push(definition + ';' + `TYPE_${element['type']}`);
87
+ }
88
+ if (element['$ref'] !== undefined) {
89
+ dereference(schema, element['$ref'], output, definition);
90
+ }
91
+ else {
92
+ parseSchema(schema, element, output, definition);
93
+ }
94
+ }
95
+ /**
96
+ * Special handing of anyOf elements of a JSON schema
97
+ * @param schema - Object representing the whole generic schema
98
+ * @param anyOfSchema - Object representing the current sub-structure of the schema
99
+ * @param output - Array of descriptions with assigned hierarchy elements, all separated by ';' (csv like)
100
+ * @param definition - The current hierarchy element (list of path parts separated by ';')
101
+ */
102
+ function handleAnyOf(schema, anyOfSchema, output, definition, description) {
103
+ for (let index = 0; index < anyOfSchema.length; index++) {
104
+ const element = anyOfSchema[index];
105
+ if (Object.keys(element)[0] === '$ref') {
106
+ dereference(schema, element['$ref'], output, definition);
107
+ }
108
+ else {
109
+ parseSchema(schema, element, output, definition, description);
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Parses a sub-structure of the schema
115
+ * @param schema - Object representing the whole generic schema
116
+ * @param subSchema - Object representing the current sub-structure of the schema
117
+ * @param output - Array of descriptions with assigned hierarchy elements, all separated by ';' (csv like)
118
+ * @param definition - The current hierarchy element (list of path parts separated by ';')
119
+ */
120
+ function parseSchema(schema, subSchema, output, definition, description) {
121
+ if (Object.keys(subSchema) && Object.keys(subSchema)[0] === 'anyOf') {
122
+ handleAnyOf(schema, subSchema['anyOf'], output, definition);
123
+ return;
124
+ }
125
+ for (const property in subSchema['properties']) {
126
+ if (property === '$ref') {
127
+ dereference(schema, subSchema['properties']['$ref'], output, definition);
128
+ }
129
+ else if (property === 'anyOf') {
130
+ handleAnyOf(schema, subSchema['properties']['anyOf'], output, definition);
131
+ }
132
+ else {
133
+ processElement(schema, subSchema['properties'], property, output, definition);
134
+ }
135
+ }
136
+ for (const property in subSchema['patternProperties']) {
137
+ if (property === '$ref') {
138
+ dereference(schema, subSchema['patternProperties']['$ref'], output, definition);
139
+ }
140
+ else if (property === 'anyOf') {
141
+ handleAnyOf(schema, subSchema['patternProperties']['anyOf'], output, definition);
142
+ }
143
+ else {
144
+ processElement(schema, subSchema['patternProperties'], property, output, definition);
145
+ }
146
+ }
147
+ for (const property in subSchema['additionalProperties']) {
148
+ if (property === '$ref') {
149
+ dereference(schema, subSchema['additionalProperties']['$ref'], output, definition);
150
+ }
151
+ else if (property === 'anyOf') {
152
+ handleAnyOf(schema, subSchema['additionalProperties']['anyOf'], output, definition);
153
+ }
154
+ else {
155
+ processElement(schema, subSchema['additionalProperties'], property, output, definition);
156
+ }
157
+ }
158
+ if (subSchema['enum'] && description) {
159
+ output.push(definition + ';' + `TYPE_${[subSchema['enum'].join('|')]}` + ';' + description);
160
+ }
161
+ else if (subSchema['type'] && description) {
162
+ output.push(definition + ';' + `TYPE_${subSchema['type']}` + ';' + description);
163
+ }
164
+ }
165
+ /**
166
+ * Fills an excel4node workbook based on csv like information
167
+ * @param workbook - Excel workbook (excel4node format)
168
+ * @param output - Array of descriptions with assigned hierarchy elements, all separated by ';' (csv like)
169
+ * @param file - file name of the original schema
170
+ */
171
+ function writeToExcel(workbook, output, file) {
172
+ //filter output to remove duplicated lines due to different table types (anyOf)
173
+ output = output.filter((e, i, a) => a.indexOf(e) === i);
174
+ const sheetName = file.split('.')[0];
175
+ const worksheet = workbook.addWorksheet(sheetName);
176
+ worksheet.headerFooter = { evenHeader: output[0] };
177
+ // Create a reusable style
178
+ const style = workbook.createStyle({
179
+ font: {
180
+ //color: '#800000',
181
+ size: 12
182
+ },
183
+ numberFormat: '$#,##0.00; ($#,##0.00); -'
184
+ });
185
+ for (let rowIndex = 1; rowIndex < output.length; rowIndex++) {
186
+ const element = output[rowIndex];
187
+ const cellArray = element.split(';');
188
+ for (let cellIndex = 0; cellIndex < cellArray.length; cellIndex++) {
189
+ const cell = cellArray[cellIndex];
190
+ worksheet
191
+ .cell(rowIndex, cellIndex + 1)
192
+ .string(cell)
193
+ .style(style);
194
+ }
195
+ }
196
+ }
197
+ function generateIxiaSoftFormat(output, file, version) {
198
+ //filter output to remove duplicated lines due to different table types (anyOf)
199
+ output = output.filter((e, i, a) => a.indexOf(e) === i);
200
+ let iXiaFormat = `<simpletable frame="all" relcolwidth="1* 1*" id="simpletable_uqj_klr_jlb">
201
+ <sthead>
202
+ <stentry> Settings </stentry>
203
+ <stentry> Description </stentry>
204
+ </sthead>
205
+ `;
206
+ const fileName = file.split('.')[0];
207
+ for (let rowIndex = 1; rowIndex < output.length; rowIndex++) {
208
+ const element = output[rowIndex];
209
+ const cellArray = element.split(';');
210
+ let setting = '{';
211
+ iXiaFormat = iXiaFormat + `\t<strow>\n`;
212
+ for (let cellIndex = 0; cellIndex < cellArray.length - 1; cellIndex++) {
213
+ let cell = cellArray[cellIndex];
214
+ if (['0', '1'].includes(cell)) {
215
+ cell = 'variantKey' + cell;
216
+ }
217
+ if (cellArray[cellIndex + 1].includes('TYPE')) {
218
+ setting = setting + `"${cell}": ${cellArray[cellIndex + 1].split('_')[1]}`;
219
+ let noOfOpeningBraces = setting.match(/{/g).length;
220
+ while (noOfOpeningBraces > 0) {
221
+ setting = setting + '}';
222
+ noOfOpeningBraces--;
223
+ }
224
+ iXiaFormat = iXiaFormat + `\t\t<stentry> ${setting} </stentry>\n`;
225
+ }
226
+ else {
227
+ setting = setting + `"${cell}": {`;
228
+ }
229
+ }
230
+ // add description to the table
231
+ iXiaFormat = iXiaFormat + `\t\t<stentry> ${cellArray[cellArray.length - 1]} </stentry>\n\t</strow>\n`;
232
+ }
233
+ iXiaFormat = iXiaFormat + `</simpletable>`;
234
+ const outDir = path_1.join('dist', 'documentation');
235
+ if (!fs.existsSync(outDir)) {
236
+ fs.mkdirSync(outDir);
237
+ }
238
+ const outFile = path_1.join(outDir, 'Specification' + version + fileName + '.txt');
239
+ fs.writeFile(outFile, iXiaFormat, (err) => {
240
+ if (err)
241
+ throw err;
242
+ console.log(`${outFile} was succesfully saved!`);
243
+ });
244
+ }
245
+ /**
246
+ * Writes an Excel workbook to a file in the dist/documentation folder.
247
+ * @param workbook - Excel workbook (excel4node format)
248
+ * @param version - OData version
249
+ */
250
+ function writeToFile(workbook, version) {
251
+ const outDir = path_1.join('dist', 'documentation');
252
+ if (!fs.existsSync(outDir)) {
253
+ fs.mkdirSync(outDir);
254
+ }
255
+ const outFile = path_1.join(outDir, 'Specification' + version + '.xlsx');
256
+ workbook.write(outFile);
257
+ }
258
+ /********************** Main ***************************/
259
+ function generateDocmentation() {
260
+ const myArgs = process.argv.slice(2);
261
+ let version;
262
+ let format;
263
+ myArgs.forEach((arg) => {
264
+ const value = arg.split('=')[1];
265
+ if (arg.includes('version')) {
266
+ version = value;
267
+ }
268
+ else if (arg.includes('format')) {
269
+ format = value;
270
+ }
271
+ });
272
+ let directoryPath = '';
273
+ switch (version) {
274
+ case page_1.FioriElementsVersion.v2:
275
+ directoryPath = path_1.join('schemas', 'v2');
276
+ break;
277
+ case page_1.FioriElementsVersion.v4:
278
+ directoryPath = path_1.join('schemas', 'v4');
279
+ break;
280
+ default:
281
+ console.log('Invalid version ' + version + '; processing stopped.');
282
+ break;
283
+ }
284
+ if (directoryPath.length > 0) {
285
+ const workbook = new excel.Workbook();
286
+ fs.readdir(directoryPath, function (err, files) {
287
+ if (err) {
288
+ return console.log(err);
289
+ }
290
+ files.forEach((file) => {
291
+ const filePath = path_1.join(directoryPath, file);
292
+ const output = [filePath];
293
+ const data = fs.readFileSync(filePath, 'utf8');
294
+ const schema = JSON.parse(data);
295
+ parseSchema(schema, schema, output);
296
+ //console.log(output);
297
+ if (format === 'excel') {
298
+ writeToExcel(workbook, output, file);
299
+ }
300
+ if (format === 'iXiaSoft') {
301
+ generateIxiaSoftFormat(output, file, version);
302
+ }
303
+ });
304
+ if (format === 'excel') {
305
+ writeToFile(workbook, version);
306
+ }
307
+ });
308
+ }
309
+ }
310
+ generateDocmentation();
311
+ //# sourceMappingURL=extractDocu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDocu.js","sourceRoot":"","sources":["../../scripts/extractDocu.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;GAOG;AACH,2DAAwE;AACxE,+BAA4B;AAC5B,uCAAyB;AACzB,kDAAoC;AAEpC;;;;;;GAMG;AACH,SAAS,WAAW,CAChB,MAAc,EACd,SAAiB,EACjB,MAAgB,EAChB,UAAmB,EACnB,WAAoB;IAEpB,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI;QACA,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;KAClG;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACtB;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CACnB,MAAc,EACd,SAAiB,EACjB,QAAgB,EAChB,MAAgB,EAChB,UAAmB;IAEnB,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC9G,OAAO;KACV;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjE,IAAI,QAAQ,KAAK,SAAS,EAAE;QACxB,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;KACzC;IACD,IAAI,QAAQ,KAAK,UAAU,EAAE;QACzB,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;KAC1C;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE;QACtB,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;KACxC;IACD,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;QACtC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;YAC/B,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;YACjF,OAAO;SACV;aAAM,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;YACvC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;YAClF,OAAO;SACV;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACnG,IAAI,SAAS,EAAE;gBACX,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;aAC9E;iBAAM;gBACH,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;aAC5F;YACD,OAAO;SACV;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;SAC5F;KACJ;IAED,+FAA+F;IAC/F,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;QAC1D,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAC7D;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;QAC/B,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;KAC5D;SAAM;QACH,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;KACpD;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAChB,MAAc,EACd,WAAqB,EACrB,MAAgB,EAChB,UAAmB,EACnB,WAAoB;IAEpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YACpC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAC5D;aAAM;YACH,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;SACjE;KACJ;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAChB,MAAc,EACd,SAAiB,EACjB,MAAgB,EAChB,UAAmB,EACnB,WAAoB;IAEpB,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;QACjE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5D,OAAO;KACV;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;QAC5C,IAAI,QAAQ,KAAK,MAAM,EAAE;YACrB,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAC5E;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;YAC7B,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAC7E;aAAM;YACH,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACjF;KACJ;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,mBAAmB,CAAC,EAAE;QACnD,IAAI,QAAQ,KAAK,MAAM,EAAE;YACrB,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACnF;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;YAC7B,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACpF;aAAM;YACH,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACxF;KACJ;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,sBAAsB,CAAC,EAAE;QACtD,IAAI,QAAQ,KAAK,MAAM,EAAE;YACrB,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACtF;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;YAC7B,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SACvF;aAAM;YACH,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAC3F;KACJ;IACD,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE;QAClC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC;KAC/F;SAAM,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE;QACzC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC;KACnF;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,QAAa,EAAE,MAAgB,EAAE,IAAY;IAC/D,+EAA+E;IAC/E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACnD,SAAS,CAAC,YAAY,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,0BAA0B;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC/B,IAAI,EAAE;YACF,mBAAmB;YACnB,IAAI,EAAE,EAAE;SACX;QACD,YAAY,EAAE,2BAA2B;KAC5C,CAAC,CAAC;IACH,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QACzD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS;iBACJ,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC;iBAC7B,MAAM,CAAC,IAAI,CAAC;iBACZ,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;KACJ;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAgB,EAAE,IAAY,EAAE,OAAe;IAC3E,+EAA+E;IAC/E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,IAAI,UAAU,GAAG;;;;;KAKhB,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QACzD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;QACxC,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;YACnE,IAAI,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC;aAC9B;YACD,IAAI,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC3C,OAAO,GAAG,OAAO,GAAG,IAAI,IAAI,MAAM,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,IAAI,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBACnD,OAAO,iBAAiB,GAAG,CAAC,EAAE;oBAC1B,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC;oBACxB,iBAAiB,EAAE,CAAC;iBACvB;gBACD,UAAU,GAAG,UAAU,GAAG,iBAAiB,OAAO,eAAe,CAAC;aACrE;iBAAM;gBACH,OAAO,GAAG,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC;aACtC;SACJ;QACD,+BAA+B;QAC/B,UAAU,GAAG,UAAU,GAAG,iBAAiB,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,2BAA2B,CAAC;KACzG;IACD,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;IAE3C,MAAM,MAAM,GAAG,WAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACxB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACxB;IACD,MAAM,OAAO,GAAG,WAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;IAC5E,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,IAAI,GAAG;YAAE,MAAM,GAAG,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,yBAAyB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,QAAa,EAAE,OAAe;IAC/C,MAAM,MAAM,GAAG,WAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACxB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACxB;IACD,MAAM,OAAO,GAAG,WAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;IAClE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,yDAAyD;AACzD,SAAS,oBAAoB;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACzB,OAAO,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC/B,MAAM,GAAG,KAAK,CAAC;SAClB;IACL,CAAC,CAAC,CAAC;IACH,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,QAAQ,OAAO,EAAE;QACb,KAAK,2BAAoB,CAAC,EAAE;YACxB,aAAa,GAAG,WAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM;QACV,KAAK,2BAAoB,CAAC,EAAE;YACxB,aAAa,GAAG,WAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM;QACV;YACI,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,OAAO,GAAG,uBAAuB,CAAC,CAAC;YACpE,MAAM;KACb;IACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,UAAS,GAAG,EAAE,KAAK;YACzC,IAAI,GAAG,EAAE;gBACL,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAC3B;YACD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnB,MAAM,QAAQ,GAAG,WAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBAC3C,MAAM,MAAM,GAAa,CAAC,QAAQ,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACpC,sBAAsB;gBACtB,IAAI,MAAM,KAAK,OAAO,EAAE;oBACpB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;iBACxC;gBACD,IAAI,MAAM,KAAK,UAAU,EAAE;oBACvB,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;iBACjD;YACL,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,KAAK,OAAO,EAAE;gBACpB,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;KACN;AACL,CAAC;AAED,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs_1 = require("fs");
4
+ const path_1 = require("path");
5
+ const project_1 = require("../src/project");
6
+ const src_1 = require("../src");
7
+ var ExecutionMode;
8
+ (function (ExecutionMode) {
9
+ ExecutionMode["Import"] = "import";
10
+ })(ExecutionMode || (ExecutionMode = {}));
11
+ /**
12
+ * Write a single file
13
+ * @param path - file path
14
+ * @param content - file content
15
+ */
16
+ async function write(path, content) {
17
+ return new Promise((resolve, reject) => {
18
+ fs_1.writeFile(path, content, { encoding: 'utf8' }, (err) => {
19
+ if (err) {
20
+ reject(err);
21
+ }
22
+ else {
23
+ resolve();
24
+ }
25
+ });
26
+ });
27
+ }
28
+ /**
29
+ * Write files, create target directory if not exists
30
+ * @param directory - target directory
31
+ * @param files - list of files with name and content
32
+ */
33
+ async function writeFiles(directory, files) {
34
+ for (const file of files) {
35
+ const path = path_1.join(directory, file.dataSourceUri);
36
+ const targetDir = path_1.dirname(path);
37
+ if (!(await project_1.isDirectory(targetDir))) {
38
+ fs_1.mkdirSync(targetDir, { recursive: true });
39
+ }
40
+ await write(path_1.join(directory, file.dataSourceUri), file.fileContent);
41
+ }
42
+ }
43
+ /**
44
+ * Format the resulting files as string
45
+ * @param files - list of files as {dataSourceUri: string, fileContent: string}
46
+ */
47
+ const formatterFileContent = (files) => files.reduce((result, file) => result + `\nFile: '${file.dataSourceUri}':\n${file.fileContent}`, '');
48
+ /**
49
+ * Get config and schemas from project
50
+ * @param projectRoot - root of the project where package.json is located
51
+ */
52
+ async function importFiles(projectRoot, outputPath) {
53
+ const { annotations, manifest, changes: flex } = await project_1.getProject(projectRoot);
54
+ let resultString = '';
55
+ const files = await src_1.importProject({
56
+ annotations,
57
+ manifest,
58
+ flex
59
+ });
60
+ if (outputPath) {
61
+ writeFiles(outputPath, files);
62
+ resultString = `Files written to '${outputPath}'`;
63
+ }
64
+ else {
65
+ resultString = formatterFileContent(files);
66
+ }
67
+ return resultString;
68
+ }
69
+ /**
70
+ * Parse the command line parameters
71
+ * @param args - content of process.argv
72
+ */
73
+ async function getParameters(args) {
74
+ var _a;
75
+ if (process.argv.length > 3) {
76
+ const [mode, projectRoot, ...commandArgs] = args.slice(2);
77
+ if (mode !== "import" /* Import */) {
78
+ throw Error(`Unkown mode: '${mode}'. Please use '${"import" /* Import */}'`);
79
+ }
80
+ if (!(await project_1.isDirectory(projectRoot))) {
81
+ throw Error(`Directory '${projectRoot}' doesn't exist.`);
82
+ }
83
+ const outputPath = (_a = commandArgs.find((arg) => arg.toLowerCase().startsWith('--output='))) === null || _a === void 0 ? void 0 : _a.substring(9);
84
+ return {
85
+ mode: "import" /* Import */,
86
+ projectRoot,
87
+ outputPath
88
+ };
89
+ }
90
+ throw Error(`Usage: ${path_1.basename(args[0])} ${path_1.basename(args[1])} import <PROJECT_ROOT_PATH> [--output=<PATH>]`);
91
+ }
92
+ /**
93
+ * Run the required execution mode, e.g. import a project
94
+ * @param argv - command line arguments as string array
95
+ */
96
+ async function run(argv) {
97
+ const parameters = await getParameters(argv);
98
+ switch (parameters.mode) {
99
+ case "import" /* Import */: {
100
+ const result = await importFiles(parameters.projectRoot, parameters.outputPath);
101
+ console.log(result);
102
+ break;
103
+ }
104
+ default: {
105
+ break;
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Usage through command line
111
+ * node spec.js import <PROJECT_ROOT_PATH> [--output=<PATH>]
112
+ */
113
+ run(process.argv).catch((e) => console.error(e.message));
114
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../scripts/spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { FioriElementsVersion } from '../src/specification/common';
2
+ export declare type Schema = {
3
+ [name: string]: object;
4
+ };
5
+ /**
6
+ * Convert interfaces to json schema
7
+ * @param path - path to interfaces
8
+ * @param files - file names, filename must match the main symbol (interface) in the content of the file
9
+ */
10
+ export declare function convertInterfaces(path: string, files: string[], version: FioriElementsVersion): Schema[];