New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@sap/ux-specification

Package Overview
Dependencies
Maintainers
1
Versions
515
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sap/ux-specification - npm Package Compare versions

Comparing version 1.76.19 to 1.78.9

node_modules/@sap-ux/vocabularies-types/dist/generated/Measures_Edm.d.ts

208

CHANGELOG.md

@@ -7,6 +7,29 @@ # Change Log

## [1.76.19] - 2020-08-27
## [1.78.9] - 2020-09-11
### Added
- ODataV2: Support for manifest property `defaultLayoutTypeIfExternalNavigation` in Object Page
- ODataV2: Support for manifest property `inlineDelete` for Resposive Tables in List Report and Object Page
- Validity information for various properties
### Changed
- Pipeline settings now support intermediate staging
- New version of Annotation Vocabularies Tools
- Description for createWithFilters
### Deprecated
### Removed
### Fixed
- Added different page type for V4 application
- Import properties correctly for ALP
## [1.78.8] - 2020-08-28
### Added
- importProject API: support of OVP and ALP templates

@@ -27,10 +50,15 @@

- Wrong ID at generated flex changes for object page table columns
- Fixed issue related to page map and app.json while exporting
- Shows warning in case of invalid card name for overview page
- Enhanced test coverage: objectPageHeaderAction
- Sections not shown correctly in the page map for V4 applications
- Shows warning in case of invalid card name for overview page
- Enhanced test coverage: objectPageHeaderAction
- Manifest did not get updated in case of deletion of some of the properties from config file
## [1.76.18] - 2020-08-21
## [1.78.7] - 2020-08-25
### Fixed
- Fixed issue related to page map and app.json while exporting
## [1.78.6] - 2020-08-21
### Added

@@ -40,3 +68,3 @@

## [1.76.17] - 2020-08-07
## [1.78.5] - 2020-08-07

@@ -47,3 +75,3 @@ ### Removed

## [1.76.16] - 2020-08-06
## [1.78.4] - 2020-08-06

@@ -62,3 +90,3 @@ ### Added

## [1.76.15] - 2020-07-29
## [1.78.3] - 2020-07-29

@@ -69,6 +97,7 @@ ### Added

- Full support of flexible column layout for Fiori Elements V2 and V4
- New API `importProjectNoConfig` for generation of all schemas without generation of configs
- New API importProjectNoConfig for generation of all schemas without generation of configs
- Fault-tolerance in case of incomplete app projects
- New properties for V2 applications:
1. `tableColumnVerticalAlignment` (on app level)
1. tableColumnVerticalAlignment (on app level)
2. Possibility to define different tableSettings per variant in case of multiple tabs

@@ -80,3 +109,3 @@

- App providers as well as the API importProject have been enhanced
- enableAutoBinding on table level is replaced by `loadDataOnAppLaunch`; alternatively, enableAutoBinding for `quickVariantSelectionX` (multiple tabs) is also considered
- enableAutoBinding on table level is replaced by loadDataOnAppLaunch; alternatively, enableAutoBinding for quickVariantSelectionX (multiple tabs) is also considered

@@ -87,4 +116,2 @@ ### Deprecated

- Property `createWithFilters` is removed from Analytical List Page schema
### Fixed

@@ -103,3 +130,3 @@

## [1.76.14] - 2020-07-06
## [1.78.2] - 2020-07-06

@@ -109,2 +136,3 @@ ### Removed

- Property `flexibleColumnLayout` is removed from application schema (app.json)
- Property `createWithFilters` is removed from Analytical List Page schema

@@ -118,5 +146,12 @@ ### Fixed

- Correct descriptions for properties `title` and `description` in app.json
- Different schema for Analytical Table in case of List Report and Analytical List Page
## [1.76.13] - 2020-06-23
### Security
## [1.78.1] - 2020-06-24
### Added
- Support of custom sections for object page
### Fixed

@@ -127,8 +162,7 @@

## [1.76.12] - 2020-06-17
## [1.78.0] - 2020-06-12
### Added
- `importProject()` to create schema and config files
- OVP: Added missing descriptions
- new API `importProject()` to create schema and config files

@@ -138,139 +172,1 @@ ### Changed

- `ServiceMetadata` not required anymore to generate schemas
### Removed
- Helper to write control type to flex change `content`
### Fixed
- V2: Make schema generation more robust
- V4: Make schema generation more robust
## [1.76.11] - 2020-06-03
### Fixed
- Added missing bundled dependency
### Added
- Support flex changes for ALP
- Use ui5-flexibility-utils for read write flex changes
## [1.76.10] - 2020-06-02
### Fixed
- Switch to annotation-vocabularies-tools to parse, merge, convert annotation. This fixes issues with merged annotations
## [1.76.9] - 2020-05-20
### Added
- Support for Analytical List Page (ALP)
### Fixed
- Show consistent value/validation for all table type in list report page
- OVP: Property 'template' now shows Analytical card irrespective of other properties
- Existing manifest settings now remain unaffected during export
- Show consistent value/validation for all table type in object page
- Handle partial deletion of a page from app.json
## [1.76.8] - 2020-05-04
### Added
- Support grid table, analytical and tree table besides responsive table for configuration settings
- Table type specific flex changes. For example: includeItemInSelection and popinLayout are only available for the responsive table
- Table type specific manifest changes. For example: createWithFilters is available for all the table types except tree table and condensedTableLayout is available in all object page table except responsive table
- Flex changes have no dedicated format in the API interface anymore, but are passed as an array of strings to importConfig, i.e. any file content can be passed immediately. The structure of a flex change thus is only known to the specification module and can change over time (aka UI5 release).
exportConfig is enhanced the same way.
- No need to supply annotations anymore while calling importConfig or exportConfig: the annotations are only evaluated during the generation of the app schema, all data which is necessary for subsequent import o export of config files will be comprised in this schema.
- Support export/import for OVP custom card
### Fixed
- Exception when exporting V4 app configurations ('cannot read properies of undefined')
- If no table settings had been maintained, an empty object tableSettings: {} was written back to the mainfest.json
- Fallback for the table type (if not maintined explicitly) must be 'responsive table'
- app.json file may not get generated for a V4 application
## [1.76.7] - 2020-04-22
### Added
- Alignment of table settings between V2 and V4, list report and object page: resolve the inner structure tableSettings, 'table' comprises all properties
- Alignment of order of parts of the list report page: filterbar before table
- OVP: showBasicSearch as property shall be used instead of enableBasicSearch
- Extractor for documentation enhanced by variant for IxiaSoft
### Fixed
- If a property is deleted from a config file, it does not get deleted from the manifest.json
- If a card was deleted from the OVP config, it was not deleted from the manifest.json
- If no routing is defined yet in manifest for a V4 page, the export of the corresponding app config leads to an exception
- If you add an invalid section identifier to an object page, ths invalid section gets written to the manifest
- Evaluation and logging of deprecated properties
## [1.76.6] - 2020-04-15
### Fixed
- Provide the correct stable ID for popinLayout
- V2 list report: Property includeItemInSelection is now correctly considered as a flex change
- Mismatch in API for generation of OVP schemas
- Ensure unique IDs for flex changes
- Return correct set of flex changes
- Use stable ID syntax for table column keys
## [1.76.5] - 2020-04-07
### Fixed
- Eliminate duplicate property enableTableFilterInPageVariant from filterbar
- Deletions at page config files did not reflect in manifest.json
- Mismatch in API for generation of OVP schemas
- Conversion issues during the export of OVP cards
## [1.76.4] - 2020-04-06
### Added
- Activation of test coverage reports for sonarcube
- Page structure of V2 object page adjusted to current manifest schema
- Additional properties for overview pages
### Fixed
- Prevent exceptions in case of missing sections of object pages
- V2: Manifest settings got overwritten by flex changes
- V2: wrong page determination if working on object pages of deeper hierarchical level
- V2 object page: flex changes had been applied to all object pages
- Problems with the export of new or deleted pages (page map)
## [1.76.3] - 2020-03-30
### Added
- CHANGELOG.md to document changes
## [1.76.2] - 2020-03-27
### Fixed
- Fixed missing exports of interfaces
- Export support for object page
## [1.76.1] - 2020-03-26
### Added
- Specification for Fiori Element V2:
- List report
- Object Page
- Overview Page
- Specification for Fiori Elements V4:
- List Report
- Object Page
- Support of custom pages

@@ -11,5 +11,8 @@ {

{
"$ref": "#/definitions/ResponsiveTable<GenericColumns>"
"$ref": "#/definitions/ResponsiveTableWithMultiSelect<GenericColumns>"
},
{
"$ref": "#/definitions/ResponsiveTableWithInlineDelete<GenericColumns>"
},
{
"$ref": "#/definitions/TreeTable<GenericColumns>"

@@ -34,5 +37,9 @@ },

"definitions": {
"ResponsiveTable<GenericColumns>": {
"ResponsiveTableWithMultiSelect<GenericColumns>": {
"type": "object",
"properties": {
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"type": {

@@ -57,6 +64,2 @@ "description": "Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.",

},
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"selectAll": {

@@ -124,3 +127,3 @@ "description": "The 'Select All' button is disabled by default. To enable it, set selectAll to true.",

"strategy": {
"description": "For the new create action to use the filter settings as input, set strategy to \"extension\" and implement the extension function as mentioned here https://help.sap.com/viewer/468a97775123488ab3345a0c48cadd8f/201909.002/en-US/189e2d8a59f04a2693a4fde7f4a91a65.html",
"description": "For the new create action to use the filter settings as input, set strategy to \"extension\" and implement the extension function as mentioned in help.sap.com for SAP S/4 HANA, section “Prefilling Fields When Creating a New Entity Using an Extension Point“.",
"type": "string"

@@ -365,2 +368,78 @@ }

},
"ResponsiveTableWithInlineDelete<GenericColumns>": {
"type": "object",
"properties": {
"inlineDelete": {
"description": "Used to enable inline deletion in a responsive table of list report and object page",
"type": "boolean"
},
"type": {
"description": "Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.",
"type": "string",
"enum": [
"ResponsiveTable"
]
},
"includeItemInSelection": {
"description": "Set includeItemInSelection to true if you want items to be selectable when they are clicked rather than after the selection control has been set.",
"type": "boolean"
},
"popinLayout": {
"$ref": "#/definitions/PopinLayout",
"description": "popinLayout defines the layout in which the table pop-in rows are rendered."
},
"createWithFilters": {
"$ref": "#/definitions/CreateWithFilters",
"description": "createWithFilters adds a new create action that uses the filter settings as input."
},
"selectAll": {
"description": "The 'Select All' button is disabled by default. To enable it, set selectAll to true.",
"type": "boolean"
},
"selectionLimit": {
"description": "If new data needs to be loaded from the back-end system for this, the number of lines to be loaded is restricted to the specified limit. The default value for this limit is 200. If selectAll is true, the selection limit is not evaluated.",
"type": "number"
},
"showDraftToggle": {
"description": "In the table toolbar, you can enable buttons to display or hide draft values. By default, these buttons are hidden. To enable them, set the showDraftToggle flag to true.",
"type": "boolean"
},
"showTablePersonalisation": {
"description": "The showTablePersonalisation attribute can be set to false to hide the table personalization button.",
"type": "boolean"
},
"useExportToExcel": {
"description": "useExportToExcel must be set to true if you want to export data to a spreadsheet application, for example Microsoft Excel.",
"type": "boolean"
},
"fitContainer": {
"description": "Set to false if the table does not occupy the entire space available in the container.",
"type": "boolean"
},
"quickVariantSelection": {
"$ref": "#/definitions/QuickVariantSelection",
"description": "With quickVariantSelection you can switch on the multiple view feature. It links to variants you must have added to your annotations beforehand."
},
"quickVariantSelectionX": {
"$ref": "#/definitions/QuickVariantSelectionX",
"description": "Switch on the multiple view feature (Multiple table mode with charts) and link to the variants you have added to your annotations."
},
"condensedTableLayout": {
"description": "For analytical tables, grid tables and tree tables you can define a condensed table layout by setting condensedTableLayout to true.",
"type": "boolean"
},
"enableTableFilterInPageVariant": {
"description": "If you have enabled harmonized variant management, by default, you cannot set a filter in the table personalization settings.\nTo enable filtering, set the enableTableFilterInPageVariant property to true.",
"type": "boolean"
},
"dataLoadSettings": {
"$ref": "#/definitions/DataLoadSettings",
"description": "Change the default behavior for autoloading of data."
},
"columns": {
"$ref": "#/definitions/GenericColumns"
}
},
"additionalProperties": false
},
"TreeTable<GenericColumns>": {

@@ -367,0 +446,0 @@ "type": "object",

@@ -20,2 +20,9 @@ {

},
"defaultLayoutTypeIfExternalNavigation": {
"description": "If this flag is set, then during inbound navigation to flexible column layout application, if the navigation context points to a unique object, then the object page is opened in full screen mode.",
"type": "string",
"enum": [
"MidColumnFullScreen"
]
},
"header": {

@@ -133,5 +140,8 @@ "$ref": "#/definitions/ObjectPageHeader<GenericActions>"

{
"$ref": "#/definitions/ObjectPageResponsiveTable<GenericColumns>"
"$ref": "#/definitions/ObjectPageResponsiveTableWithMultiSelect<GenericColumns>"
},
{
"$ref": "#/definitions/ObjectPageResponsiveTableWithInlineDelete<GenericColumns>"
},
{
"$ref": "#/definitions/ObjectPageAnalyticalTable<GenericColumns>"

@@ -150,5 +160,9 @@ },

},
"ObjectPageResponsiveTable<GenericColumns>": {
"ObjectPageResponsiveTableWithMultiSelect<GenericColumns>": {
"type": "object",
"properties": {
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"type": {

@@ -173,6 +187,2 @@ "description": "Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.",

},
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"selectAll": {

@@ -326,2 +336,65 @@ "description": "The 'Select All' button is disabled by default. To enable it, set selectAll to true.",

},
"ObjectPageResponsiveTableWithInlineDelete<GenericColumns>": {
"type": "object",
"properties": {
"inlineDelete": {
"description": "Used to enable inline deletion in a responsive table of list report and object page",
"type": "boolean"
},
"type": {
"description": "Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.",
"type": "string",
"enum": [
"ResponsiveTable"
]
},
"includeItemInSelection": {
"description": "Set includeItemInSelection to true if you want items to be selectable when clicked, rather than after the selection control has been set.",
"type": "boolean"
},
"popinLayout": {
"$ref": "#/definitions/PopinLayout",
"description": "popinLayout defines the layout in which the table pop-in rows shall be rendered."
},
"editable": {
"description": "With editable you can control if a table can be edited. It should be set to false for smart tables with non-editable content.",
"type": "boolean"
},
"selectAll": {
"description": "The 'Select All' button is disabled by default. To enable it, set selectAll to true.",
"type": "boolean"
},
"selectionLimit": {
"description": "If new data needs to be loaded from the back-end system for this, the number of lines to be loaded is restricted to the specified limit. The default value for this limit is 200. If selectAll is true, the selection limit is not evaluated.",
"type": "number"
},
"showDraftToggle": {
"description": "In the table toolbar, you can enable buttons to display and hide draft values. By default, these buttons are hidden. To enable them, set the showDraftToggle flag to true.",
"type": "boolean"
},
"quickVariantSelection": {
"$ref": "#/definitions/QuickVariantSelection",
"description": "With quickVariantSelection you can switch on the multiple view feature. It links to variants you must have been added to your annotations before."
},
"useExportToExcel": {
"description": "useExportToExcel must be set to true if you want to export data to a spreadsheet application, for example Microsoft Excel.",
"type": "boolean"
},
"createMode": {
"description": "Use createMode 'inline' to enable inline creation of table entries for draft enabled applications.",
"type": "string",
"enum": [
"inline"
]
},
"disableDefaultInlineCreateSort": {
"description": "If createMode is set to inline, you can use this setting to disable the default sort order.",
"type": "boolean"
},
"columns": {
"$ref": "#/definitions/GenericColumns"
}
},
"additionalProperties": false
},
"ObjectPageAnalyticalTable<GenericColumns>": {

@@ -341,2 +414,6 @@ "type": "object",

},
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"editable": {

@@ -346,6 +423,2 @@ "description": "With editable you can control if a table can be edited. It should be set to false for smart tables with non-editable content.",

},
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"selectAll": {

@@ -402,2 +475,6 @@ "description": "The 'Select All' button is disabled by default. To enable it, set selectAll to true.",

},
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"editable": {

@@ -407,6 +484,2 @@ "description": "With editable you can control if a table can be edited. It should be set to false for smart tables with non-editable content.",

},
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"selectAll": {

@@ -463,2 +536,6 @@ "description": "The 'Select All' button is disabled by default. To enable it, set selectAll to true.",

},
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"editable": {

@@ -468,6 +545,2 @@ "description": "With editable you can control if a table can be edited. It should be set to false for smart tables with non-editable content.",

},
"multiSelect": {
"description": "Single selection in tables is enabled by default. If you want, you can enable multi-select.",
"type": "boolean"
},
"selectAll": {

@@ -474,0 +547,0 @@ "description": "The 'Select All' button is disabled by default. To enable it, set selectAll to true.",

{
"type": "object",
"properties": {
"pageType": {
"$ref": "#/definitions/PageTypeV4"
},
"settings": {

@@ -25,2 +28,10 @@ "$ref": "#/definitions/AppSettings"

"definitions": {
"PageTypeV4": {
"enum": [
"CustomPage",
"ListReport",
"ObjectPage"
],
"type": "string"
},
"AppSettings": {

@@ -27,0 +38,0 @@ "type": "object",

@@ -9,2 +9,7 @@ import { FlexibleColumnLayoutType } from '../common/types';

}
export declare enum PageTypeV4 {
ObjectPage = "ObjectPage",
ListReport = "ListReport",
CustomPage = "CustomPage"
}
export interface PageConfig {

@@ -11,0 +16,0 @@ $schema?: string;

@@ -11,2 +11,8 @@ "use strict";

})(PageType = exports.PageType || (exports.PageType = {}));
var PageTypeV4;
(function (PageTypeV4) {
PageTypeV4["ObjectPage"] = "ObjectPage";
PageTypeV4["ListReport"] = "ListReport";
PageTypeV4["CustomPage"] = "CustomPage";
})(PageTypeV4 = exports.PageTypeV4 || (exports.PageTypeV4 = {}));
var FioriElementsVersion;

@@ -13,0 +19,0 @@ (function (FioriElementsVersion) {

@@ -1,6 +0,6 @@

import { ObjectPageResponsiveTable, ObjectPageAnalyticalTable, ObjectPageGridTable, ObjectPageTreeTable } from './ObjectPageTable';
import { ObjectPageResponsiveTableWithMultiSelect, ObjectPageResponsiveTableWithInlineDelete, ObjectPageAnalyticalTable, ObjectPageGridTable, ObjectPageTreeTable } from './ObjectPageTable';
import { GenericColumns } from './Table';
import { ViewTypes, SAPUI5_FRAGMENT_CLASS, SAPUI5_VIEW_CLASS } from '../../common/webapp/manifest/sapUi5';
export interface ObjectPageSectionV2<COLS = GenericColumns> {
table?: ObjectPageResponsiveTable<COLS> | ObjectPageAnalyticalTable<COLS> | ObjectPageGridTable<COLS> | ObjectPageTreeTable<COLS>;
table?: ObjectPageResponsiveTableWithMultiSelect<COLS> | ObjectPageResponsiveTableWithInlineDelete<COLS> | ObjectPageAnalyticalTable<COLS> | ObjectPageGridTable<COLS> | ObjectPageTreeTable<COLS>;
}

@@ -7,0 +7,0 @@ export interface ObjectPageSubSectionsV2 {

@@ -11,6 +11,2 @@ import { GenericColumns, TableTypeV2, PopinLayout, QuickVariantSelection } from './Table';

/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
/**
* The 'Select All' button is disabled by default. To enable it, set selectAll to true.

@@ -45,3 +41,3 @@ */

}
export interface ObjectPageResponsiveTable<COLS = GenericColumns> extends ObjectPageCommonTableSettings {
export interface ObjectPageResponsiveTableCommonSettings<COLS = GenericColumns> extends ObjectPageCommonTableSettings {
/**

@@ -60,2 +56,16 @@ * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.

}
export interface ObjectPageResponsiveTableWithMultiSelect<COLS = GenericColumns> extends ObjectPageResponsiveTableCommonSettings {
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}
export interface ObjectPageResponsiveTableWithInlineDelete<COLS = GenericColumns> extends ObjectPageResponsiveTableCommonSettings {
/**
* Used to enable inline deletion in a responsive table of list report and object page
*/
inlineDelete?: boolean;
}
export interface ObjectPageResponsiveTable<COLS = GenericColumns> extends ObjectPageResponsiveTableCommonSettings, ObjectPageResponsiveTableWithMultiSelect, ObjectPageResponsiveTableWithInlineDelete {
}
export interface ObjectPageAnalyticalTable<COLS = GenericColumns> extends ObjectPageCommonTableSettings {

@@ -70,2 +80,6 @@ /**

condensedTableLayout?: boolean;
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}

@@ -81,2 +95,6 @@ export interface ObjectPageGridTable<COLS = GenericColumns> extends ObjectPageCommonTableSettings {

condensedTableLayout?: boolean;
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}

@@ -92,2 +110,6 @@ export interface ObjectPageTreeTable<COLS = GenericColumns> extends ObjectPageCommonTableSettings {

condensedTableLayout?: boolean;
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}

@@ -113,3 +113,3 @@ export declare enum HAlign {

/**
* For the new create action to use the filter settings as input, set strategy to "extension" and implement the extension function as mentioned here https://help.sap.com/viewer/468a97775123488ab3345a0c48cadd8f/201909.002/en-US/189e2d8a59f04a2693a4fde7f4a91a65.html
* For the new create action to use the filter settings as input, set strategy to "extension" and implement the extension function as mentioned in help.sap.com for SAP S/4 HANA, section “Prefilling Fields When Creating a New Entity Using an Extension Point“.
*/

@@ -141,6 +141,2 @@ strategy: string;

/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
/**
* The 'Select All' button is disabled by default. To enable it, set selectAll to true.

@@ -192,3 +188,3 @@ */

}
export interface ResponsiveTable<COLS = GenericColumns> extends CommonTableSettings {
export interface ResponsiveTableCommonSettings<COLS = GenericColumns> extends CommonTableSettings {
/**

@@ -211,2 +207,16 @@ * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.

}
export interface ResponsiveTableWithMultiSelect<COLS = GenericColumns> extends ResponsiveTableCommonSettings {
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}
export interface ResponsiveTableWithInlineDelete<COLS = GenericColumns> extends ResponsiveTableCommonSettings {
/**
* Used to enable inline deletion in a responsive table of list report and object page
*/
inlineDelete?: boolean;
}
export interface ResponsiveTable<COLS = GenericColumns> extends ResponsiveTableCommonSettings, ResponsiveTableWithMultiSelect, ResponsiveTableWithInlineDelete {
}
export interface TreeTable<COLS = GenericColumns> extends CommonTableSettings {

@@ -217,2 +227,6 @@ /**

type?: TableTypeV2.TreeTable;
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}

@@ -260,2 +274,6 @@ export interface AnalyticalTable<COLS = GenericColumns> extends CommonTableSettings {

createWithFilters?: CreateWithFilters;
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}

@@ -303,2 +321,6 @@ export interface AnalyticalTableALP<COLS = GenericColumns> extends CommonTableSettings {

allFiltersAsInParameters?: boolean;
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}

@@ -314,2 +336,6 @@ export interface GridTable<COLS = GenericColumns> extends CommonTableSettings {

createWithFilters?: CreateWithFilters;
/**
* Single selection in tables is enabled by default. If you want, you can enable multi-select.
*/
multiSelect?: boolean;
}

@@ -1,2 +0,2 @@

import { TreeTable, FilterBar, ResponsiveTable, AnalyticalTable, GridTable } from '../controls';
import { TreeTable, FilterBar, AnalyticalTable, GridTable, ResponsiveTableWithInlineDelete, ResponsiveTableWithMultiSelect } from '../controls';
import { PageConfig } from '../../common/page';

@@ -8,4 +8,4 @@ export interface ListReportConfig extends PageConfig {

fitContent?: boolean;
table?: ResponsiveTable | TreeTable | AnalyticalTable | GridTable;
table?: ResponsiveTableWithMultiSelect | ResponsiveTableWithInlineDelete | TreeTable | AnalyticalTable | GridTable;
filterBar?: FilterBar;
}
import { ObjectPageHeader, GenericSections, ObjectPageLayout, CustomSections } from '../controls';
import { PageConfig } from '../../common/page';
import { FlexibleColumnLayoutType } from '../../common/types';
export interface ObjectPageConfig extends PageConfig {

@@ -20,2 +21,6 @@ /**

navToListOnSave?: boolean;
/**
* If this flag is set, then during inbound navigation to flexible column layout application, if the navigation context points to a unique object, then the object page is opened in full screen mode.
*/
defaultLayoutTypeIfExternalNavigation?: FlexibleColumnLayoutType.MidColumnFullScreen;
header?: ObjectPageHeader;

@@ -22,0 +27,0 @@ layout?: ObjectPageLayout;

@@ -1,2 +0,2 @@

import { Application, FlexibleColumnLayout } from '../common/Application';
import { Application, FlexibleColumnLayout, PageTypeV4 } from '../common';
import { Pages } from './page';

@@ -18,2 +18,3 @@ export interface AppSettings {

export interface ApplicationV4 extends Application {
pageType?: PageTypeV4;
settings?: AppSettings;

@@ -20,0 +21,0 @@ pages?: Pages;

@@ -12,13 +12,7 @@ "use strict";

const schemaFile = utils_1.getSchemaFilePath(schemaAccess_1.SchemaType.Application);
this.app = {
$schema: schemaFile.path,
id: manifest['sap.app'].id,
pages,
home,
target: {
this.app = Object.assign({ $schema: schemaFile.path, id: manifest['sap.app'].id, pages,
home, target: {
fioriElements: version,
odata: version === common_1.FioriElementsVersion.v2 ? common_1.OdataVersion.v2 : common_1.OdataVersion.v4
},
...(settings && { settings })
};
} }, (settings && { settings }));
this.schemas = schemas;

@@ -25,0 +19,0 @@ }

@@ -101,3 +101,3 @@ "use strict";

}
return { ...genericSchemas, ...appSchemas };
return Object.assign(Object.assign({}, genericSchemas), appSchemas);
}

@@ -120,3 +120,3 @@ function generateAppSchemasV4(genericSchemas, uiEntityTypes, oDataServiceAVT, manifest) {

}
return { ...genericSchemas, ...appSchemas };
return Object.assign(Object.assign({}, genericSchemas), appSchemas);
}

@@ -123,0 +123,0 @@ /**

@@ -71,8 +71,3 @@ "use strict";

return key
? {
key,
...(facetDefinition.Label && { label: facetDefinition.Label.toString() }),
...(facetDefinition.ID && { ID: facetDefinition.ID.toString() })
}
: undefined;
? Object.assign(Object.assign({ key }, (facetDefinition.Label && { label: facetDefinition.Label.toString() })), (facetDefinition.ID && { ID: facetDefinition.ID.toString() })) : undefined;
}

@@ -79,0 +74,0 @@ exports.getSectionFacet = getSectionFacet;

@@ -8,2 +8,3 @@ import { AppSettings as CommonSettingsV2, Pages, TableColumnVerticalAlignment } from '../../specification/v2';

export declare const getCardSettingsPath: (cardKey: string[]) => string;
export declare const getAppRootSettingOBJPath: (pageKeys: string[]) => string;
export declare const getAppSettingOBJPathV2: (pageKeys: string[]) => string;

@@ -10,0 +11,0 @@ export declare const getAppSettingOBJsectionPathV2: (pageKeys: string[], sectionId: string) => string;

@@ -38,3 +38,3 @@ "use strict";

};
exports.getAppSettingOBJPathV2 = (pageKeys) => {
exports.getAppRootSettingOBJPath = (pageKeys) => {
const pathParts = ['sap.ui.generic.app'];

@@ -44,2 +44,7 @@ pageKeys.forEach((pageKey) => {

});
return pathParts.join('/');
};
exports.getAppSettingOBJPathV2 = (pageKeys) => {
const pathParts = [];
pathParts.push(exports.getAppRootSettingOBJPath(pageKeys));
pathParts.push('component/settings');

@@ -49,6 +54,4 @@ return pathParts.join('/');

exports.getAppSettingOBJsectionPathV2 = (pageKeys, sectionId) => {
const pathParts = ['sap.ui.generic.app'];
pageKeys.forEach((pageKey) => {
pathParts.push('pages/' + pageKey);
});
const pathParts = [];
pathParts.push(exports.getAppRootSettingOBJPath(pageKeys));
const manifestSectionId = sectionId.replace('::@com.sap.vocabularies', '::com.sap.vocabularies');

@@ -55,0 +58,0 @@ pathParts.push('component/settings/sections/' + manifestSectionId);

@@ -32,2 +32,5 @@ "use strict";

}
}),
decorators_1.validity({
since: '1.40.0'
})

@@ -34,0 +37,0 @@ ], FilterBar.prototype, "liveMode", void 0);

@@ -53,2 +53,5 @@ "use strict";

}
}),
decorators_1.validity({
since: '1.34.0'
})

@@ -55,0 +58,0 @@ ], ObjectPageLayout.prototype, "alwaysShowContentHeader", void 0);

@@ -18,2 +18,3 @@ import { GenericColumns, QuickVariantSelection, PopinLayout, CreateMode, TableTypeV2 } from '../../../../specification/v2';

popinLayout?: PopinLayout;
inlineDelete?: boolean;
}

@@ -20,0 +21,0 @@ export declare class ObjectPageAnalyticalTable<COLS = GenericColumns> extends ObjectPageCommonTableSettings implements ObjectPageAnalyticalTableConfig<COLS> {

@@ -35,2 +35,5 @@ "use strict";

}
}),
decorators_1.validity({
since: '1.28.0'
})

@@ -45,3 +48,3 @@ ], ObjectPageCommonTableSettings.prototype, "editable", void 0);

decorators_1.validity({
since: '1.70.0'
since: '1.54.0'
})

@@ -96,2 +99,5 @@ ], ObjectPageCommonTableSettings.prototype, "multiSelect", void 0);

}
}),
decorators_1.validity({
since: '1.26.0'
})

@@ -127,5 +133,2 @@ ], ObjectPageCommonTableSettings.prototype, "useExportToExcel", void 0);

}
}),
decorators_1.validity({
since: '1.70.0'
})

@@ -149,4 +152,17 @@ ], ObjectPageResponsiveTable.prototype, "type", void 0);

}
}),
decorators_1.validity({
since: '1.52.0'
})
], ObjectPageResponsiveTable.prototype, "popinLayout", void 0);
__decorate([
decorators_1.exportRule({
manifest: {
path: (pageKeys, sectionId) => application_1.getTableSettingsOBJsectionPathV2(pageKeys, sectionId)
}
}),
decorators_1.validity({
since: '1.77.0'
})
], ObjectPageResponsiveTable.prototype, "inlineDelete", void 0);
exports.ObjectPageResponsiveTable = ObjectPageResponsiveTable;

@@ -160,5 +176,2 @@ class ObjectPageAnalyticalTable extends ObjectPageCommonTableSettings {

}
}),
decorators_1.validity({
since: '1.70.0'
})

@@ -184,5 +197,2 @@ ], ObjectPageAnalyticalTable.prototype, "type", void 0);

}
}),
decorators_1.validity({
since: '1.70.0'
})

@@ -208,5 +218,2 @@ ], ObjectPageGridTable.prototype, "type", void 0);

}
}),
decorators_1.validity({
since: '1.70.0'
})

@@ -213,0 +220,0 @@ ], ObjectPageTreeTable.prototype, "type", void 0);

@@ -26,2 +26,3 @@ import { CommonTableSettings as CommonTableConfig, ResponsiveTable as ResponsiveTableConfig, TreeTable as TreeTableConfig, AnalyticalTable as AnalyticalTableConfig, AnalyticalTableALP as AnalyticalTableALPConfig, GridTable as GridTableConfig, GenericColumns, QuickVariantSelection, QuickVariantSelectionX, LoadDataOnAppLaunchSettings, TableTypeV2, CreateWithFilters, PopinLayout, DefaultContentView, DefaultFilterMode } from '../../../../specification/v2';

includeItemInSelection?: boolean;
inlineDelete?: boolean;
}

@@ -28,0 +29,0 @@ export declare class TreeTable<COLS = GenericColumns> extends CommonTableSettings implements TreeTableConfig<COLS> {

@@ -49,13 +49,4 @@ "use strict";

{
multiSelect: {
since: '1.38.0',
deprecated: {
since: '1.70.0',
text: 'Use tableSettings.multiSelect instead'
}
}
},
{
enableAutoBinding: {
since: '1.50.0',
since: '1.40.0',
deprecated: {

@@ -78,2 +69,5 @@ since: '1.75.2',

}
}),
decorators_1.validity({
since: '1.38.0'
})

@@ -98,2 +92,5 @@ ], CommonTableSettings.prototype, "showTablePersonalisation", void 0);

}
}),
decorators_1.validity({
since: '1.26.0'
})

@@ -151,2 +148,5 @@ ], CommonTableSettings.prototype, "useExportToExcel", void 0);

}
}),
decorators_1.validity({
since: '1.38.0'
})

@@ -159,2 +159,5 @@ ], CommonTableSettings.prototype, "multiSelect", void 0);

}
}),
decorators_1.validity({
since: '1.70.0'
})

@@ -167,2 +170,5 @@ ], CommonTableSettings.prototype, "selectAll", void 0);

}
}),
decorators_1.validity({
since: '1.70.0'
})

@@ -208,2 +214,5 @@ ], CommonTableSettings.prototype, "selectionLimit", void 0);

}
}),
decorators_1.validity({
since: '1.50.0'
})

@@ -228,2 +237,5 @@ ], ResponsiveTable.prototype, "type", void 0);

}
}),
decorators_1.validity({
since: '1.52.0'
})

@@ -240,2 +252,12 @@ ], ResponsiveTable.prototype, "popinLayout", void 0);

], ResponsiveTable.prototype, "includeItemInSelection", void 0);
__decorate([
decorators_1.exportRule({
manifest: {
path: (pageKeys) => application_1.getTableSettingPathV2(pageKeys)
}
}),
decorators_1.validity({
since: '1.77.0'
})
], ResponsiveTable.prototype, "inlineDelete", void 0);
exports.ResponsiveTable = ResponsiveTable;

@@ -249,2 +271,5 @@ class TreeTable extends CommonTableSettings {

}
}),
decorators_1.validity({
since: '1.50.0'
})

@@ -260,2 +285,5 @@ ], TreeTable.prototype, "type", void 0);

}
}),
decorators_1.validity({
since: '1.50.0'
})

@@ -275,2 +303,5 @@ ], AnalyticalTable.prototype, "type", void 0);

}
}),
decorators_1.validity({
since: '1.38.0'
})

@@ -304,2 +335,5 @@ ], AnalyticalTable.prototype, "smartVariantManagement", void 0);

}
}),
decorators_1.validity({
since: '1.60.0'
})

@@ -319,2 +353,5 @@ ], AnalyticalTable.prototype, "contentTitle", void 0);

}
}),
decorators_1.validity({
since: '1.60.0'
})

@@ -327,2 +364,5 @@ ], AnalyticalTable.prototype, "filterDefaultsFromSelectionVariant", void 0);

}
}),
decorators_1.validity({
since: '1.78.0'
})

@@ -348,2 +388,5 @@ ], AnalyticalTable.prototype, "allFiltersAsInParameters", void 0);

}
}),
decorators_1.validity({
since: '1.50.0'
})

@@ -350,0 +393,0 @@ ], GridTable.prototype, "type", void 0);

@@ -419,3 +419,3 @@ "use strict";

if (typeof currentConfigObject === 'object' && propertyDefinition) {
let definitionArray;
let definitionArray = [];
if (propertyDefinition.$ref) {

@@ -425,5 +425,10 @@ definitionArray = propertyDefinition.$ref.split('#/definitions/');

else if (propertyDefinition['anyOf']) {
definitionArray = propertyDefinition['anyOf'][0].$ref.split('#/definitions/');
const definition = propertyDefinition['anyOf'].find((element) => element.$ref.includes(currentConfigObject.constructor.name));
definitionArray = definition ? [...definition.$ref.split('#/definitions/')] : definitionArray;
propertyDefinition['anyOf'].forEach((element) => {
if (element.$ref.includes(currentConfigObject.constructor.name)) {
definitionArray.push(...element.$ref.split('#/definitions/'));
}
});
if (definitionArray.length === 0) {
definitionArray = propertyDefinition['anyOf'][0].$ref.split('#/definitions/');
}
}

@@ -437,5 +442,13 @@ else if (propertyDefinition.type === 'array' &&

let nextTargetDefinition, nextTitle, nextConfigObject;
if (definitionArray) {
if (definitionArray.length) {
nextTargetDefinition = jsonSchema['definitions'][definitionArray[definitionArray.length - 1]];
nextTitle = nextTargetDefinition['title'] ? nextTargetDefinition['title'] : title;
if (definitionArray.length > 2) {
definitionArray.forEach((element) => {
if (element != '') {
nextTargetDefinition['properties'] = Object.assign(Object.assign({}, nextTargetDefinition['properties']), jsonSchema['definitions'][element]['properties']);
}
});
}
nextTitle =
nextTargetDefinition && nextTargetDefinition['title'] ? nextTargetDefinition['title'] : title;
nextConfigObject = currentConfigObject;

@@ -442,0 +455,0 @@ }

@@ -7,4 +7,4 @@ /**

import { ObjectPageHeader, GenericSections, ObjectPageLayout, CustomSections } from '../../../../specification/v2/controls';
import { FlexibleColumnLayoutType } from '../../../../specification/common/types';
export declare class ObjectPage implements ObjectPageConfig {
flexibleColumnLayout?: boolean;
showConfirmationOnDraftActivate?: boolean;

@@ -17,2 +17,3 @@ hideChevronForUnauthorizedExtNav?: boolean;

layout?: ObjectPageLayout;
defaultLayoutTypeIfExternalNavigation?: FlexibleColumnLayoutType.MidColumnFullScreen;
}

@@ -20,12 +20,2 @@ "use strict";

manifest: {
path: () => 'sap.ui.generic.app/settings'
}
}),
decorators_1.validity({
since: '1.50.0'
})
], ObjectPage.prototype, "flexibleColumnLayout", void 0);
__decorate([
decorators_1.exportRule({
manifest: {
path: (pageKeys) => application_1.getAppSettingOBJPathV2(pageKeys)

@@ -77,2 +67,12 @@ }

], ObjectPage.prototype, "layout", void 0);
__decorate([
decorators_1.exportRule({
manifest: {
path: (pageKeys) => application_1.getAppRootSettingOBJPath(pageKeys)
}
}),
decorators_1.validity({
since: '1.77.0'
})
], ObjectPage.prototype, "defaultLayoutTypeIfExternalNavigation", void 0);
ObjectPage = __decorate([

@@ -79,0 +79,0 @@ decorators_1.pageLayoutInformation({

@@ -19,2 +19,5 @@ "use strict";

const analyticalTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['AnalyticalTableALP<GenericColumns>']));
analyticalTableDefinition['properties']['columns'] = {
$ref: '#/definitions/LineItems'
};
appSchema['definitions']['AnalyticalTableALP<LineItems>'] = analyticalTableDefinition;

@@ -21,0 +24,0 @@ delete appSchema['definitions']['AnalyticalTableALP<GenericColumns>'];

@@ -17,13 +17,18 @@ "use strict";

const appSchema = JSON.parse(JSON.stringify(genericSchema));
appSchema['properties']['table']['anyOf']['0']['$ref'] = '#/definitions/ResponsiveTable<LineItems>';
appSchema['properties']['table']['anyOf']['1']['$ref'] = '#/definitions/TreeTable<LineItems>';
appSchema['properties']['table']['anyOf']['2']['$ref'] = '#/definitions/AnalyticalTable<LineItems>';
appSchema['properties']['table']['anyOf']['3']['$ref'] = '#/definitions/GridTable<LineItems>';
const responsiveTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['ResponsiveTable<GenericColumns>']));
appSchema['properties']['table']['anyOf']['0']['$ref'] = '#/definitions/ResponsiveTableWithMultiSelect<LineItems>';
appSchema['properties']['table']['anyOf']['1']['$ref'] = '#/definitions/ResponsiveTableWithInlineDelete<LineItems>';
appSchema['properties']['table']['anyOf']['2']['$ref'] = '#/definitions/TreeTable<LineItems>';
appSchema['properties']['table']['anyOf']['3']['$ref'] = '#/definitions/AnalyticalTable<LineItems>';
appSchema['properties']['table']['anyOf']['4']['$ref'] = '#/definitions/GridTable<LineItems>';
const responsiveTableMultiSelect = JSON.parse(JSON.stringify(appSchema['definitions']['ResponsiveTableWithMultiSelect<GenericColumns>']));
const responsiveTableInlineDelete = JSON.parse(JSON.stringify(appSchema['definitions']['ResponsiveTableWithInlineDelete<GenericColumns>']));
const treeTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['TreeTable<GenericColumns>']));
const analyticalTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['AnalyticalTable<GenericColumns>']));
const gridTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['TreeTable<GenericColumns>']));
responsiveTableDefinition['properties']['columns'] = {
responsiveTableMultiSelect['properties']['columns'] = {
$ref: '#/definitions/LineItems'
};
responsiveTableInlineDelete['properties']['columns'] = {
$ref: '#/definitions/LineItems'
};
treeTableDefinition['properties']['columns'] = {

@@ -38,7 +43,9 @@ $ref: '#/definitions/LineItems'

};
appSchema['definitions']['ResponsiveTable<LineItems>'] = responsiveTableDefinition;
appSchema['definitions']['ResponsiveTableWithMultiSelect<LineItems>'] = responsiveTableMultiSelect;
appSchema['definitions']['ResponsiveTableWithInlineDelete<LineItems>'] = responsiveTableInlineDelete;
appSchema['definitions']['TreeTable<LineItems>'] = treeTableDefinition;
appSchema['definitions']['AnalyticalTable<LineItems>'] = analyticalTableDefinition;
appSchema['definitions']['GridTable<LineItems>'] = gridTableDefinition;
delete appSchema['definitions']['ResponsiveTable<GenericColumns>'];
delete appSchema['definitions']['ResponsiveTableWithMultiSelect<GenericColumns>'];
delete appSchema['definitions']['ResponsiveTableWithInlineDelete<GenericColumns>'];
delete appSchema['definitions']['TreeTable<GenericColumns>'];

@@ -45,0 +52,0 @@ delete appSchema['definitions']['AnalyticalTable<GenericColumns>'];

@@ -18,7 +18,3 @@ "use strict";

const schemaIdForSection = section.ID ? section.ID : section.key;
return {
const: schemaIdForSection,
...(section.label && { description: section.label }),
...(section.custom && { custom: section.custom })
};
return Object.assign(Object.assign({ const: schemaIdForSection }, (section.label && { description: section.label })), (section.custom && { custom: section.custom }));
})

@@ -60,5 +56,8 @@ };

{
$ref: '#/definitions/ObjectPageResponsiveTable<' + facetId + '>'
$ref: '#/definitions/ObjectPageResponsiveTableWithMultiSelect<' + facetId + '>'
},
{
$ref: '#/definitions/ObjectPageResponsiveTableWithInlineDelete<' + facetId + '>'
},
{
$ref: '#/definitions/ObjectPageAnalyticalTable<' + facetId + '>'

@@ -80,9 +79,13 @@ },

}
const schemaIdForOpResponsibleTable = 'ObjectPageResponsiveTable<' + facetId + '>';
const schemaIdForOpResponsibleTableMultiSelect = 'ObjectPageResponsiveTableWithMultiSelect<' + facetId + '>';
const schemaIdForOpResponsibleTableInlineDelete = 'ObjectPageResponsiveTableWithInlineDelete<' + facetId + '>';
const schemaIdForOpAnalyticalTable = 'ObjectPageAnalyticalTable<' + facetId + '>';
const schemaIdForOpGridTable = 'ObjectPageGridTable<' + facetId + '>';
const schemaIdForOpTreeTable = 'ObjectPageTreeTable<' + facetId + '>';
appSchema['definitions'][schemaIdForOpResponsibleTable] = JSON.parse(JSON.stringify(appSchema['definitions']['ObjectPageResponsiveTable<GenericColumns>']));
appSchema['definitions'][schemaIdForOpResponsibleTable]['properties']['columns']['$ref'] =
appSchema['definitions'][schemaIdForOpResponsibleTableMultiSelect] = JSON.parse(JSON.stringify(appSchema['definitions']['ObjectPageResponsiveTableWithMultiSelect<GenericColumns>']));
appSchema['definitions'][schemaIdForOpResponsibleTableMultiSelect]['properties']['columns']['$ref'] =
'#/definitions/' + facetId;
appSchema['definitions'][schemaIdForOpResponsibleTableInlineDelete] = JSON.parse(JSON.stringify(appSchema['definitions']['ObjectPageResponsiveTableWithInlineDelete<GenericColumns>']));
appSchema['definitions'][schemaIdForOpResponsibleTableInlineDelete]['properties']['columns']['$ref'] =
'#/definitions/' + facetId;
appSchema['definitions'][schemaIdForOpAnalyticalTable] = JSON.parse(JSON.stringify(appSchema['definitions']['ObjectPageAnalyticalTable<GenericColumns>']));

@@ -268,3 +271,4 @@ appSchema['definitions'][schemaIdForOpAnalyticalTable]['properties']['columns']['$ref'] =

delete appSchema['definitions']['ObjectPageSubSections'];
delete appSchema['definitions']['ObjectPageResponsiveTable<GenericColumns>'];
delete appSchema['definitions']['ObjectPageResponsiveTableWithMultiSelect<GenericColumns>'];
delete appSchema['definitions']['ObjectPageResponsiveTableWithInlineDelete<GenericColumns>'];
delete appSchema['definitions']['ObjectPageAnalyticalTable<GenericColumns>'];

@@ -271,0 +275,0 @@ delete appSchema['definitions']['ObjectPageTreeTable<GenericColumns>'];

@@ -33,8 +33,3 @@ "use strict";

const id = generateId(v2Page);
const page = {
pageType: getPageType(v2Page.component.name),
entitySet: v2Page.entitySet,
...(v2Page.navigationProperty && { navigationProperty: v2Page.navigationProperty }),
...(v2Page.defaultLayoutType && { defaultLayoutType: v2Page.defaultLayoutType })
};
const page = Object.assign(Object.assign({ pageType: getPageType(v2Page.component.name), entitySet: v2Page.entitySet }, (v2Page.navigationProperty && { navigationProperty: v2Page.navigationProperty })), (v2Page.defaultLayoutType && { defaultLayoutType: v2Page.defaultLayoutType }));
pages[id] = page;

@@ -41,0 +36,0 @@ // Get the JSON schema for the page. If no page specific schema exists, fall back top the generic schema for the page type

@@ -12,3 +12,3 @@ "use strict";

analyticalListPageConfig.table = Object.assign(new controls_1.AnalyticalTable(), analyticalListPageConfig.table);
index_1.transferSettingsOfObject(analyticalListPageConfig.table, manifest, jsonSchema['definitions']['AnalyticalTable<GenericColumns>'], pageKey);
index_1.transferSettingsOfObject(analyticalListPageConfig.table, manifest, jsonSchema['definitions']['AnalyticalTableALP<LineItems>'], pageKey);
analyticalListPageConfig.filterBar = Object.assign(new controls_1.FilterBar(), analyticalListPageConfig.filterBar);

@@ -15,0 +15,0 @@ index_1.transferSettingsOfObject(analyticalListPageConfig.filterBar, manifest, jsonSchema['definitions']['FilterBar'], pageKey);

@@ -10,2 +10,3 @@ "use strict";

const tableType = index_1.findTableType(manifest, pageKey);
let localJsonSchema;
switch (tableType) {

@@ -27,3 +28,5 @@ case 'TreeTable':

listReportConfig.table = Object.assign(new controls_1.ResponsiveTable(), listReportConfig.table);
index_1.transferSettingsOfObject(listReportConfig.table, manifest, jsonSchema['definitions']['ResponsiveTable<LineItems>'], pageKey);
localJsonSchema = JSON.parse(JSON.stringify(jsonSchema['definitions']['ResponsiveTableWithMultiSelect<LineItems>']));
localJsonSchema['properties'] = Object.assign(Object.assign({}, localJsonSchema['properties']), jsonSchema['definitions']['ResponsiveTableWithInlineDelete<LineItems>']['properties']);
index_1.transferSettingsOfObject(listReportConfig.table, manifest, localJsonSchema, pageKey);
break;

@@ -30,0 +33,0 @@ }

@@ -177,2 +177,3 @@ "use strict";

let schemaSection = sectionProperties[sectionId];
let responsiveTableJsonSchema;
if (schemaSection['$ref'] && schemaSection['$ref'].startsWith('#/definitions/ObjectPageSectionV2')) {

@@ -206,7 +207,8 @@ // Section without subsections

case 'ResponsiveTable':
tableIdSchema = 'ObjectPageResponsiveTable<' + escapedId + '>';
responsiveTableJsonSchema = JSON.parse(JSON.stringify(jsonSchema['definitions']['ObjectPageResponsiveTableWithMultiSelect<' + escapedId + '>']));
responsiveTableJsonSchema['properties'] = Object.assign(Object.assign({}, responsiveTableJsonSchema['properties']), jsonSchema['definitions']['ObjectPageResponsiveTableWithInlineDelete<' + escapedId + '>']['properties']);
configPart[escapedId] = { table: new controls_1.ObjectPageResponsiveTable() };
break;
}
transferSettingsAndFlexChanges(configPart[escapedId]['table'], manifest, jsonSchema['definitions'][tableIdSchema], pageKeys, flexChanges, sectionId, sectionTitle);
transferSettingsAndFlexChanges(configPart[escapedId]['table'], manifest, responsiveTableJsonSchema || jsonSchema['definitions'][tableIdSchema], pageKeys, flexChanges, sectionId, sectionTitle);
}

@@ -213,0 +215,0 @@ }

@@ -72,3 +72,3 @@ "use strict";

};
manifestUI5.rootView = manifestUI5.rootView ? { ...manifestUI5.rootView, ...rootView } : rootView;
manifestUI5.rootView = manifestUI5.rootView ? Object.assign(Object.assign({}, manifestUI5.rootView), rootView) : rootView;
};

@@ -75,0 +75,0 @@ /**

@@ -29,7 +29,3 @@ "use strict";

return {
settings: {
...(entitySet && { entitySet }),
...(variantManagement && { variantManagement }),
navigation: {}
}
settings: Object.assign(Object.assign(Object.assign({}, (entitySet && { entitySet })), (variantManagement && { variantManagement })), { navigation: {} })
};

@@ -77,8 +73,3 @@ };

else if (page.view) {
target = {
viewId: page.view.id,
viewName: page.view.name,
...(page.view.viewLevel && { viewLevel: page.view.viewLevel }),
...(page.view.title && { title: page.view.title })
};
target = Object.assign(Object.assign({ viewId: page.view.id, viewName: page.view.name }, (page.view.viewLevel && { viewLevel: page.view.viewLevel })), (page.view.title && { title: page.view.title }));
}

@@ -85,0 +76,0 @@ if (page.entitySet) {

@@ -17,7 +17,3 @@ "use strict";

const schemaIdForSection = section.ID ? section.ID : section.label ? section.label : section.key;
return {
const: schemaIdForSection,
...(section.label && { description: section.label }),
...(section.custom && { custom: section.custom })
};
return Object.assign(Object.assign({ const: schemaIdForSection }, (section.label && { description: section.label })), (section.custom && { custom: section.custom }));
})

@@ -97,3 +93,3 @@ };

if (appSchema['definitions']['CustomSections']) {
sections.properties = { ...sections.properties, ...appSchema['definitions']['CustomSections'].properties };
sections.properties = Object.assign(Object.assign({}, sections.properties), appSchema['definitions']['CustomSections'].properties);
}

@@ -100,0 +96,0 @@ }

@@ -117,8 +117,3 @@ "use strict";

// Populate view of custom page
page.view = {
id: target.viewId,
name: target.viewName,
...(target.viewLevel && { viewLevel: target.viewLevel }),
...(target.title && { title: target.title })
};
page.view = Object.assign(Object.assign({ id: target.viewId, name: target.viewName }, (target.viewLevel && { viewLevel: target.viewLevel })), (target.title && { title: target.title }));
}

@@ -191,3 +186,3 @@ // Page navigation object

utils_1.transferSettingsOfObject(appSettings, manifest, schemas[schemaFile.filename]['definitions']['AppSettings'], '');
super(manifest, schemas, getHome(manifest['sap.ui5'].routing), getPages(manifest, schemas), common_1.FioriElementsVersion.v4, { ...getSettings(manifest['sap.ui5'].routing), ...appSettings });
super(manifest, schemas, getHome(manifest['sap.ui5'].routing), getPages(manifest, schemas), common_1.FioriElementsVersion.v4, Object.assign(Object.assign({}, getSettings(manifest['sap.ui5'].routing)), appSettings));
this.unhandledControllers = unhandledControllers;

@@ -194,0 +189,0 @@ }

@@ -6,2 +6,239 @@ # Change Log

## [0.2.26](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.25...ms/0.2.26) (2020-09-04)
**Note:** Version bump only for package @sap-ux/annotation-converter
## [0.2.25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.24...ms/0.2.25) (2020-09-04)
**Note:** Version bump only for package @sap-ux/annotation-converter
## [0.2.24](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.24) (2020-09-03)
### Bug Fixes
* double check the existence of the complex type ([6f21e88](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/6f21e88dc4fa7b38d8dd8208a7fa763d3d6c1fde))
* make sure references are correct ([3baaab3](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/3baaab31d30b457cfb11b0c086c9b90bf9692ac3))
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.23](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.23) (2020-09-03)
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.22](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.22) (2020-09-03)
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.21](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.20...ms/0.2.21) (2020-08-25)
### Features
* add the possibility to get the list of visited object when resolving a path ([#24](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/24)) ([8ae1764](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/8ae1764895bc17162cfdacbf25bb39632cdfe31f))
## [0.2.20](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.19...ms/0.2.20) (2020-08-11)
**Note:** Version bump only for package @sap-ux/annotation-converter
## [0.2.19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.19) (2020-07-29)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
* add missing "Measures" vocabulary ([c87523f](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c87523f11b0633b9f6d3006597950e0382198d68))
## [0.2.18](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.18) (2020-07-29)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.17](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.17) (2020-07-28)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.16](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.16) (2020-07-28)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.15](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.15) (2020-07-28)
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.14](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.12...ms/0.2.14) (2020-07-28)
### Features
* add missing HTML5 alias ([#21](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/21)) ([bf2d49e](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/bf2d49e56c3265ac703772dd55387f0e11bd147a))
## [0.2.13](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.12...ms/0.2.13) (2020-07-15)
### Features
* add missing HTML5 alias ([1068327](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/1068327a12688cee03ebff07b78e16052c16e94d))
## [0.2.12](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.11...ms/0.2.12) (2020-07-13)
### Features
* add typings for the If expressions ([ac3f723](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/ac3f7234b887e7d2f01f309f9deadc15b2ded65d))
## [0.2.11](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.9...ms/0.2.11) (2020-07-03)
### Features
* parser update to better support v2 services ([#19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/issues/19)) ([c37ff34](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/c37ff3476bda838b175bc520e22b0c8211ef782a))
## [0.2.10](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.9...ms/0.2.10) (2020-06-29)
### Features
* parser update to better support v2 services ([#19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/issues/19)) ([c37ff34](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/c37ff3476bda838b175bc520e22b0c8211ef782a))
## [0.2.9](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.7...ms/0.2.9) (2020-06-22)
### Features
* slight parser api change ([2c0b368](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/2c0b3680e3d2fdc6848014490f5f73786851831b))
## [0.2.8](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.7...ms/0.2.8) (2020-06-22)
**Note:** Version bump only for package @sap-ux/annotation-converter
## [0.2.7](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.6...ms/0.2.7) (2020-06-16)
### Features
* enable annotation converter for annotation-api usecase ([a5f4ca1](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/a5f4ca105700c2561ad36284c622de8e3a44a57d))
## [0.2.6](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.5...ms/0.2.6) (2020-06-08)

@@ -8,0 +245,0 @@

import { Annotation as EdmAnnotation, AnnotationTerm, ConverterOutput, ParserOutput } from "@sap-ux/vocabularies-types";
import { Reference } from "@sap-ux/vocabularies-types/dist/Parser";
export declare type CollectionType = "PropertyPath" | "Path" | "AnnotationPath" | "NavigationPropertyPath" | "Record" | "String" | "EmptyCollection";
export declare function convertTypes(parserOutput: ParserOutput): ConverterOutput;
export declare function transformTermToGenericType(annotation: AnnotationTerm<any>): EdmAnnotation;
export declare function revertTermToGenericType(references: Reference[], annotation: AnnotationTerm<any>): EdmAnnotation;

@@ -14,3 +14,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.transformTermToGenericType = exports.convertTypes = void 0;
exports.revertTermToGenericType = exports.convertTypes = void 0;
var Path = /** @class */ (function () {

@@ -24,2 +24,45 @@ function Path(pathExpression, targetName) {

}());
var defaultReferences = [
{ alias: "Capabilities", namespace: "Org.OData.Capabilities.V1", uri: "" },
{ alias: "Aggregation", namespace: "Org.OData.Aggregation.V1", uri: "" },
{ alias: "Validation", namespace: "Org.OData.Validation.V1", uri: "" },
{ namespace: "Org.OData.Core.V1", alias: "Core", uri: "" },
{ namespace: "Org.OData.Measures.V1", alias: "Measures", uri: "" },
{ namespace: "com.sap.vocabularies.Common.v1", alias: "Common", uri: "" },
{ namespace: "com.sap.vocabularies.UI.v1", alias: "UI", uri: "" },
{ namespace: "com.sap.vocabularies.Session.v1", alias: "Session", uri: "" },
{ namespace: "com.sap.vocabularies.Analytics.v1", alias: "Analytics", uri: "" },
{ namespace: "com.sap.vocabularies.CodeList.v1", alias: "CodeList", uri: "" },
{ namespace: "com.sap.vocabularies.PersonalData.v1", alias: "PersonalData", uri: "" },
{ namespace: "com.sap.vocabularies.Communication.v1", alias: "Communication", uri: "" },
{ namespace: "com.sap.vocabularies.HTML5.v1", alias: "HTML5", uri: "" }
];
function alias(references, unaliasedValue) {
if (!references.reverseReferenceMap) {
references.reverseReferenceMap = references.reduce(function (map, reference) {
map[reference.namespace] = reference;
return map;
}, {});
}
if (!unaliasedValue) {
return unaliasedValue;
}
var lastDotIndex = unaliasedValue.lastIndexOf(".");
var namespace = unaliasedValue.substr(0, lastDotIndex);
var value = unaliasedValue.substr(lastDotIndex + 1);
var reference = references.reverseReferenceMap[namespace];
if (reference) {
return reference.alias + "." + value;
}
else {
// Try to see if it's an annotation Path like to_SalesOrder/@UI.LineItem
if (unaliasedValue.indexOf("@") !== -1) {
var _a = unaliasedValue.split("@"), preAlias = _a[0], postAlias = _a[1];
return preAlias + "@" + alias(references, postAlias);
}
else {
return unaliasedValue;
}
}
}
function unalias(references, aliasedValue) {

@@ -65,2 +108,8 @@ if (!references.referenceMap) {

});
parserOutput.schema.complexTypes.forEach(function (complexType) {
objectMap[complexType.fullyQualifiedName] = complexType;
complexType.properties.forEach(function (property) {
objectMap[property.fullyQualifiedName] = property;
});
});
parserOutput.schema.entityTypes.forEach(function (entityType) {

@@ -70,2 +119,15 @@ objectMap[entityType.fullyQualifiedName] = entityType;

objectMap[property.fullyQualifiedName] = property;
if (property.type.indexOf("Edm") === -1) {
// Handle complex types
var complexTypeDefinition = objectMap[property.type];
if (complexTypeDefinition && complexTypeDefinition.properties) {
complexTypeDefinition.properties.forEach(function (complexTypeProp) {
var complexTypePropTarget = Object.assign(complexTypeProp, {
_type: "Property",
fullyQualifiedName: property.fullyQualifiedName + "/" + complexTypeProp.name
});
objectMap[complexTypePropTarget.fullyQualifiedName] = complexTypePropTarget;
});
}
}
});

@@ -80,3 +142,3 @@ entityType.navigationProperties.forEach(function (navProperty) {

annotationList.annotations.forEach(function (annotation) {
var annotationFQN = "/" + currentTargetName + "@" + unalias(parserOutput.references, annotation.term);
var annotationFQN = currentTargetName + "@" + unalias(parserOutput.references, annotation.term);
if (annotation.qualifier) {

@@ -100,7 +162,9 @@ annotationFQN += "#" + annotation.qualifier;

}
function resolveTarget(objectMap, currentTarget, path, pathOnly) {
function resolveTarget(objectMap, currentTarget, path, pathOnly, includeVisitedObjects) {
if (pathOnly === void 0) { pathOnly = false; }
if (includeVisitedObjects === void 0) { includeVisitedObjects = false; }
if (!path) {
return undefined;
}
var aVisitedObjects = [];
path = combinePath(currentTarget.fullyQualifiedName, path);

@@ -110,2 +174,5 @@ var pathSplit = path.split("/");

var target = pathSplit.reduce(function (currentValue, pathPart) {
if (includeVisitedObjects && currentValue !== null) {
aVisitedObjects.push(currentValue);
}
if (!currentValue) {

@@ -115,3 +182,3 @@ currentPath = pathPart;

else if (currentValue._type === "EntitySet" && currentValue.entityType) {
currentPath = combinePath(currentValue.entityType, pathPart);
currentPath = combinePath(currentValue.entityTypeName, pathPart);
}

@@ -125,3 +192,9 @@ else if (currentValue._type === "NavigationProperty" && currentValue.targetTypeName) {

else if (currentValue._type === "Property") {
currentPath = combinePath(currentTarget.fullyQualifiedName.substr(0, currentTarget.fullyQualifiedName.lastIndexOf("/")), pathPart);
if (currentValue.type.indexOf("Edm") === -1) {
// This is a complex type
currentPath = combinePath(currentValue.fullyQualifiedName, pathPart);
}
else {
currentPath = combinePath(currentTarget.fullyQualifiedName.substr(0, currentTarget.fullyQualifiedName.lastIndexOf("/")), pathPart);
}
}

@@ -164,2 +237,8 @@ else if (currentValue._type === "Action" && currentValue.isBound) {

}
if (includeVisitedObjects) {
return {
visitedObjects: aVisitedObjects,
target: target
};
}
return target;

@@ -170,3 +249,3 @@ }

}
function parseValue(propertyValue, valueFQN, parserOutput, currentTarget, objectMap, toResolve) {
function parseValue(propertyValue, valueFQN, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations) {
if (propertyValue === undefined) {

@@ -225,10 +304,11 @@ return undefined;

case "Record":
return parseRecord(propertyValue.Record, valueFQN, parserOutput, currentTarget, objectMap, toResolve);
return parseRecord(propertyValue.Record, valueFQN, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations);
case "Collection":
return parseCollection(propertyValue.Collection, valueFQN, parserOutput, currentTarget, objectMap, toResolve);
return parseCollection(propertyValue.Collection, valueFQN, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations);
case "Apply":
case "If":
return propertyValue;
}
}
function parseRecord(recordDefinition, currentFQN, parserOutput, currentTarget, objectMap, toResolve) {
function parseRecord(recordDefinition, currentFQN, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations) {
var annotationTerm = {

@@ -239,4 +319,20 @@ $Type: unalias(parserOutput.references, recordDefinition.type),

var annotationContent = {};
if (recordDefinition.annotations && Array.isArray(recordDefinition.annotations)) {
var subAnnotationList = {
target: currentFQN,
annotations: recordDefinition.annotations,
__source: annotationSource
};
unresolvedAnnotations.push(subAnnotationList);
}
recordDefinition.propertyValues.forEach(function (propertyValue) {
annotationContent[propertyValue.name] = parseValue(propertyValue.value, currentFQN + "/" + propertyValue.name, parserOutput, currentTarget, objectMap, toResolve);
annotationContent[propertyValue.name] = parseValue(propertyValue.value, currentFQN + "/" + propertyValue.name, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations);
if (propertyValue.annotations && Array.isArray(propertyValue.annotations)) {
var subAnnotationList = {
target: currentFQN + "/" + propertyValue.name,
annotations: propertyValue.annotations,
__source: annotationSource
};
unresolvedAnnotations.push(subAnnotationList);
}
if (annotationContent.hasOwnProperty("Action") &&

@@ -255,4 +351,34 @@ (annotationTerm.$Type === "com.sap.vocabularies.UI.v1.DataFieldForAction" ||

}
function parseCollection(collectionDefinition, parentFQN, parserOutput, currentTarget, objectMap, toResolve) {
switch (collectionDefinition.type) {
function getOrInferCollectionType(collectionDefinition) {
var type = collectionDefinition.type;
if (type === undefined && collectionDefinition.length > 0) {
var firstColItem = collectionDefinition[0];
if (firstColItem.hasOwnProperty("PropertyPath")) {
type = "PropertyPath";
}
else if (firstColItem.hasOwnProperty("Path")) {
type = "Path";
}
else if (firstColItem.hasOwnProperty("AnnotationPath")) {
type = "AnnotationPath";
}
else if (firstColItem.hasOwnProperty("NavigationPropertyPath")) {
type = "NavigationPropertyPath";
}
else if (typeof firstColItem === "object" &&
(firstColItem.hasOwnProperty("type") || firstColItem.hasOwnProperty("propertyValues"))) {
type = "Record";
}
else if (typeof firstColItem === "string") {
type = "String";
}
}
else if (type === undefined) {
type = "EmptyCollection";
}
return type;
}
function parseCollection(collectionDefinition, parentFQN, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations) {
var collectionDefinitionType = getOrInferCollectionType(collectionDefinition);
switch (collectionDefinitionType) {
case "PropertyPath":

@@ -304,3 +430,3 @@ return collectionDefinition.map(function (propertyPath, propertyIdx) {

return collectionDefinition.map(function (recordDefinition, recordIdx) {
return parseRecord(recordDefinition, parentFQN + "/" + recordIdx, parserOutput, currentTarget, objectMap, toResolve);
return parseRecord(recordDefinition, parentFQN + "/" + recordIdx, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations);
});

@@ -318,3 +444,3 @@ case "String":

}
function convertAnnotation(annotation, parserOutput, currentTarget, objectMap, toResolve) {
function convertAnnotation(annotation, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations) {
if (annotation.record) {

@@ -328,3 +454,3 @@ var annotationTerm_1 = {

annotation.record.propertyValues.forEach(function (propertyValue) {
annotationContent_1[propertyValue.name] = parseValue(propertyValue.value, annotation.fullyQualifiedName + "/" + propertyValue.name, parserOutput, currentTarget, objectMap, toResolve);
annotationContent_1[propertyValue.name] = parseValue(propertyValue.value, annotation.fullyQualifiedName + "/" + propertyValue.name, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations);
if (annotationContent_1.hasOwnProperty("Action") &&

@@ -347,3 +473,3 @@ (!annotation.record ||

if (annotation.value) {
return parseValue(annotation.value, annotation.fullyQualifiedName, parserOutput, currentTarget, objectMap, toResolve);
return parseValue(annotation.value, annotation.fullyQualifiedName, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations);
}

@@ -355,3 +481,3 @@ else {

else if (annotation.collection) {
var collection = parseCollection(annotation.collection, annotation.fullyQualifiedName, parserOutput, currentTarget, objectMap, toResolve);
var collection = parseCollection(annotation.collection, annotation.fullyQualifiedName, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations);
collection.fullyQualifiedName = annotation.fullyQualifiedName;

@@ -365,4 +491,4 @@ return collection;

function createResolvePathFn(entityType, objectMap) {
return function (relativePath) {
return resolveTarget(objectMap, entityType, relativePath);
return function (relativePath, includeVisitedObjects) {
return resolveTarget(objectMap, entityType, relativePath, false, includeVisitedObjects);
};

@@ -372,6 +498,20 @@ }

entityTypes.forEach(function (entityType) {
entityType.navigationProperties.forEach(function (navProp) {
entityType.navigationProperties = entityType.navigationProperties.map(function (navProp) {
var outNavProp = {
_type: "NavigationProperty",
name: navProp.name,
fullyQualifiedName: navProp.fullyQualifiedName,
partner: navProp.hasOwnProperty("partner") ? navProp.partner : undefined,
// targetTypeName: FullyQualifiedName;
// targetType: EntityType;
isCollection: navProp.hasOwnProperty("isCollection") ? navProp.isCollection : false,
containsTarget: navProp.hasOwnProperty("containsTarget")
? navProp.containsTarget
: false,
referentialConstraint: navProp.referentialConstraint
? navProp.referentialConstraint
: []
};
if (navProp.targetTypeName) {
navProp.targetType =
objectMap[navProp.targetTypeName];
outNavProp.targetType = objectMap[navProp.targetTypeName];
}

@@ -383,6 +523,11 @@ else if (navProp.relationship) {

if (associationEnd) {
navProp.targetType = objectMap[associationEnd.type];
outNavProp.targetType = objectMap[associationEnd.type];
outNavProp.isCollection = associationEnd.multiplicity === "*";
}
}
}
if (outNavProp.targetType) {
outNavProp.targetTypeName = outNavProp.targetType.name;
}
return outNavProp;
});

@@ -404,4 +549,3 @@ entityType.resolvePath = createResolvePathFn(entityType, objectMap);

}
var returnEntityType = objectMap[action.returnType];
action.returnEntityType = returnEntityType;
action.returnEntityType = objectMap[action.returnType];
}

@@ -419,4 +563,31 @@ });

}
entitySet.entityType.keys.forEach(function (keyProp) {
keyProp.isKey = true;
});
});
}
function linkPropertiesToComplexTypes(entityTypes, objectMap) {
entityTypes.forEach(function (entityType) {
entityType.entityProperties.forEach(function (entityProperty) {
if (entityProperty.type.indexOf("Edm") === -1) {
var complexType = objectMap[entityProperty.type];
if (complexType) {
entityProperty.targetType = complexType;
}
}
});
});
}
function prepareComplexTypes(complexTypes) {
complexTypes.forEach(function (complexType) {
complexType.annotations = {};
});
}
function splitTerm(references, termValue) {
var aliasedTerm = alias(references, termValue);
var lastDot = aliasedTerm.lastIndexOf(".");
var termAlias = aliasedTerm.substr(0, lastDot);
var term = aliasedTerm.substr(lastDot + 1);
return [termAlias, term];
}
function convertTypes(parserOutput) {

@@ -427,2 +598,4 @@ var objectMap = buildObjectMap(parserOutput);

linkEntityTypeToEntitySet(parserOutput.schema.entitySets, objectMap);
linkPropertiesToComplexTypes(parserOutput.schema.entityTypes, objectMap);
prepareComplexTypes(parserOutput.schema.complexTypes);
var toResolve = [];

@@ -436,2 +609,3 @@ var unresolvedAnnotations = [];

if (currentTargetName.indexOf("@") !== -1) {
annotationList.__source = annotationSource;
unresolvedAnnotations.push(annotationList);

@@ -445,3 +619,3 @@ }

annotationList.annotations.forEach(function (annotation) {
var _a = annotation.term.split("."), vocAlias = _a[0], vocTerm = _a[1];
var _a = splitTerm(defaultReferences, annotation.term), vocAlias = _a[0], vocTerm = _a[1];
if (!currentTarget.annotations[vocAlias]) {

@@ -454,18 +628,26 @@ currentTarget.annotations[vocAlias] = {};

var vocTermWithQualifier = "" + vocTerm + (annotation.qualifier ? "#" + annotation.qualifier : "");
currentTarget.annotations[vocAlias][vocTermWithQualifier] = convertAnnotation(annotation, parserOutput, currentTarget, objectMap, toResolve);
currentTarget.annotations[vocAlias][vocTermWithQualifier] = convertAnnotation(annotation, parserOutput, currentTarget, objectMap, toResolve, annotationSource, unresolvedAnnotations);
if (currentTarget.annotations[vocAlias][vocTermWithQualifier] !== null &&
typeof currentTarget.annotations[vocAlias][vocTermWithQualifier] === "object") {
currentTarget.annotations[vocAlias][vocTermWithQualifier].term = unalias(parserOutput.references, vocAlias + "." + vocTerm);
currentTarget.annotations[vocAlias][vocTermWithQualifier].term = unalias(defaultReferences, vocAlias + "." + vocTerm);
currentTarget.annotations[vocAlias][vocTermWithQualifier].qualifier = annotation.qualifier;
currentTarget.annotations[vocAlias][vocTermWithQualifier].__source = annotationSource;
}
var annotationTarget = currentTargetName + "@" + unalias(defaultReferences, vocAlias + "." + vocTermWithQualifier);
if (annotation.annotations && Array.isArray(annotation.annotations)) {
var subAnnotationList = {
target: annotationTarget,
annotations: annotation.annotations,
__source: annotationSource
};
unresolvedAnnotations.push(subAnnotationList);
}
currentTarget.annotations._annotations[vocAlias + "." + vocTermWithQualifier] =
currentTarget.annotations[vocAlias][vocTermWithQualifier];
objectMap[currentTargetName + "@" + unalias(parserOutput.references, vocAlias + "." + vocTermWithQualifier)] = currentTarget.annotations[vocAlias][vocTermWithQualifier];
objectMap[annotationTarget] = currentTarget.annotations[vocAlias][vocTermWithQualifier];
});
}
else {
debugger;
}
});
});
var extraUnresolvedAnnotations = [];
unresolvedAnnotations.forEach(function (annotationList) {

@@ -490,3 +672,3 @@ var currentTargetName = unalias(parserOutput.references, annotationList.target);

annotationList.annotations.forEach(function (annotation) {
var _a = annotation.term.split("."), vocAlias = _a[0], vocTerm = _a[1];
var _a = splitTerm(defaultReferences, annotation.term), vocAlias = _a[0], vocTerm = _a[1];
if (!currentTarget.annotations[vocAlias]) {

@@ -499,16 +681,15 @@ currentTarget.annotations[vocAlias] = {};

var vocTermWithQualifier = "" + vocTerm + (annotation.qualifier ? "#" + annotation.qualifier : "");
currentTarget.annotations[vocAlias][vocTermWithQualifier] = convertAnnotation(annotation, parserOutput, currentTarget, objectMap, toResolve);
currentTarget.annotations[vocAlias][vocTermWithQualifier] = convertAnnotation(annotation, parserOutput, currentTarget, objectMap, toResolve, annotationList.__source, extraUnresolvedAnnotations);
if (currentTarget.annotations[vocAlias][vocTermWithQualifier] !== null &&
typeof currentTarget.annotations[vocAlias][vocTermWithQualifier] === "object") {
currentTarget.annotations[vocAlias][vocTermWithQualifier].term = unalias(parserOutput.references, vocAlias + "." + vocTerm);
currentTarget.annotations[vocAlias][vocTermWithQualifier].term = unalias(defaultReferences, vocAlias + "." + vocTerm);
currentTarget.annotations[vocAlias][vocTermWithQualifier].qualifier = annotation.qualifier;
currentTarget.annotations[vocAlias][vocTermWithQualifier].__source = annotationList.__source;
}
currentTarget.annotations._annotations[vocAlias + "." + vocTermWithQualifier] =
currentTarget.annotations[vocAlias][vocTermWithQualifier];
objectMap[currentTargetName + "@" + unalias(parserOutput.references, vocAlias + "." + vocTermWithQualifier)] = currentTarget.annotations[vocAlias][vocTermWithQualifier];
objectMap[currentTargetName + "@" + unalias(defaultReferences, vocAlias + "." + vocTermWithQualifier)] =
currentTarget.annotations[vocAlias][vocTermWithQualifier];
});
}
else {
debugger;
}
});

@@ -518,2 +699,5 @@ toResolve.forEach(function (resolveable) {

resolveable.$target = objectMap[targetStr];
if (!resolveable.$target) {
resolveable.targetString = targetStr;
}
});

@@ -528,7 +712,74 @@ parserOutput.entitySets = parserOutput.schema.entitySets;

entityTypes: parserOutput.schema.entityTypes,
references: parserOutput.references
complexTypes: parserOutput.schema.complexTypes,
references: defaultReferences
};
}
exports.convertTypes = convertTypes;
function transformCollectionItemToGenericType(collectionItem) {
function revertValueToGenericType(references, value) {
var result;
if (typeof value === "string") {
if (value.match(/\w+\.\w+\/.*/)) {
result = {
type: "EnumMember",
EnumMember: value
};
}
else {
result = {
type: "String",
String: value
};
}
}
else if (Array.isArray(value)) {
result = {
type: "Collection",
Collection: value.map(function (anno) { return revertCollectionItemToGenericType(references, anno); })
};
}
else if (typeof value === "boolean") {
result = {
type: "Bool",
Bool: value
};
}
else if (typeof value === "number") {
result = {
type: "Int",
Int: value
};
}
else if (value.type === "Path") {
result = {
type: "Path",
Path: value.path
};
}
else if (value.type === "AnnotationPath") {
result = {
type: "AnnotationPath",
AnnotationPath: value.value
};
}
else if (value.type === "PropertyPath") {
result = {
type: "PropertyPath",
PropertyPath: value.value
};
}
else if (value.type === "NavigationPropertyPath") {
result = {
type: "NavigationPropertyPath",
NavigationPropertyPath: value.value
};
}
else if (Object.prototype.hasOwnProperty.call(value, "$Type")) {
result = {
type: "Record",
Record: revertCollectionItemToGenericType(references, value)
};
}
return result;
}
function revertCollectionItemToGenericType(references, collectionItem) {
if (typeof collectionItem === "string") {

@@ -548,69 +799,35 @@ return collectionItem;

collectionKey !== "term" &&
collectionKey !== "__source" &&
collectionKey !== "qualifier" &&
collectionKey !== "ActionTarget" &&
collectionKey !== "fullyQualifiedName") {
collectionKey !== "fullyQualifiedName" &&
collectionKey !== "annotations") {
var value = collectionItem[collectionKey];
if (typeof value === "string") {
outItem_1.propertyValues.push({
name: collectionKey,
value: {
type: "String",
String: value
outItem_1.propertyValues.push({
name: collectionKey,
value: revertValueToGenericType(references, value)
});
}
else if (collectionKey === "annotations") {
var annotations_1 = collectionItem[collectionKey];
outItem_1.annotations = [];
Object.keys(annotations_1)
.filter(function (key) { return key !== "_annotations"; })
.forEach(function (key) {
Object.keys(annotations_1[key]).forEach(function (term) {
var _a;
var parsedAnnotation = revertTermToGenericType(references, annotations_1[key][term]);
if (!parsedAnnotation.term) {
var unaliasedTerm = unalias(references, key + "." + term);
if (unaliasedTerm) {
var qualifiedSplit = unaliasedTerm.split("#");
parsedAnnotation.term = qualifiedSplit[0];
if (qualifiedSplit.length > 1) {
parsedAnnotation.qualifier = qualifiedSplit[1];
}
}
}
(_a = outItem_1.annotations) === null || _a === void 0 ? void 0 : _a.push(parsedAnnotation);
});
}
else if (typeof value === "boolean") {
outItem_1.propertyValues.push({
name: collectionKey,
value: {
type: "Bool",
Bool: value
}
});
}
else if (value.type === "Path") {
outItem_1.propertyValues.push({
name: collectionKey,
value: {
type: "Path",
Path: value.path
}
});
}
else if (value.type === "AnnotationPath") {
outItem_1.propertyValues.push({
name: collectionKey,
value: {
type: "AnnotationPath",
AnnotationPath: value.value
}
});
}
else if (value.type === "PropertyPath") {
outItem_1.propertyValues.push({
name: collectionKey,
value: {
type: "PropertyPath",
PropertyPath: value.value
}
});
}
else if (value.type === "NavigationPropertyPath") {
outItem_1.propertyValues.push({
name: collectionKey,
value: {
type: "NavigationPropertyPath",
NavigationPropertyPath: value.value
}
});
}
else if (value.hasOwnProperty("$Type")) {
outItem_1.propertyValues.push({
name: collectionKey,
value: {
type: "Record",
Record: transformCollectionItemToGenericType(value)
}
});
}
});
}

@@ -620,5 +837,17 @@ });

}
else if (collectionItem.type === "PropertyPath") {
return {
type: "PropertyPath",
PropertyPath: collectionItem.value
};
}
else if (collectionItem.type === "AnnotationPath") {
return {
type: "AnnotationPath",
AnnotationPath: collectionItem.value
};
}
}
}
function transformTermToGenericType(annotation) {
function revertTermToGenericType(references, annotation) {
var baseAnnotation = {

@@ -630,11 +859,11 @@ term: annotation.term,

// Collection
return __assign(__assign({}, baseAnnotation), { collection: annotation.map(transformCollectionItemToGenericType) });
return __assign(__assign({}, baseAnnotation), { collection: annotation.map(function (anno) { return revertCollectionItemToGenericType(references, anno); }) });
}
else if (annotation.hasOwnProperty("$Type")) {
return __assign(__assign({}, baseAnnotation), { record: transformCollectionItemToGenericType(annotation) });
return __assign(__assign({}, baseAnnotation), { record: revertCollectionItemToGenericType(references, annotation) });
}
else {
return baseAnnotation;
return __assign(__assign({}, baseAnnotation), { value: revertValueToGenericType(references, annotation) });
}
}
exports.transformTermToGenericType = transformTermToGenericType;
exports.revertTermToGenericType = revertTermToGenericType;
{
"name": "@sap-ux/annotation-converter",
"version": "0.2.6",
"version": "0.2.26",
"main": "dist/index.js",

@@ -13,6 +13,6 @@ "license": "Apache-2.0",

"devDependencies": {
"@babel/cli": "7.7.7",
"@babel/core": "7.7.7",
"@babel/preset-env": "7.7.7",
"@babel/preset-typescript": "7.7.7",
"@babel/cli": "7.8.4",
"@babel/core": "7.9.0",
"@babel/preset-env": "7.9.5",
"@babel/preset-typescript": "7.9.0",
"@rollup/plugin-commonjs": "^11.0.1",

@@ -22,5 +22,5 @@ "@rollup/plugin-node-resolve": "^7.0.0",

"@sap-ux/babel-plugin-use-const-enum": "0.1.0",
"@sap-ux/edmx-parser": "0.2.6",
"@sap-ux/vocabularies-csdl-types": "0.2.6",
"@sap-ux/vocabularies-types": "0.2.6",
"@sap-ux/edmx-parser": "0.2.26",
"@sap-ux/vocabularies-csdl-types": "0.2.26",
"@sap-ux/vocabularies-types": "0.2.26",
"chai": "^4.2.0",

@@ -31,4 +31,4 @@ "mocha": "^6.2.2",

"ts-node": "^8.5.2",
"typescript": "^3.6.3"
"typescript": "^3.8.3"
}
}

@@ -6,3 +6,2 @@ import {

AnnotationTerm,
ComplexType,
ConverterOutput,

@@ -18,11 +17,20 @@ Expression,

} from "@sap-ux/vocabularies-types";
import { Association, Reference } from "@sap-ux/vocabularies-types/dist/Parser";
import {
Association,
GenericNavigationProperty,
Reference,
Property as ParserProperty,
V2NavigationProperty,
V4NavigationProperty
} from "@sap-ux/vocabularies-types/dist/Parser";
import {
Annotation,
EntityType,
V4NavigationProperty,
V2NavigationProperty,
ComplexType,
Action,
EntitySet
EntitySet,
Property,
NavigationProperty
} from "@sap-ux/vocabularies-types/dist/Converter";
import { parse } from "ts-node";

@@ -41,6 +49,50 @@ class Path {

const defaultReferences: ReferencesWithMap = [
{ alias: "Capabilities", namespace: "Org.OData.Capabilities.V1", uri: "" },
{ alias: "Aggregation", namespace: "Org.OData.Aggregation.V1", uri: "" },
{ alias: "Validation", namespace: "Org.OData.Validation.V1", uri: "" },
{ namespace: "Org.OData.Core.V1", alias: "Core", uri: "" },
{ namespace: "Org.OData.Measures.V1", alias: "Measures", uri: "" },
{ namespace: "com.sap.vocabularies.Common.v1", alias: "Common", uri: "" },
{ namespace: "com.sap.vocabularies.UI.v1", alias: "UI", uri: "" },
{ namespace: "com.sap.vocabularies.Session.v1", alias: "Session", uri: "" },
{ namespace: "com.sap.vocabularies.Analytics.v1", alias: "Analytics", uri: "" },
{ namespace: "com.sap.vocabularies.CodeList.v1", alias: "CodeList", uri: "" },
{ namespace: "com.sap.vocabularies.PersonalData.v1", alias: "PersonalData", uri: "" },
{ namespace: "com.sap.vocabularies.Communication.v1", alias: "Communication", uri: "" },
{ namespace: "com.sap.vocabularies.HTML5.v1", alias: "HTML5", uri: "" }
];
type ReferencesWithMap = Reference[] & {
referenceMap?: Record<string, Reference>;
reverseReferenceMap?: Record<string, Reference>;
};
function alias(references: ReferencesWithMap, unaliasedValue: string): string {
if (!references.reverseReferenceMap) {
references.reverseReferenceMap = references.reduce((map: Record<string, Reference>, reference) => {
map[reference.namespace] = reference;
return map;
}, {});
}
if (!unaliasedValue) {
return unaliasedValue;
}
const lastDotIndex = unaliasedValue.lastIndexOf(".");
const namespace = unaliasedValue.substr(0, lastDotIndex);
const value = unaliasedValue.substr(lastDotIndex + 1);
const reference = references.reverseReferenceMap[namespace];
if (reference) {
return `${reference.alias}.${value}`;
} else {
// Try to see if it's an annotation Path like to_SalesOrder/@UI.LineItem
if (unaliasedValue.indexOf("@") !== -1) {
const [preAlias, postAlias] = unaliasedValue.split("@");
return `${preAlias}@${alias(references, postAlias)}`;
} else {
return unaliasedValue;
}
}
}
function unalias(references: ReferencesWithMap, aliasedValue: string | undefined): string | undefined {

@@ -85,2 +137,8 @@ if (!references.referenceMap) {

});
parserOutput.schema.complexTypes.forEach(complexType => {
objectMap[complexType.fullyQualifiedName] = complexType;
complexType.properties.forEach(property => {
objectMap[property.fullyQualifiedName] = property;
});
});
parserOutput.schema.entityTypes.forEach(entityType => {

@@ -90,2 +148,15 @@ objectMap[entityType.fullyQualifiedName] = entityType;

objectMap[property.fullyQualifiedName] = property;
if (property.type.indexOf("Edm") === -1) {
// Handle complex types
const complexTypeDefinition = objectMap[property.type] as ComplexType;
if (complexTypeDefinition && complexTypeDefinition.properties) {
complexTypeDefinition.properties.forEach(complexTypeProp => {
const complexTypePropTarget: ParserProperty = Object.assign(complexTypeProp, {
_type: "Property",
fullyQualifiedName: property.fullyQualifiedName + "/" + complexTypeProp.name
});
objectMap[complexTypePropTarget.fullyQualifiedName] = complexTypePropTarget;
});
}
}
});

@@ -96,2 +167,3 @@ entityType.navigationProperties.forEach(navProperty => {

});
Object.keys(parserOutput.schema.annotations).forEach(annotationSource => {

@@ -101,3 +173,3 @@ parserOutput.schema.annotations[annotationSource].forEach(annotationList => {

annotationList.annotations.forEach(annotation => {
let annotationFQN = `/${currentTargetName}@${unalias(parserOutput.references, annotation.term)}`;
let annotationFQN = `${currentTargetName}@${unalias(parserOutput.references, annotation.term)}`;
if (annotation.qualifier) {

@@ -122,6 +194,13 @@ annotationFQN += `#${annotation.qualifier}`;

function resolveTarget(objectMap: any, currentTarget: any, path: string, pathOnly: boolean = false) {
function resolveTarget(
objectMap: any,
currentTarget: any,
path: string,
pathOnly: boolean = false,
includeVisitedObjects: boolean = false
) {
if (!path) {
return undefined;
}
const aVisitedObjects: any[] = [];
path = combinePath(currentTarget.fullyQualifiedName, path);

@@ -132,6 +211,9 @@

const target = pathSplit.reduce((currentValue: any, pathPart) => {
if (includeVisitedObjects && currentValue !== null) {
aVisitedObjects.push(currentValue);
}
if (!currentValue) {
currentPath = pathPart;
} else if (currentValue._type === "EntitySet" && currentValue.entityType) {
currentPath = combinePath(currentValue.entityType, pathPart);
currentPath = combinePath(currentValue.entityTypeName, pathPart);
} else if (currentValue._type === "NavigationProperty" && currentValue.targetTypeName) {

@@ -142,6 +224,11 @@ currentPath = combinePath(currentValue.targetTypeName, pathPart);

} else if (currentValue._type === "Property") {
currentPath = combinePath(
currentTarget.fullyQualifiedName.substr(0, currentTarget.fullyQualifiedName.lastIndexOf("/")),
pathPart
);
if (currentValue.type.indexOf("Edm") === -1) {
// This is a complex type
currentPath = combinePath(currentValue.fullyQualifiedName, pathPart);
} else {
currentPath = combinePath(
currentTarget.fullyQualifiedName.substr(0, currentTarget.fullyQualifiedName.lastIndexOf("/")),
pathPart
);
}
} else if (currentValue._type === "Action" && currentValue.isBound) {

@@ -185,2 +272,8 @@ currentPath = combinePath(currentValue.fullyQualifiedName, pathPart);

}
if (includeVisitedObjects) {
return {
visitedObjects: aVisitedObjects,
target: target
};
}
return target;

@@ -199,3 +292,5 @@ }

objectMap: any,
toResolve: Resolveable[]
toResolve: Resolveable[],
annotationSource: string,
unresolvedAnnotations: AnnotationList[]
) {

@@ -261,3 +356,12 @@ if (propertyValue === undefined) {

case "Record":
return parseRecord(propertyValue.Record, valueFQN, parserOutput, currentTarget, objectMap, toResolve);
return parseRecord(
propertyValue.Record,
valueFQN,
parserOutput,
currentTarget,
objectMap,
toResolve,
annotationSource,
unresolvedAnnotations
);
case "Collection":

@@ -270,5 +374,8 @@ return parseCollection(

objectMap,
toResolve
toResolve,
annotationSource,
unresolvedAnnotations
);
case "Apply":
case "If":
return propertyValue;

@@ -284,3 +391,5 @@ }

objectMap: any,
toResolve: Resolveable[]
toResolve: Resolveable[],
annotationSource: string,
unresolvedAnnotations: AnnotationList[]
) {

@@ -292,2 +401,10 @@ const annotationTerm: any = {

const annotationContent: any = {};
if (recordDefinition.annotations && Array.isArray(recordDefinition.annotations)) {
const subAnnotationList = {
target: currentFQN,
annotations: recordDefinition.annotations,
__source: annotationSource
};
unresolvedAnnotations.push(subAnnotationList);
}
recordDefinition.propertyValues.forEach((propertyValue: PropertyValue) => {

@@ -300,4 +417,14 @@ annotationContent[propertyValue.name] = parseValue(

objectMap,
toResolve
toResolve,
annotationSource,
unresolvedAnnotations
);
if (propertyValue.annotations && Array.isArray(propertyValue.annotations)) {
const subAnnotationList = {
target: `${currentFQN}/${propertyValue.name}`,
annotations: propertyValue.annotations,
__source: annotationSource
};
unresolvedAnnotations.push(subAnnotationList);
}
if (

@@ -319,2 +446,37 @@ annotationContent.hasOwnProperty("Action") &&

export type CollectionType =
| "PropertyPath"
| "Path"
| "AnnotationPath"
| "NavigationPropertyPath"
| "Record"
| "String"
| "EmptyCollection";
function getOrInferCollectionType(collectionDefinition: any[]): CollectionType {
let type: CollectionType = (collectionDefinition as any).type;
if (type === undefined && collectionDefinition.length > 0) {
const firstColItem = collectionDefinition[0];
if (firstColItem.hasOwnProperty("PropertyPath")) {
type = "PropertyPath";
} else if (firstColItem.hasOwnProperty("Path")) {
type = "Path";
} else if (firstColItem.hasOwnProperty("AnnotationPath")) {
type = "AnnotationPath";
} else if (firstColItem.hasOwnProperty("NavigationPropertyPath")) {
type = "NavigationPropertyPath";
} else if (
typeof firstColItem === "object" &&
(firstColItem.hasOwnProperty("type") || firstColItem.hasOwnProperty("propertyValues"))
) {
type = "Record";
} else if (typeof firstColItem === "string") {
type = "String";
}
} else if (type === undefined) {
type = "EmptyCollection";
}
return type;
}
function parseCollection(

@@ -326,5 +488,8 @@ collectionDefinition: any[],

objectMap: any,
toResolve: Resolveable[]
toResolve: Resolveable[],
annotationSource: string,
unresolvedAnnotations: AnnotationList[]
) {
switch ((collectionDefinition as any).type) {
const collectionDefinitionType = getOrInferCollectionType(collectionDefinition);
switch (collectionDefinitionType) {
case "PropertyPath":

@@ -382,3 +547,5 @@ return collectionDefinition.map((propertyPath, propertyIdx) => {

objectMap,
toResolve
toResolve,
annotationSource,
unresolvedAnnotations
);

@@ -400,2 +567,3 @@ });

$target: string;
targetString?: string;
};

@@ -408,3 +576,5 @@

objectMap: any,
toResolve: Resolveable[]
toResolve: Resolveable[],
annotationSource: string,
unresolvedAnnotations: AnnotationList[]
): any {

@@ -425,3 +595,5 @@ if (annotation.record) {

objectMap,
toResolve
toResolve,
annotationSource,
unresolvedAnnotations
);

@@ -452,3 +624,5 @@ if (

objectMap,
toResolve
toResolve,
annotationSource,
unresolvedAnnotations
);

@@ -465,3 +639,5 @@ } else {

objectMap,
toResolve
toResolve,
annotationSource,
unresolvedAnnotations
);

@@ -476,4 +652,4 @@ collection.fullyQualifiedName = annotation.fullyQualifiedName;

function createResolvePathFn(entityType: EntityType, objectMap: Record<string, any>) {
return function(relativePath: string): any {
return resolveTarget(objectMap, entityType, relativePath);
return function(relativePath: string, includeVisitedObjects: boolean): any {
return resolveTarget(objectMap, entityType, relativePath, false, includeVisitedObjects);
};

@@ -488,6 +664,20 @@ }

entityTypes.forEach(entityType => {
entityType.navigationProperties.forEach(navProp => {
if ((navProp as V4NavigationProperty).targetTypeName) {
(navProp as V4NavigationProperty).targetType =
objectMap[(navProp as V4NavigationProperty).targetTypeName];
entityType.navigationProperties = entityType.navigationProperties.map(navProp => {
const outNavProp: Partial<NavigationProperty> = {
_type: "NavigationProperty",
name: navProp.name,
fullyQualifiedName: navProp.fullyQualifiedName,
partner: (navProp as any).hasOwnProperty("partner") ? (navProp as any).partner : undefined,
// targetTypeName: FullyQualifiedName;
// targetType: EntityType;
isCollection: (navProp as any).hasOwnProperty("isCollection") ? (navProp as any).isCollection : false,
containsTarget: (navProp as any).hasOwnProperty("containsTarget")
? (navProp as any).containsTarget
: false,
referentialConstraint: (navProp as any).referentialConstraint
? (navProp as any).referentialConstraint
: []
};
if ((navProp as GenericNavigationProperty).targetTypeName) {
outNavProp.targetType = objectMap[(navProp as V4NavigationProperty).targetTypeName];
} else if ((navProp as V2NavigationProperty).relationship) {

@@ -502,6 +692,11 @@ const targetAssociation = associations.find(

if (associationEnd) {
(navProp as V2NavigationProperty).targetType = objectMap[associationEnd.type];
outNavProp.targetType = objectMap[associationEnd.type];
outNavProp.isCollection = associationEnd.multiplicity === "*";
}
}
}
if (outNavProp.targetType) {
outNavProp.targetTypeName = outNavProp.targetType.name;
}
return outNavProp as NavigationProperty;
});

@@ -524,4 +719,3 @@ entityType.resolvePath = createResolvePathFn(entityType as EntityType, objectMap);

}
const returnEntityType = objectMap[action.returnType];
action.returnEntityType = returnEntityType;
action.returnEntityType = objectMap[action.returnType];
}

@@ -540,5 +734,35 @@ });

}
entitySet.entityType.keys.forEach((keyProp: Property) => {
keyProp.isKey = true;
});
});
}
function linkPropertiesToComplexTypes(entityTypes: EntityType[], objectMap: Record<string, any>) {
entityTypes.forEach(entityType => {
entityType.entityProperties.forEach(entityProperty => {
if (entityProperty.type.indexOf("Edm") === -1) {
const complexType = objectMap[entityProperty.type] as ComplexType;
if (complexType) {
(entityProperty as Property).targetType = complexType;
}
}
});
});
}
function prepareComplexTypes(complexTypes: ComplexType[]) {
complexTypes.forEach(complexType => {
complexType.annotations = {};
});
}
function splitTerm(references: ReferencesWithMap, termValue: string) {
const aliasedTerm = alias(references, termValue);
const lastDot = aliasedTerm.lastIndexOf(".");
let termAlias = aliasedTerm.substr(0, lastDot);
let term = aliasedTerm.substr(lastDot + 1);
return [termAlias, term];
}
export function convertTypes(parserOutput: ParserOutput): ConverterOutput {

@@ -553,2 +777,4 @@ const objectMap = buildObjectMap(parserOutput);

linkEntityTypeToEntitySet(parserOutput.schema.entitySets as EntitySet[], objectMap);
linkPropertiesToComplexTypes(parserOutput.schema.entityTypes as EntityType[], objectMap);
prepareComplexTypes(parserOutput.schema.complexTypes as ComplexType[]);
const toResolve: Resolveable[] = [];

@@ -562,2 +788,3 @@ const unresolvedAnnotations: AnnotationList[] = [];

if (currentTargetName.indexOf("@") !== -1) {
(annotationList as any).__source = annotationSource;
unresolvedAnnotations.push(annotationList);

@@ -570,3 +797,3 @@ }

annotationList.annotations.forEach(annotation => {
const [vocAlias, vocTerm] = annotation.term.split(".");
const [vocAlias, vocTerm] = splitTerm(defaultReferences, annotation.term);
if (!currentTarget.annotations[vocAlias]) {

@@ -585,3 +812,5 @@ currentTarget.annotations[vocAlias] = {};

objectMap,
toResolve
toResolve,
annotationSource,
unresolvedAnnotations
);

@@ -593,21 +822,28 @@ if (

currentTarget.annotations[vocAlias][vocTermWithQualifier].term = unalias(
parserOutput.references,
defaultReferences,
`${vocAlias}.${vocTerm}`
);
currentTarget.annotations[vocAlias][vocTermWithQualifier].qualifier = annotation.qualifier;
currentTarget.annotations[vocAlias][vocTermWithQualifier].__source = annotationSource;
}
const annotationTarget = `${currentTargetName}@${unalias(
defaultReferences,
vocAlias + "." + vocTermWithQualifier
)}`;
if (annotation.annotations && Array.isArray(annotation.annotations)) {
const subAnnotationList = {
target: annotationTarget,
annotations: annotation.annotations,
__source: annotationSource
};
unresolvedAnnotations.push(subAnnotationList);
}
currentTarget.annotations._annotations[`${vocAlias}.${vocTermWithQualifier}`] =
currentTarget.annotations[vocAlias][vocTermWithQualifier];
objectMap[
`${currentTargetName}@${unalias(
parserOutput.references,
vocAlias + "." + vocTermWithQualifier
)}`
] = currentTarget.annotations[vocAlias][vocTermWithQualifier];
objectMap[annotationTarget] = currentTarget.annotations[vocAlias][vocTermWithQualifier];
});
} else {
debugger;
}
});
});
const extraUnresolvedAnnotations: AnnotationList[] = [];
unresolvedAnnotations.forEach(annotationList => {

@@ -631,3 +867,3 @@ const currentTargetName = unalias(parserOutput.references, annotationList.target) as string;

annotationList.annotations.forEach(annotation => {
const [vocAlias, vocTerm] = annotation.term.split(".");
const [vocAlias, vocTerm] = splitTerm(defaultReferences, annotation.term);
if (!currentTarget.annotations[vocAlias]) {

@@ -646,3 +882,5 @@ currentTarget.annotations[vocAlias] = {};

objectMap,
toResolve
toResolve,
(annotationList as any).__source,
extraUnresolvedAnnotations
);

@@ -654,15 +892,15 @@ if (

currentTarget.annotations[vocAlias][vocTermWithQualifier].term = unalias(
parserOutput.references,
defaultReferences,
`${vocAlias}.${vocTerm}`
);
currentTarget.annotations[vocAlias][vocTermWithQualifier].qualifier = annotation.qualifier;
currentTarget.annotations[vocAlias][
vocTermWithQualifier
].__source = (annotationList as any).__source;
}
currentTarget.annotations._annotations[`${vocAlias}.${vocTermWithQualifier}`] =
currentTarget.annotations[vocAlias][vocTermWithQualifier];
objectMap[
`${currentTargetName}@${unalias(parserOutput.references, vocAlias + "." + vocTermWithQualifier)}`
] = currentTarget.annotations[vocAlias][vocTermWithQualifier];
objectMap[`${currentTargetName}@${unalias(defaultReferences, vocAlias + "." + vocTermWithQualifier)}`] =
currentTarget.annotations[vocAlias][vocTermWithQualifier];
});
} else {
debugger;
}

@@ -673,2 +911,5 @@ });

resolveable.$target = objectMap[targetStr];
if (!resolveable.$target) {
resolveable.targetString = targetStr;
}
});

@@ -684,7 +925,67 @@ (parserOutput as any).entitySets = parserOutput.schema.entitySets;

entityTypes: parserOutput.schema.entityTypes as EntityType[],
references: parserOutput.references
complexTypes: parserOutput.schema.complexTypes as ComplexType[],
references: defaultReferences
};
}
function transformCollectionItemToGenericType(
function revertValueToGenericType(references: Reference[], value: any): Expression | undefined {
let result: Expression | undefined;
if (typeof value === "string") {
if (value.match(/\w+\.\w+\/.*/)) {
result = {
type: "EnumMember",
EnumMember: value
};
} else {
result = {
type: "String",
String: value
};
}
} else if (Array.isArray(value)) {
result = {
type: "Collection",
Collection: value.map(anno => revertCollectionItemToGenericType(references, anno)) as any[]
};
} else if (typeof value === "boolean") {
result = {
type: "Bool",
Bool: value
};
} else if (typeof value === "number") {
result = {
type: "Int",
Int: value
};
} else if (value.type === "Path") {
result = {
type: "Path",
Path: value.path
};
} else if (value.type === "AnnotationPath") {
result = {
type: "AnnotationPath",
AnnotationPath: value.value
};
} else if (value.type === "PropertyPath") {
result = {
type: "PropertyPath",
PropertyPath: value.value
};
} else if (value.type === "NavigationPropertyPath") {
result = {
type: "NavigationPropertyPath",
NavigationPropertyPath: value.value
};
} else if (Object.prototype.hasOwnProperty.call(value, "$Type")) {
result = {
type: "Record",
Record: revertCollectionItemToGenericType(references, value) as AnnotationRecord
};
}
return result;
}
function revertCollectionItemToGenericType(
references: Reference[],
collectionItem: any

@@ -704,3 +1005,3 @@ ):

// Annotation Record
const outItem = {
const outItem: AnnotationRecord = {
type: collectionItem.$Type,

@@ -714,67 +1015,47 @@ propertyValues: [] as any[]

collectionKey !== "term" &&
collectionKey !== "__source" &&
collectionKey !== "qualifier" &&
collectionKey !== "ActionTarget" &&
collectionKey !== "fullyQualifiedName"
collectionKey !== "fullyQualifiedName" &&
collectionKey !== "annotations"
) {
const value = collectionItem[collectionKey];
if (typeof value === "string") {
outItem.propertyValues.push({
name: collectionKey,
value: {
type: "String",
String: value
}
outItem.propertyValues.push({
name: collectionKey,
value: revertValueToGenericType(references, value) as Expression
});
} else if (collectionKey === "annotations") {
const annotations = collectionItem[collectionKey];
outItem.annotations = [];
Object.keys(annotations)
.filter(key => key !== "_annotations")
.forEach(key => {
Object.keys(annotations[key]).forEach(term => {
const parsedAnnotation = revertTermToGenericType(references, annotations[key][term]);
if (!parsedAnnotation.term) {
const unaliasedTerm = unalias(references, `${key}.${term}`);
if (unaliasedTerm) {
const qualifiedSplit = unaliasedTerm.split("#");
parsedAnnotation.term = qualifiedSplit[0];
if (qualifiedSplit.length > 1) {
parsedAnnotation.qualifier = qualifiedSplit[1];
}
}
}
outItem.annotations?.push(parsedAnnotation);
});
});
} else if (typeof value === "boolean") {
outItem.propertyValues.push({
name: collectionKey,
value: {
type: "Bool",
Bool: value
}
});
} else if (value.type === "Path") {
outItem.propertyValues.push({
name: collectionKey,
value: {
type: "Path",
Path: value.path
}
});
} else if (value.type === "AnnotationPath") {
outItem.propertyValues.push({
name: collectionKey,
value: {
type: "AnnotationPath",
AnnotationPath: value.value
}
});
} else if (value.type === "PropertyPath") {
outItem.propertyValues.push({
name: collectionKey,
value: {
type: "PropertyPath",
PropertyPath: value.value
}
});
} else if (value.type === "NavigationPropertyPath") {
outItem.propertyValues.push({
name: collectionKey,
value: {
type: "NavigationPropertyPath",
NavigationPropertyPath: value.value
}
});
} else if (value.hasOwnProperty("$Type")) {
outItem.propertyValues.push({
name: collectionKey,
value: {
type: "Record",
Record: transformCollectionItemToGenericType(value)
}
});
}
}
});
return outItem;
} else if (collectionItem.type === "PropertyPath") {
return {
type: "PropertyPath",
PropertyPath: collectionItem.value
};
} else if (collectionItem.type === "AnnotationPath") {
return {
type: "AnnotationPath",
AnnotationPath: collectionItem.value
};
}

@@ -784,3 +1065,3 @@ }

export function transformTermToGenericType(annotation: AnnotationTerm<any>): EdmAnnotation {
export function revertTermToGenericType(references: Reference[], annotation: AnnotationTerm<any>): EdmAnnotation {
const baseAnnotation = {

@@ -794,9 +1075,9 @@ term: annotation.term,

...baseAnnotation,
collection: annotation.map(transformCollectionItemToGenericType) as any[]
collection: annotation.map(anno => revertCollectionItemToGenericType(references, anno)) as any[]
};
} else if (annotation.hasOwnProperty("$Type")) {
return { ...baseAnnotation, record: transformCollectionItemToGenericType(annotation) as any };
return { ...baseAnnotation, record: revertCollectionItemToGenericType(references, annotation) as any };
} else {
return baseAnnotation;
return { ...baseAnnotation, value: revertValueToGenericType(references, annotation) };
}
}

@@ -6,2 +6,223 @@ # Change Log

## [0.2.26](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.25...ms/0.2.26) (2020-09-04)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.24...ms/0.2.25) (2020-09-04)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.24](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.24) (2020-09-03)
### Bug Fixes
* double check the existence of the complex type ([6f21e88](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/6f21e88dc4fa7b38d8dd8208a7fa763d3d6c1fde))
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.23](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.23) (2020-09-03)
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.22](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.22) (2020-09-03)
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.21](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.20...ms/0.2.21) (2020-08-25)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.20](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.19...ms/0.2.20) (2020-08-11)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.19) (2020-07-29)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
* add missing "Measures" vocabulary ([c87523f](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c87523f11b0633b9f6d3006597950e0382198d68))
## [0.2.18](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.18) (2020-07-29)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.17](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.17) (2020-07-28)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.16](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.16) (2020-07-28)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.15](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.15) (2020-07-28)
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.14](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.12...ms/0.2.14) (2020-07-28)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.13](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.12...ms/0.2.13) (2020-07-15)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.12](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.11...ms/0.2.12) (2020-07-13)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.11](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.9...ms/0.2.11) (2020-07-03)
### Features
* parser update to better support v2 services ([#19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/issues/19)) ([c37ff34](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/c37ff3476bda838b175bc520e22b0c8211ef782a))
## [0.2.10](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.9...ms/0.2.10) (2020-06-29)
### Features
* parser update to better support v2 services ([#19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/issues/19)) ([c37ff34](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/c37ff3476bda838b175bc520e22b0c8211ef782a))
## [0.2.9](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.7...ms/0.2.9) (2020-06-22)
### Features
* slight parser api change ([2c0b368](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/2c0b3680e3d2fdc6848014490f5f73786851831b))
## [0.2.8](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.7...ms/0.2.8) (2020-06-22)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.7](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.6...ms/0.2.7) (2020-06-16)
**Note:** Version bump only for package @sap-ux/edmx-parser
## [0.2.6](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.5...ms/0.2.6) (2020-06-08)

@@ -8,0 +229,0 @@

@@ -115,2 +115,19 @@ "use strict";

}
function parseAssociationSets(associations, namespace) {
return associations.map(association => {
const associationFQN = `${namespace}.${association._attributes.Name}`;
const associationEnd = utils_1.ensureArray(association.End).map((endValue) => {
return {
entitySet: endValue._attributes.EntitySet,
role: endValue._attributes.Role
};
});
return {
fullyQualifiedName: associationFQN,
name: association._attributes.Name,
association: association._attributes.Association,
associationEnd: associationEnd
};
});
}
function parseAssociations(associations, namespace) {

@@ -150,2 +167,15 @@ return associations.map(association => {

}
function parseComplexTypes(complexTypes, namespace) {
return complexTypes.reduce((outArray, complexType) => {
const complexTypeFQN = `${namespace}.${complexType._attributes.Name}`;
const { entityProperties, entityKeys } = parseProperties(utils_1.ensureArray(complexType.Property), [], complexTypeFQN);
outArray.push({
_type: "ComplexType",
name: complexType._attributes.Name,
fullyQualifiedName: complexTypeFQN,
properties: entityProperties
});
return outArray;
}, []);
}
function parseEntitySets(entitySets, namespace, entityContainerName) {

@@ -202,2 +232,24 @@ const outEntitySets = entitySets.map(entitySet => {

}
function parseFunctionImport(actions, entitySets, namespace) {
return actions.map(action => {
const targetEntitySet = entitySets.find(et => et.name === action._attributes.EntitySet);
let actionFQN = `${namespace}/${action._attributes.Name}()`;
return {
_type: "Action",
name: action._attributes.Name,
isBound: false,
sourceType: targetEntitySet ? targetEntitySet.entityTypeName : "",
fullyQualifiedName: actionFQN,
parameters: utils_1.ensureArray(action.Parameter).map(param => {
return {
_type: "ActionParameter",
fullyQualifiedName: `${actionFQN}/${param._attributes.Name}`,
type: param._attributes.Type,
isEntitySet: false
};
}),
returnType: action._attributes.ReturnType ? action._attributes.ReturnType : ""
};
});
}
function parsePropertyValues(propertyValues, currentTarget, annotationsLists) {

@@ -233,3 +285,3 @@ return propertyValues.map(propertyValue => {

return {
type: record._attributes ? record._attributes.Type : undefined,
type: record._attributes ? unalias(record._attributes.Type) : undefined,
propertyValues: parsePropertyValues(utils_1.ensureArray(record.PropertyValue), currentTarget, annotationsLists)

@@ -405,2 +457,7 @@ };

};
case "Int":
return {
type: "Int",
Int: parseInt(expression.Int)
};
case "Decimal":

@@ -461,6 +518,6 @@ return {

let outAnnotation = {
term: Term,
term: unalias(Term),
qualifier: Qualifier
};
let currentAnnotationTarget = `${currentTarget}@${Term}`;
let currentAnnotationTarget = `${currentTarget}@${unalias(Term)}`;
if (Qualifier !== "" && Qualifier !== undefined) {

@@ -511,6 +568,10 @@ currentAnnotationTarget += `#${Qualifier}`;

const entityTypes = parseEntityTypes(utils_1.ensureArray(edmSchema.EntityType), namespace);
const complexTypes = parseComplexTypes(utils_1.ensureArray(edmSchema.ComplexType), namespace);
let entitySets = [];
let associationSets = [];
let entityContainer = {};
let actions = [];
if (edmSchema.EntityContainer) {
entitySets = parseEntitySets(utils_1.ensureArray(edmSchema.EntityContainer.EntitySet), namespace, edmSchema.EntityContainer._attributes.Name);
associationSets = parseAssociationSets(utils_1.ensureArray(edmSchema.EntityContainer.AssociationSet), namespace);
entityContainer = {

@@ -520,6 +581,25 @@ name: edmSchema.EntityContainer._attributes.Name,

};
actions = actions.concat(parseFunctionImport(utils_1.ensureArray(edmSchema.EntityContainer.FunctionImport), entitySets, entityContainer.fullyQualifiedName));
}
const actions = parseActions(utils_1.ensureArray(edmSchema.Action), namespace);
actions = actions.concat(parseActions(utils_1.ensureArray(edmSchema.Action), namespace));
// const actionImports = parseActionImports(ensureArray(edmSchema.EntityContainer.ActionImport), namespace);
const associations = parseAssociations(utils_1.ensureArray(edmSchema.Association), namespace);
if (associationSets.length > 0)
// V2 case
entitySets.forEach(entitySet => {
const entityType = entityTypes.find(entityType => entityType.fullyQualifiedName === entitySet.entityTypeName);
entityType === null || entityType === void 0 ? void 0 : entityType.navigationProperties.forEach(navProp => {
const v2NavProp = navProp;
const associationSet = associationSets.find(assoc => assoc.fullyQualifiedName === v2NavProp.relationship);
if (associationSet) {
const associationEndEntitySets = associationSet.associationEnd.map((associationEnd) => {
return entitySets.find(entitySet => entitySet.name === associationEnd.entitySet);
});
const targetEntitySet = associationEndEntitySets.find(associationEntitySet => (associationEntitySet === null || associationEntitySet === void 0 ? void 0 : associationEntitySet.fullyQualifiedName) !== entitySet.fullyQualifiedName);
if (targetEntitySet) {
entitySet.navigationPropertyBinding[navProp.name] = targetEntitySet;
}
}
});
});
const annotations = [];

@@ -535,2 +615,3 @@ parseAnnotationLists(utils_1.ensureArray(edmSchema.Annotations), annotations);

entitySets,
complexTypes,
actions,

@@ -561,2 +642,23 @@ entityTypes

}
let referenceMap = {};
function unalias(aliasedValue) {
if (!aliasedValue) {
return aliasedValue;
}
const [alias, value] = aliasedValue.split(".");
const reference = referenceMap[alias];
if (reference) {
return `${reference.namespace}.${value}`;
}
else {
// Try to see if it's an annotation Path like to_SalesOrder/@UI.LineItem
if (aliasedValue.indexOf("@") !== -1) {
const [preAlias, postAlias] = aliasedValue.split("@");
return `${preAlias}@${unalias(postAlias)}`;
}
else {
return aliasedValue;
}
}
}
/**

@@ -569,5 +671,10 @@ * Parse an edmx file and return a parsed Service Definition

const jsonObj = xml_js_1.xml2js(xml, { compact: true });
const edmxDocument = new utils_1.ParserOutputInstance(fileIdentification, jsonObj["edmx:Edmx"]._attributes.Version, parseSchema(jsonObj["edmx:Edmx"]["edmx:DataServices"].Schema, fileIdentification), parseReferences(utils_1.ensureArray(jsonObj["edmx:Edmx"]["edmx:Reference"]), jsonObj["edmx:Edmx"]["edmx:DataServices"].Schema));
const references = parseReferences(utils_1.ensureArray(jsonObj["edmx:Edmx"]["edmx:Reference"]), jsonObj["edmx:Edmx"]["edmx:DataServices"].Schema);
referenceMap = references.reduce((map, reference) => {
map[reference.alias] = reference;
return map;
}, {});
const edmxDocument = new utils_1.ParserOutputInstance(fileIdentification, jsonObj["edmx:Edmx"]._attributes.Version, parseSchema(jsonObj["edmx:Edmx"]["edmx:DataServices"].Schema, fileIdentification), references);
return edmxDocument;
}
exports.parseEDMX = parseEDMX;

@@ -7,3 +7,3 @@ /**

import { AnnotationList, ParserOutput } from "@sap-ux/vocabularies-types";
import { Action, Association, EntityContainer, EntitySet, EntityType, Reference, Schema } from "@sap-ux/vocabularies-types/dist/Parser";
import { Action, Association, EntityContainer, EntitySet, EntityType, Reference, Schema, ComplexType } from "@sap-ux/vocabularies-types/dist/Parser";
export declare function ensureArray<T>(sourceObject: T | T[] | undefined): T[];

@@ -34,2 +34,3 @@ export declare class ParserOutputInstance implements ParserOutput {

_entityTypes: EntityType[];
_complexTypes: ComplexType[];
constructor(initialParserOutput: ParserOutput);

@@ -36,0 +37,0 @@ addParserOutput(parserOutput: ParserOutput): void;

@@ -57,2 +57,3 @@ "use strict";

this._entityTypes = [];
this._complexTypes = [];
this.identification = "mergedParserInstance";

@@ -72,2 +73,3 @@ this.version = initialParserOutput.version;

entitySets: this._entitySets,
complexTypes: this._complexTypes,
actions: this._actions,

@@ -85,2 +87,3 @@ entityTypes: this._entityTypes

this._entityTypes = this._entityTypes.concat(parserOutput.schema.entityTypes);
this._complexTypes = this._complexTypes.concat(parserOutput.schema.complexTypes);
this._entityContainer = Object.assign(this._entityContainer, parserOutput.schema.entityContainer);

@@ -87,0 +90,0 @@ }

{
"name": "@sap-ux/edmx-parser",
"version": "0.2.6",
"version": "0.2.26",
"main": "dist/index.js",

@@ -15,3 +15,3 @@ "license": "Apache-2.0",

"@rollup/plugin-node-resolve": "^7.0.0",
"@sap-ux/vocabularies-csdl-types": "0.2.6",
"@sap-ux/vocabularies-csdl-types": "0.2.26",
"@types/extract-zip": "^1.6.2",

@@ -36,5 +36,5 @@ "@types/fs-extra": "^8.0.1",

"dependencies": {
"@sap-ux/vocabularies-types": "0.2.6",
"@sap-ux/vocabularies-types": "0.2.26",
"xml-js": "1.6.11"
}
}

@@ -17,3 +17,6 @@ import { xml2js } from "xml-js";

ParserOutput,
Reference
Reference,
AssociationSet,
AssociationSetEnd,
ComplexType
} from "@sap-ux/vocabularies-types/dist/Parser";

@@ -184,2 +187,22 @@ import {

function parseAssociationSets(associations: EDMX.AssociationSet[], namespace: string): AssociationSet[] {
return associations.map(association => {
const associationFQN = `${namespace}.${association._attributes.Name}`;
const associationEnd: AssociationSetEnd[] = ensureArray(association.End).map(
(endValue: EDMX.AssociationSetEnd) => {
return {
entitySet: endValue._attributes.EntitySet,
role: endValue._attributes.Role
};
}
);
return {
fullyQualifiedName: associationFQN,
name: association._attributes.Name,
association: association._attributes.Association,
associationEnd: associationEnd
};
});
}
function parseAssociations(associations: EDMX.Association[], namespace: string): Association[] {

@@ -229,2 +252,16 @@ return associations.map(association => {

function parseComplexTypes(complexTypes: EDMX.ComplexType[], namespace: string): ComplexType[] {
return complexTypes.reduce((outArray: ComplexType[], complexType) => {
const complexTypeFQN = `${namespace}.${complexType._attributes.Name}`;
const { entityProperties, entityKeys } = parseProperties(ensureArray(complexType.Property), [], complexTypeFQN);
outArray.push({
_type: "ComplexType",
name: complexType._attributes.Name,
fullyQualifiedName: complexTypeFQN,
properties: entityProperties
});
return outArray;
}, []);
}
function parseEntitySets(entitySets: EDMX.EntitySet[], namespace: string, entityContainerName: string): EntitySet[] {

@@ -290,2 +327,25 @@ const outEntitySets: EntitySet[] = entitySets.map(entitySet => {

function parseFunctionImport(actions: EDMX.FunctionImport[], entitySets: EntitySet[], namespace: string): Action[] {
return actions.map(action => {
const targetEntitySet = entitySets.find(et => et.name === action._attributes.EntitySet);
let actionFQN: string = `${namespace}/${action._attributes.Name}()`;
return {
_type: "Action",
name: action._attributes.Name,
isBound: false,
sourceType: targetEntitySet ? targetEntitySet.entityTypeName : "",
fullyQualifiedName: actionFQN,
parameters: ensureArray(action.Parameter).map(param => {
return {
_type: "ActionParameter",
fullyQualifiedName: `${actionFQN}/${param._attributes.Name}`,
type: param._attributes.Type,
isEntitySet: false
};
}),
returnType: action._attributes.ReturnType ? action._attributes.ReturnType : ""
};
});
}
function parsePropertyValues(

@@ -339,3 +399,3 @@ propertyValues: EDMX.PropertyValue[],

return {
type: record._attributes ? record._attributes.Type : undefined,
type: record._attributes ? unalias(record._attributes.Type) : undefined,
propertyValues: parsePropertyValues(ensureArray(record.PropertyValue), currentTarget, annotationsLists)

@@ -547,2 +607,7 @@ };

};
case "Int":
return {
type: "Int",
Int: parseInt(expression.Int as string)
};
case "Decimal":

@@ -612,6 +677,6 @@ return {

let outAnnotation: Partial<Annotation> = {
term: Term,
term: unalias(Term),
qualifier: Qualifier
};
let currentAnnotationTarget = `${currentTarget}@${Term}`;
let currentAnnotationTarget = `${currentTarget}@${unalias(Term)}`;
if (Qualifier !== "" && Qualifier !== undefined) {

@@ -682,4 +747,7 @@ currentAnnotationTarget += `#${Qualifier}`;

const entityTypes = parseEntityTypes(ensureArray(edmSchema.EntityType), namespace);
const complexTypes = parseComplexTypes(ensureArray(edmSchema.ComplexType), namespace);
let entitySets: EntitySet[] = [];
let associationSets: AssociationSet[] = [];
let entityContainer: EntityContainer = {};
let actions: Action[] = [];
if (edmSchema.EntityContainer) {

@@ -691,2 +759,3 @@ entitySets = parseEntitySets(

);
associationSets = parseAssociationSets(ensureArray(edmSchema.EntityContainer.AssociationSet), namespace);
entityContainer = {

@@ -696,6 +765,40 @@ name: edmSchema.EntityContainer._attributes.Name,

};
actions = actions.concat(
parseFunctionImport(
ensureArray(edmSchema.EntityContainer.FunctionImport),
entitySets,
entityContainer.fullyQualifiedName as string
)
);
}
const actions = parseActions(ensureArray(edmSchema.Action), namespace);
actions = actions.concat(parseActions(ensureArray(edmSchema.Action), namespace));
// const actionImports = parseActionImports(ensureArray(edmSchema.EntityContainer.ActionImport), namespace);
const associations = parseAssociations(ensureArray(edmSchema.Association), namespace);
if (associationSets.length > 0)
// V2 case
entitySets.forEach(entitySet => {
const entityType = entityTypes.find(
entityType => entityType.fullyQualifiedName === entitySet.entityTypeName
);
entityType?.navigationProperties.forEach(navProp => {
const v2NavProp: V2NavigationProperty = navProp as V2NavigationProperty;
const associationSet = associationSets.find(
assoc => assoc.fullyQualifiedName === v2NavProp.relationship
);
if (associationSet) {
const associationEndEntitySets = associationSet.associationEnd.map(
(associationEnd: AssociationSetEnd) => {
return entitySets.find(entitySet => entitySet.name === associationEnd.entitySet);
}
);
const targetEntitySet = associationEndEntitySets.find(
associationEntitySet =>
associationEntitySet?.fullyQualifiedName !== entitySet.fullyQualifiedName
);
if (targetEntitySet) {
entitySet.navigationPropertyBinding[navProp.name] = targetEntitySet;
}
}
});
});
const annotations: AnnotationList[] = [];

@@ -711,2 +814,3 @@ parseAnnotationLists(ensureArray(edmSchema.Annotations), annotations);

entitySets,
complexTypes,
actions,

@@ -739,2 +843,23 @@ entityTypes

let referenceMap: Record<string, Reference> = {};
function unalias(aliasedValue: string | undefined): string | undefined {
if (!aliasedValue) {
return aliasedValue;
}
const [alias, value] = aliasedValue.split(".");
const reference = referenceMap[alias];
if (reference) {
return `${reference.namespace}.${value}`;
} else {
// Try to see if it's an annotation Path like to_SalesOrder/@UI.LineItem
if (aliasedValue.indexOf("@") !== -1) {
const [preAlias, postAlias] = aliasedValue.split("@");
return `${preAlias}@${unalias(postAlias)}`;
} else {
return aliasedValue;
}
}
}
/**

@@ -748,2 +873,10 @@ * Parse an edmx file and return a parsed Service Definition

const references = parseReferences(
ensureArray(jsonObj["edmx:Edmx"]["edmx:Reference"]),
jsonObj["edmx:Edmx"]["edmx:DataServices"].Schema
);
referenceMap = references.reduce((map: Record<string, Reference>, reference) => {
map[reference.alias] = reference;
return map;
}, {});
const edmxDocument: ParserOutput = new ParserOutputInstance(

@@ -753,6 +886,3 @@ fileIdentification,

parseSchema(jsonObj["edmx:Edmx"]["edmx:DataServices"].Schema, fileIdentification),
parseReferences(
ensureArray(jsonObj["edmx:Edmx"]["edmx:Reference"]),
jsonObj["edmx:Edmx"]["edmx:DataServices"].Schema
)
references
);

@@ -759,0 +889,0 @@

@@ -14,3 +14,4 @@ /**

Reference,
Schema
Schema,
ComplexType
} from "@sap-ux/vocabularies-types/dist/Parser";

@@ -76,2 +77,3 @@

entitySets: this._entitySets,
complexTypes: this._complexTypes,
actions: this._actions,

@@ -93,2 +95,3 @@ entityTypes: this._entityTypes

_entityTypes: EntityType[] = [];
_complexTypes: ComplexType[] = [];

@@ -109,2 +112,3 @@ constructor(initialParserOutput: ParserOutput) {

this._entityTypes = this._entityTypes.concat(parserOutput.schema.entityTypes);
this._complexTypes = this._complexTypes.concat(parserOutput.schema.complexTypes);
this._entityContainer = Object.assign(this._entityContainer, parserOutput.schema.entityContainer);

@@ -111,0 +115,0 @@ }

@@ -6,2 +6,239 @@ # Change Log

## [0.2.26](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.25...ms/0.2.26) (2020-09-04)
### Features
* slightly smarter types ([c8571d3](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c8571d3f0f594e439dd1be4e007a6ede6a859534))
## [0.2.25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.24...ms/0.2.25) (2020-09-04)
### Features
* allow for complex primitive types (yes that's a thing) ([18a2985](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/18a29855b0409455febb1b5e1592ae00be26b652))
## [0.2.24](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.24) (2020-09-03)
### Bug Fixes
* double check the existence of the complex type ([6f21e88](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/6f21e88dc4fa7b38d8dd8208a7fa763d3d6c1fde))
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.23](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.23) (2020-09-03)
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.22](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.21...ms/0.2.22) (2020-09-03)
### Features
* add support for complex types ([#25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/25)) ([c6cb1c0](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c6cb1c097d0fd5e693d10d63f8d6b053b1d5124e))
## [0.2.21](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.20...ms/0.2.21) (2020-08-25)
### Features
* add the possibility to get the list of visited object when resolving a path ([#24](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/issues/24)) ([8ae1764](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/8ae1764895bc17162cfdacbf25bb39632cdfe31f))
## [0.2.20](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.19...ms/0.2.20) (2020-08-11)
**Note:** Version bump only for package @sap-ux/vocabularies-types
## [0.2.19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.19) (2020-07-29)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
* add missing "Measures" vocabulary ([c87523f](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/c87523f11b0633b9f6d3006597950e0382198d68))
* make sure that simple type can also be defined as PropertyAnnotationValue ([bfcc100](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/bfcc100dc80a9dce85cbfb185d2725109e3c2cb0))
## [0.2.18](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.18) (2020-07-29)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.17](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.17) (2020-07-28)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.16](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.16) (2020-07-28)
### Bug Fixes
* ActionTarget ([a72cd25](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/a72cd2583e46288887c00e4131873011b5a5db65))
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.15](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.13...ms/0.2.15) (2020-07-28)
### Features
* Add isKey property for the Property object ([69260ae](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/commit/69260ae85b68b414cdcc31b4c9a849512e919d20))
## [0.2.14](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.12...ms/0.2.14) (2020-07-28)
**Note:** Version bump only for package @sap-ux/vocabularies-types
## [0.2.13](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.12...ms/0.2.13) (2020-07-15)
**Note:** Version bump only for package @sap-ux/vocabularies-types
## [0.2.12](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.11...ms/0.2.12) (2020-07-13)
### Features
* add typings for the If expressions ([ac3f723](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/ac3f7234b887e7d2f01f309f9deadc15b2ded65d))
## [0.2.11](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.9...ms/0.2.11) (2020-07-03)
### Features
* parser update to better support v2 services ([#19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/issues/19)) ([c37ff34](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/c37ff3476bda838b175bc520e22b0c8211ef782a))
## [0.2.10](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.9...ms/0.2.10) (2020-06-29)
### Features
* parser update to better support v2 services ([#19](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/issues/19)) ([c37ff34](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/c37ff3476bda838b175bc520e22b0c8211ef782a))
## [0.2.9](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.7...ms/0.2.9) (2020-06-22)
### Features
* slight parser api change ([2c0b368](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/2c0b3680e3d2fdc6848014490f5f73786851831b))
## [0.2.8](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies-tools/compare/ms/0.2.7...ms/0.2.8) (2020-06-22)
**Note:** Version bump only for package @sap-ux/vocabularies-types
## [0.2.7](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.6...ms/0.2.7) (2020-06-16)
### Features
* enable annotation converter for annotation-api usecase ([a5f4ca1](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/commit/a5f4ca105700c2561ad36284c622de8e3a44a57d))
## [0.2.6](https://github.wdf.sap.corp/ux-engineering/annotations-vocabularies/compare/ms/0.2.5...ms/0.2.6) (2020-06-08)

@@ -8,0 +245,0 @@

@@ -9,2 +9,3 @@ export declare type SimpleIdentifier = string;

export declare type Apply = any;
export declare type If = any;
export declare type StringExpression = GenericExpression<"String", string>;

@@ -20,9 +21,10 @@ export declare type BoolExpression = GenericExpression<"Bool", boolean>;

export declare type EnumMemberExpression = GenericExpression<"EnumMember", string>;
export declare type CollectionExpression = GenericExpression<"Collection", any[]>;
export declare type CollectionExpression = GenericExpression<"Collection", Collection>;
export declare type RecordExpression = GenericExpression<"Record", AnnotationRecord>;
export declare type ApplyExpression = GenericExpression<"Apply", Apply>;
export declare type IfExpression = GenericExpression<"If", If>;
export declare type UnknownExpression = {
type: "Unknown";
};
export declare type Expression = UnknownExpression | StringExpression | BoolExpression | DecimalExpression | IntExpression | DateExpression | PathExpression | PropertyPathExpression | AnnotationPathExpression | NavigationPropertyPathExpression | EnumMemberExpression | CollectionExpression | RecordExpression | ApplyExpression;
export declare type Expression = UnknownExpression | StringExpression | BoolExpression | DecimalExpression | IntExpression | DateExpression | PathExpression | PropertyPathExpression | AnnotationPathExpression | NavigationPropertyPathExpression | EnumMemberExpression | CollectionExpression | RecordExpression | ApplyExpression | IfExpression;
export declare type Collection = AnnotationRecord[] | string[] | PropertyPathExpression[] | PathExpression[] | NavigationPropertyPathExpression[] | AnnotationPathExpression[];

@@ -29,0 +31,0 @@ export declare type AnnotationList = {

@@ -1,3 +0,3 @@

import { Property as ParserProperty, V2NavigationProperty as ParserV2NavigationProperty, V4NavigationProperty as ParserV4NavigationProperty, EntityType as ParserEntityType, EntitySet as ParserEntitySet, Action as ParserAction, Reference } from "./Parser";
import { Annotation as EdmAnnotation, AnnotationList } from "./BaseEdm";
import { Property as ParserProperty, EntityType as ParserEntityType, EntitySet as ParserEntitySet, Action as ParserAction, ComplexType as ParserComplexType, Reference, ReferentialConstraint } from "./Parser";
import { Annotation as EdmAnnotation, AnnotationList, FullyQualifiedName, SimpleIdentifier } from "./BaseEdm";
import { ActionAnnotations, ActionImportAnnotations, AnnotationAnnotations, ComplexTypeAnnotations, EntityContainerAnnotations, EntitySetAnnotations, EntityTypeAnnotations, EnumTypeAnnotations, FunctionAnnotations, FunctionImportAnnotations, IncludeAnnotations, NavigationPropertyAnnotations, ParameterAnnotations, PropertyAnnotations, ReferenceAnnotations, ReturnTypeAnnotations, SchemaAnnotations, SingletonAnnotations, TermAnnotations, TypeDefinitionAnnotations, PropertyValueAnnotations, RecordAnnotations } from "./generated/Edm_Types";

@@ -7,11 +7,19 @@ export declare type AnyAnnotation = EnumTypeAnnotations | PropertyValueAnnotations | IncludeAnnotations | ReferenceAnnotations | ActionAnnotations | FunctionImportAnnotations | ActionImportAnnotations | TypeDefinitionAnnotations | SingletonAnnotations | EntityContainerAnnotations | FunctionAnnotations | ReturnTypeAnnotations | ParameterAnnotations | ComplexTypeAnnotations | TermAnnotations | RecordAnnotations | SchemaAnnotations | AnnotationAnnotations | EntitySetAnnotations | EntityTypeAnnotations | PropertyAnnotations | NavigationPropertyAnnotations;

annotations: PropertyAnnotations;
targetType?: ComplexType;
isKey: boolean;
};
export declare type V2NavigationProperty = ParserV2NavigationProperty & {
targetType: EntityType;
annotations: NavigationPropertyAnnotations;
export declare type ComplexType = ParserComplexType & {
annotations: ComplexTypeAnnotations;
};
export declare type V4NavigationProperty = ParserV4NavigationProperty & {
export declare type NavigationProperty = {
_type: "NavigationProperty";
name: SimpleIdentifier;
partner: string;
fullyQualifiedName: FullyQualifiedName;
targetTypeName: FullyQualifiedName;
targetType: EntityType;
annotations: NavigationPropertyAnnotations;
isCollection: boolean;
containsTarget: boolean;
referentialConstraint?: ReferentialConstraint[];
};

@@ -22,6 +30,6 @@ export declare type EntityType = ParserEntityType & {

keys: Property[];
navigationProperties: (V2NavigationProperty | V4NavigationProperty)[];
navigationProperties: NavigationProperty[];
actions: Record<string, Action>;
annotations: EntityTypeAnnotations;
resolvePath(relativePath: string): any;
resolvePath(relativePath: string, includeVisitedObjects?: boolean): any;
};

@@ -55,2 +63,3 @@ export declare type EntitySet = ParserEntitySet & {

actions: Action[];
complexTypes: ComplexType[];
entitySets: EntitySet[];

@@ -57,0 +66,0 @@ entityTypes: EntityType[];

@@ -1,3 +0,3 @@

import { EntityType as _EntityType, Action as _Action, Property, V2NavigationProperty, V4NavigationProperty } from "./Converter";
import { RecordAnnotations, TermAnnotations } from "./generated/Edm_Types";
import { EntityType as _EntityType, Action as _Action, Property, NavigationProperty } from "./Converter";
import { RecordAnnotations, TermAnnotations, AnnotationAnnotations } from "./generated/Edm_Types";
export declare type PropertyPath = {

@@ -12,3 +12,3 @@ fullyQualifiedName: string;

value: string;
$target: V2NavigationProperty | V4NavigationProperty;
$target: NavigationProperty;
};

@@ -20,8 +20,9 @@ export declare type AnnotationPath<P> = {

};
export declare type AnnotationTerm<P> = P & {
declare type PrimitiveTypeCast<P, G> = (P extends boolean ? boolean | (BooleanConstructor & G) : never) | (P extends number ? number | (NumberConstructor & G) : never) | (P extends string ? string | (StringConstructor & G) : never) | (P & G);
export declare type AnnotationTerm<P> = PrimitiveTypeCast<P, {
fullyQualifiedName: string;
term: string;
qualifier: string;
annotations?: TermAnnotations;
};
annotations?: TermAnnotations & AnnotationAnnotations;
}>;
export declare type PathAnnotationExpression<P> = {

@@ -38,3 +39,41 @@ type: "Path";

};
export declare type PropertyAnnotationValue<P> = P | PathAnnotationExpression<P> | ApplyAnnotationExpression<P>;
export declare type EqConditionalExpression = {
$Eq: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export declare type NeConditionalExpression = {
$Ne: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export declare type GtConditionalExpression = {
$Gt: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export declare type GeConditionalExpression = {
$Ge: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export declare type LtConditionalExpression = {
$Lt: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export declare type LeConditionalExpression = {
$Le: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export declare type AndConditionalExpression = {
$And: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export declare type OrConditionalExpression = {
$Or: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export declare type NotConditionalExpression = {
$Not: [ConditionalCheckOrValue];
};
export declare type PathConditionExpression<T> = {
$Path: string;
};
export declare type ConditionalCheck = OrConditionalExpression | AndConditionalExpression | NotConditionalExpression | EqConditionalExpression | NeConditionalExpression | GtConditionalExpression | GeConditionalExpression | LtConditionalExpression | LeConditionalExpression;
export declare type ConditionalCheckOrValue = null | string | number | boolean | ConditionalCheck | PathConditionExpression<string | number | boolean>;
export declare type IfAnnotationExpressionValue<OutType> = [ConditionalCheck, OutType, OutType];
export declare type IfAnnotationExpression<P> = {
type: "If";
If: IfAnnotationExpressionValue<P>;
getValue(): P;
};
export declare type PropertyAnnotationValue<P> = P | PathAnnotationExpression<P> | ApplyAnnotationExpression<P> | IfAnnotationExpression<P>;
export declare type String = string;

@@ -57,5 +96,3 @@ export declare type InstancePath = string;

export declare type PrimitiveType = Binary | Boolean | Byte | Date | DateTimeOffset | Decimal | Double | Duration | Guid | Int16 | Int32 | Int64 | String | GeographyPoint;
export declare type EnumValue<P> = {
EnumMember: P;
};
export declare type EnumValue<P> = P;
export declare type ComplexType = {

@@ -66,1 +103,2 @@ annotations?: RecordAnnotations;

export declare type Action = _Action;
export {};

@@ -58,11 +58,11 @@ import * as Core from "./Core";

*/
export declare type Groupable = PropertyAnnotationValue<Core.Tag>;
export declare type Groupable = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
This property can be used in the aggregate transformation
*/
export declare type Aggregatable = PropertyAnnotationValue<Core.Tag>;
export declare type Aggregatable = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Dynamic property that can be used in the aggregate transformation
*/
export declare type CustomAggregate = AnnotationTerm<Edm.String>;
export declare type CustomAggregate = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -69,0 +69,0 @@ The annotated property or custom aggregate is only well-defined in the context of these properties

@@ -10,11 +10,11 @@ import * as Core from "./Core";

*/
export declare type Dimension = PropertyAnnotationValue<Core.Tag>;
export declare type Dimension = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
A property holding the numeric value of a measure in an analytical context
*/
export declare type Measure = PropertyAnnotationValue<Core.Tag>;
export declare type Measure = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
The measure has non-negative and additive values; it can be used in whole-part charts, e.g. the Donut
*/
export declare type AccumulativeMeasure = PropertyAnnotationValue<Core.Tag>;
export declare type AccumulativeMeasure = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -30,3 +30,3 @@ Number of properties in the entity instance that have been aggregated away

*/
export declare type DrillURL = AnnotationTerm<Edm.String>;
export declare type DrillURL = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -36,3 +36,3 @@ Processes or generates plan data. Its logic may have side-effects on entity sets.

*/
export declare type PlanningAction = PropertyAnnotationValue<Core.Tag>;
export declare type PlanningAction = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -39,0 +39,0 @@ Dynamic properties for aggregate expressions with specified aggregation method defined on the annotated entity type.

@@ -38,19 +38,19 @@ import * as Auth from "./Auth";

*/
export declare type SupportedFormats = AnnotationTerm<Edm.String[]>;
export declare type SupportedFormats = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;
/**
Media types of supported formats for $metadata, including format parameters
*/
export declare type SupportedMetadataFormats = AnnotationTerm<Edm.String[]>;
export declare type SupportedMetadataFormats = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;
/**
List of acceptable compression methods for ($batch) requests, e.g. gzip
*/
export declare type AcceptableEncodings = AnnotationTerm<Edm.String[]>;
export declare type AcceptableEncodings = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;
/**
Service supports the asynchronous request preference
*/
export declare type AsynchronousRequestsSupported = PropertyAnnotationValue<Core.Tag>;
export declare type AsynchronousRequestsSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Service supports the continue on error preference. Supports $batch requests. Services that apply the BatchContinueOnErrorSupported term should also specify the ContinueOnErrorSupported property from the BatchSupport term.
*/
export declare type BatchContinueOnErrorSupported = PropertyAnnotationValue<Core.Tag>;
export declare type BatchContinueOnErrorSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -72,3 +72,3 @@ Supported odata.isolation levels

*/
export declare type CrossJoinSupported = PropertyAnnotationValue<Core.Tag>;
export declare type CrossJoinSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -253,15 +253,15 @@ Supports callbacks for the specified protocols

*/
export declare type IndexableByKey = PropertyAnnotationValue<Core.Tag>;
export declare type IndexableByKey = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Supports $top
*/
export declare type TopSupported = PropertyAnnotationValue<Core.Tag>;
export declare type TopSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Supports $skip
*/
export declare type SkipSupported = PropertyAnnotationValue<Core.Tag>;
export declare type SkipSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Supports $compute
*/
export declare type ComputeSupported = PropertyAnnotationValue<Core.Tag>;
export declare type ComputeSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -317,3 +317,3 @@ Support for $select and nested query options within $select

*/
export declare type BatchSupported = PropertyAnnotationValue<Core.Tag>;
export declare type BatchSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -357,3 +357,3 @@ Batch Support for the service

*/
export declare type FilterFunctions = AnnotationTerm<Edm.String[]>;
export declare type FilterFunctions = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;
/**

@@ -514,7 +514,7 @@ Restrictions on filter expressions

*/
export declare type KeyAsSegmentSupported = PropertyAnnotationValue<Core.Tag>;
export declare type KeyAsSegmentSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Supports [passing query options in the request body](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_PassingQueryOptionsintheRequestBody)
*/
export declare type QuerySegmentSupported = PropertyAnnotationValue<Core.Tag>;
export declare type QuerySegmentSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -806,3 +806,3 @@ Restrictions on insert operations

*/
export declare type AnnotationValuesInQuerySupported = PropertyAnnotationValue<Core.Tag>;
export declare type AnnotationValuesInQuerySupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -920,3 +920,3 @@ Support for query options with modification requests (insert, update, action invocation)

*/
export declare type MediaLocationUpdateSupported = PropertyAnnotationValue<Core.Tag>;
export declare type MediaLocationUpdateSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
export declare const enum CapabilitiesAnnotationTerms {

@@ -923,0 +923,0 @@ ConformanceLevel = "Org.OData.Capabilities.V1.ConformanceLevel",

@@ -125,2 +125,4 @@ import * as com_sap_vocabularies_Common_v1 from "./Common";

"IsUpperCase"?: com_sap_vocabularies_Common_v1.IsUpperCase;
"IsCurrency"?: com_sap_vocabularies_Common_v1.IsCurrency;
"IsUnit"?: com_sap_vocabularies_Common_v1.IsUnit;
"UnitSpecificScale"?: com_sap_vocabularies_Common_v1.UnitSpecificScale;

@@ -240,2 +242,4 @@ "UnitSpecificPrecision"?: com_sap_vocabularies_Common_v1.UnitSpecificPrecision;

"IsUpperCase"?: com_sap_vocabularies_Common_v1.IsUpperCase;
"IsCurrency"?: com_sap_vocabularies_Common_v1.IsCurrency;
"IsUnit"?: com_sap_vocabularies_Common_v1.IsUnit;
"MinOccurs"?: com_sap_vocabularies_Common_v1.MinOccurs;

@@ -242,0 +246,0 @@ "MaxOccurs"?: com_sap_vocabularies_Common_v1.MaxOccurs;

@@ -10,3 +10,3 @@ import * as Core from "./Core";

*/
export declare type Experimental = AnnotationTerm<Edm.String>;
export declare type Experimental = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -23,15 +23,15 @@ 1 for first version of a service, incremented when schema changes incompatibly and service is published with a different URI

*/
export declare type Label = AnnotationTerm<Edm.String>;
export declare type Label = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
A short, human-readable text suitable for column headings in UIs
*/
export declare type Heading = AnnotationTerm<Edm.String>;
export declare type Heading = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
A short, human-readable text suitable for tool tips in UIs
*/
export declare type QuickInfo = AnnotationTerm<Edm.String>;
export declare type QuickInfo = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
A descriptive text for values of the annotated property. Value MUST be a dynamic expression when used as metadata annotation.
*/
export declare type Text = AnnotationTerm<Edm.String>;
export declare type Text = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -44,3 +44,3 @@ The annotated property contains a descriptive text for values of the referenced property.

*/
export declare type IsLanguageIdentifier = PropertyAnnotationValue<Core.Tag>;
export declare type IsLanguageIdentifier = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -69,8 +69,16 @@ Human-readable text that may contain formatting information

*/
export declare type IsDigitSequence = PropertyAnnotationValue<Core.Tag>;
export declare type IsDigitSequence = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Contains just uppercase characters
*/
export declare type IsUpperCase = PropertyAnnotationValue<Core.Tag>;
export declare type IsUpperCase = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Annotated property or parameter is a currency code
*/
export declare type IsCurrency = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Annotated property or parameter is a unit of measure
*/
export declare type IsUnit = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
The number of fractional decimal digits of a currency amount or measured quantity

@@ -106,15 +114,15 @@ */

*/
export declare type Masked = PropertyAnnotationValue<Core.Tag>;
export declare type Masked = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Property contains sensitive data that is by default not transferred
*/
export declare type MaskedValue = AnnotationTerm<Edm.String>;
export declare type MaskedValue = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Property contains sensitive data that is by default not transferred
*/
export declare type MaskedAlways = PropertyAnnotationValue<Core.Tag>;
export declare type MaskedAlways = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Name of the Semantic Object represented as this entity type or identified by this property
*/
export declare type SemanticObject = AnnotationTerm<Edm.String>;
export declare type SemanticObject = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -141,7 +149,7 @@ Maps properties of the annotated entity type or sibling properties of the annotated property to properties of the Semantic Object

*/
export declare type SemanticObjectUnavailableActions = AnnotationTerm<Edm.String[]>;
export declare type SemanticObjectUnavailableActions = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;
/**
Term can also be used as instance annotation; AppliesTo of this term specifies where it can be applied
*/
export declare type IsInstanceAnnotation = PropertyAnnotationValue<Core.Tag>;
export declare type IsInstanceAnnotation = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -228,3 +236,3 @@ These properties only allow a subset of expressions

*/
export declare type ExceptionCategory = AnnotationTerm<Edm.String>;
export declare type ExceptionCategory = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -260,3 +268,3 @@ ...

*/
export declare type TransactionId = AnnotationTerm<Edm.String>;
export declare type TransactionId = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -288,15 +296,15 @@ Hints for resolving this error

*/
export declare type additionalTargets = AnnotationTerm<Edm.String[]>;
export declare type additionalTargets = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;
/**
Location of the message long text
*/
export declare type longtextUrl = AnnotationTerm<Edm.String>;
export declare type longtextUrl = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Classifies an end-user message as info, success, warning, or error
*/
export declare type numericSeverity = PropertyAnnotationValue<NumericMessageSeverityType>;
export declare type numericSeverity = AnnotationTerm<PropertyAnnotationValue<NumericMessageSeverityType>>;
/**
The maximum severity of all end-user messages attached to an entity, null if no messages are attached
*/
export declare type MaximumNumericMessageSeverity = PropertyAnnotationValue<NumericMessageSeverityType>;
export declare type MaximumNumericMessageSeverity = AnnotationTerm<PropertyAnnotationValue<NumericMessageSeverityType>>;
/**

@@ -346,3 +354,3 @@ Classifies an end-user message as info, success, warning, or error

*/
export declare type ResultContext = PropertyAnnotationValue<Core.Tag>;
export declare type ResultContext = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -381,3 +389,3 @@ A referential constraint to a reference set that is not reachable via a navigation property

*/
export declare type IsNaturalPerson = PropertyAnnotationValue<Core.Tag>;
export declare type IsNaturalPerson = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -429,11 +437,11 @@ Specifies how to get a list of acceptable values for a property or parameter

*/
export declare type ValueListRelevantQualifiers = PropertyAnnotationValue<SimpleIdentifier[]>;
export declare type ValueListRelevantQualifiers = AnnotationTerm<PropertyAnnotationValue<SimpleIdentifier[]>>;
/**
If specified as true, there's only one value list mapping and its value list consists of a small number of fixed values
*/
export declare type ValueListWithFixedValues = PropertyAnnotationValue<Core.Tag>;
export declare type ValueListWithFixedValues = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
A list of URLs of CSDL documents containing value list mappings for this parameter or property
*/
export declare type ValueListReferences = AnnotationTerm<Edm.String[]>;
export declare type ValueListReferences = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;
/**

@@ -489,3 +497,3 @@ Specifies the mapping between data service properties and value list properties

*/
Constant: PropertyAnnotationValue<Edm.String>;
Constant: PropertyAnnotationValue<Edm.PrimitiveType>;
};

@@ -523,3 +531,3 @@ export declare type ValueListParameterInOut = ComplexType & Omit<ValueListParameter, "$Type"> & {

*/
export declare type IsCalendarYear = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarYear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -530,3 +538,3 @@ Property encodes a halfyear number as string following the logical pattern H consisting of a single digit.

*/
export declare type IsCalendarHalfyear = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarHalfyear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -537,3 +545,3 @@ Property encodes a calendar quarter number as string following the logical pattern Q consisting of a single digit.

*/
export declare type IsCalendarQuarter = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarQuarter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -544,3 +552,3 @@ Property encodes a calendar month number as string following the logical pattern MM consisting of two digits.

*/
export declare type IsCalendarMonth = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarMonth = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -551,3 +559,3 @@ Property encodes a calendar week number as string following the logical pattern WW consisting of two digits.

*/
export declare type IsCalendarWeek = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarWeek = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -557,3 +565,3 @@ Day number relative to a calendar month. Valid values are between 1 and 31.

*/
export declare type IsDayOfCalendarMonth = PropertyAnnotationValue<Core.Tag>;
export declare type IsDayOfCalendarMonth = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -563,3 +571,3 @@ Day number relative to a calendar year. Valid values are between 1 and 366.

*/
export declare type IsDayOfCalendarYear = PropertyAnnotationValue<Core.Tag>;
export declare type IsDayOfCalendarYear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -571,3 +579,3 @@ Property encodes a calendar year and halfyear as string following the logical pattern (-?)YYYY(Y*)H consisting

*/
export declare type IsCalendarYearHalfyear = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarYearHalfyear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -579,3 +587,3 @@ Property encodes a calendar year and quarter as string following the logical pattern (-?)YYYY(Y*)Q consisting

*/
export declare type IsCalendarYearQuarter = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarYearQuarter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -588,3 +596,3 @@ Property encodes a calendar year and month as string following the logical pattern (-?)YYYY(Y*)MM consisting

*/
export declare type IsCalendarYearMonth = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarYearMonth = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -596,3 +604,3 @@ Property encodes a calendar year and week as string following the logical pattern (-?)YYYY(Y*)WW consisting

*/
export declare type IsCalendarYearWeek = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarYearWeek = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -608,3 +616,3 @@ Property encodes a calendar date: year, month and day as string following the logical pattern (-?)YYYY(Y*)MMDD consisting

*/
export declare type IsCalendarDate = PropertyAnnotationValue<Core.Tag>;
export declare type IsCalendarDate = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -615,3 +623,3 @@ Property encodes a fiscal year number as string following the logical pattern YYYY(Y*) consisting of at least four digits.

*/
export declare type IsFiscalYear = PropertyAnnotationValue<Core.Tag>;
export declare type IsFiscalYear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -622,3 +630,3 @@ Property encodes a fiscal period as string following the logical pattern PPP consisting of three digits.

*/
export declare type IsFiscalPeriod = PropertyAnnotationValue<Core.Tag>;
export declare type IsFiscalPeriod = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -630,3 +638,3 @@ Property encodes a fiscal year and period as string following the logical pattern YYYY(Y*)PPP consisting

*/
export declare type IsFiscalYearPeriod = PropertyAnnotationValue<Core.Tag>;
export declare type IsFiscalYearPeriod = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -636,3 +644,3 @@ Property encodes a fiscal quarter number as string following the logical pattern Q consisting of a single digit.

*/
export declare type IsFiscalQuarter = PropertyAnnotationValue<Core.Tag>;
export declare type IsFiscalQuarter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -643,3 +651,3 @@ Property encodes a fiscal year and quarter as string following the logical pattern (-?)YYYY(Y*)Q consisting of

*/
export declare type IsFiscalYearQuarter = PropertyAnnotationValue<Core.Tag>;
export declare type IsFiscalYearQuarter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -649,3 +657,3 @@ Property encodes a fiscal week number as string following the logical pattern WW consisting of two digits.

*/
export declare type IsFiscalWeek = PropertyAnnotationValue<Core.Tag>;
export declare type IsFiscalWeek = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -656,15 +664,15 @@ Property encodes a fiscal year and week as string following the logical pattern (-?)YYYY(Y*)WW consisting of an

*/
export declare type IsFiscalYearWeek = PropertyAnnotationValue<Core.Tag>;
export declare type IsFiscalYearWeek = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Day number relative to a fiscal year. Valid values are between 1 and 371.
*/
export declare type IsDayOfFiscalYear = PropertyAnnotationValue<Core.Tag>;
export declare type IsDayOfFiscalYear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Property encodes a fiscal year variant
*/
export declare type IsFiscalYearVariant = PropertyAnnotationValue<Core.Tag>;
export declare type IsFiscalYearVariant = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Only one term of the group identified with the Qualifier attribute can be applied
*/
export declare type MutuallyExclusiveTerm = PropertyAnnotationValue<Core.Tag>;
export declare type MutuallyExclusiveTerm = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -692,2 +700,6 @@ Root entities of business documents that support the draft pattern

NewAction?: QualifiedName;
/**
Additional actions that create a new draft
*/
AdditionalNewActions: QualifiedName[];
};

@@ -712,3 +724,3 @@ /**

*/
export declare type DraftActivationVia = PropertyAnnotationValue<SimpleIdentifier[]>;
export declare type DraftActivationVia = AnnotationTerm<PropertyAnnotationValue<SimpleIdentifier[]>>;
/**

@@ -727,2 +739,6 @@ The annotated property is an editable field for the referenced key property

/**
The qualified name of an action with an optional overload
*/
export declare type ActionOverload = Edm.String;
/**
The listed properties form the semantic key, i.e. they are unique modulo IsActiveEntity

@@ -741,3 +757,3 @@ */

/**
Changes to the values of one or more of these properties may affect the targets
Changes to the values of one or more of these structural properties may affect the targets
*/

@@ -750,5 +766,5 @@ SourceProperties: PropertyAnnotationValue<Edm.PropertyPath[]>;

/**
These properties may be affected if the value of one of the sources changes
These structural properties may be affected if the value of one of the sources changes
*/
TargetProperties: PropertyAnnotationValue<Edm.PropertyPath[]>;
TargetProperties: PropertyAnnotationValue<Edm.String[]>;
/**

@@ -801,7 +817,7 @@ These entities will be affected if the value of one of the sources changes. All affected entities need to be explicitly listed. An empty path means the annotation target.

*/
export declare type DefaultValuesFunction = PropertyAnnotationValue<QualifiedName>;
export declare type DefaultValuesFunction = AnnotationTerm<PropertyAnnotationValue<QualifiedName>>;
/**
Function import to derive a default value for the property from a given context.
*/
export declare type DerivedDefaultValue = AnnotationTerm<Edm.String>;
export declare type DerivedDefaultValue = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -818,3 +834,3 @@ A default value for the property to be used in filter expressions.

*/
export declare type DerivedFilterDefaultValue = AnnotationTerm<Edm.String>;
export declare type DerivedFilterDefaultValue = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -869,3 +885,3 @@ List of sort criteria

*/
export declare type CreatedBy = PropertyAnnotationValue<UserID>;
export declare type CreatedBy = AnnotationTerm<PropertyAnnotationValue<UserID>>;
/**

@@ -878,3 +894,3 @@ Last modification timestamp

*/
export declare type ChangedBy = PropertyAnnotationValue<UserID>;
export declare type ChangedBy = AnnotationTerm<PropertyAnnotationValue<UserID>>;
/**

@@ -887,7 +903,7 @@ User ID

*/
export declare type OriginalProtocolVersion = AnnotationTerm<Edm.String>;
export declare type OriginalProtocolVersion = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Sorting and filtering of amounts in multiple currencies needs special consideration
*/
export declare type ApplyMultiUnitBehaviorForSortingAndFiltering = PropertyAnnotationValue<Core.Tag>;
export declare type ApplyMultiUnitBehaviorForSortingAndFiltering = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
export declare const enum CommonAnnotationTerms {

@@ -906,2 +922,4 @@ Experimental = "com.sap.vocabularies.Common.v1.Experimental",

IsUpperCase = "com.sap.vocabularies.Common.v1.IsUpperCase",
IsCurrency = "com.sap.vocabularies.Common.v1.IsCurrency",
IsUnit = "com.sap.vocabularies.Common.v1.IsUnit",
UnitSpecificScale = "com.sap.vocabularies.Common.v1.UnitSpecificScale",

@@ -908,0 +926,0 @@ UnitSpecificPrecision = "com.sap.vocabularies.Common.v1.UnitSpecificPrecision",

@@ -351,7 +351,7 @@ import * as Core from "./Core";

*/
export declare type IsEmailAddress = PropertyAnnotationValue<Core.Tag>;
export declare type IsEmailAddress = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Property contains a phone number
*/
export declare type IsPhoneNumber = PropertyAnnotationValue<Core.Tag>;
export declare type IsPhoneNumber = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -358,0 +358,0 @@ Calendar entry

@@ -16,2 +16,3 @@ import * as Org_OData_Core_V1 from "./Core";

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -31,2 +32,3 @@ export interface SchemaAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -45,2 +47,3 @@ export interface ReferenceAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -63,2 +66,3 @@ export interface EntityTypeAnnotations_Core {

"AlternateKeys"?: Org_OData_Core_V1.AlternateKeys;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -76,2 +80,3 @@ export interface EnumTypeAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -92,2 +97,3 @@ export interface ComplexTypeAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -114,2 +120,3 @@ export interface PropertyAnnotations_Core {

"IsMediaType"?: Org_OData_Core_V1.IsMediaType;
"ContentDisposition"?: Org_OData_Core_V1.ContentDisposition;
"AutoExpand"?: Org_OData_Core_V1.AutoExpand;

@@ -119,2 +126,3 @@ "MayImplement"?: Org_OData_Core_V1.MayImplement;

"PositionalInsert"?: Org_OData_Core_V1.PositionalInsert;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -139,2 +147,3 @@ export interface NavigationPropertyAnnotations_Core {

"AlternateKeys"?: Org_OData_Core_V1.AlternateKeys;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -154,2 +163,3 @@ export interface TypeDefinitionAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -173,4 +183,6 @@ export interface TermAnnotations_Core {

"IsMediaType"?: Org_OData_Core_V1.IsMediaType;
"ContentDisposition"?: Org_OData_Core_V1.ContentDisposition;
"MayImplement"?: Org_OData_Core_V1.MayImplement;
"Ordered"?: Org_OData_Core_V1.Ordered;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -190,2 +202,3 @@ export interface ParameterAnnotations_Core {

"OptionalParameter"?: Org_OData_Core_V1.OptionalParameter;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -205,2 +218,3 @@ export interface ReturnTypeAnnotations_Core {

"Ordered"?: Org_OData_Core_V1.Ordered;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -224,2 +238,3 @@ export interface EntitySetAnnotations_Core {

"AlternateKeys"?: Org_OData_Core_V1.AlternateKeys;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -238,2 +253,3 @@ export interface SingletonAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -252,2 +268,3 @@ export interface ActionImportAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -266,2 +283,3 @@ export interface FunctionImportAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -281,2 +299,3 @@ export interface ActionAnnotations_Core {

"OperationAvailable"?: Org_OData_Core_V1.OperationAvailable;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -296,2 +315,3 @@ export interface FunctionAnnotations_Core {

"OperationAvailable"?: Org_OData_Core_V1.OperationAvailable;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -310,2 +330,3 @@ export interface IncludeAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -323,2 +344,3 @@ export interface AnnotationAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -336,2 +358,3 @@ export interface CollectionAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -349,2 +372,3 @@ export interface RecordAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -362,2 +386,3 @@ export interface PropertyValueAnnotations_Core {

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -9,7 +9,7 @@ import * as Edm from "../Edm";

*/
export declare type ODataVersions = AnnotationTerm<Edm.String>;
export declare type ODataVersions = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Service-defined value representing the version of the schema. Services MAY use semantic versioning, but clients MUST NOT assume this is the case.
*/
export declare type SchemaVersion = AnnotationTerm<Edm.String>;
export declare type SchemaVersion = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -60,7 +60,7 @@ List of revisions of a model element

*/
export declare type Description = AnnotationTerm<Edm.String>;
export declare type Description = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
A lengthy description of a model element
*/
export declare type LongDescription = AnnotationTerm<Edm.String>;
export declare type LongDescription = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -249,3 +249,3 @@ Link to related information

*/
export declare type IsLanguageDependent = PropertyAnnotationValue<Tag>;
export declare type IsLanguageDependent = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**

@@ -258,15 +258,15 @@ This is the type to use for all tagging terms

*/
export declare type RequiresType = AnnotationTerm<Edm.String>;
export declare type RequiresType = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Resource path for entity container child, can be relative to xml:base and the request URL
*/
export declare type ResourcePath = AnnotationTerm<Edm.String>;
export declare type ResourcePath = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Entity-ids are URLs that locate the identified entity
*/
export declare type DereferenceableIDs = PropertyAnnotationValue<Tag>;
export declare type DereferenceableIDs = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
Entity-ids follow OData URL conventions
*/
export declare type ConventionalIDs = PropertyAnnotationValue<Tag>;
export declare type ConventionalIDs = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**

@@ -316,36 +316,47 @@ Permissions for accessing a resource

*/
export declare type ContentID = AnnotationTerm<Edm.String>;
export declare type ContentID = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Functions, actions and types in this namespace can be referenced in URLs with or without namespace- or alias- qualification.
*/
export declare type DefaultNamespace = PropertyAnnotationValue<Tag>;
export declare type DefaultNamespace = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
A value for this non-key property can be provided by the client on insert and remains unchanged on update
*/
export declare type Immutable = PropertyAnnotationValue<Tag>;
export declare type Immutable = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
A value for this property is generated on both insert and update
*/
export declare type Computed = PropertyAnnotationValue<Tag>;
export declare type Computed = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
A value for this property can be provided by the client on insert and update. If no value is provided on insert, a non-static default value is generated
*/
export declare type ComputedDefaultValue = PropertyAnnotationValue<Tag>;
export declare type ComputedDefaultValue = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
Properties and terms annotated with this term MUST contain a valid URL
*/
export declare type IsURL = PropertyAnnotationValue<Tag>;
export declare type IsURL = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
Lists the MIME types acceptable for the annotated entity type marked with HasStream="true" or the annotated binary, stream, or string property or term
*/
export declare type AcceptableMediaTypes = AnnotationTerm<Edm.String[]>;
export declare type AcceptableMediaTypes = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;
/**
The media type of the values of a binary or string property or term
*/
export declare type MediaType = AnnotationTerm<Edm.String>;
export declare type MediaType = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Properties and terms annotated with this term MUST contain a valid MIME type
*/
export declare type IsMediaType = PropertyAnnotationValue<Tag>;
export declare type IsMediaType = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
The content disposition of a binary or string property or term
*/
export declare type ContentDisposition = AnnotationTerm<ContentDispositionTypeTypes>;
export declare type ContentDispositionType = ComplexType & {
$Type: CoreAnnotationTypes.ContentDispositionType;
/**
The proposed filename for downloading the binary or stream value
*/
Filename?: PropertyAnnotationValue<Edm.String>;
};
/**
Data modification requires the use of ETags. A non-empty collection contains the set of properties that are used to compute the ETag. An empty collection means that the service won't tell how it computes the ETag.

@@ -357,15 +368,15 @@ */

*/
export declare type AdditionalProperties = PropertyAnnotationValue<Tag>;
export declare type AdditionalProperties = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
The service will automatically expand this stream or navigation property even if not requested with $expand
*/
export declare type AutoExpand = PropertyAnnotationValue<Tag>;
export declare type AutoExpand = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
The service will automatically expand this navigation property as entity references even if not requested with $expand=.../$ref
*/
export declare type AutoExpandReferences = PropertyAnnotationValue<Tag>;
export declare type AutoExpandReferences = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
A collection of qualified type names outside of the type hierarchy that instances of this type might be addressable as by using a type-cast segment.
*/
export declare type MayImplement = PropertyAnnotationValue<QualifiedTypeName[]>;
export declare type MayImplement = AnnotationTerm<PropertyAnnotationValue<QualifiedTypeName[]>>;
/**

@@ -382,7 +393,7 @@ The qualified name of a term in scope.

*/
export declare type Ordered = PropertyAnnotationValue<Tag>;
export declare type Ordered = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**
Items can be inserted at a given ordinal index.
*/
export declare type PositionalInsert = PropertyAnnotationValue<Tag>;
export declare type PositionalInsert = AnnotationTerm<PropertyAnnotationValue<Tag>>;
/**

@@ -435,2 +446,10 @@ Communicates available alternate keys

export declare type LocalDateTime = Edm.String;
/**
A symbolic name for a model element
*/
export declare type SymbolicName = AnnotationTerm<PropertyAnnotationValue<SimpleIdentifier>>;
/**
A [simple identifier](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_SimpleIdentifier)
*/
export declare type SimpleIdentifier = Edm.String;
export declare const enum CoreAnnotationTerms {

@@ -463,2 +482,3 @@ ODataVersions = "Org.OData.Core.V1.ODataVersions",

IsMediaType = "Org.OData.Core.V1.IsMediaType",
ContentDisposition = "Org.OData.Core.V1.ContentDisposition",
OptimisticConcurrency = "Org.OData.Core.V1.OptimisticConcurrency",

@@ -473,3 +493,4 @@ AdditionalProperties = "Org.OData.Core.V1.AdditionalProperties",

OptionalParameter = "Org.OData.Core.V1.OptionalParameter",
OperationAvailable = "Org.OData.Core.V1.OperationAvailable"
OperationAvailable = "Org.OData.Core.V1.OperationAvailable",
SymbolicName = "Org.OData.Core.V1.SymbolicName"
}

@@ -489,2 +510,3 @@ export declare const enum CoreAnnotationTypes {

DataModificationExceptionType = "Org.OData.Core.V1.DataModificationExceptionType",
ContentDispositionType = "Org.OData.Core.V1.ContentDispositionType",
AlternateKey = "Org.OData.Core.V1.AlternateKey",

@@ -507,2 +529,3 @@ PropertyRef = "Org.OData.Core.V1.PropertyRef",

export declare type DataModificationExceptionTypeTypes = AnnotationTerm<DataModificationExceptionType>;
export declare type ContentDispositionTypeTypes = AnnotationTerm<ContentDispositionType>;
export declare type AlternateKeyTypes = AnnotationTerm<AlternateKey>;

@@ -509,0 +532,0 @@ export declare type PropertyRefTypes = AnnotationTerm<PropertyRef>;

@@ -6,2 +6,3 @@ import * as Auth from "./Auth_Edm";

import * as Validation from "./Validation_Edm";
import * as Measures from "./Measures_Edm";
import * as Analytics from "./Analytics_Edm";

@@ -22,2 +23,3 @@ import * as Common from "./Common_Edm";

Validation?: Validation.EntityContainerAnnotations_Validation;
Measures?: Measures.EntityContainerAnnotations_Measures;
Analytics?: Analytics.EntityContainerAnnotations_Analytics;

@@ -39,2 +41,3 @@ Common?: Common.EntityContainerAnnotations_Common;

Validation?: Validation.SchemaAnnotations_Validation;
Measures?: Measures.SchemaAnnotations_Measures;
Analytics?: Analytics.SchemaAnnotations_Analytics;

@@ -56,2 +59,3 @@ Common?: Common.SchemaAnnotations_Common;

Validation?: Validation.ReferenceAnnotations_Validation;
Measures?: Measures.ReferenceAnnotations_Measures;
Analytics?: Analytics.ReferenceAnnotations_Analytics;

@@ -73,2 +77,3 @@ Common?: Common.ReferenceAnnotations_Common;

Validation?: Validation.EntityTypeAnnotations_Validation;
Measures?: Measures.EntityTypeAnnotations_Measures;
Analytics?: Analytics.EntityTypeAnnotations_Analytics;

@@ -90,2 +95,3 @@ Common?: Common.EntityTypeAnnotations_Common;

Validation?: Validation.EnumTypeAnnotations_Validation;
Measures?: Measures.EnumTypeAnnotations_Measures;
Analytics?: Analytics.EnumTypeAnnotations_Analytics;

@@ -107,2 +113,3 @@ Common?: Common.EnumTypeAnnotations_Common;

Validation?: Validation.ComplexTypeAnnotations_Validation;
Measures?: Measures.ComplexTypeAnnotations_Measures;
Analytics?: Analytics.ComplexTypeAnnotations_Analytics;

@@ -124,2 +131,3 @@ Common?: Common.ComplexTypeAnnotations_Common;

Validation?: Validation.PropertyAnnotations_Validation;
Measures?: Measures.PropertyAnnotations_Measures;
Analytics?: Analytics.PropertyAnnotations_Analytics;

@@ -141,2 +149,3 @@ Common?: Common.PropertyAnnotations_Common;

Validation?: Validation.NavigationPropertyAnnotations_Validation;
Measures?: Measures.NavigationPropertyAnnotations_Measures;
Analytics?: Analytics.NavigationPropertyAnnotations_Analytics;

@@ -158,2 +167,3 @@ Common?: Common.NavigationPropertyAnnotations_Common;

Validation?: Validation.TypeDefinitionAnnotations_Validation;
Measures?: Measures.TypeDefinitionAnnotations_Measures;
Analytics?: Analytics.TypeDefinitionAnnotations_Analytics;

@@ -175,2 +185,3 @@ Common?: Common.TypeDefinitionAnnotations_Common;

Validation?: Validation.TermAnnotations_Validation;
Measures?: Measures.TermAnnotations_Measures;
Analytics?: Analytics.TermAnnotations_Analytics;

@@ -192,2 +203,3 @@ Common?: Common.TermAnnotations_Common;

Validation?: Validation.ParameterAnnotations_Validation;
Measures?: Measures.ParameterAnnotations_Measures;
Analytics?: Analytics.ParameterAnnotations_Analytics;

@@ -209,2 +221,3 @@ Common?: Common.ParameterAnnotations_Common;

Validation?: Validation.ReturnTypeAnnotations_Validation;
Measures?: Measures.ReturnTypeAnnotations_Measures;
Analytics?: Analytics.ReturnTypeAnnotations_Analytics;

@@ -226,2 +239,3 @@ Common?: Common.ReturnTypeAnnotations_Common;

Validation?: Validation.EntitySetAnnotations_Validation;
Measures?: Measures.EntitySetAnnotations_Measures;
Analytics?: Analytics.EntitySetAnnotations_Analytics;

@@ -243,2 +257,3 @@ Common?: Common.EntitySetAnnotations_Common;

Validation?: Validation.SingletonAnnotations_Validation;
Measures?: Measures.SingletonAnnotations_Measures;
Analytics?: Analytics.SingletonAnnotations_Analytics;

@@ -260,2 +275,3 @@ Common?: Common.SingletonAnnotations_Common;

Validation?: Validation.ActionImportAnnotations_Validation;
Measures?: Measures.ActionImportAnnotations_Measures;
Analytics?: Analytics.ActionImportAnnotations_Analytics;

@@ -277,2 +293,3 @@ Common?: Common.ActionImportAnnotations_Common;

Validation?: Validation.FunctionImportAnnotations_Validation;
Measures?: Measures.FunctionImportAnnotations_Measures;
Analytics?: Analytics.FunctionImportAnnotations_Analytics;

@@ -294,2 +311,3 @@ Common?: Common.FunctionImportAnnotations_Common;

Validation?: Validation.ActionAnnotations_Validation;
Measures?: Measures.ActionAnnotations_Measures;
Analytics?: Analytics.ActionAnnotations_Analytics;

@@ -311,2 +329,3 @@ Common?: Common.ActionAnnotations_Common;

Validation?: Validation.FunctionAnnotations_Validation;
Measures?: Measures.FunctionAnnotations_Measures;
Analytics?: Analytics.FunctionAnnotations_Analytics;

@@ -328,2 +347,3 @@ Common?: Common.FunctionAnnotations_Common;

Validation?: Validation.IncludeAnnotations_Validation;
Measures?: Measures.IncludeAnnotations_Measures;
Analytics?: Analytics.IncludeAnnotations_Analytics;

@@ -345,2 +365,3 @@ Common?: Common.IncludeAnnotations_Common;

Validation?: Validation.AnnotationAnnotations_Validation;
Measures?: Measures.AnnotationAnnotations_Measures;
Analytics?: Analytics.AnnotationAnnotations_Analytics;

@@ -362,2 +383,3 @@ Common?: Common.AnnotationAnnotations_Common;

Validation?: Validation.CollectionAnnotations_Validation;
Measures?: Measures.CollectionAnnotations_Measures;
Analytics?: Analytics.CollectionAnnotations_Analytics;

@@ -379,2 +401,3 @@ Common?: Common.CollectionAnnotations_Common;

Validation?: Validation.RecordAnnotations_Validation;
Measures?: Measures.RecordAnnotations_Measures;
Analytics?: Analytics.RecordAnnotations_Analytics;

@@ -396,2 +419,3 @@ Common?: Common.RecordAnnotations_Common;

Validation?: Validation.PropertyValueAnnotations_Validation;
Measures?: Measures.PropertyValueAnnotations_Measures;
Analytics?: Analytics.PropertyValueAnnotations_Analytics;

@@ -398,0 +422,0 @@ Common?: Common.PropertyValueAnnotations_Common;

@@ -8,11 +8,11 @@ import * as Core from "./Core";

*/
export declare type EntitySemantics = PropertyAnnotationValue<EntitySemanticsType>;
export declare type EntitySemantics = AnnotationTerm<PropertyAnnotationValue<EntitySemanticsType>>;
/**
Role of the data subjects in this set (e.g. employee, customer)
*/
export declare type DataSubjectRole = AnnotationTerm<Edm.String>;
export declare type DataSubjectRole = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**
Language-dependent description of the role of the data subjects in this set (e.g. employee, customer)
*/
export declare type DataSubjectRoleDescription = AnnotationTerm<Edm.String>;
export declare type DataSubjectRoleDescription = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -25,3 +25,3 @@ Primary meaning of the data contained in the annotated entity set

*/
export declare type FieldSemantics = PropertyAnnotationValue<FieldSemanticsType>;
export declare type FieldSemantics = AnnotationTerm<PropertyAnnotationValue<FieldSemanticsType>>;
/**

@@ -34,11 +34,11 @@ Primary meaning of a data field

*/
export declare type IsPotentiallyPersonal = PropertyAnnotationValue<Core.Tag>;
export declare type IsPotentiallyPersonal = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Property contains potentially sensitive personal data
*/
export declare type IsPotentiallySensitive = PropertyAnnotationValue<Core.Tag>;
export declare type IsPotentiallySensitive = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Property contains a user id
*/
export declare type IsUserID = PropertyAnnotationValue<Core.Tag>;
export declare type IsUserID = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
export declare const enum PersonalDataAnnotationTerms {

@@ -45,0 +45,0 @@ EntitySemantics = "com.sap.vocabularies.PersonalData.v1.EntitySemantics",

@@ -1227,35 +1227,35 @@ import * as Core from "./Core";

*/
export declare type ThingPerspective = PropertyAnnotationValue<Core.Tag>;
export declare type ThingPerspective = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
This Facet and all included Facets are the summary of the thing. At most one Facet of a thing can be tagged with this term
*/
export declare type IsSummary = PropertyAnnotationValue<Core.Tag>;
export declare type IsSummary = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
This Facet and all included Facets are part of the Thing preview
*/
export declare type PartOfPreview = PropertyAnnotationValue<Core.Tag>;
export declare type PartOfPreview = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Target MUST reference a UI.GeoLocation, Communication.Address or a collection of these
*/
export declare type Map = PropertyAnnotationValue<Core.Tag>;
export declare type Map = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Target MUST reference a UI.MediaResource
*/
export declare type Gallery = PropertyAnnotationValue<Core.Tag>;
export declare type Gallery = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image
*/
export declare type IsImageURL = PropertyAnnotationValue<Core.Tag>;
export declare type IsImageURL = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Properties annotated with this term MUST be a stream property annotated with a MIME type image
*/
export declare type IsImage = PropertyAnnotationValue<Core.Tag>;
export declare type IsImage = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Properties annotated with this annotation should be rendered as multi-line text (e.g. text area)
*/
export declare type MultiLineText = PropertyAnnotationValue<Core.Tag>;
export declare type MultiLineText = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
A short, human-readable text that gives a hint or an example to help the user with data entry
*/
export declare type Placeholder = AnnotationTerm<Edm.String>;
export declare type Placeholder = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -1325,19 +1325,19 @@ Describes the arrangement of a code or ID value and its text

*/
export declare type Hidden = PropertyAnnotationValue<Core.Tag>;
export declare type Hidden = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
EntitySets annotated with this term can control the visibility of the Create operation dynamically
*/
export declare type CreateHidden = PropertyAnnotationValue<Core.Tag>;
export declare type CreateHidden = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
EntitySets annotated with this term can control the visibility of the Edit/Save operation dynamically
*/
export declare type UpdateHidden = PropertyAnnotationValue<Core.Tag>;
export declare type UpdateHidden = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
EntitySets annotated with this term can control the visibility of the Delete operation dynamically
*/
export declare type DeleteHidden = PropertyAnnotationValue<Core.Tag>;
export declare type DeleteHidden = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**
Properties annotated with this term will not be rendered as filter criteria if the annotation evaluates to true.
*/
export declare type HiddenFilter = PropertyAnnotationValue<Core.Tag>;
export declare type HiddenFilter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -1383,3 +1383,10 @@ Default representation of a property as a datafield, e.g. when the property is added as a table column or form field via personalization

*/
WithoutIcon = "UI.CriticalityRepresentationType/WithoutIcon"
WithoutIcon = "UI.CriticalityRepresentationType/WithoutIcon",
/**
Criticality is represented only by using an icon
*/
/**
undefined
*/
OnlyIcon = "UI.CriticalityRepresentationType/OnlyIcon"
}

@@ -1418,3 +1425,3 @@ /**

*/
Action: Common.QualifiedName;
Action: Common.ActionOverload;
ActionTarget?: Edm.Action;

@@ -1546,3 +1553,3 @@ /**

*/
export declare type RecommendationState = PropertyAnnotationValue<RecommendationStateType>;
export declare type RecommendationState = AnnotationTerm<PropertyAnnotationValue<RecommendationStateType>>;
/**

@@ -1588,3 +1595,3 @@ Indicates whether a field contains or has a recommended value

*/
export declare type ExcludeFromNavigationContext = PropertyAnnotationValue<Core.Tag>;
export declare type ExcludeFromNavigationContext = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
export declare const enum UIAnnotationTerms {

@@ -1591,0 +1598,0 @@ HeaderInfo = "com.sap.vocabularies.UI.v1.HeaderInfo",

@@ -9,3 +9,3 @@ import * as Core from "./Core";

*/
export declare type Pattern = AnnotationTerm<Edm.String>;
export declare type Pattern = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;
/**

@@ -22,3 +22,3 @@ Minimum value that a property, parameter, or term can have.

*/
export declare type Exclusive = PropertyAnnotationValue<Core.Tag>;
export declare type Exclusive = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
/**

@@ -25,0 +25,0 @@ A collection of valid values for the annotated property, parameter, or type definition

@@ -13,2 +13,8 @@ import { AnnotationList, FullyQualifiedName, SimpleIdentifier } from "./BaseEdm";

};
export declare type ComplexType = {
_type: "ComplexType";
name: SimpleIdentifier;
fullyQualifiedName: FullyQualifiedName;
properties: Property[];
};
export declare type ReferentialConstraint = {

@@ -20,2 +26,8 @@ sourceTypeName: FullyQualifiedName;

};
export declare type GenericNavigationProperty = {
_type: "NavigationProperty";
name: SimpleIdentifier;
fullyQualifiedName: FullyQualifiedName;
targetTypeName: FullyQualifiedName;
};
export declare type V2NavigationProperty = {

@@ -30,9 +42,5 @@ _type: "NavigationProperty";

};
export declare type V4NavigationProperty = {
_type: "NavigationProperty";
name: SimpleIdentifier;
fullyQualifiedName: FullyQualifiedName;
export declare type V4NavigationProperty = GenericNavigationProperty & {
partner: string;
isCollection: boolean;
targetTypeName: FullyQualifiedName;
containsTarget: boolean;

@@ -47,3 +55,3 @@ referentialConstraint?: ReferentialConstraint[];

keys: Property[];
navigationProperties: (V2NavigationProperty | V4NavigationProperty)[];
navigationProperties: (V2NavigationProperty | V4NavigationProperty | GenericNavigationProperty)[];
};

@@ -76,2 +84,8 @@ export declare type EntitySet = {

};
export declare type AssociationSet = {
name: SimpleIdentifier;
fullyQualifiedName: FullyQualifiedName;
association: string;
associationEnd: AssociationSetEnd[];
};
export declare enum Multiplicity {

@@ -88,2 +102,6 @@ One = "1",

};
export declare type AssociationSetEnd = {
entitySet: FullyQualifiedName;
role: SimpleIdentifier;
};
export declare type EntityContainer = {

@@ -100,2 +118,3 @@ name?: string;

entitySets: EntitySet[];
complexTypes: ComplexType[];
entityContainer: EntityContainer;

@@ -102,0 +121,0 @@ actions: Action[];

{
"name": "@sap-ux/vocabularies-types",
"version": "0.2.6",
"version": "0.2.26",
"main": "dist/index.js",

@@ -12,4 +12,4 @@ "license": "Apache-2.0",

"devDependencies": {
"@sap-ux/vocabularies-csdl-types": "0.2.6",
"@sap-ux/vocabularies-types-generator": "0.2.6",
"@sap-ux/vocabularies-csdl-types": "0.2.26",
"@sap-ux/vocabularies-types-generator": "0.2.26",
"ts-node": "^8.5.0",

@@ -16,0 +16,0 @@ "typescript": "^3.7.2"

@@ -11,2 +11,3 @@ export type SimpleIdentifier = string;

export type Apply = any;
export type If = any;

@@ -23,5 +24,6 @@ export type StringExpression = GenericExpression<"String", string>;

export type EnumMemberExpression = GenericExpression<"EnumMember", string>;
export type CollectionExpression = GenericExpression<"Collection", any[]>;
export type CollectionExpression = GenericExpression<"Collection", Collection>;
export type RecordExpression = GenericExpression<"Record", AnnotationRecord>;
export type ApplyExpression = GenericExpression<"Apply", Apply>;
export type IfExpression = GenericExpression<"If", If>;
export type UnknownExpression = {

@@ -44,3 +46,4 @@ type: "Unknown";

| RecordExpression
| ApplyExpression;
| ApplyExpression
| IfExpression;

@@ -47,0 +50,0 @@ export type Collection =

import {
Property as ParserProperty,
V2NavigationProperty as ParserV2NavigationProperty,
V4NavigationProperty as ParserV4NavigationProperty,
EntityType as ParserEntityType,
EntitySet as ParserEntitySet,
Action as ParserAction,
Reference
ComplexType as ParserComplexType,
Reference,
ReferentialConstraint
} from "./Parser";
import { Annotation as EdmAnnotation, AnnotationList } from "./BaseEdm";
import { Annotation as EdmAnnotation, AnnotationList, FullyQualifiedName, SimpleIdentifier } from "./BaseEdm";
import {

@@ -36,3 +36,2 @@ ActionAnnotations,

} from "./generated/Edm_Types";
import { AnnotationRecord, Collection, Expression, FullyQualifiedName, SimpleIdentifier } from "./BaseEdm";

@@ -65,13 +64,21 @@ export type AnyAnnotation =

annotations: PropertyAnnotations;
targetType?: ComplexType;
isKey: boolean;
};
export type V2NavigationProperty = ParserV2NavigationProperty & {
targetType: EntityType;
annotations: NavigationPropertyAnnotations;
export type ComplexType = ParserComplexType & {
annotations: ComplexTypeAnnotations;
};
export type V4NavigationProperty = ParserV4NavigationProperty & {
export type NavigationProperty = {
_type: "NavigationProperty";
name: SimpleIdentifier;
partner: string;
fullyQualifiedName: FullyQualifiedName;
targetTypeName: FullyQualifiedName;
targetType: EntityType;
annotations: NavigationPropertyAnnotations;
isCollection: boolean;
containsTarget: boolean;
referentialConstraint?: ReferentialConstraint[];
};

@@ -83,6 +90,6 @@

keys: Property[];
navigationProperties: (V2NavigationProperty | V4NavigationProperty)[];
navigationProperties: NavigationProperty[];
actions: Record<string, Action>;
annotations: EntityTypeAnnotations;
resolvePath(relativePath: string): any;
resolvePath(relativePath: string, includeVisitedObjects?: boolean): any;
};

@@ -120,2 +127,3 @@

actions: Action[];
complexTypes: ComplexType[];
entitySets: EntitySet[];

@@ -122,0 +130,0 @@ entityTypes: EntityType[];

// PURE EDM Types
import {
EntityType as _EntityType,
Action as _Action,
Property,
V2NavigationProperty,
V4NavigationProperty
} from "./Converter";
import { RecordAnnotations, TermAnnotations } from "./generated/Edm_Types";
import { EntityType as _EntityType, Action as _Action, Property, NavigationProperty } from "./Converter";
import { RecordAnnotations, TermAnnotations, AnnotationAnnotations } from "./generated/Edm_Types";

@@ -22,3 +16,3 @@ // Generated EDM Types for the converter

value: string;
$target: V2NavigationProperty | V4NavigationProperty;
$target: NavigationProperty;
};

@@ -32,9 +26,18 @@

export type AnnotationTerm<P> = P & {
fullyQualifiedName: string;
term: string;
qualifier: string;
annotations?: TermAnnotations;
};
type PrimitiveTypeCast<P, G> =
| (P extends boolean ? boolean | (BooleanConstructor & G) : never)
| (P extends number ? number | (NumberConstructor & G) : never)
| (P extends string ? string | (StringConstructor & G) : never)
| (P & G);
export type AnnotationTerm<P> = PrimitiveTypeCast<
P,
{
fullyQualifiedName: string;
term: string;
qualifier: string;
annotations?: TermAnnotations & AnnotationAnnotations;
}
>;
export type PathAnnotationExpression<P> = {

@@ -53,4 +56,71 @@ type: "Path";

export type PropertyAnnotationValue<P> = P | PathAnnotationExpression<P> | ApplyAnnotationExpression<P>;
export type EqConditionalExpression = {
$Eq: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export type NeConditionalExpression = {
$Ne: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export type GtConditionalExpression = {
$Gt: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export type GeConditionalExpression = {
$Ge: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export type LtConditionalExpression = {
$Lt: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export type LeConditionalExpression = {
$Le: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export type AndConditionalExpression = {
$And: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export type OrConditionalExpression = {
$Or: [ConditionalCheckOrValue, ConditionalCheckOrValue];
};
export type NotConditionalExpression = {
$Not: [ConditionalCheckOrValue];
};
export type PathConditionExpression<T> = {
$Path: string;
};
export type ConditionalCheck =
| OrConditionalExpression
| AndConditionalExpression
| NotConditionalExpression
| EqConditionalExpression
| NeConditionalExpression
| GtConditionalExpression
| GeConditionalExpression
| LtConditionalExpression
| LeConditionalExpression;
export type ConditionalCheckOrValue =
| null
| string
| number
| boolean
| ConditionalCheck
| PathConditionExpression<string | number | boolean>;
export type IfAnnotationExpressionValue<OutType> = [ConditionalCheck, OutType, OutType];
export type IfAnnotationExpression<P> = {
type: "If";
If: IfAnnotationExpressionValue<P>;
getValue(): P;
};
export type PropertyAnnotationValue<P> =
| P
| PathAnnotationExpression<P>
| ApplyAnnotationExpression<P>
| IfAnnotationExpression<P>;
export type String = string;

@@ -110,5 +180,3 @@ export type InstancePath = string;

export type EnumValue<P> = {
EnumMember: P;
};
export type EnumValue<P> = P;

@@ -115,0 +183,0 @@ export type ComplexType = {

@@ -67,3 +67,3 @@ import * as Core from "./Core";

*/
export type Groupable = PropertyAnnotationValue<Core.Tag>;
export type Groupable = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -74,3 +74,3 @@ // Term

*/
export type Aggregatable = PropertyAnnotationValue<Core.Tag>;
export type Aggregatable = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -81,3 +81,3 @@ // Term

*/
export type CustomAggregate = AnnotationTerm<Edm.String>;
export type CustomAggregate = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -84,0 +84,0 @@ // Term

@@ -15,3 +15,3 @@ import * as Core from "./Core";

*/
export type Dimension = PropertyAnnotationValue<Core.Tag>;
export type Dimension = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -22,3 +22,3 @@ // Term

*/
export type Measure = PropertyAnnotationValue<Core.Tag>;
export type Measure = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -29,3 +29,3 @@ // Term

*/
export type AccumulativeMeasure = PropertyAnnotationValue<Core.Tag>;
export type AccumulativeMeasure = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -45,3 +45,3 @@ // Term

*/
export type DrillURL = AnnotationTerm<Edm.String>;
export type DrillURL = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -53,3 +53,3 @@ // Term

*/
export type PlanningAction = PropertyAnnotationValue<Core.Tag>;
export type PlanningAction = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -56,0 +56,0 @@ // Term

@@ -45,3 +45,3 @@ import * as Auth from "./Auth";

*/
export type SupportedFormats = AnnotationTerm<Edm.String[]>;
export type SupportedFormats = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;

@@ -52,3 +52,3 @@ // Term

*/
export type SupportedMetadataFormats = AnnotationTerm<Edm.String[]>;
export type SupportedMetadataFormats = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;

@@ -59,3 +59,3 @@ // Term

*/
export type AcceptableEncodings = AnnotationTerm<Edm.String[]>;
export type AcceptableEncodings = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;

@@ -66,3 +66,3 @@ // Term

*/
export type AsynchronousRequestsSupported = PropertyAnnotationValue<Core.Tag>;
export type AsynchronousRequestsSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -73,3 +73,3 @@ // Term

*/
export type BatchContinueOnErrorSupported = PropertyAnnotationValue<Core.Tag>;
export type BatchContinueOnErrorSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -97,3 +97,3 @@ // Term

*/
export type CrossJoinSupported = PropertyAnnotationValue<Core.Tag>;
export type CrossJoinSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -302,3 +302,3 @@ // Term

*/
export type IndexableByKey = PropertyAnnotationValue<Core.Tag>;
export type IndexableByKey = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -309,3 +309,3 @@ // Term

*/
export type TopSupported = PropertyAnnotationValue<Core.Tag>;
export type TopSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -316,3 +316,3 @@ // Term

*/
export type SkipSupported = PropertyAnnotationValue<Core.Tag>;
export type SkipSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -323,3 +323,3 @@ // Term

*/
export type ComputeSupported = PropertyAnnotationValue<Core.Tag>;
export type ComputeSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -381,3 +381,3 @@ // Term

*/
export type BatchSupported = PropertyAnnotationValue<Core.Tag>;
export type BatchSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -427,3 +427,3 @@ // Term

*/
export type FilterFunctions = AnnotationTerm<Edm.String[]>;
export type FilterFunctions = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;

@@ -608,3 +608,3 @@ // Term

*/
export type KeyAsSegmentSupported = PropertyAnnotationValue<Core.Tag>;
export type KeyAsSegmentSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -615,3 +615,3 @@ // Term

*/
export type QuerySegmentSupported = PropertyAnnotationValue<Core.Tag>;
export type QuerySegmentSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -937,3 +937,3 @@ // Term

*/
export type AnnotationValuesInQuerySupported = PropertyAnnotationValue<Core.Tag>;
export type AnnotationValuesInQuerySupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1073,3 +1073,3 @@ // Term

*/
export type MediaLocationUpdateSupported = PropertyAnnotationValue<Core.Tag>;
export type MediaLocationUpdateSupported = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
export const enum CapabilitiesAnnotationTerms {

@@ -1076,0 +1076,0 @@ ConformanceLevel = "Org.OData.Capabilities.V1.ConformanceLevel",

@@ -139,2 +139,4 @@ import * as com_sap_vocabularies_Common_v1 from "./Common";

"IsUpperCase"?: com_sap_vocabularies_Common_v1.IsUpperCase;
"IsCurrency"?: com_sap_vocabularies_Common_v1.IsCurrency;
"IsUnit"?: com_sap_vocabularies_Common_v1.IsUnit;
"UnitSpecificScale"?: com_sap_vocabularies_Common_v1.UnitSpecificScale;

@@ -262,2 +264,4 @@ "UnitSpecificPrecision"?: com_sap_vocabularies_Common_v1.UnitSpecificPrecision;

"IsUpperCase"?: com_sap_vocabularies_Common_v1.IsUpperCase;
"IsCurrency"?: com_sap_vocabularies_Common_v1.IsCurrency;
"IsUnit"?: com_sap_vocabularies_Common_v1.IsUnit;
"MinOccurs"?: com_sap_vocabularies_Common_v1.MinOccurs;

@@ -264,0 +268,0 @@ "MaxOccurs"?: com_sap_vocabularies_Common_v1.MaxOccurs;

@@ -15,3 +15,3 @@ import * as Core from "./Core";

*/
export type Experimental = AnnotationTerm<Edm.String>;
export type Experimental = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -34,3 +34,3 @@ // Term

*/
export type Label = AnnotationTerm<Edm.String>;
export type Label = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -41,3 +41,3 @@ // Term

*/
export type Heading = AnnotationTerm<Edm.String>;
export type Heading = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -48,3 +48,3 @@ // Term

*/
export type QuickInfo = AnnotationTerm<Edm.String>;
export type QuickInfo = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -55,3 +55,3 @@ // Term

*/
export type Text = AnnotationTerm<Edm.String>;
export type Text = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -68,3 +68,3 @@ // Term

*/
export type IsLanguageIdentifier = PropertyAnnotationValue<Core.Tag>;
export type IsLanguageIdentifier = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -99,3 +99,3 @@ // Term

*/
export type IsDigitSequence = PropertyAnnotationValue<Core.Tag>;
export type IsDigitSequence = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -106,6 +106,18 @@ // Term

*/
export type IsUpperCase = PropertyAnnotationValue<Core.Tag>;
export type IsUpperCase = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
// Term
/**
Annotated property or parameter is a currency code
*/
export type IsCurrency = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
// Term
/**
Annotated property or parameter is a unit of measure
*/
export type IsUnit = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
// Term
/**
The number of fractional decimal digits of a currency amount or measured quantity

@@ -155,3 +167,3 @@ */

*/
export type Masked = PropertyAnnotationValue<Core.Tag>;
export type Masked = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -162,3 +174,3 @@ // Term

*/
export type MaskedValue = AnnotationTerm<Edm.String>;
export type MaskedValue = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -169,3 +181,3 @@ // Term

*/
export type MaskedAlways = PropertyAnnotationValue<Core.Tag>;
export type MaskedAlways = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -176,3 +188,3 @@ // Term

*/
export type SemanticObject = AnnotationTerm<Edm.String>;
export type SemanticObject = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -205,3 +217,3 @@ // Term

*/
export type SemanticObjectUnavailableActions = AnnotationTerm<Edm.String[]>;
export type SemanticObjectUnavailableActions = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;

@@ -212,3 +224,3 @@ // Term

*/
export type IsInstanceAnnotation = PropertyAnnotationValue<Core.Tag>;
export type IsInstanceAnnotation = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -307,3 +319,3 @@ // Term

*/
export type ExceptionCategory = AnnotationTerm<Edm.String>;
export type ExceptionCategory = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -347,3 +359,3 @@ // Term

*/
export type TransactionId = AnnotationTerm<Edm.String>;
export type TransactionId = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -383,3 +395,3 @@ // Term

*/
export type additionalTargets = AnnotationTerm<Edm.String[]>;
export type additionalTargets = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;

@@ -390,3 +402,3 @@ // Term

*/
export type longtextUrl = AnnotationTerm<Edm.String>;
export type longtextUrl = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -397,3 +409,3 @@ // Term

*/
export type numericSeverity = PropertyAnnotationValue<NumericMessageSeverityType>;
export type numericSeverity = AnnotationTerm<PropertyAnnotationValue<NumericMessageSeverityType>>;

@@ -404,3 +416,3 @@ // Term

*/
export type MaximumNumericMessageSeverity = PropertyAnnotationValue<NumericMessageSeverityType>;
export type MaximumNumericMessageSeverity = AnnotationTerm<PropertyAnnotationValue<NumericMessageSeverityType>>;

@@ -464,3 +476,3 @@ // Typedefinition

*/
export type ResultContext = PropertyAnnotationValue<Core.Tag>;
export type ResultContext = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -507,3 +519,3 @@ // Term

*/
export type IsNaturalPerson = PropertyAnnotationValue<Core.Tag>;
export type IsNaturalPerson = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -563,3 +575,3 @@ // Term

*/
export type ValueListRelevantQualifiers = PropertyAnnotationValue<SimpleIdentifier[]>;
export type ValueListRelevantQualifiers = AnnotationTerm<PropertyAnnotationValue<SimpleIdentifier[]>>;

@@ -570,3 +582,3 @@ // Term

*/
export type ValueListWithFixedValues = PropertyAnnotationValue<Core.Tag>;
export type ValueListWithFixedValues = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -577,3 +589,3 @@ // Term

*/
export type ValueListReferences = AnnotationTerm<Edm.String[]>;
export type ValueListReferences = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;

@@ -641,3 +653,3 @@ // Term

*/
Constant: PropertyAnnotationValue<Edm.String>;
Constant: PropertyAnnotationValue<Edm.PrimitiveType>;
};

@@ -689,3 +701,3 @@

*/
export type IsCalendarYear = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarYear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -698,3 +710,3 @@ // Term

*/
export type IsCalendarHalfyear = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarHalfyear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -707,3 +719,3 @@ // Term

*/
export type IsCalendarQuarter = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarQuarter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -716,3 +728,3 @@ // Term

*/
export type IsCalendarMonth = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarMonth = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -725,3 +737,3 @@ // Term

*/
export type IsCalendarWeek = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarWeek = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -733,3 +745,3 @@ // Term

*/
export type IsDayOfCalendarMonth = PropertyAnnotationValue<Core.Tag>;
export type IsDayOfCalendarMonth = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -741,3 +753,3 @@ // Term

*/
export type IsDayOfCalendarYear = PropertyAnnotationValue<Core.Tag>;
export type IsDayOfCalendarYear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -751,3 +763,3 @@ // Term

*/
export type IsCalendarYearHalfyear = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarYearHalfyear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -761,3 +773,3 @@ // Term

*/
export type IsCalendarYearQuarter = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarYearQuarter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -772,3 +784,3 @@ // Term

*/
export type IsCalendarYearMonth = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarYearMonth = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -782,3 +794,3 @@ // Term

*/
export type IsCalendarYearWeek = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarYearWeek = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -796,3 +808,3 @@ // Term

*/
export type IsCalendarDate = PropertyAnnotationValue<Core.Tag>;
export type IsCalendarDate = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -805,3 +817,3 @@ // Term

*/
export type IsFiscalYear = PropertyAnnotationValue<Core.Tag>;
export type IsFiscalYear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -814,3 +826,3 @@ // Term

*/
export type IsFiscalPeriod = PropertyAnnotationValue<Core.Tag>;
export type IsFiscalPeriod = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -824,3 +836,3 @@ // Term

*/
export type IsFiscalYearPeriod = PropertyAnnotationValue<Core.Tag>;
export type IsFiscalYearPeriod = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -832,3 +844,3 @@ // Term

*/
export type IsFiscalQuarter = PropertyAnnotationValue<Core.Tag>;
export type IsFiscalQuarter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -841,3 +853,3 @@ // Term

*/
export type IsFiscalYearQuarter = PropertyAnnotationValue<Core.Tag>;
export type IsFiscalYearQuarter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -849,3 +861,3 @@ // Term

*/
export type IsFiscalWeek = PropertyAnnotationValue<Core.Tag>;
export type IsFiscalWeek = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -858,3 +870,3 @@ // Term

*/
export type IsFiscalYearWeek = PropertyAnnotationValue<Core.Tag>;
export type IsFiscalYearWeek = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -865,3 +877,3 @@ // Term

*/
export type IsDayOfFiscalYear = PropertyAnnotationValue<Core.Tag>;
export type IsDayOfFiscalYear = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -872,3 +884,3 @@ // Term

*/
export type IsFiscalYearVariant = PropertyAnnotationValue<Core.Tag>;
export type IsFiscalYearVariant = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -879,3 +891,3 @@ // Term

*/
export type MutuallyExclusiveTerm = PropertyAnnotationValue<Core.Tag>;
export type MutuallyExclusiveTerm = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -908,2 +920,6 @@ // Term

NewAction?: QualifiedName;
/**
Additional actions that create a new draft
*/
AdditionalNewActions: QualifiedName[];
};

@@ -934,3 +950,3 @@

*/
export type DraftActivationVia = PropertyAnnotationValue<SimpleIdentifier[]>;
export type DraftActivationVia = AnnotationTerm<PropertyAnnotationValue<SimpleIdentifier[]>>;

@@ -955,2 +971,8 @@ // Term

// Typedefinition
/**
The qualified name of an action with an optional overload
*/
export type ActionOverload = Edm.String;
// Term

@@ -975,3 +997,3 @@ /**

/**
Changes to the values of one or more of these properties may affect the targets
Changes to the values of one or more of these structural properties may affect the targets
*/

@@ -984,5 +1006,5 @@ SourceProperties: PropertyAnnotationValue<Edm.PropertyPath[]>;

/**
These properties may be affected if the value of one of the sources changes
These structural properties may be affected if the value of one of the sources changes
*/
TargetProperties: PropertyAnnotationValue<Edm.PropertyPath[]>;
TargetProperties: PropertyAnnotationValue<Edm.String[]>;
/**

@@ -1039,3 +1061,3 @@ These entities will be affected if the value of one of the sources changes. All affected entities need to be explicitly listed. An empty path means the annotation target.

*/
export type DefaultValuesFunction = PropertyAnnotationValue<QualifiedName>;
export type DefaultValuesFunction = AnnotationTerm<PropertyAnnotationValue<QualifiedName>>;

@@ -1046,3 +1068,3 @@ // Term

*/
export type DerivedDefaultValue = AnnotationTerm<Edm.String>;
export type DerivedDefaultValue = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -1065,3 +1087,3 @@ // Term

*/
export type DerivedFilterDefaultValue = AnnotationTerm<Edm.String>;
export type DerivedFilterDefaultValue = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -1128,3 +1150,3 @@ // Term

*/
export type CreatedBy = PropertyAnnotationValue<UserID>;
export type CreatedBy = AnnotationTerm<PropertyAnnotationValue<UserID>>;

@@ -1141,3 +1163,3 @@ // Term

*/
export type ChangedBy = PropertyAnnotationValue<UserID>;
export type ChangedBy = AnnotationTerm<PropertyAnnotationValue<UserID>>;

@@ -1154,3 +1176,3 @@ // Typedefinition

*/
export type OriginalProtocolVersion = AnnotationTerm<Edm.String>;
export type OriginalProtocolVersion = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -1161,3 +1183,3 @@ // Term

*/
export type ApplyMultiUnitBehaviorForSortingAndFiltering = PropertyAnnotationValue<Core.Tag>;
export type ApplyMultiUnitBehaviorForSortingAndFiltering = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
export const enum CommonAnnotationTerms {

@@ -1176,2 +1198,4 @@ Experimental = "com.sap.vocabularies.Common.v1.Experimental",

IsUpperCase = "com.sap.vocabularies.Common.v1.IsUpperCase",
IsCurrency = "com.sap.vocabularies.Common.v1.IsCurrency",
IsUnit = "com.sap.vocabularies.Common.v1.IsUnit",
UnitSpecificScale = "com.sap.vocabularies.Common.v1.UnitSpecificScale",

@@ -1178,0 +1202,0 @@ UnitSpecificPrecision = "com.sap.vocabularies.Common.v1.UnitSpecificPrecision",

@@ -380,3 +380,3 @@ import * as Core from "./Core";

*/
export type IsEmailAddress = PropertyAnnotationValue<Core.Tag>;
export type IsEmailAddress = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -387,3 +387,3 @@ // Term

*/
export type IsPhoneNumber = PropertyAnnotationValue<Core.Tag>;
export type IsPhoneNumber = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -390,0 +390,0 @@ // Term

@@ -18,2 +18,3 @@ import * as Org_OData_Core_V1 from "./Core";

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -35,2 +36,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -51,2 +53,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -71,2 +74,3 @@

"AlternateKeys"?: Org_OData_Core_V1.AlternateKeys;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -86,2 +90,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -104,2 +109,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -128,2 +134,3 @@

"IsMediaType"?: Org_OData_Core_V1.IsMediaType;
"ContentDisposition"?: Org_OData_Core_V1.ContentDisposition;
"AutoExpand"?: Org_OData_Core_V1.AutoExpand;

@@ -133,2 +140,3 @@ "MayImplement"?: Org_OData_Core_V1.MayImplement;

"PositionalInsert"?: Org_OData_Core_V1.PositionalInsert;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -155,2 +163,3 @@

"AlternateKeys"?: Org_OData_Core_V1.AlternateKeys;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -172,2 +181,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -193,4 +203,6 @@

"IsMediaType"?: Org_OData_Core_V1.IsMediaType;
"ContentDisposition"?: Org_OData_Core_V1.ContentDisposition;
"MayImplement"?: Org_OData_Core_V1.MayImplement;
"Ordered"?: Org_OData_Core_V1.Ordered;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -212,2 +224,3 @@

"OptionalParameter"?: Org_OData_Core_V1.OptionalParameter;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -229,2 +242,3 @@

"Ordered"?: Org_OData_Core_V1.Ordered;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -250,2 +264,3 @@

"AlternateKeys"?: Org_OData_Core_V1.AlternateKeys;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -266,2 +281,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -282,2 +298,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -298,2 +315,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -315,2 +333,3 @@

"OperationAvailable"?: Org_OData_Core_V1.OperationAvailable;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -332,2 +351,3 @@

"OperationAvailable"?: Org_OData_Core_V1.OperationAvailable;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -348,2 +368,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -363,2 +384,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -378,2 +400,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -393,2 +416,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -408,2 +432,3 @@

"MayImplement"?: Org_OData_Core_V1.MayImplement;
"SymbolicName"?: Org_OData_Core_V1.SymbolicName;
}

@@ -12,3 +12,3 @@ import * as Validation from "./Validation";

*/
export type ODataVersions = AnnotationTerm<Edm.String>;
export type ODataVersions = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -19,3 +19,3 @@ // Term

*/
export type SchemaVersion = AnnotationTerm<Edm.String>;
export type SchemaVersion = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -74,3 +74,3 @@ // Term

*/
export type Description = AnnotationTerm<Edm.String>;
export type Description = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -81,3 +81,3 @@ // Term

*/
export type LongDescription = AnnotationTerm<Edm.String>;
export type LongDescription = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -313,3 +313,3 @@ // Term

*/
export type IsLanguageDependent = PropertyAnnotationValue<Tag>;
export type IsLanguageDependent = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -326,3 +326,3 @@ // Typedefinition

*/
export type RequiresType = AnnotationTerm<Edm.String>;
export type RequiresType = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -333,3 +333,3 @@ // Term

*/
export type ResourcePath = AnnotationTerm<Edm.String>;
export type ResourcePath = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -340,3 +340,3 @@ // Term

*/
export type DereferenceableIDs = PropertyAnnotationValue<Tag>;
export type DereferenceableIDs = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -347,3 +347,3 @@ // Term

*/
export type ConventionalIDs = PropertyAnnotationValue<Tag>;
export type ConventionalIDs = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -399,3 +399,3 @@ // Term

*/
export type ContentID = AnnotationTerm<Edm.String>;
export type ContentID = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -406,3 +406,3 @@ // Term

*/
export type DefaultNamespace = PropertyAnnotationValue<Tag>;
export type DefaultNamespace = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -413,3 +413,3 @@ // Term

*/
export type Immutable = PropertyAnnotationValue<Tag>;
export type Immutable = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -420,3 +420,3 @@ // Term

*/
export type Computed = PropertyAnnotationValue<Tag>;
export type Computed = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -427,3 +427,3 @@ // Term

*/
export type ComputedDefaultValue = PropertyAnnotationValue<Tag>;
export type ComputedDefaultValue = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -434,3 +434,3 @@ // Term

*/
export type IsURL = PropertyAnnotationValue<Tag>;
export type IsURL = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -441,3 +441,3 @@ // Term

*/
export type AcceptableMediaTypes = AnnotationTerm<Edm.String[]>;
export type AcceptableMediaTypes = AnnotationTerm<PropertyAnnotationValue<Edm.String[]>>;

@@ -448,3 +448,3 @@ // Term

*/
export type MediaType = AnnotationTerm<Edm.String>;
export type MediaType = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -455,6 +455,21 @@ // Term

*/
export type IsMediaType = PropertyAnnotationValue<Tag>;
export type IsMediaType = AnnotationTerm<PropertyAnnotationValue<Tag>>;
// Term
/**
The content disposition of a binary or string property or term
*/
export type ContentDisposition = AnnotationTerm<ContentDispositionTypeTypes>;
// ComplexType
export type ContentDispositionType = ComplexType & {
$Type: CoreAnnotationTypes.ContentDispositionType;
/**
The proposed filename for downloading the binary or stream value
*/
Filename?: PropertyAnnotationValue<Edm.String>;
};
// Term
/**
Data modification requires the use of ETags. A non-empty collection contains the set of properties that are used to compute the ETag. An empty collection means that the service won't tell how it computes the ETag.

@@ -468,3 +483,3 @@ */

*/
export type AdditionalProperties = PropertyAnnotationValue<Tag>;
export type AdditionalProperties = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -475,3 +490,3 @@ // Term

*/
export type AutoExpand = PropertyAnnotationValue<Tag>;
export type AutoExpand = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -482,3 +497,3 @@ // Term

*/
export type AutoExpandReferences = PropertyAnnotationValue<Tag>;
export type AutoExpandReferences = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -489,3 +504,3 @@ // Term

*/
export type MayImplement = PropertyAnnotationValue<QualifiedTypeName[]>;
export type MayImplement = AnnotationTerm<PropertyAnnotationValue<QualifiedTypeName[]>>;

@@ -508,3 +523,3 @@ // Typedefinition

*/
export type Ordered = PropertyAnnotationValue<Tag>;
export type Ordered = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -515,3 +530,3 @@ // Term

*/
export type PositionalInsert = PropertyAnnotationValue<Tag>;
export type PositionalInsert = AnnotationTerm<PropertyAnnotationValue<Tag>>;

@@ -580,2 +595,14 @@ // Term

export type LocalDateTime = Edm.String;
// Term
/**
A symbolic name for a model element
*/
export type SymbolicName = AnnotationTerm<PropertyAnnotationValue<SimpleIdentifier>>;
// Typedefinition
/**
A [simple identifier](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_SimpleIdentifier)
*/
export type SimpleIdentifier = Edm.String;
export const enum CoreAnnotationTerms {

@@ -608,2 +635,3 @@ ODataVersions = "Org.OData.Core.V1.ODataVersions",

IsMediaType = "Org.OData.Core.V1.IsMediaType",
ContentDisposition = "Org.OData.Core.V1.ContentDisposition",
OptimisticConcurrency = "Org.OData.Core.V1.OptimisticConcurrency",

@@ -618,3 +646,4 @@ AdditionalProperties = "Org.OData.Core.V1.AdditionalProperties",

OptionalParameter = "Org.OData.Core.V1.OptionalParameter",
OperationAvailable = "Org.OData.Core.V1.OperationAvailable"
OperationAvailable = "Org.OData.Core.V1.OperationAvailable",
SymbolicName = "Org.OData.Core.V1.SymbolicName"
}

@@ -634,2 +663,3 @@ export const enum CoreAnnotationTypes {

DataModificationExceptionType = "Org.OData.Core.V1.DataModificationExceptionType",
ContentDispositionType = "Org.OData.Core.V1.ContentDispositionType",
AlternateKey = "Org.OData.Core.V1.AlternateKey",

@@ -661,2 +691,3 @@ PropertyRef = "Org.OData.Core.V1.PropertyRef",

export type DataModificationExceptionTypeTypes = AnnotationTerm<DataModificationExceptionType>;
export type ContentDispositionTypeTypes = AnnotationTerm<ContentDispositionType>;
export type AlternateKeyTypes = AnnotationTerm<AlternateKey>;

@@ -663,0 +694,0 @@ export type PropertyRefTypes = AnnotationTerm<PropertyRef>;

@@ -6,2 +6,3 @@ import * as Auth from "./Auth_Edm";

import * as Validation from "./Validation_Edm";
import * as Measures from "./Measures_Edm";
import * as Analytics from "./Analytics_Edm";

@@ -23,2 +24,3 @@ import * as Common from "./Common_Edm";

Validation?: Validation.EntityContainerAnnotations_Validation;
Measures?: Measures.EntityContainerAnnotations_Measures;
Analytics?: Analytics.EntityContainerAnnotations_Analytics;

@@ -40,2 +42,3 @@ Common?: Common.EntityContainerAnnotations_Common;

Validation?: Validation.SchemaAnnotations_Validation;
Measures?: Measures.SchemaAnnotations_Measures;
Analytics?: Analytics.SchemaAnnotations_Analytics;

@@ -57,2 +60,3 @@ Common?: Common.SchemaAnnotations_Common;

Validation?: Validation.ReferenceAnnotations_Validation;
Measures?: Measures.ReferenceAnnotations_Measures;
Analytics?: Analytics.ReferenceAnnotations_Analytics;

@@ -74,2 +78,3 @@ Common?: Common.ReferenceAnnotations_Common;

Validation?: Validation.EntityTypeAnnotations_Validation;
Measures?: Measures.EntityTypeAnnotations_Measures;
Analytics?: Analytics.EntityTypeAnnotations_Analytics;

@@ -91,2 +96,3 @@ Common?: Common.EntityTypeAnnotations_Common;

Validation?: Validation.EnumTypeAnnotations_Validation;
Measures?: Measures.EnumTypeAnnotations_Measures;
Analytics?: Analytics.EnumTypeAnnotations_Analytics;

@@ -108,2 +114,3 @@ Common?: Common.EnumTypeAnnotations_Common;

Validation?: Validation.ComplexTypeAnnotations_Validation;
Measures?: Measures.ComplexTypeAnnotations_Measures;
Analytics?: Analytics.ComplexTypeAnnotations_Analytics;

@@ -125,2 +132,3 @@ Common?: Common.ComplexTypeAnnotations_Common;

Validation?: Validation.PropertyAnnotations_Validation;
Measures?: Measures.PropertyAnnotations_Measures;
Analytics?: Analytics.PropertyAnnotations_Analytics;

@@ -142,2 +150,3 @@ Common?: Common.PropertyAnnotations_Common;

Validation?: Validation.NavigationPropertyAnnotations_Validation;
Measures?: Measures.NavigationPropertyAnnotations_Measures;
Analytics?: Analytics.NavigationPropertyAnnotations_Analytics;

@@ -159,2 +168,3 @@ Common?: Common.NavigationPropertyAnnotations_Common;

Validation?: Validation.TypeDefinitionAnnotations_Validation;
Measures?: Measures.TypeDefinitionAnnotations_Measures;
Analytics?: Analytics.TypeDefinitionAnnotations_Analytics;

@@ -176,2 +186,3 @@ Common?: Common.TypeDefinitionAnnotations_Common;

Validation?: Validation.TermAnnotations_Validation;
Measures?: Measures.TermAnnotations_Measures;
Analytics?: Analytics.TermAnnotations_Analytics;

@@ -193,2 +204,3 @@ Common?: Common.TermAnnotations_Common;

Validation?: Validation.ParameterAnnotations_Validation;
Measures?: Measures.ParameterAnnotations_Measures;
Analytics?: Analytics.ParameterAnnotations_Analytics;

@@ -210,2 +222,3 @@ Common?: Common.ParameterAnnotations_Common;

Validation?: Validation.ReturnTypeAnnotations_Validation;
Measures?: Measures.ReturnTypeAnnotations_Measures;
Analytics?: Analytics.ReturnTypeAnnotations_Analytics;

@@ -227,2 +240,3 @@ Common?: Common.ReturnTypeAnnotations_Common;

Validation?: Validation.EntitySetAnnotations_Validation;
Measures?: Measures.EntitySetAnnotations_Measures;
Analytics?: Analytics.EntitySetAnnotations_Analytics;

@@ -244,2 +258,3 @@ Common?: Common.EntitySetAnnotations_Common;

Validation?: Validation.SingletonAnnotations_Validation;
Measures?: Measures.SingletonAnnotations_Measures;
Analytics?: Analytics.SingletonAnnotations_Analytics;

@@ -261,2 +276,3 @@ Common?: Common.SingletonAnnotations_Common;

Validation?: Validation.ActionImportAnnotations_Validation;
Measures?: Measures.ActionImportAnnotations_Measures;
Analytics?: Analytics.ActionImportAnnotations_Analytics;

@@ -278,2 +294,3 @@ Common?: Common.ActionImportAnnotations_Common;

Validation?: Validation.FunctionImportAnnotations_Validation;
Measures?: Measures.FunctionImportAnnotations_Measures;
Analytics?: Analytics.FunctionImportAnnotations_Analytics;

@@ -295,2 +312,3 @@ Common?: Common.FunctionImportAnnotations_Common;

Validation?: Validation.ActionAnnotations_Validation;
Measures?: Measures.ActionAnnotations_Measures;
Analytics?: Analytics.ActionAnnotations_Analytics;

@@ -312,2 +330,3 @@ Common?: Common.ActionAnnotations_Common;

Validation?: Validation.FunctionAnnotations_Validation;
Measures?: Measures.FunctionAnnotations_Measures;
Analytics?: Analytics.FunctionAnnotations_Analytics;

@@ -329,2 +348,3 @@ Common?: Common.FunctionAnnotations_Common;

Validation?: Validation.IncludeAnnotations_Validation;
Measures?: Measures.IncludeAnnotations_Measures;
Analytics?: Analytics.IncludeAnnotations_Analytics;

@@ -346,2 +366,3 @@ Common?: Common.IncludeAnnotations_Common;

Validation?: Validation.AnnotationAnnotations_Validation;
Measures?: Measures.AnnotationAnnotations_Measures;
Analytics?: Analytics.AnnotationAnnotations_Analytics;

@@ -363,2 +384,3 @@ Common?: Common.AnnotationAnnotations_Common;

Validation?: Validation.CollectionAnnotations_Validation;
Measures?: Measures.CollectionAnnotations_Measures;
Analytics?: Analytics.CollectionAnnotations_Analytics;

@@ -380,2 +402,3 @@ Common?: Common.CollectionAnnotations_Common;

Validation?: Validation.RecordAnnotations_Validation;
Measures?: Measures.RecordAnnotations_Measures;
Analytics?: Analytics.RecordAnnotations_Analytics;

@@ -397,2 +420,3 @@ Common?: Common.RecordAnnotations_Common;

Validation?: Validation.PropertyValueAnnotations_Validation;
Measures?: Measures.PropertyValueAnnotations_Measures;
Analytics?: Analytics.PropertyValueAnnotations_Analytics;

@@ -399,0 +423,0 @@ Common?: Common.PropertyValueAnnotations_Common;

@@ -14,3 +14,3 @@ import * as Core from "./Core";

*/
export type EntitySemantics = PropertyAnnotationValue<EntitySemanticsType>;
export type EntitySemantics = AnnotationTerm<PropertyAnnotationValue<EntitySemanticsType>>;

@@ -21,3 +21,3 @@ // Term

*/
export type DataSubjectRole = AnnotationTerm<Edm.String>;
export type DataSubjectRole = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -28,3 +28,3 @@ // Term

*/
export type DataSubjectRoleDescription = AnnotationTerm<Edm.String>;
export type DataSubjectRoleDescription = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -41,3 +41,3 @@ // Typedefinition

*/
export type FieldSemantics = PropertyAnnotationValue<FieldSemanticsType>;
export type FieldSemantics = AnnotationTerm<PropertyAnnotationValue<FieldSemanticsType>>;

@@ -54,3 +54,3 @@ // Typedefinition

*/
export type IsPotentiallyPersonal = PropertyAnnotationValue<Core.Tag>;
export type IsPotentiallyPersonal = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -61,3 +61,3 @@ // Term

*/
export type IsPotentiallySensitive = PropertyAnnotationValue<Core.Tag>;
export type IsPotentiallySensitive = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -68,3 +68,3 @@ // Term

*/
export type IsUserID = PropertyAnnotationValue<Core.Tag>;
export type IsUserID = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
export const enum PersonalDataAnnotationTerms {

@@ -71,0 +71,0 @@ EntitySemantics = "com.sap.vocabularies.PersonalData.v1.EntitySemantics",

@@ -1386,3 +1386,3 @@ import * as Core from "./Core";

*/
export type ThingPerspective = PropertyAnnotationValue<Core.Tag>;
export type ThingPerspective = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1393,3 +1393,3 @@ // Term

*/
export type IsSummary = PropertyAnnotationValue<Core.Tag>;
export type IsSummary = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1400,3 +1400,3 @@ // Term

*/
export type PartOfPreview = PropertyAnnotationValue<Core.Tag>;
export type PartOfPreview = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1407,3 +1407,3 @@ // Term

*/
export type Map = PropertyAnnotationValue<Core.Tag>;
export type Map = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1414,3 +1414,3 @@ // Term

*/
export type Gallery = PropertyAnnotationValue<Core.Tag>;
export type Gallery = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1421,3 +1421,3 @@ // Term

*/
export type IsImageURL = PropertyAnnotationValue<Core.Tag>;
export type IsImageURL = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1428,3 +1428,3 @@ // Term

*/
export type IsImage = PropertyAnnotationValue<Core.Tag>;
export type IsImage = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1435,3 +1435,3 @@ // Term

*/
export type MultiLineText = PropertyAnnotationValue<Core.Tag>;
export type MultiLineText = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1442,3 +1442,3 @@ // Term

*/
export type Placeholder = AnnotationTerm<Edm.String>;
export type Placeholder = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -1518,3 +1518,3 @@ // Term

*/
export type Hidden = PropertyAnnotationValue<Core.Tag>;
export type Hidden = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1525,3 +1525,3 @@ // Term

*/
export type CreateHidden = PropertyAnnotationValue<Core.Tag>;
export type CreateHidden = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1532,3 +1532,3 @@ // Term

*/
export type UpdateHidden = PropertyAnnotationValue<Core.Tag>;
export type UpdateHidden = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1539,3 +1539,3 @@ // Term

*/
export type DeleteHidden = PropertyAnnotationValue<Core.Tag>;
export type DeleteHidden = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1546,3 +1546,3 @@ // Term

*/
export type HiddenFilter = PropertyAnnotationValue<Core.Tag>;
export type HiddenFilter = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -1594,3 +1594,10 @@ // Term

*/
WithoutIcon = "UI.CriticalityRepresentationType/WithoutIcon"
WithoutIcon = "UI.CriticalityRepresentationType/WithoutIcon",
/**
Criticality is represented only by using an icon
*/
/**
undefined
*/
OnlyIcon = "UI.CriticalityRepresentationType/OnlyIcon"
}

@@ -1638,3 +1645,3 @@

*/
Action: Common.QualifiedName;
Action: Common.ActionOverload;

@@ -1798,3 +1805,3 @@ ActionTarget?: Edm.Action;

*/
export type RecommendationState = PropertyAnnotationValue<RecommendationStateType>;
export type RecommendationState = AnnotationTerm<PropertyAnnotationValue<RecommendationStateType>>;

@@ -1850,3 +1857,3 @@ // Typedefinition

*/
export type ExcludeFromNavigationContext = PropertyAnnotationValue<Core.Tag>;
export type ExcludeFromNavigationContext = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;
export const enum UIAnnotationTerms {

@@ -1853,0 +1860,0 @@ HeaderInfo = "com.sap.vocabularies.UI.v1.HeaderInfo",

@@ -12,3 +12,3 @@ import * as Core from "./Core";

*/
export type Pattern = AnnotationTerm<Edm.String>;
export type Pattern = AnnotationTerm<PropertyAnnotationValue<Edm.String>>;

@@ -31,3 +31,3 @@ // Term

*/
export type Exclusive = PropertyAnnotationValue<Core.Tag>;
export type Exclusive = AnnotationTerm<PropertyAnnotationValue<Core.Tag>>;

@@ -34,0 +34,0 @@ // Term

@@ -15,2 +15,9 @@ import { AnnotationList, FullyQualifiedName, SimpleIdentifier } from "./BaseEdm";

export type ComplexType = {
_type: "ComplexType";
name: SimpleIdentifier;
fullyQualifiedName: FullyQualifiedName;
properties: Property[];
};
export type ReferentialConstraint = {

@@ -23,2 +30,9 @@ sourceTypeName: FullyQualifiedName;

export type GenericNavigationProperty = {
_type: "NavigationProperty";
name: SimpleIdentifier;
fullyQualifiedName: FullyQualifiedName;
targetTypeName: FullyQualifiedName;
};
export type V2NavigationProperty = {

@@ -34,9 +48,5 @@ _type: "NavigationProperty";

export type V4NavigationProperty = {
_type: "NavigationProperty";
name: SimpleIdentifier;
fullyQualifiedName: FullyQualifiedName;
export type V4NavigationProperty = GenericNavigationProperty & {
partner: string;
isCollection: boolean;
targetTypeName: FullyQualifiedName;
containsTarget: boolean;

@@ -52,3 +62,3 @@ referentialConstraint?: ReferentialConstraint[];

keys: Property[];
navigationProperties: (V2NavigationProperty | V4NavigationProperty)[];
navigationProperties: (V2NavigationProperty | V4NavigationProperty | GenericNavigationProperty)[];
};

@@ -87,2 +97,9 @@

export type AssociationSet = {
name: SimpleIdentifier;
fullyQualifiedName: FullyQualifiedName;
association: string;
associationEnd: AssociationSetEnd[];
};
export enum Multiplicity {

@@ -101,2 +118,7 @@ One = "1",

export type AssociationSetEnd = {
entitySet: FullyQualifiedName;
role: SimpleIdentifier;
};
export type EntityContainer = {

@@ -112,2 +134,3 @@ name?: string;

entitySets: EntitySet[];
complexTypes: ComplexType[];
entityContainer: EntityContainer;

@@ -114,0 +137,0 @@ actions: Action[];

{
"name": "@sap/ux-specification",
"version": "1.76.19",
"version": "1.78.9",
"displayName": "SAP Fiori tools - Specification",

@@ -15,7 +15,7 @@ "description": "Specification for Fiori elements",

"engines": {
"node": ">=8.11.2 || 10.17.0 || >=10.19.0 || >=12.0.0",
"node": ">=8.11.2 || >=10.19.0 || >=12.0.0",
"yarn": ">=1.22.4"
},
"scripts": {
"clean": "rimraf ./dist && rimraf ./schemas",
"clean": "rimraf ./dist ./schemas",
"build": "yarn run clean && tsc --project ./tsconfig.build.json && yarn run create-json-schemas && yarn copy-json-schemas",

@@ -34,3 +34,3 @@ "create-json-schemas": "node dist/scripts/to-json-schema.js",

"iXiaSoftV4": "node dist/scripts/extractDocu.js --version=v4 --format=iXiaSoft",
"postpublish": "npm dist-tag add @sap/ux-specification@1.76.19 UI5-1.77"
"postpublish": "npm dist-tag add @sap/ux-specification@1.78.9 UI5-1.78 && npm dist-tag add @sap/ux-specification@1.78.9 UI5-1.79 && npm dist-tag add @sap/ux-specification@1.78.9 UI5-1.80 && npm dist-tag add @sap/ux-specification@1.78.9 UI5-1.81 && npm dist-tag add @sap/ux-specification@1.78.9 UI5-1.82 && npm dist-tag add @sap/ux-specification@1.78.9 UI5-1.83"
},

@@ -64,5 +64,5 @@ "publisher": "SAPSE",

"dependencies": {
"@sap-ux/annotation-converter": "0.2.6",
"@sap-ux/edmx-parser": "0.2.6",
"@sap-ux/vocabularies-types": "0.2.6",
"@sap-ux/annotation-converter": "0.2.26",
"@sap-ux/edmx-parser": "0.2.26",
"@sap-ux/vocabularies-types": "0.2.26",
"@ui5/flexibility-utils": "0.1.3",

@@ -69,0 +69,0 @@ "path": "0.12.7",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc