diff --git a/packages/builder/lib/processors/bundlers/flexChangesBundler.js b/packages/builder/lib/processors/bundlers/flexChangesBundler.js index 04827f4a7d6..65457894d56 100644 --- a/packages/builder/lib/processors/bundlers/flexChangesBundler.js +++ b/packages/builder/lib/processors/bundlers/flexChangesBundler.js @@ -18,8 +18,8 @@ import {createResource} from "@ui5/fs/resourceFactory"; * @param {@ui5/fs/Resource[]} parameters.resources List of resources to be processed * @param {object} parameters.options Options * @param {string} parameters.options.pathPrefix Prefix for bundle path - * @param {string} parameters.options.hasFlexBundleVersion true if minUI5Version >= 1.73 than - * create flexibility-bundle.json + * @param {string} parameters.options.hasFlexBundleVersion true if minUI5Version >= 1.73 + * and create flexibility-bundle.json * @param {object} [parameters.existingFlexBundle={}] Object with existing flexibility-bundle.json * to merge with new changes * @returns {Promise<@ui5/fs/Resource[]>} Promise resolving with flex changes bundle resources @@ -45,6 +45,7 @@ export default function({resources, options: {pathPrefix, hasFlexBundleVersion}, const variants = []; const variantChanges = []; const variantManagementChanges = []; + const annotationChanges = []; changesContent.forEach(function(content) { if (content.layer === "VENDOR") { @@ -74,14 +75,23 @@ export default function({resources, options: {pathPrefix, hasFlexBundleVersion}, case "ctrl_variant_management_change": variantManagementChanges.push(content); break; + case "annotation_change": + annotationChanges.push(content); + break; } }); - if (!hasFlexBundleVersion && (compVariants.length != 0 || variants.length != 0 || variantChanges.length != 0 || - variantDependentControlChanges.length != 0 || variantManagementChanges.length != 0)) { + if (!hasFlexBundleVersion && ( + compVariants.length != 0 || + variants.length != 0 || + variantChanges.length != 0 || + variantDependentControlChanges.length != 0 || + variantManagementChanges.length != 0 || + annotationChanges.length != 0 + )) { throw new Error( - "There are some control variant changes in the changes folder. This only works with a " + - "minUI5Version 1.73.0. Please update the minUI5Version in the manifest.json to 1.73.0 or higher"); + "There are some files in the changes folder working only with a ui5 version 1.73 and above. " + + "Please update the minUI5Version in the manifest.json to 1.73 or higher"); } // create changes-bundle.json if (!hasFlexBundleVersion) { @@ -89,6 +99,7 @@ export default function({resources, options: {pathPrefix, hasFlexBundleVersion}, } else { bundleName = "flexibility-bundle.json"; let newChangeFormat = { + annotationChanges, changes, compVariants, variants, diff --git a/packages/builder/lib/tasks/bundlers/generateFlexChangesBundle.js b/packages/builder/lib/tasks/bundlers/generateFlexChangesBundle.js index 8303296827a..115e7aea396 100644 --- a/packages/builder/lib/tasks/bundlers/generateFlexChangesBundle.js +++ b/packages/builder/lib/tasks/bundlers/generateFlexChangesBundle.js @@ -95,7 +95,7 @@ export default async function({workspace, taskUtil, options = {}}) { log.verbose("Collecting flexibility changes"); const allResources = await workspace.byGlob( - `${pathPrefix}/changes/*.{change,variant,ctrl_variant,ctrl_variant_change,ctrl_variant_management_change}`); + `${pathPrefix}/changes/*.{annotation_change,change,variant,ctrl_variant,ctrl_variant_change,ctrl_variant_management_change}`); let bBundleCreated = false; diff --git a/packages/builder/test/expected/build/application.j/dest-resources-json/Component-preload.js b/packages/builder/test/expected/build/application.j/dest-resources-json/Component-preload.js index be5f817d88e..70fe4834db3 100644 --- a/packages/builder/test/expected/build/application.j/dest-resources-json/Component-preload.js +++ b/packages/builder/test/expected/build/application.j/dest-resources-json/Component-preload.js @@ -2,7 +2,7 @@ sap.ui.predefine("application/j/Component", ["sap/ui/core/UIComponent"],function(n){"use strict";return n.extend("application.j.Component",{metadata:{manifest:"json"}})}); sap.ui.predefine("application/j/changes/coding/MyExtension", [],function(){return{}}); sap.ui.require.preload({ - "application/j/changes/flexibility-bundle.json":'{"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}', + "application/j/changes/flexibility-bundle.json":'{"annotationChanges":[{"fileName":"id_111","fileType":"annotation_change","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}', "application/j/changes/fragments/MyFragment.fragment.xml":'', "application/j/manifest.json":'{"_version":"1.1.0","sap.app":{"_version":"1.1.0","id":"application.j","type":"application","applicationVersion":{"version":"1.2.2"},"embeds":["embedded"],"title":"{{title}}"},"sap.ui5":{"dependencies":{"minUI5Version":"1.100.2","libs":{"sap.ui.layout":{},"sap.ui.core":{},"sap.m":{},"sap.ui.fl":{"lazy":false}}},"flexBundle":true}}' }); diff --git a/packages/builder/test/expected/build/application.j/dest-resources-json/changes/flexibility-bundle.json b/packages/builder/test/expected/build/application.j/dest-resources-json/changes/flexibility-bundle.json index d1315a19264..316fccbeae4 100644 --- a/packages/builder/test/expected/build/application.j/dest-resources-json/changes/flexibility-bundle.json +++ b/packages/builder/test/expected/build/application.j/dest-resources-json/changes/flexibility-bundle.json @@ -1 +1 @@ -{"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]} \ No newline at end of file +{"annotationChanges":[{"fileName":"id_111","fileType":"annotation_change","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]} \ No newline at end of file diff --git a/packages/builder/test/expected/build/application.j/dest-resources-json/resources.json b/packages/builder/test/expected/build/application.j/dest-resources-json/resources.json index cbca97c357f..ae0bb5ac8d8 100644 --- a/packages/builder/test/expected/build/application.j/dest-resources-json/resources.json +++ b/packages/builder/test/expected/build/application.j/dest-resources-json/resources.json @@ -17,7 +17,7 @@ { "name": "Component-preload.js", "module": "application/j/Component-preload.js", - "size": 3676, + "size": 4049, "merged": true, "required": [ "sap/m/library.js", @@ -75,7 +75,7 @@ { "name": "changes/flexibility-bundle.json", "module": "application/j/changes/flexibility-bundle.json", - "size": 2800 + "size": 3173 }, { "name": "changes/fragments/MyFragment.fragment.xml", diff --git a/packages/builder/test/expected/build/application.j/dest/Component-preload.js b/packages/builder/test/expected/build/application.j/dest/Component-preload.js index be5f817d88e..70fe4834db3 100644 --- a/packages/builder/test/expected/build/application.j/dest/Component-preload.js +++ b/packages/builder/test/expected/build/application.j/dest/Component-preload.js @@ -2,7 +2,7 @@ sap.ui.predefine("application/j/Component", ["sap/ui/core/UIComponent"],function(n){"use strict";return n.extend("application.j.Component",{metadata:{manifest:"json"}})}); sap.ui.predefine("application/j/changes/coding/MyExtension", [],function(){return{}}); sap.ui.require.preload({ - "application/j/changes/flexibility-bundle.json":'{"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}', + "application/j/changes/flexibility-bundle.json":'{"annotationChanges":[{"fileName":"id_111","fileType":"annotation_change","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}', "application/j/changes/fragments/MyFragment.fragment.xml":'', "application/j/manifest.json":'{"_version":"1.1.0","sap.app":{"_version":"1.1.0","id":"application.j","type":"application","applicationVersion":{"version":"1.2.2"},"embeds":["embedded"],"title":"{{title}}"},"sap.ui5":{"dependencies":{"minUI5Version":"1.100.2","libs":{"sap.ui.layout":{},"sap.ui.core":{},"sap.m":{},"sap.ui.fl":{"lazy":false}}},"flexBundle":true}}' }); diff --git a/packages/builder/test/expected/build/application.j/dest/changes/flexibility-bundle.json b/packages/builder/test/expected/build/application.j/dest/changes/flexibility-bundle.json index d1315a19264..316fccbeae4 100644 --- a/packages/builder/test/expected/build/application.j/dest/changes/flexibility-bundle.json +++ b/packages/builder/test/expected/build/application.j/dest/changes/flexibility-bundle.json @@ -1 +1 @@ -{"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]} \ No newline at end of file +{"annotationChanges":[{"fileName":"id_111","fileType":"annotation_change","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]} \ No newline at end of file diff --git a/packages/builder/test/fixtures/application.j/webapp/changes/id_111.annotation_change b/packages/builder/test/fixtures/application.j/webapp/changes/id_111.annotation_change new file mode 100644 index 00000000000..0367f13d0f1 --- /dev/null +++ b/packages/builder/test/fixtures/application.j/webapp/changes/id_111.annotation_change @@ -0,0 +1,19 @@ +{ + "fileName": "id_111", + "fileType": "annotation_change", + "component": "application.j.Component", + "content": {}, + "selector": { + "id": "control1" + }, + "layer": "CUSTOMER", + "texts": {}, + "namespace": "apps/application.j.Component/changes", + "creation": "2025-10-30T13:52:40.4754350Z", + "originalLanguage": "", + "conditions": {}, + "support": { + "generator": "did it", + "user": "Max Mustermann" + } +} diff --git a/packages/builder/test/lib/processors/bundlers/flexChangesBundler.js b/packages/builder/test/lib/processors/bundlers/flexChangesBundler.js index 6dd178e8627..b088162129e 100644 --- a/packages/builder/test/lib/processors/bundlers/flexChangesBundler.js +++ b/packages/builder/test/lib/processors/bundlers/flexChangesBundler.js @@ -111,7 +111,85 @@ test("flexChangesBundler with 2 changes", async (t) => { t.deepEqual(parsedContent, flexBundle, "Result must contain the content"); }); +test("includes annotation_changes in flexibility-bundle when hasFlexBundleVersion = true", async (t) => { + const change = { + "fileName": "id_annotation_change", + "fileType": "annotation_change", + "changeType": "annotationUpdate", + "reference": "test.Component", + "packageName": "$TMP", + "content": {}, + "selector": {"id": "a"}, + "layer": "CUSTOMER", + "creation": "2020-01-01T00:00:00.000Z", + "support": {"generator": "g", "service": "", "user": "", "sapui5Version": "1.75.0"} + }; + + const resources = [{ + name: "flexChange", + getBuffer: async () => JSON.stringify(change) + }]; + + const options = {pathPrefix: "/mypath", hasFlexBundleVersion: true}; + const aResult = await flexChangesBundler({resources, options}); + t.is(aResult.length, 1); + const parsed = JSON.parse(await aResult[0].getString()); + t.true(Array.isArray(parsed.annotationChanges)); + t.is(parsed.annotationChanges.length, 1, "annotation_changes should be included in flex bundle"); + // ensure the item is preserved + t.deepEqual(parsed.annotationChanges[0], change); +}); + +test("annotation_changes triggers error when hasFlexBundleVersion = false", async (t) => { + const change = { + "fileName": "id_annotation_change2", + "fileType": "annotation_change", + "changeType": "annotationUpdate", + "reference": "test.Component", + "packageName": "$TMP", + "content": {}, + "selector": {"id": "a"}, + "layer": "CUSTOMER", + "creation": "2020-01-01T00:00:00.000Z", + "support": {"generator": "g", "service": "", "user": "", "sapui5Version": "1.51.0"} + }; + + const resources = [{ + name: "flexChange", + getBuffer: async () => JSON.stringify(change) + }]; + + const options = {pathPrefix: "/mypath", hasFlexBundleVersion: false}; + await t.throwsAsync( + () => flexChangesBundler({resources, options}), + {message: /1\.73/} + ); +}); + test("flexChangesBundler has ctrl_variant and hasFlexBundleVersion = true", async (t) => { + const annotationChange = [{ + "fileName": "annotationChange", + "title": "annotaitonChange", + "variantReference": "sap.ui.demo.todo.Component", + "fileType": "annotation_change", + "component": "lrep.x.Component", + "packageName": "$TMP", + "content": {}, + "selector": { + "id": "" + }, + "layer": "VENDOR", + "texts": {}, + "namespace": "l/x/", + "creation": "20170705-12-00-00", + "originalLanguage": "EN", + "conditions": {}, + "support": { + "generator": "Change.createInitialFileContent", + "service": "", + "user": "SAP" + } + }]; const changeList = [ { "fileName": "id_1504764957630_7_rename2", @@ -341,44 +419,25 @@ test("flexChangesBundler has ctrl_variant and hasFlexBundleVersion = true", asyn }]; const resources = []; - changeList.forEach((change) => { - resources.push({ - name: "flexChange", - getBuffer: async () => JSON.stringify(change) - }); - }); - compVariants.forEach((change) => { - resources.push({ - name: "flexChange", - getBuffer: async () => JSON.stringify(change) - }); - }); - variantDependentControlChange.forEach((change) => { - resources.push({ - name: "flexChange", - getBuffer: async () => JSON.stringify(change) - }); - }); - ctrlVariantChange.forEach((change) => { - resources.push({ - name: "flexChange", - getBuffer: async () => JSON.stringify(change) - }); - }); - ctrlVariantManagementChange.forEach((change) => { - resources.push({ - name: "flexChange", - getBuffer: async () => JSON.stringify(change) - }); - }); - ctrlVariant.forEach((change) => { - resources.push({ - name: "flexChange", - getBuffer: async () => JSON.stringify(change) + [ + annotationChange, + changeList, + compVariants, + variantDependentControlChange, + ctrlVariantChange, + ctrlVariantManagementChange, + ctrlVariant + ].forEach((entities) => { + entities.forEach((change) => { + resources.push({ + name: "flexChange", + getBuffer: async () => JSON.stringify(change) + }); }); }); const flexBundle = { + "annotationChanges": annotationChange, "changes": changeList, "compVariants": compVariants, "variantChanges": ctrlVariantChange, @@ -488,9 +547,8 @@ test("flexChangesBundler has ctrl_variant and hasFlexBundleVersion = false", asy }; const error = await t.throwsAsync(flexChangesBundler({resources, options})); - t.deepEqual(error.message, "There are some control variant changes in the changes folder. " + - "This only works with a minUI5Version 1.73.0. Please update the minUI5Version in the manifest.json " + - "to 1.73.0 or higher", "Correct exception thrown"); + t.deepEqual(error.message, "There are some files in the changes folder working only with a ui5 version 1.73 and above. " + + "Please update the minUI5Version in the manifest.json to 1.73 or higher", "Correct exception thrown"); }); test("flexChangesBundler with existing flexibility-bundle.json", async (t) => { @@ -914,6 +972,7 @@ test("flexChangesBundler with existing flexibility-bundle.json", async (t) => { }); const existingFlexBundle = { + "annotationChanges": [], "changes": existingChangeList, "compVariants": existingCompVariants, "variantChanges": existingCtrlVariantChange, @@ -922,6 +981,7 @@ test("flexChangesBundler with existing flexibility-bundle.json", async (t) => { "variants": existingCtrlVariant }; const flexBundle = { + "annotationChanges": [], "changes": existingChangeList.concat(changeList), "compVariants": existingCompVariants.concat(compVariants), "variantChanges": existingCtrlVariantChange.concat(ctrlVariantChange), @@ -1218,11 +1278,13 @@ test("flexChangesBundler with existing flexibility-bundle.json and missing/wrong }); const existingFlexBundle = { + "annotationChanges": [], "changes": existingChangeList, "compVariants": "test", "test_property": [] }; const flexBundle = { + "annotationChanges": [], "changes": existingChangeList.concat(changeList), "compVariants": compVariants, "variantChanges": ctrlVariantChange, diff --git a/packages/builder/test/lib/tasks/bundlers/generateFlexChangesBundle.js b/packages/builder/test/lib/tasks/bundlers/generateFlexChangesBundle.js index e80f090f4ca..0f08f4d53d6 100644 --- a/packages/builder/test/lib/tasks/bundlers/generateFlexChangesBundle.js +++ b/packages/builder/test/lib/tasks/bundlers/generateFlexChangesBundle.js @@ -123,6 +123,7 @@ function createPlaceholderWorkspace(changes, manifest, flexBundle) { }; const flexBundle = { + "annotationChanges": [], "changes": existingChangeList, "compVariants": [], "variantChanges": [], @@ -132,6 +133,7 @@ function createPlaceholderWorkspace(changes, manifest, flexBundle) { }; const flexBundleMerge = { + "annotationChanges": [], "changes": existingChangeList.concat(changeList), "compVariants": [], "variantChanges": [],