@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.
- package/CHANGELOG.md +110 -0
- package/dist/index-min.js +1 -1
- package/dist/schemas/v2/AnalyticalListPageConfig.json +460 -53
- package/dist/schemas/v2/ListReportConfig.json +358 -104
- package/dist/schemas/v2/ObjectPageConfig.json +293 -92
- package/dist/schemas/v2/OverviewPageConfig.json +126 -46
- package/dist/schemas/v4/AnalyticalListPageConfig.json +110 -36
- package/dist/schemas/v4/ApplicationV4.json +0 -6
- package/dist/schemas/v4/ListReportConfig.json +110 -36
- package/dist/schemas/v4/ObjectPageConfig.json +349 -68
- package/dist/scripts/extractDocu.d.ts +1 -0
- package/dist/scripts/extractDocu.js +311 -0
- package/dist/scripts/extractDocu.js.map +1 -0
- package/dist/scripts/spec.d.ts +1 -0
- package/dist/scripts/spec.js +114 -0
- package/dist/scripts/spec.js.map +1 -0
- package/dist/scripts/to-json-schema.d.ts +10 -0
- package/dist/scripts/to-json-schema.js +121 -0
- package/dist/scripts/to-json-schema.js.map +1 -0
- package/dist/specification/v2/index-min.js +1 -1
- package/dist/specification/v4/index-min.js +1 -1
- package/dist/src/api.js +3 -5
- package/dist/src/api.js.map +1 -1
- package/dist/src/apiTypes.d.ts +2 -1
- package/dist/src/extensionLogger.js +6 -0
- package/dist/src/extensionLogger.js.map +1 -1
- package/dist/src/specification/common/types.d.ts +4 -0
- package/dist/src/specification/common/types.js +5 -0
- package/dist/src/specification/common/types.js.map +1 -1
- package/dist/src/specification/common/webapp/manifest/Manifest.d.ts +7 -0
- package/dist/src/specification/common/webapp/manifest/Manifest.js +8 -0
- package/dist/src/specification/common/webapp/manifest/Manifest.js.map +1 -1
- package/dist/src/specification/v2/controls/Card.d.ts +8 -2
- package/dist/src/specification/v2/controls/Card.js +2 -0
- package/dist/src/specification/v2/controls/Card.js.map +1 -1
- package/dist/src/specification/v2/controls/FilterBar.d.ts +20 -0
- package/dist/src/specification/v2/controls/FilterBar.js +51 -0
- package/dist/src/specification/v2/controls/FilterBar.js.map +1 -1
- package/dist/src/specification/v2/controls/ObjectPageTable.d.ts +12 -3
- package/dist/src/specification/v2/controls/ObjectPageTable.js.map +1 -1
- package/dist/src/specification/v2/controls/ObjectPageToolBar.d.ts +19 -0
- package/dist/src/specification/v2/controls/ObjectPageToolBar.js +3 -0
- package/dist/src/specification/v2/controls/ObjectPageToolBar.js.map +1 -0
- package/dist/src/specification/v2/controls/Table.d.ts +53 -5
- package/dist/src/specification/v2/controls/Table.js.map +1 -1
- package/dist/src/specification/v2/controls/ToolBar.d.ts +19 -0
- package/dist/src/specification/v2/controls/ToolBar.js +3 -0
- package/dist/src/specification/v2/controls/ToolBar.js.map +1 -0
- package/dist/src/specification/v2/controls/index.d.ts +2 -0
- package/dist/src/specification/v2/controls/index.js.map +1 -1
- package/dist/src/specification/v2/pages/AnalyticalListPageConfig.d.ts +2 -2
- package/dist/src/specification/v2/webapp/manifest/sapUi5.d.ts +2 -1
- package/dist/src/specification/v2/webapp/manifest/sapUi5.js +1 -0
- package/dist/src/specification/v2/webapp/manifest/sapUi5.js.map +1 -1
- package/dist/src/specification/v4/controls/FilterBar.d.ts +1 -1
- package/dist/src/specification/v4/controls/ObjectPageHeader.d.ts +2 -0
- package/dist/src/specification/v4/controls/ObjectPageHeaderSection.d.ts +58 -0
- package/dist/src/specification/v4/controls/ObjectPageHeaderSection.js +7 -0
- package/dist/src/specification/v4/controls/ObjectPageHeaderSection.js.map +1 -0
- package/dist/src/specification/v4/controls/ObjectPageSection.d.ts +27 -3
- package/dist/src/specification/v4/controls/ObjectPageSection.js.map +1 -1
- package/dist/src/specification/v4/controls/ObjectPageTable.d.ts +71 -2
- package/dist/src/specification/v4/controls/ObjectPageToolBar.d.ts +25 -0
- package/dist/src/specification/v4/controls/ObjectPageToolBar.js +3 -0
- package/dist/src/specification/v4/controls/ObjectPageToolBar.js.map +1 -0
- package/dist/src/specification/v4/controls/Table.d.ts +7 -1
- package/dist/src/specification/v4/controls/Table.js +1 -1
- package/dist/src/specification/v4/controls/Table.js.map +1 -1
- package/dist/src/specification/v4/controls/ToolBar.d.ts +28 -0
- package/dist/src/specification/v4/controls/ToolBar.js +8 -0
- package/dist/src/specification/v4/controls/ToolBar.js.map +1 -0
- package/dist/src/specification/v4/controls/index.d.ts +3 -0
- package/dist/src/specification/v4/controls/index.js +2 -0
- package/dist/src/specification/v4/controls/index.js.map +1 -1
- package/dist/src/specification/v4/page.d.ts +0 -2
- package/dist/src/specification/v4/webapp/manifest/ManifestSettings.d.ts +34 -2
- package/dist/src/specification/v4/webapp/manifest/ManifestSettings.js.map +1 -1
- package/dist/src/specification/v4/webapp/manifest/sapUi5.d.ts +6 -1
- package/dist/src/specification/v4/webapp/manifest/sapUi5.js.map +1 -1
- package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.d.ts +1 -0
- package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.js +1 -0
- package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.js.map +1 -1
- package/dist/src/sync/common/appProvider.d.ts +3 -1
- package/dist/src/sync/common/appProvider.js +2 -1
- package/dist/src/sync/common/appProvider.js.map +1 -1
- package/dist/src/sync/common/decoration/control.js +7 -4
- package/dist/src/sync/common/decoration/control.js.map +1 -1
- package/dist/src/sync/common/decoration/factory.d.ts +1 -1
- package/dist/src/sync/common/decoration/factory.js.map +1 -1
- package/dist/src/sync/common/flexUtils.d.ts +3 -2
- package/dist/src/sync/common/flexUtils.js +4 -1
- package/dist/src/sync/common/flexUtils.js.map +1 -1
- package/dist/src/sync/common/i18n.json +2 -1
- package/dist/src/sync/common/importProject.js +6 -6
- package/dist/src/sync/common/importProject.js.map +1 -1
- package/dist/src/sync/common/types.d.ts +22 -5
- package/dist/src/sync/common/types.js +20 -4
- package/dist/src/sync/common/types.js.map +1 -1
- package/dist/src/sync/common/utils.d.ts +72 -20
- package/dist/src/sync/common/utils.js +233 -97
- package/dist/src/sync/common/utils.js.map +1 -1
- package/dist/src/sync/v2/application.js +7 -6
- package/dist/src/sync/v2/application.js.map +1 -1
- package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.d.ts +1 -0
- package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js +5 -5
- package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Card.d.ts +2 -1
- package/dist/src/sync/v2/export/controls/Card.js +7 -0
- package/dist/src/sync/v2/export/controls/Card.js.map +1 -1
- package/dist/src/sync/v2/export/controls/FilterBar.d.ts +3 -0
- package/dist/src/sync/v2/export/controls/FilterBar.js +36 -0
- package/dist/src/sync/v2/export/controls/FilterBar.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageCustomSection.js +2 -1
- package/dist/src/sync/v2/export/controls/ObjectPageCustomSection.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageTable.d.ts +1 -0
- package/dist/src/sync/v2/export/controls/ObjectPageTable.js +12 -0
- package/dist/src/sync/v2/export/controls/ObjectPageTable.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Table.d.ts +11 -2
- package/dist/src/sync/v2/export/controls/Table.js +38 -5
- package/dist/src/sync/v2/export/controls/Table.js.map +1 -1
- package/dist/src/sync/v2/export/export.d.ts +2 -2
- package/dist/src/sync/v2/export/export.js +15 -13
- package/dist/src/sync/v2/export/export.js.map +1 -1
- package/dist/src/sync/v2/export/pages/AnalyticalListPage.js +1 -1
- package/dist/src/sync/v2/generate/analyticalListReport.d.ts +3 -1
- package/dist/src/sync/v2/generate/analyticalListReport.js +59 -16
- package/dist/src/sync/v2/generate/analyticalListReport.js.map +1 -1
- package/dist/src/sync/v2/generate/generate.d.ts +5 -2
- package/dist/src/sync/v2/generate/generate.js +7 -4
- package/dist/src/sync/v2/generate/generate.js.map +1 -1
- package/dist/src/sync/v2/generate/listReport.d.ts +5 -2
- package/dist/src/sync/v2/generate/listReport.js +63 -30
- package/dist/src/sync/v2/generate/listReport.js.map +1 -1
- package/dist/src/sync/v2/generate/objectPage.js +75 -56
- package/dist/src/sync/v2/generate/objectPage.js.map +1 -1
- package/dist/src/sync/v2/generate/utils.d.ts +19 -2
- package/dist/src/sync/v2/generate/utils.js +134 -57
- package/dist/src/sync/v2/generate/utils.js.map +1 -1
- package/dist/src/sync/v2/import/app/appProvider.d.ts +3 -2
- package/dist/src/sync/v2/import/app/appProvider.js +10 -9
- package/dist/src/sync/v2/import/app/appProvider.js.map +1 -1
- package/dist/src/sync/v2/import/app/ovpProvider.js +6 -6
- package/dist/src/sync/v2/import/app/ovpProvider.js.map +1 -1
- package/dist/src/sync/v2/import/common/index.d.ts +1 -0
- package/dist/src/sync/v2/import/common/index.js +11 -7
- package/dist/src/sync/v2/import/common/index.js.map +1 -1
- package/dist/src/sync/v2/import/pages/analyticalListPage.d.ts +1 -1
- package/dist/src/sync/v2/import/pages/analyticalListPage.js +15 -14
- package/dist/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
- package/dist/src/sync/v2/import/pages/listReport.d.ts +1 -1
- package/dist/src/sync/v2/import/pages/listReport.js +15 -15
- package/dist/src/sync/v2/import/pages/listReport.js.map +1 -1
- package/dist/src/sync/v2/import/pages/objectPage.js +12 -11
- package/dist/src/sync/v2/import/pages/objectPage.js.map +1 -1
- package/dist/src/sync/v2/import/pages/overviewPage.js +5 -3
- package/dist/src/sync/v2/import/pages/overviewPage.js.map +1 -1
- package/dist/src/sync/v2/import/utils.d.ts +0 -12
- package/dist/src/sync/v2/import/utils.js +0 -35
- package/dist/src/sync/v2/import/utils.js.map +1 -1
- package/dist/src/sync/v4/application.d.ts +3 -0
- package/dist/src/sync/v4/application.js +9 -0
- package/dist/src/sync/v4/application.js.map +1 -1
- package/dist/src/sync/v4/export/controls/ObjectPageHeader.d.ts +2 -1
- package/dist/src/sync/v4/export/controls/ObjectPageHeader.js.map +1 -1
- package/dist/src/sync/v4/export/controls/ObjectPageHeaderSection.d.ts +21 -0
- package/dist/src/sync/v4/export/controls/ObjectPageHeaderSection.js +65 -0
- package/dist/src/sync/v4/export/controls/ObjectPageHeaderSection.js.map +1 -0
- package/dist/src/sync/v4/export/controls/ObjectPageTable.d.ts +18 -4
- package/dist/src/sync/v4/export/controls/ObjectPageTable.js +96 -0
- package/dist/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
- package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.d.ts +6 -2
- package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.js +17 -0
- package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.js.map +1 -1
- package/dist/src/sync/v4/export/controls/ObjectPageToolBarAction.d.ts +4 -0
- package/dist/src/sync/v4/export/controls/ObjectPageToolBarAction.js +21 -0
- package/dist/src/sync/v4/export/controls/ObjectPageToolBarAction.js.map +1 -0
- package/dist/src/sync/v4/export/controls/Table.d.ts +25 -1
- package/dist/src/sync/v4/export/controls/Table.js +169 -0
- package/dist/src/sync/v4/export/controls/Table.js.map +1 -1
- package/dist/src/sync/v4/export/controls/TableColumn.d.ts +5 -1
- package/dist/src/sync/v4/export/controls/TableColumn.js +17 -0
- package/dist/src/sync/v4/export/controls/TableColumn.js.map +1 -1
- package/dist/src/sync/v4/export/controls/ToolBar.d.ts +4 -0
- package/dist/src/sync/v4/export/controls/ToolBar.js +6 -0
- package/dist/src/sync/v4/export/controls/ToolBar.js.map +1 -0
- package/dist/src/sync/v4/export/controls/ToolBarAction.d.ts +4 -0
- package/dist/src/sync/v4/export/controls/ToolBarAction.js +21 -0
- package/dist/src/sync/v4/export/controls/ToolBarAction.js.map +1 -0
- package/dist/src/sync/v4/export/controls/index.d.ts +4 -0
- package/dist/src/sync/v4/export/controls/index.js +4 -0
- package/dist/src/sync/v4/export/controls/index.js.map +1 -1
- package/dist/src/sync/v4/export/export.d.ts +2 -1
- package/dist/src/sync/v4/export/export.js +60 -50
- package/dist/src/sync/v4/export/export.js.map +1 -1
- package/dist/src/sync/v4/export/factory.js +3 -1
- package/dist/src/sync/v4/export/factory.js.map +1 -1
- package/dist/src/sync/v4/export/manifest.js +28 -7
- package/dist/src/sync/v4/export/manifest.js.map +1 -1
- package/dist/src/sync/v4/export/pages/AnalyticalListPage.js +2 -2
- package/dist/src/sync/v4/export/pages/AnalyticalListPage.js.map +1 -1
- package/dist/src/sync/v4/export/pages/ListReport.js +1 -4
- package/dist/src/sync/v4/export/pages/ListReport.js.map +1 -1
- package/dist/src/sync/v4/generate/listReport.d.ts +1 -0
- package/dist/src/sync/v4/generate/listReport.js +7 -2
- package/dist/src/sync/v4/generate/listReport.js.map +1 -1
- package/dist/src/sync/v4/generate/objectPage.js +167 -69
- package/dist/src/sync/v4/generate/objectPage.js.map +1 -1
- package/dist/src/sync/v4/import/app/appProvider.d.ts +2 -1
- package/dist/src/sync/v4/import/app/appProvider.js +25 -11
- package/dist/src/sync/v4/import/app/appProvider.js.map +1 -1
- package/dist/src/sync/v4/import/fragment.js +4 -3
- package/dist/src/sync/v4/import/fragment.js.map +1 -1
- package/dist/src/sync/v4/import/pages/analyticalListPage.js +7 -6
- package/dist/src/sync/v4/import/pages/analyticalListPage.js.map +1 -1
- package/dist/src/sync/v4/import/pages/listReport.d.ts +2 -2
- package/dist/src/sync/v4/import/pages/listReport.js +32 -19
- package/dist/src/sync/v4/import/pages/listReport.js.map +1 -1
- package/dist/src/sync/v4/import/pages/objectPage.d.ts +3 -1
- package/dist/src/sync/v4/import/pages/objectPage.js +74 -21
- package/dist/src/sync/v4/import/pages/objectPage.js.map +1 -1
- package/dist/src/sync/v4/utils/StableIdHelper.js +12 -1
- package/dist/src/sync/v4/utils/StableIdHelper.js.map +1 -1
- package/dist/src/sync/v4/utils/utils.d.ts +13 -2
- package/dist/src/sync/v4/utils/utils.js +49 -29
- package/dist/src/sync/v4/utils/utils.js.map +1 -1
- package/dist/test/test-utils/utils.d.ts +0 -1
- package/dist/test/unit/import/importAppV4.test.d.ts +1 -0
- 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":"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"}
|
|
@@ -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[];
|