@sap/ux-specification 1.84.110 → 1.84.112
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 +43 -0
- package/dist/documentation/v2/v2-AnalyticalListPage.html +2 -2
- package/dist/documentation/v2/v2-ApplicationV2.html +2 -2
- package/dist/documentation/v2/v2-ListReport.html +2 -2
- package/dist/documentation/v2/v2-ObjectPage.html +2 -2
- package/dist/documentation/v2/v2-OverviewPage.html +2 -2
- package/dist/documentation/v4/v4-ApplicationV4.html +2 -2
- package/dist/documentation/v4/v4-ListReport.html +2 -2
- package/dist/documentation/v4/v4-ObjectPage.html +2 -2
- package/dist/index-min.js +40 -40
- package/dist/index-min.js.map +3 -3
- package/dist/specification/package.json +4 -4
- package/dist/specification/scripts/schema/index.d.ts +2 -0
- package/dist/specification/scripts/schema/index.d.ts.map +1 -0
- package/dist/specification/scripts/schema/index.js +45 -0
- package/dist/specification/scripts/schema/index.js.map +1 -0
- package/dist/specification/scripts/schema/to-json-schema.d.ts +24 -0
- package/dist/specification/scripts/schema/to-json-schema.d.ts.map +1 -0
- package/dist/specification/scripts/{to-json-schema.js → schema/to-json-schema.js} +17 -13
- package/dist/specification/scripts/schema/to-json-schema.js.map +1 -0
- package/dist/specification/src/sync/common/decoration/decorators.d.ts +8 -1
- package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
- package/dist/specification/src/sync/common/decoration/decorators.js +14 -0
- package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
- package/dist/specification/src/sync/common/i18n.json +2 -0
- package/dist/specification/src/sync/common/utils.d.ts +13 -0
- package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/common/utils.js +22 -0
- package/dist/specification/src/sync/common/utils.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/overviewPage.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/generate/overviewPage.js +43 -0
- package/dist/specification/src/sync/v2/generate/overviewPage.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts +59 -0
- package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts.map +1 -0
- package/dist/specification/src/sync/v2/generate/schemaAdaptation.js +360 -0
- package/dist/specification/src/sync/v2/generate/schemaAdaptation.js.map +1 -0
- package/dist/specification/src/sync/v2/generate/utils.d.ts +26 -1
- package/dist/specification/src/sync/v2/generate/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/generate/utils.js +65 -1
- package/dist/specification/src/sync/v2/generate/utils.js.map +1 -1
- package/dist/specification/src/sync/v2/import/importPage.d.ts +56 -0
- package/dist/specification/src/sync/v2/import/importPage.d.ts.map +1 -0
- package/dist/specification/src/sync/v2/import/importPage.js +289 -0
- package/dist/specification/src/sync/v2/import/importPage.js.map +1 -0
- package/dist/specification/src/sync/v2/utils.d.ts +26 -0
- package/dist/specification/src/sync/v2/utils.d.ts.map +1 -0
- package/dist/specification/src/sync/v2/utils.js +64 -0
- package/dist/specification/src/sync/v2/utils.js.map +1 -0
- package/dist/types/src/common/types.d.ts +164 -2
- package/dist/types/src/common/types.d.ts.map +1 -1
- package/dist/types/src/common/types.js +30 -0
- package/dist/types/src/common/types.js.map +1 -1
- package/package.json +4 -4
- package/dist/specification/scripts/to-json-schema.d.ts +0 -11
- package/dist/specification/scripts/to-json-schema.d.ts.map +0 -1
- package/dist/specification/scripts/to-json-schema.js.map +0 -1
|
@@ -4,6 +4,16 @@ exports.getCardDefinitionNames = getCardDefinitionNames;
|
|
|
4
4
|
exports.addModelsEnum = addModelsEnum;
|
|
5
5
|
exports.generateOverviewPageSchemaV2 = generateOverviewPageSchemaV2;
|
|
6
6
|
const common_1 = require("../../common");
|
|
7
|
+
const DEPRECATED_PROPERTIES = [
|
|
8
|
+
{
|
|
9
|
+
key: 'globalFilterEntityType',
|
|
10
|
+
since: '',
|
|
11
|
+
deprecated: {
|
|
12
|
+
since: '1.54.0',
|
|
13
|
+
text: 'Use globalFilterEntitySet instead.'
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
];
|
|
7
17
|
/**
|
|
8
18
|
* Method returns array of card definition names.
|
|
9
19
|
* @param genericSchema - Generic schema of Overview Page.
|
|
@@ -48,6 +58,38 @@ function addModelsEnum(appSchema, manifest) {
|
|
|
48
58
|
property['$ref'] = common_1.DEFINITION_LINK_PREFIX + 'CardModel';
|
|
49
59
|
}
|
|
50
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Sets warning messages for the deprecated properties.
|
|
63
|
+
*
|
|
64
|
+
* @param appSchema - the app specific schema that shall get enhanced
|
|
65
|
+
* @param manifest - manifest.json of the app
|
|
66
|
+
*/
|
|
67
|
+
function markDeprecatedProperties(appSchema, manifest) {
|
|
68
|
+
const schemaProperties = appSchema.properties;
|
|
69
|
+
for (const property in DEPRECATED_PROPERTIES) {
|
|
70
|
+
const deprecatedProperty = DEPRECATED_PROPERTIES[property];
|
|
71
|
+
const key = deprecatedProperty.key;
|
|
72
|
+
// Set warning messages for deprecated properties
|
|
73
|
+
if (schemaProperties[key]) {
|
|
74
|
+
schemaProperties[key]['messages'] = [
|
|
75
|
+
{
|
|
76
|
+
text: (0, common_1.getTextForDeprecated)(key, {
|
|
77
|
+
since: deprecatedProperty.since,
|
|
78
|
+
deprecated: {
|
|
79
|
+
since: deprecatedProperty.deprecated.since,
|
|
80
|
+
text: deprecatedProperty.deprecated.text
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
// Hide deprecated undefined properties
|
|
87
|
+
const manifestOVPSection = manifest?.['sap.ovp'];
|
|
88
|
+
if (manifestOVPSection && !manifestOVPSection[key]) {
|
|
89
|
+
schemaProperties[key]['hidden'] = true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
51
93
|
/**
|
|
52
94
|
* Generates an app specific schema out of the generic schema.
|
|
53
95
|
* Generic types are replaced by information from the app manifest.
|
|
@@ -63,6 +105,7 @@ function generateOverviewPageSchemaV2(genericSchema, manifest) {
|
|
|
63
105
|
appSchema['properties']['cards']['propertyNames'] = {
|
|
64
106
|
pattern: '^[a-zA-Z0-9_\\.\\-]+$'
|
|
65
107
|
};
|
|
108
|
+
markDeprecatedProperties(appSchema, manifest);
|
|
66
109
|
// Enhance 'model' property with enum entries
|
|
67
110
|
addModelsEnum(appSchema, manifest);
|
|
68
111
|
return appSchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overviewPage.js","sourceRoot":"","sources":["../../../../../../src/sync/v2/generate/overviewPage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"overviewPage.js","sourceRoot":"","sources":["../../../../../../src/sync/v2/generate/overviewPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file provides a function that generically creates a page specific schema out of a generic schema for a page
|
|
3
|
+
* of a FE v2 app (function getAdaptedSchema).
|
|
4
|
+
* In addition to that it exposes some generic helper functions that can be used to configure the generation process.
|
|
5
|
+
* Unit tests for this class are located in test.unit.genericSchemaHandling.schemaAdaptation.test.ts
|
|
6
|
+
*/
|
|
7
|
+
import type { Definition } from 'typescript-json-schema';
|
|
8
|
+
import type { AccessorPath, ExtensionLogger, FileData, Manifest } from '@sap/ux-specification-types';
|
|
9
|
+
import type { SyncRuleProvider } from '@sap/ux-specification-types/src';
|
|
10
|
+
/**
|
|
11
|
+
* An instance of this type describes a page within an FE v2 app. It also includes all artifacts that are needed to build the schema for that page.
|
|
12
|
+
*
|
|
13
|
+
* @property appId - id of the app. Note that this should not be taken from the manifest, since the manifest may still contain a placeholder.
|
|
14
|
+
* @property manifest - manifest of the FE v2 app
|
|
15
|
+
* @property pagePath - page path identifying the page. See getManifestPathFromPagePath.
|
|
16
|
+
* @property annotations - the annotations relevant for this page
|
|
17
|
+
* @property fragments - fragments defined for the app
|
|
18
|
+
*/
|
|
19
|
+
export type PageSpec = {
|
|
20
|
+
appId: string;
|
|
21
|
+
manifest: Manifest;
|
|
22
|
+
pagePath: AccessorPath;
|
|
23
|
+
annotations: FileData[];
|
|
24
|
+
fragments?: FileData[];
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* An instance of this type provides the rules how a specific schema can be generated.
|
|
28
|
+
*
|
|
29
|
+
* @property genericSchema - the generic schema that is used as basis for the specific schema
|
|
30
|
+
* @property syncRuleProvider - the class that gives access to the top level sync rule and the top-level properties of the schema
|
|
31
|
+
*/
|
|
32
|
+
export type SpecificSchemaGenerationInfo = {
|
|
33
|
+
genericSchema: Definition;
|
|
34
|
+
syncRuleProvider: SyncRuleProvider;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* An instance of this type allows to get the rules how to generate a specific schema for all supported page types.
|
|
38
|
+
*
|
|
39
|
+
* @param componentName - name of the template component describing the page
|
|
40
|
+
* @returns the information how a page specific schema for that page should be created (resp. undefined if componentName does not specify a supported page type)
|
|
41
|
+
*/
|
|
42
|
+
export type GenericSchemaInfoProvider = (componentName: string) => SpecificSchemaGenerationInfo | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a page-specific schema for an FE v2 app page.
|
|
45
|
+
* For this purpose it takes an instance of the generic schema for the page type.
|
|
46
|
+
* The transformation into the specific schema is controlled by syncRules (in particular the property elementAdapter).
|
|
47
|
+
* The generated schema will contain information how its properties are mapped into manifest properties resp. flex changes.
|
|
48
|
+
* - manifest properties contain properties `artifactType: "Manifest"` and `manifestPath: AccessorSpec`.
|
|
49
|
+
* In rare cases an additional non-standard mapping needs to be applied when moving values back and forth between manifest
|
|
50
|
+
* and configuration. For such cases a conversionExit specification is added to the schema as well.
|
|
51
|
+
* - flexChanges contain properties `artifactType: "FlexChange", `controlId` and `controlType`.
|
|
52
|
+
*
|
|
53
|
+
* @param pageSpec - the page for which the schema should be generated
|
|
54
|
+
* @param getGenericSchemaInfo - function providing base data for schema generation process (template component dependent)
|
|
55
|
+
* @param logger - log information during schema generation process
|
|
56
|
+
* @returns page-specific schema
|
|
57
|
+
*/
|
|
58
|
+
export declare function getAdaptedSchema(pageSpec: PageSpec, getGenericSchemaInfo: GenericSchemaInfoProvider, logger?: ExtensionLogger): Definition;
|
|
59
|
+
//# sourceMappingURL=schemaAdaptation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaAdaptation.d.ts","sourceRoot":"","sources":["../../../../../../src/sync/v2/generate/schemaAdaptation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAuB,MAAM,wBAAwB,CAAC;AAG9E,OAAO,KAAK,EACR,YAAY,EACZ,eAAe,EACf,QAAQ,EAER,QAAQ,EAEX,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAIR,gBAAgB,EACnB,MAAM,iCAAiC,CAAC;AAoVzC;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACvC,aAAa,EAAE,UAAU,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;CACtC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,aAAa,EAAE,MAAM,KAAK,4BAA4B,GAAG,SAAS,CAAC;AAE5G;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,yBAAyB,EAC/C,MAAM,CAAC,EAAE,eAAe,GACzB,UAAU,CAyEZ"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAdaptedSchema = getAdaptedSchema;
|
|
4
|
+
const common_1 = require("../../common");
|
|
5
|
+
const ux_specification_types_1 = require("@sap/ux-specification-types");
|
|
6
|
+
const decorators_1 = require("../../common/decoration/decorators");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const utils_2 = require("../utils");
|
|
9
|
+
const i18n_1 = require("../../../i18n/i18n");
|
|
10
|
+
/**
|
|
11
|
+
* Checks whether a schema element contains an anyOf-property. If yes, all types directly or indirectly referred by one of the
|
|
12
|
+
* branches of the anyOf are added to a collection of referred type names.
|
|
13
|
+
*
|
|
14
|
+
* @param element - the schema element to be processed
|
|
15
|
+
* @param globalTypes - info about global types defined in the schema. Will possibly be extended by this function.
|
|
16
|
+
*/
|
|
17
|
+
function addAnyOfToReferredTypes(element, globalTypes) {
|
|
18
|
+
if (element.anyOf) {
|
|
19
|
+
element.anyOf.forEach(function (innerElement) {
|
|
20
|
+
addReferredTypesFromElement(innerElement, globalTypes);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Checks whether the items property of a given schema element is a single Definition. If yes, this Definition is returned.
|
|
26
|
+
* In all other cases allowed by the type (boolean, array of BooleanOrDefinition, undefined) return undefined.
|
|
27
|
+
* Note that ignoring arrays is justified by the fact that the schemas generated by Specification never have items pointing to arrays of DefinitionOrBoolean.
|
|
28
|
+
*
|
|
29
|
+
* @param element - the schema element to be checked
|
|
30
|
+
* @returns the single Definition specified by the items-property of element resp. undefined
|
|
31
|
+
*/
|
|
32
|
+
function getSingleItem(element) {
|
|
33
|
+
return typeof element.items !== 'object' || Array.isArray(element.items) ? undefined : element.items;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Recursively analyzes a given schema element and adds the names of all types referred by it to the collection of referred type names.
|
|
37
|
+
* Note that properties and items defined inline will not be considered.
|
|
38
|
+
*
|
|
39
|
+
* @param element - the schema element to be processed. Maybe faulty or boolean -> nothing to do.
|
|
40
|
+
* @param globalTypes - info about global types defined in the schema. Will possibly be extended by this function.
|
|
41
|
+
*/
|
|
42
|
+
function addReferredTypesFromElement(element, globalTypes) {
|
|
43
|
+
if (typeof element !== 'object') {
|
|
44
|
+
// boolean or undefined -> no types referred here
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Now definition is actually an instance of Definition
|
|
48
|
+
const refType = (0, common_1.getRefType)(element);
|
|
49
|
+
if (refType) {
|
|
50
|
+
addReferredTypesFromType(refType, globalTypes);
|
|
51
|
+
}
|
|
52
|
+
addAnyOfToReferredTypes(element, globalTypes);
|
|
53
|
+
addReferredTypesFromElement(element.additionalProperties, globalTypes);
|
|
54
|
+
// The schemas we are handling do not provide items as arrays directly:
|
|
55
|
+
addReferredTypesFromElement(getSingleItem(element), globalTypes);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Adds a globally defined type to the collection of referred type names and does the same for all its (directly or indirectly) referred types.
|
|
59
|
+
* Note that this one (in contrast to addReferredTypesFromElement) will also observe properties defined inline and (if no properties are available)
|
|
60
|
+
* items that are defined inline.
|
|
61
|
+
*
|
|
62
|
+
* @param type - Name of the globally defined type
|
|
63
|
+
* @param globalTypes - info about global types defined in the schema. Will possibly be extended by this function.
|
|
64
|
+
*/
|
|
65
|
+
function addReferredTypesFromType(type, globalTypes) {
|
|
66
|
+
globalTypes.referredTypeNames.add(type);
|
|
67
|
+
const typeDefinition = globalTypes.types[type];
|
|
68
|
+
addReferredTypesFromElement(typeDefinition, globalTypes);
|
|
69
|
+
const properties = typeDefinition.properties;
|
|
70
|
+
if (properties) {
|
|
71
|
+
Object.values(properties).forEach((propertyDef) => addReferredTypesFromElement(propertyDef, globalTypes));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
addReferredTypesFromElement(getSingleItem(typeDefinition), globalTypes);
|
|
75
|
+
}
|
|
76
|
+
addReferredTypesFromElement(typeDefinition.additionalProperties, globalTypes);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Processes an element which will be added to the specific schema based on an AdaptationInfo.
|
|
80
|
+
*
|
|
81
|
+
* @param adaptationInfo - configures the process. If undefined the element should remain unchanged.
|
|
82
|
+
* @param element - the schema element to be processed. Maybe faulty or boolean -> nothing to do.
|
|
83
|
+
* @param generateParameters - generic parameters for schema generation
|
|
84
|
+
* @param params - contains information specific for the current adjustment step. Property specificParams has been set by the previous processing level (see AdaptationInfo.specificParams).
|
|
85
|
+
* @param globalTypes - info about global types defined in the schema. Will possibly be extended by this function.
|
|
86
|
+
*/
|
|
87
|
+
function applyAdaptationInfoToElement(adaptationInfo, element, generateParameters, params, globalTypes) {
|
|
88
|
+
if (typeof element !== 'object') {
|
|
89
|
+
// boolean or undefined -> no adaptation possible
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// Now element is actually an instance of Definition
|
|
93
|
+
// Two cases:
|
|
94
|
+
// 1) element is specified by a global type via the #ref attribute
|
|
95
|
+
// 2) element contains inline definition
|
|
96
|
+
const refType = (0, common_1.getRefType)(element);
|
|
97
|
+
if (refType) {
|
|
98
|
+
// case 1
|
|
99
|
+
// case 1a: global type is already defined in the generic schema and thus part of globalTypes.types
|
|
100
|
+
// case 1b: global type is not yet defined in the generic schema. Then we expect its definition to be provided by adaptationInfo.
|
|
101
|
+
let refTypeDefinition = globalTypes.types[refType];
|
|
102
|
+
if (!refTypeDefinition) {
|
|
103
|
+
// case 1b: Need to make type available globally
|
|
104
|
+
refTypeDefinition = adaptationInfo?.refTypeDefinition;
|
|
105
|
+
globalTypes.types[refType] = refTypeDefinition;
|
|
106
|
+
}
|
|
107
|
+
if (adaptationInfo) {
|
|
108
|
+
let targetTypeDefinition;
|
|
109
|
+
if (adaptationInfo.suffix) {
|
|
110
|
+
// element should not point to the same global type as in the generic schema, but to an adapted type.
|
|
111
|
+
// See jsdoc of property suffix for more details.
|
|
112
|
+
const specificTypeName = `${refType}<${adaptationInfo.suffix}>`;
|
|
113
|
+
element.$ref = (0, common_1.getDefinitionsRef)(specificTypeName);
|
|
114
|
+
targetTypeDefinition = structuredClone(refTypeDefinition);
|
|
115
|
+
// Add the newly defined type to the list of global types
|
|
116
|
+
globalTypes.types[specificTypeName] = targetTypeDefinition;
|
|
117
|
+
// and ensure that this type is not deleted as an unused type at the end of the process
|
|
118
|
+
globalTypes.referredTypeNames.add(specificTypeName);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// The global type can be used unmodified
|
|
122
|
+
globalTypes.referredTypeNames.add(refType);
|
|
123
|
+
targetTypeDefinition = refTypeDefinition;
|
|
124
|
+
}
|
|
125
|
+
const newParams = {
|
|
126
|
+
pageInfo: params.pageInfo,
|
|
127
|
+
specificParams: adaptationInfo.specificParams || params.specificParams
|
|
128
|
+
};
|
|
129
|
+
// step down to the next hierarchy level
|
|
130
|
+
adjustElement(generateParameters, newParams, adaptationInfo.syncRuleProvider, targetTypeDefinition, globalTypes);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// No adaptationInfo -> The subtree under the referred type will be taken over unchanged
|
|
134
|
+
// Therefore, we simply need to add all types in this subtree to collection of referred type names to ensure that they are not removed from the schema at the end of the process
|
|
135
|
+
addReferredTypesFromType(refType, globalTypes);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// case 2: directly step down to the next hierarchy level
|
|
140
|
+
adjustElement(generateParameters, params, adaptationInfo?.syncRuleProvider, element, globalTypes);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* This function applies a syncRule to the schema element is has been defined for and returns the instruction how to proceed with the processing.
|
|
145
|
+
*
|
|
146
|
+
* @param generateParameters - generic parameters for schema generation
|
|
147
|
+
* @param params - contains information specific for the current adjustment step. Property specificParams has been set by the previous processing level (see AdaptationInfo.specificParams).
|
|
148
|
+
* @param element - the schema element to be processed.
|
|
149
|
+
* @param syncRule - the syncRule defined for the element (if available)
|
|
150
|
+
* @returns the instruction how to process. If the given element should be omitted it returns undefined.
|
|
151
|
+
*/
|
|
152
|
+
function applySyncRuleToElement(generateParameters, params, element, syncRule) {
|
|
153
|
+
const adapter = syncRule?.elementAdapter;
|
|
154
|
+
// If no elementAdapter is available element should be taken over unchanged. This is expressed by an empty ProcessingRule.
|
|
155
|
+
const processingRule = adapter ? adapter(element, params, generateParameters) : {};
|
|
156
|
+
return processingRule;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* This function is the heart of the implementation of getAdaptedSchema (see below). It recursively traverses the passed schema element
|
|
160
|
+
* and adjusts it according to the corresponding syncRule.
|
|
161
|
+
* Note that there are two flavours of syncRules:
|
|
162
|
+
* - syncRules valid for a class as a whole
|
|
163
|
+
* - syncRules valid for a specific property of a class
|
|
164
|
+
*
|
|
165
|
+
* @param generateParameters - generic parameters for schema generation
|
|
166
|
+
* @param params - contains information specific for the current adjustment step. Property specificParams has been set by the previous processing level(s) (see AdaptationInfo.specificParams).
|
|
167
|
+
* @param syncRuleProvider - constructor of the class which has the syncRule for the current adjustment step
|
|
168
|
+
* @param element - the section of the specific schema which is currently processed
|
|
169
|
+
* Following properties of element will be analyzed for getting schemas on the next hierarchy level:
|
|
170
|
+
* 'properties', 'items' (only if 'properties' is not there), 'additionalProperties'
|
|
171
|
+
* @param globalTypes - info about global types defined in the schema. Will possibly be extended by this function.
|
|
172
|
+
*/
|
|
173
|
+
function adjustElement(generateParameters, params, syncRuleProvider, element, globalTypes) {
|
|
174
|
+
// First check the syncRule of the class given by SyncRuleProvider.
|
|
175
|
+
const generalSyncRule = (0, decorators_1.getReflectTypeMetadata)(syncRuleProvider);
|
|
176
|
+
const generalProcessingRule = applySyncRuleToElement(generateParameters, params, element, generalSyncRule);
|
|
177
|
+
if (!generalProcessingRule) {
|
|
178
|
+
// syncRule has expressed that this subtree can be ignored.
|
|
179
|
+
// This is added just for completeness: Normally, this will not be expressed on the type level but on the level of the property referring the type.
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
// Now generalProcessingRule contains the information needed to process the content of element
|
|
183
|
+
// First process the additionalProperties section of element (if required)
|
|
184
|
+
applyAdaptationInfoToElement(generalProcessingRule.additionalPropertiesAdaptation, element.additionalProperties, generateParameters, params, globalTypes);
|
|
185
|
+
// if generalProcessingRule has a more specific version of specificParams use it when processing the subtree
|
|
186
|
+
const generalParams = {
|
|
187
|
+
pageInfo: params.pageInfo,
|
|
188
|
+
specificParams: generalProcessingRule.referenceAdaptation?.specificParams || params.specificParams
|
|
189
|
+
};
|
|
190
|
+
// Now process either the properties of element or (if properties is absent) the items.
|
|
191
|
+
// In the second case we treat it as if element would have exactly one property (namely 'items') pointing to the content of element.items
|
|
192
|
+
let properties = element.properties; // a map where the keys are the properties we want to handle and the values are the corresponding elements
|
|
193
|
+
let propertyCollection; // the map which should finally be updated for all the properties we want to handle
|
|
194
|
+
if (properties) {
|
|
195
|
+
propertyCollection = properties;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
const items = getSingleItem(element);
|
|
199
|
+
if (items) {
|
|
200
|
+
properties = {
|
|
201
|
+
items
|
|
202
|
+
};
|
|
203
|
+
propertyCollection = element;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// Nothing to process -> we are done
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Now we process the the prepared properties.
|
|
211
|
+
// This will be done by an instance of type ProcessingRuleProvider which is either taken from
|
|
212
|
+
// generalProcessingRule.referenceAdaptation (dynamic case) or created on the fly from the syncRules defined for
|
|
213
|
+
// the properties of the class which syncRuleProvider is a constructor for (static case).
|
|
214
|
+
let syncRuleProviderInstance; // used for the static case. Instance of the class given by syncRuleProvider. Initialized on demand (i.e. for the first property).
|
|
215
|
+
const processingRuleProvider = generalProcessingRule.referenceAdaptation?.processingRuleProvider || // the dynamic case
|
|
216
|
+
function (property, element) {
|
|
217
|
+
// the static case
|
|
218
|
+
syncRuleProviderInstance = syncRuleProviderInstance || (syncRuleProvider && new syncRuleProvider());
|
|
219
|
+
const syncRule = (0, decorators_1.getReflectMetadata)(syncRuleProviderInstance, property);
|
|
220
|
+
const processingRule = applySyncRuleToElement(generateParameters, generalParams, element, syncRule);
|
|
221
|
+
return processingRule;
|
|
222
|
+
};
|
|
223
|
+
for (const property in properties) {
|
|
224
|
+
const propertyDef = properties[property];
|
|
225
|
+
if (typeof propertyDef !== 'object') {
|
|
226
|
+
// For type safety handle the case that a property points to a boolean. Should actually not happen for schemas generated by the Specification.
|
|
227
|
+
propertyCollection[property] = propertyDef;
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
const propertyCopy = { ...propertyDef }; // shallow copy of the schema value for property
|
|
231
|
+
// Task of the next call is to modify propertyCopy (if needed) and return a ProcessingRule describing how this property should be processed further
|
|
232
|
+
const processingRule = processingRuleProvider(property, propertyCopy);
|
|
233
|
+
if (processingRule) {
|
|
234
|
+
// the property should be part of the schema. Corresponding definition should be propertyCopy. Now we need to evaluate the content of the processingRule.
|
|
235
|
+
// First perform some top-level tasks:
|
|
236
|
+
if (processingRule.controlId) {
|
|
237
|
+
propertyCopy[ux_specification_types_1.SchemaTag.controlId] = `${params.pageInfo.controlId}--${processingRule.controlId}`; // the processing rule only provides the (view-)local id -> make a global id out of it
|
|
238
|
+
}
|
|
239
|
+
else if (processingRule.manifestPath) {
|
|
240
|
+
propertyCopy[ux_specification_types_1.SchemaTag.artifactType] = 'Manifest';
|
|
241
|
+
propertyCopy[ux_specification_types_1.SchemaTag.manifestPath] = processingRule.manifestPath;
|
|
242
|
+
}
|
|
243
|
+
addAnyOfToReferredTypes(propertyCopy, globalTypes);
|
|
244
|
+
// Now we are looking into the definition of the property itself and trigger the processing of the subtree
|
|
245
|
+
applyAdaptationInfoToElement(processingRule.referenceAdaptation, propertyCopy, generateParameters, generalParams, globalTypes);
|
|
246
|
+
// In case the definition of the property possesses additionalProperties
|
|
247
|
+
// (Note that additionalProperties defined on type level have already been processed above):
|
|
248
|
+
applyAdaptationInfoToElement(processingRule.additionalPropertiesAdaptation, propertyCopy.additionalProperties, generateParameters, generalParams, globalTypes);
|
|
249
|
+
// In case the definition of the property directly contains an items-element that needs to be processed further
|
|
250
|
+
// (Note that items being defined on type level will be treated like a single property 'items' due to the logic above):
|
|
251
|
+
applyAdaptationInfoToElement(processingRule.itemsAdaptation, getSingleItem(propertyCopy), generateParameters, generalParams, globalTypes);
|
|
252
|
+
// Finally set the propertyCopy as the new definition for the current property
|
|
253
|
+
propertyCollection[property] = propertyCopy;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
// no ProcessingRule indicates that the property should be removed from the schema
|
|
257
|
+
delete propertyCollection[property];
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* This function replicates the logic of function fnDetermineViewId in TemplateComponent of FE coding.
|
|
263
|
+
* It determines the id of the view that contains one page of an FE app.
|
|
264
|
+
*
|
|
265
|
+
* @param appId - id of the app
|
|
266
|
+
* @param componentName - name of the template component (that identifies the floor plan)
|
|
267
|
+
* @param entitySet - name of the entity set of a page
|
|
268
|
+
* @returns the fully qualified view id
|
|
269
|
+
*/
|
|
270
|
+
function getViewId(appId, componentName, entitySet) {
|
|
271
|
+
const componentPath = componentName.split('.');
|
|
272
|
+
const templateShortName = componentPath[componentPath.length - 1];
|
|
273
|
+
// Replicate logic how oComponentData.templateName has been defined in FE coding. All follow the same pattern with exception of OP.
|
|
274
|
+
const templateName = componentName + '.view.' + (templateShortName === 'ObjectPage' ? 'Details' : templateShortName);
|
|
275
|
+
return `${appId}::${templateName}::${entitySet}`;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Creates a page-specific schema for an FE v2 app page.
|
|
279
|
+
* For this purpose it takes an instance of the generic schema for the page type.
|
|
280
|
+
* The transformation into the specific schema is controlled by syncRules (in particular the property elementAdapter).
|
|
281
|
+
* The generated schema will contain information how its properties are mapped into manifest properties resp. flex changes.
|
|
282
|
+
* - manifest properties contain properties `artifactType: "Manifest"` and `manifestPath: AccessorSpec`.
|
|
283
|
+
* In rare cases an additional non-standard mapping needs to be applied when moving values back and forth between manifest
|
|
284
|
+
* and configuration. For such cases a conversionExit specification is added to the schema as well.
|
|
285
|
+
* - flexChanges contain properties `artifactType: "FlexChange", `controlId` and `controlType`.
|
|
286
|
+
*
|
|
287
|
+
* @param pageSpec - the page for which the schema should be generated
|
|
288
|
+
* @param getGenericSchemaInfo - function providing base data for schema generation process (template component dependent)
|
|
289
|
+
* @param logger - log information during schema generation process
|
|
290
|
+
* @returns page-specific schema
|
|
291
|
+
*/
|
|
292
|
+
function getAdaptedSchema(pageSpec, getGenericSchemaInfo, logger) {
|
|
293
|
+
(0, i18n_1.initI18n)(); // ensure that i18n texts can be resolved during the process
|
|
294
|
+
const templateType = (0, common_1.getTemplateTypeFromManifest)(pageSpec.manifest, ux_specification_types_1.FioriElementsVersion.v2, logger);
|
|
295
|
+
if (!templateType || templateType === ux_specification_types_1.TemplateType.OverviewPageV2) {
|
|
296
|
+
return; // not supported (yet)
|
|
297
|
+
}
|
|
298
|
+
const manifestPath = (0, utils_2.getManifestPathFromPagePath)(pageSpec.pagePath, false);
|
|
299
|
+
const { parent: pageDefinition } = (0, utils_2.getManifestPropertyByPath)(pageSpec.manifest, manifestPath);
|
|
300
|
+
if (!pageDefinition) {
|
|
301
|
+
return; // no page definition found at the specified path
|
|
302
|
+
}
|
|
303
|
+
// Now we know that pageDefinition is an object. Check basic prerequisites on its content:
|
|
304
|
+
const componentOfPage = pageDefinition['component'];
|
|
305
|
+
if ((0, utils_1.hasPropertyTypeError)(pageDefinition, 'entitySet', logger, 'string', true) ||
|
|
306
|
+
(0, utils_1.hasPropertyTypeError)(componentOfPage, 'name', logger, 'string', true)) {
|
|
307
|
+
return; // not a valid page definition
|
|
308
|
+
}
|
|
309
|
+
const entitySet = pageDefinition['entitySet']; // type ensured above
|
|
310
|
+
const componentName = componentOfPage['name']; // type ensured above
|
|
311
|
+
const schemaGenerationInfo = getGenericSchemaInfo(componentName);
|
|
312
|
+
const genericSchema = schemaGenerationInfo?.genericSchema;
|
|
313
|
+
const syncRuleProvider = schemaGenerationInfo?.syncRuleProvider;
|
|
314
|
+
if (!syncRuleProvider || !genericSchema) {
|
|
315
|
+
return genericSchema; // no adaptation possible
|
|
316
|
+
}
|
|
317
|
+
const serviceAVT = (0, common_1.parseAndMergeAndConvert)(pageSpec.annotations, logger);
|
|
318
|
+
const entitySetDefinition = serviceAVT.entitySets?.find((entitySetDefinition) => entitySetDefinition.name === entitySet);
|
|
319
|
+
if (!entitySetDefinition) {
|
|
320
|
+
return genericSchema; // not possible to adapt the schema if entity set is not defined
|
|
321
|
+
}
|
|
322
|
+
// Create a defensive copy of the generic schema that will be modified according to the sync rules and returned as result of this function
|
|
323
|
+
const mySchema = structuredClone(genericSchema);
|
|
324
|
+
const controlId = getViewId(pageSpec.appId, componentName, entitySet);
|
|
325
|
+
const pageInfo = {
|
|
326
|
+
appId: pageSpec.appId,
|
|
327
|
+
componentName,
|
|
328
|
+
entitySet,
|
|
329
|
+
controlId,
|
|
330
|
+
pagePath: pageSpec.pagePath
|
|
331
|
+
};
|
|
332
|
+
const params = {
|
|
333
|
+
pageInfo
|
|
334
|
+
};
|
|
335
|
+
const generateParameters = {
|
|
336
|
+
templateType,
|
|
337
|
+
manifest: pageSpec.manifest,
|
|
338
|
+
serviceAVT,
|
|
339
|
+
fioriElementsVersion: ux_specification_types_1.FioriElementsVersion.v2,
|
|
340
|
+
entitySet: entitySetDefinition,
|
|
341
|
+
fragments: pageSpec.fragments,
|
|
342
|
+
logger,
|
|
343
|
+
entityType: entitySetDefinition.entityType
|
|
344
|
+
};
|
|
345
|
+
const globalTypes = {
|
|
346
|
+
types: mySchema.definitions, // our generic schemas do not refer a type that is a boolean
|
|
347
|
+
referredTypeNames: new Set()
|
|
348
|
+
};
|
|
349
|
+
// Now adjust mySchema based on the input parameters.
|
|
350
|
+
// Note that this will also ensure that globalTypes.referredTypeNames is the collection of global type names that are referred within the schema.
|
|
351
|
+
adjustElement(generateParameters, params, syncRuleProvider, mySchema, globalTypes);
|
|
352
|
+
// Remove all global type definitions which are not used within the generated schema.
|
|
353
|
+
for (const typeName in mySchema.definitions) {
|
|
354
|
+
if (!globalTypes.referredTypeNames.has(typeName)) {
|
|
355
|
+
delete mySchema.definitions[typeName];
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return mySchema;
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=schemaAdaptation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaAdaptation.js","sourceRoot":"","sources":["../../../../../../src/sync/v2/generate/schemaAdaptation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { Definition } from 'typescript-json-schema';
|
|
2
2
|
import type { MetadataInstanceInterface } from '../../common/decoration/factory';
|
|
3
|
-
import type { v2, PageTypeV2, PageTypeV4, FileData } from '@sap/ux-specification-types';
|
|
3
|
+
import type { v2, PageTypeV2, PageTypeV4, FileData, GenerateAppSchemaParameters } from '@sap/ux-specification-types';
|
|
4
4
|
import type { AnnotationTerm, EntitySet, EntityType } from '@sap-ux/vocabularies-types';
|
|
5
5
|
import type { LineItem, SelectionFields } from '@sap-ux/vocabularies-types/vocabularies/UI';
|
|
6
|
+
import type * as Edm from '@sap-ux/vocabularies-types/Edm';
|
|
7
|
+
import type { EntityTypeAnnotations_UI } from '@sap-ux/vocabularies-types/vocabularies/UI_Edm';
|
|
6
8
|
import { ActionTypeV2 } from '../types';
|
|
9
|
+
import type { ExtensionLogger } from '../../..';
|
|
7
10
|
/**
|
|
8
11
|
* Processes a LineItem record of type DataFieldForAction and DataFieldForIntentBasedNavigation during app schema generation
|
|
9
12
|
* @param appSchema - the app specific schema that shall get enhanced
|
|
@@ -129,4 +132,26 @@ export declare function addStandardHeaderActions(appSchema: Definition, isOP?: b
|
|
|
129
132
|
* @param {Definition} actions - optional standard actions definition
|
|
130
133
|
*/
|
|
131
134
|
export declare function addStandardFooterActionsOP(appSchema: Definition, actions: Definition): void;
|
|
135
|
+
/**
|
|
136
|
+
* Extract entity type and ui annotations for a entity set and log an error in case that either of these objects does not exist
|
|
137
|
+
* @param {GenerateAppSchemaParameters} generateParameters list of API input parameters
|
|
138
|
+
* @returns the entity type and the ui annotations for the given entity set
|
|
139
|
+
*/
|
|
140
|
+
export declare function getUIAnnotationForEntitySet(generateParameters: GenerateAppSchemaParameters): {
|
|
141
|
+
entityType?: Edm.EntityType;
|
|
142
|
+
uIAnnotations?: EntityTypeAnnotations_UI;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Type check for properties coming from the manifest.
|
|
146
|
+
*
|
|
147
|
+
* @param parent - the parent object in manifest which may contain the property.
|
|
148
|
+
* @param propertyName - name of the property name to be checked
|
|
149
|
+
* @param logger - a logger which may receive the error message in case a type error is detected
|
|
150
|
+
* @param expectedType - the expected type of the value of the property (if it is not undefined)
|
|
151
|
+
* @param mandatory - specifies handling handling of null and undefined: If parent is null this is always considered an error.
|
|
152
|
+
* undefined value for parent or its specified property is considered an error when parameter mandatory is true.
|
|
153
|
+
* null value for the specified property is considered an error when mandatory is true or the expected type is not 'object'.
|
|
154
|
+
* @returns the information whether a type error was detected.
|
|
155
|
+
*/
|
|
156
|
+
export declare function hasPropertyTypeError(parent: unknown, propertyName: string, logger?: ExtensionLogger, expectedType?: string, mandatory?: boolean): boolean;
|
|
132
157
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/sync/v2/generate/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/sync/v2/generate/utils.ts"],"names":[],"mappings":"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"}
|