├── test ├── fixtures │ ├── glob │ │ ├── package.json │ │ ├── application.a │ │ │ ├── package.json │ │ │ ├── webapp │ │ │ │ ├── test.js │ │ │ │ └── index.html │ │ │ └── ui5.yaml │ │ └── application.b │ │ │ ├── package.json │ │ │ ├── webapp │ │ │ ├── manifest.json │ │ │ ├── i18n.properties │ │ │ ├── embedded │ │ │ │ ├── manifest.json │ │ │ │ ├── i18n_fr.properties │ │ │ │ └── i18n │ │ │ │ │ ├── i18n.properties │ │ │ │ │ └── i18n_de.properties │ │ │ └── i18n │ │ │ │ ├── i18n.properties │ │ │ │ ├── i18n_de.properties │ │ │ │ └── l10n.properties │ │ │ └── ui5.yaml │ ├── init-library │ │ ├── src │ │ │ └── .gitkeep │ │ ├── test │ │ │ └── .gitkeep │ │ └── package.json │ ├── application.a │ │ ├── ui5-test-empty.yaml │ │ ├── ui5-test-corrupt.yaml │ │ ├── task.a.js │ │ ├── middleware.a.js │ │ ├── node_modules │ │ │ ├── library.d │ │ │ │ ├── main │ │ │ │ │ ├── test │ │ │ │ │ │ └── library │ │ │ │ │ │ │ └── d │ │ │ │ │ │ │ └── Test.html │ │ │ │ │ └── src │ │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ ├── some.js │ │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ │ └── collection │ │ │ │ ├── library.a │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── a │ │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── src │ │ │ │ │ └── library │ │ │ │ │ │ └── a │ │ │ │ │ │ ├── themes │ │ │ │ │ │ └── base │ │ │ │ │ │ │ └── library.source.less │ │ │ │ │ │ └── .library │ │ │ │ └── package.json │ │ │ │ ├── library.b │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── b │ │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── b │ │ │ │ │ └── .library │ │ │ │ ├── library.c │ │ │ │ ├── test │ │ │ │ │ └── LibraryC │ │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── c │ │ │ │ │ └── .library │ │ │ │ ├── node_modules │ │ │ │ └── library.d │ │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ │ ├── ui5.yaml │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ ├── webapp │ │ │ ├── test.js │ │ │ ├── index.html │ │ │ └── manifest.json │ │ ├── ui5-test-error.yaml │ │ ├── ui5-test-configPath.yaml │ │ └── package.json │ ├── init-application │ │ ├── webapp │ │ │ └── .gitkeep │ │ └── package.json │ ├── library.e │ │ ├── test │ │ │ └── library │ │ │ │ └── e │ │ │ │ └── Test.html │ │ ├── node_modules │ │ │ └── library.d │ │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── d │ │ │ │ └── .library │ │ ├── src │ │ │ └── library │ │ │ │ └── e │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ ├── ui5.yaml │ │ ├── package.json │ │ └── ui5-workspace.yaml │ ├── library.h │ │ ├── empty-ui5-workspace.yaml │ │ ├── corrupt-ui5-workspace.yaml │ │ ├── src │ │ │ ├── some.js │ │ │ ├── .library │ │ │ └── manifest.json │ │ ├── ui5.yaml │ │ ├── invalid-ui5-workspace.yaml │ │ ├── ui5-workspace.yaml │ │ └── custom-ui5-workspace.yaml │ ├── fsInterface │ │ └── foo.txt │ ├── init-invalid-webapp-src │ │ ├── src │ │ │ └── .gitkeep │ │ ├── webapp │ │ │ └── .gitkeep │ │ └── package.json │ ├── library.d │ │ ├── main │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ └── Test.html │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── d │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ ├── ui5.yaml │ │ └── package.json │ ├── collection │ │ ├── library.c │ │ │ ├── test │ │ │ │ └── LibraryC │ │ │ │ │ └── Test.html │ │ │ ├── ui5.yaml │ │ │ ├── package.json │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── c │ │ │ │ └── .library │ │ ├── library.a │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── a │ │ │ │ │ └── Test.html │ │ │ ├── ui5.yaml │ │ │ ├── src │ │ │ │ └── library │ │ │ │ │ └── a │ │ │ │ │ ├── themes │ │ │ │ │ └── base │ │ │ │ │ │ └── library.source.less │ │ │ │ │ └── .library │ │ │ └── package.json │ │ ├── library.b │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── b │ │ │ │ │ └── Test.html │ │ │ ├── ui5.yaml │ │ │ ├── package.json │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── b │ │ │ │ └── .library │ │ ├── node_modules │ │ │ └── library.d │ │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── d │ │ │ │ └── .library │ │ ├── test.js │ │ └── package.json │ ├── init-invalid-no-package-json │ │ └── webapp │ │ │ └── .gitkeep │ ├── collection.b │ │ ├── library.a │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── a │ │ │ │ │ └── Test.html │ │ │ ├── ui5.yaml │ │ │ ├── src │ │ │ │ └── library │ │ │ │ │ └── a │ │ │ │ │ ├── themes │ │ │ │ │ └── base │ │ │ │ │ │ └── library.source.less │ │ │ │ │ └── .library │ │ │ └── package.json │ │ ├── library.b │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── b │ │ │ │ │ └── Test.html │ │ │ ├── ui5.yaml │ │ │ ├── package.json │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── b │ │ │ │ └── .library │ │ ├── library.c │ │ │ ├── test │ │ │ │ └── LibraryC │ │ │ │ │ └── Test.html │ │ │ ├── ui5.yaml │ │ │ ├── package.json │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── c │ │ │ │ └── .library │ │ ├── test.js │ │ ├── sub-empty │ │ │ └── .keep │ │ ├── sub-collection │ │ │ └── package.json │ │ └── package.json │ ├── legacy.library.a │ │ ├── test │ │ │ └── legacy │ │ │ │ └── library │ │ │ │ └── a │ │ │ │ └── Test.html │ │ ├── src │ │ │ └── legacy │ │ │ │ └── library │ │ │ │ └── a │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ ├── node_modules │ │ │ └── library.f │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ └── package.json │ ├── legacy.library.b │ │ ├── test │ │ │ └── legacy │ │ │ │ └── library │ │ │ │ └── b │ │ │ │ └── Test.html │ │ ├── src │ │ │ └── legacy │ │ │ │ └── library │ │ │ │ └── b │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ ├── node_modules │ │ │ └── library.f │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ └── package.json │ ├── library.d-adtl-deps │ │ ├── main │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ └── Test.html │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── d │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ ├── node_modules │ │ │ ├── library.f │ │ │ │ ├── src │ │ │ │ │ └── library │ │ │ │ │ │ └── f │ │ │ │ │ │ ├── some.js │ │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ │ └── library.g │ │ │ │ ├── src │ │ │ │ └── library │ │ │ │ │ └── g │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ └── package.json │ ├── library.d-depender │ │ ├── main │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ └── Test.html │ │ │ └── src │ │ │ │ └── library │ │ │ │ └── d │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ ├── node_modules │ │ │ └── library.d │ │ │ │ ├── main │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ └── package.json │ ├── theme.library.e │ │ ├── test │ │ │ └── theme │ │ │ │ └── library │ │ │ │ └── e │ │ │ │ └── Test.html │ │ ├── src │ │ │ └── theme │ │ │ │ └── library │ │ │ │ └── e │ │ │ │ └── themes │ │ │ │ └── my_theme │ │ │ │ ├── library.source.less │ │ │ │ ├── .theme │ │ │ │ └── .theming │ │ └── ui5.yaml │ ├── application.b │ │ ├── webapp │ │ │ ├── i18n.properties │ │ │ ├── i18n │ │ │ │ ├── i18n.properties │ │ │ │ ├── i18n_de.properties │ │ │ │ └── l10n.properties │ │ │ ├── embedded │ │ │ │ ├── i18n │ │ │ │ │ ├── i18n.properties │ │ │ │ │ └── i18n_de.properties │ │ │ │ ├── i18n_fr.properties │ │ │ │ └── manifest.json │ │ │ └── manifest.json │ │ ├── node_modules │ │ │ ├── library.d │ │ │ │ ├── main │ │ │ │ │ ├── test │ │ │ │ │ │ └── library │ │ │ │ │ │ │ └── d │ │ │ │ │ │ │ └── Test.html │ │ │ │ │ └── src │ │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ ├── some.js │ │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ │ └── collection │ │ │ │ ├── library.a │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── a │ │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── src │ │ │ │ │ └── library │ │ │ │ │ │ └── a │ │ │ │ │ │ ├── themes │ │ │ │ │ │ └── base │ │ │ │ │ │ │ └── library.source.less │ │ │ │ │ │ └── .library │ │ │ │ └── package.json │ │ │ │ ├── library.b │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── b │ │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── b │ │ │ │ │ └── .library │ │ │ │ ├── library.c │ │ │ │ ├── test │ │ │ │ │ └── LibraryC │ │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── c │ │ │ │ │ └── .library │ │ │ │ ├── node_modules │ │ │ │ └── library.d │ │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ │ ├── ui5.yaml │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ └── .library │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ └── package.json │ ├── build-manifest │ │ ├── library.e │ │ │ ├── test-resources │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ └── Test.html │ │ │ ├── resources │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ ├── package.json │ │ │ └── .ui5 │ │ │ │ └── build-manifest.json │ │ └── application.a │ │ │ ├── resources │ │ │ └── id1 │ │ │ │ ├── test.js │ │ │ │ ├── test-dbg.js │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ ├── package.json │ │ │ └── .ui5 │ │ │ └── build-manifest.json │ ├── module.a │ │ ├── dev │ │ │ └── devTools.js │ │ ├── dist │ │ │ └── index.js │ │ └── ui5.yaml │ ├── application.c │ │ ├── node_modules │ │ │ ├── library.e │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── e │ │ │ │ │ │ └── Test.html │ │ │ │ ├── node_modules │ │ │ │ │ └── library.d │ │ │ │ │ │ ├── test │ │ │ │ │ │ └── library │ │ │ │ │ │ │ └── d │ │ │ │ │ │ │ └── Test.html │ │ │ │ │ │ ├── ui5.yaml │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src │ │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── .library │ │ │ │ ├── package.json │ │ │ │ ├── ui5.yaml │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ └── .library │ │ │ └── library.d │ │ │ │ ├── main │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ ├── src │ │ │ └── manifest.json │ │ └── package.json │ ├── application.c2 │ │ ├── node_modules │ │ │ ├── library.e │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── e │ │ │ │ │ │ └── Test.html │ │ │ │ ├── node_modules │ │ │ │ │ └── library.d │ │ │ │ │ │ ├── test │ │ │ │ │ │ └── library │ │ │ │ │ │ │ └── d │ │ │ │ │ │ │ └── Test.html │ │ │ │ │ │ ├── ui5.yaml │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src │ │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── .library │ │ │ │ ├── package.json │ │ │ │ ├── ui5.yaml │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ └── .library │ │ │ └── library.d-depender │ │ │ │ ├── main │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ │ ├── node_modules │ │ │ │ └── library.d │ │ │ │ │ ├── main │ │ │ │ │ ├── test │ │ │ │ │ │ └── library │ │ │ │ │ │ │ └── d │ │ │ │ │ │ │ └── Test.html │ │ │ │ │ └── src │ │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ ├── some.js │ │ │ │ │ │ └── .library │ │ │ │ │ ├── ui5.yaml │ │ │ │ │ └── package.json │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ ├── src │ │ │ └── manifest.json │ │ └── package.json │ ├── application.c3 │ │ ├── node_modules │ │ │ ├── library.e │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── e │ │ │ │ │ │ └── Test.html │ │ │ │ ├── package.json │ │ │ │ ├── ui5.yaml │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ └── .library │ │ │ ├── library.d │ │ │ │ ├── main │ │ │ │ │ ├── test │ │ │ │ │ │ └── library │ │ │ │ │ │ │ └── d │ │ │ │ │ │ │ └── Test.html │ │ │ │ │ └── src │ │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ ├── some.js │ │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ │ └── library.d-depender │ │ │ │ ├── main │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d-depender │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ ├── src │ │ │ └── manifest.json │ │ └── package.json │ ├── application.d │ │ ├── node_modules │ │ │ └── library.e │ │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ └── Test.html │ │ │ │ ├── node_modules │ │ │ │ └── library.d │ │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ │ ├── ui5.yaml │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ └── .library │ │ │ │ ├── src │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ ├── webapp │ │ │ └── manifest.json │ │ └── package.json │ ├── application.e │ │ ├── node_modules │ │ │ └── library.e │ │ │ │ ├── test │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ └── Test.html │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ └── .library │ │ │ │ └── ui5.yaml │ │ ├── ui5.yaml │ │ ├── webapp │ │ │ └── manifest.json │ │ └── package.json │ ├── application.f │ │ ├── node_modules │ │ │ ├── library.e │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── e │ │ │ │ │ │ └── Test.html │ │ │ │ ├── ui5.yaml │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── e │ │ │ │ │ └── .library │ │ │ └── library.d │ │ │ │ ├── main │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ ├── webapp │ │ │ └── manifest.json │ │ └── package.json │ ├── application.g │ │ ├── node_modules │ │ │ └── library.d │ │ │ │ ├── main │ │ │ │ ├── test │ │ │ │ │ └── library │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ └── src │ │ │ │ │ └── library │ │ │ │ │ └── d │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ ├── ui5.yaml │ │ ├── webapp │ │ │ └── manifest.json │ │ └── package.json │ ├── legacy.collection.a │ │ └── src │ │ │ ├── legacy.library.x │ │ │ ├── test │ │ │ │ └── legacy │ │ │ │ │ └── library │ │ │ │ │ └── x │ │ │ │ │ └── Test.html │ │ │ ├── src │ │ │ │ └── legacy │ │ │ │ │ └── library │ │ │ │ │ └── x │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ ├── node_modules │ │ │ │ └── library.f │ │ │ │ │ ├── ui5.yaml │ │ │ │ │ └── package.json │ │ │ └── package.json │ │ │ └── legacy.library.y │ │ │ ├── test │ │ │ └── legacy │ │ │ │ └── library │ │ │ │ └── y │ │ │ │ └── Test.html │ │ │ ├── src │ │ │ └── legacy │ │ │ │ └── library │ │ │ │ └── y │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ │ ├── node_modules │ │ │ └── library.f │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ │ └── package.json │ ├── cyclic-deps │ │ └── node_modules │ │ │ └── @ui5-internal │ │ │ ├── library.cycle.a │ │ │ ├── test │ │ │ │ └── cycle │ │ │ │ │ └── a │ │ │ │ │ └── Test.html │ │ │ ├── .npmrc │ │ │ ├── src │ │ │ │ └── cycle │ │ │ │ │ └── a │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── library.cycle.b │ │ │ ├── test │ │ │ │ └── cycle │ │ │ │ │ └── b │ │ │ │ │ └── Test.html │ │ │ ├── .npmrc │ │ │ ├── src │ │ │ │ └── cycle │ │ │ │ │ └── b │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── library.cycle.c │ │ │ ├── test │ │ │ │ └── cycle │ │ │ │ │ └── c │ │ │ │ │ └── Test.html │ │ │ ├── node_modules │ │ │ │ └── @ui5-internal │ │ │ │ │ └── library.cycle.d │ │ │ │ │ ├── test │ │ │ │ │ └── cycle │ │ │ │ │ │ └── d │ │ │ │ │ │ └── Test.html │ │ │ │ │ ├── .npmrc │ │ │ │ │ ├── src │ │ │ │ │ └── cycle │ │ │ │ │ │ └── d │ │ │ │ │ │ ├── some.js │ │ │ │ │ │ └── .library │ │ │ │ │ ├── ui5.yaml │ │ │ │ │ └── package.json │ │ │ ├── .npmrc │ │ │ ├── src │ │ │ │ └── cycle │ │ │ │ │ └── c │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── library.cycle.d │ │ │ ├── test │ │ │ │ └── cycle │ │ │ │ │ └── d │ │ │ │ │ └── Test.html │ │ │ ├── .npmrc │ │ │ ├── src │ │ │ │ └── cycle │ │ │ │ │ └── d │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── library.cycle.e │ │ │ ├── test │ │ │ │ └── cycle │ │ │ │ │ └── e │ │ │ │ │ └── Test.html │ │ │ ├── .npmrc │ │ │ ├── src │ │ │ │ └── cycle │ │ │ │ │ └── e │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── component.cycle.a │ │ │ ├── test │ │ │ │ └── component │ │ │ │ │ └── cycle │ │ │ │ │ └── a │ │ │ │ │ └── Test.html │ │ │ ├── .npmrc │ │ │ ├── src │ │ │ │ └── component │ │ │ │ │ └── cycle │ │ │ │ │ └── a │ │ │ │ │ ├── some.js │ │ │ │ │ └── .library │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.g │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.a │ │ │ ├── .npmrc │ │ │ └── package.json │ │ │ ├── module.b │ │ │ ├── .npmrc │ │ │ └── package.json │ │ │ ├── module.c │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.d │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.e │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.f │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.h │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.i │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.j │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.k │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.l │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── module.m │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ └── package.json │ │ │ ├── application.cycle.a │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ ├── webapp │ │ │ │ ├── test.js │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ └── package.json │ │ │ ├── application.cycle.b │ │ │ ├── .npmrc │ │ │ ├── webapp │ │ │ │ ├── test.js │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ ├── package.json │ │ │ └── ui5.yaml │ │ │ ├── application.cycle.c │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ ├── webapp │ │ │ │ ├── test.js │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ └── package.json │ │ │ ├── application.cycle.d │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ ├── webapp │ │ │ │ ├── test.js │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ └── package.json │ │ │ ├── application.cycle.e │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ ├── webapp │ │ │ │ ├── test.js │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ └── package.json │ │ │ └── application.cycle.f │ │ │ ├── .npmrc │ │ │ ├── ui5.yaml │ │ │ ├── webapp │ │ │ ├── test.js │ │ │ ├── index.html │ │ │ └── manifest.json │ │ │ └── package.json │ ├── lbt │ │ └── modules │ │ │ ├── not_a_module.js │ │ │ ├── define_toplevel_unnamed.js │ │ │ ├── define_toplevel_named.js │ │ │ ├── declare_toplevel.js │ │ │ └── declare_function_invocation_scope.js │ ├── extension.a.esm │ │ ├── package.json │ │ └── lib │ │ │ └── extensionModule.js │ ├── extension.a │ │ ├── package.json │ │ ├── lib │ │ │ └── extensionModule.js │ │ └── ui5.yaml │ ├── library.f │ │ ├── src │ │ │ └── library │ │ │ │ └── f │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ ├── ui5.yaml │ │ ├── node_modules │ │ │ └── library.g │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ └── package.json │ ├── library.g │ │ ├── src │ │ │ └── library │ │ │ │ └── g │ │ │ │ ├── some.js │ │ │ │ └── .library │ │ ├── ui5.yaml │ │ ├── node_modules │ │ │ └── library.f │ │ │ │ ├── ui5.yaml │ │ │ │ └── package.json │ │ └── package.json │ ├── err.application.a │ │ ├── ui5.yaml │ │ ├── webapp │ │ │ ├── test.js │ │ │ ├── index.html │ │ │ └── manifest.json │ │ └── package.json │ ├── application.a.aliases │ │ ├── webapp │ │ │ ├── test.js │ │ │ ├── index.html │ │ │ └── manifest.json │ │ ├── node_modules │ │ │ └── extension.a.esm.alias │ │ │ │ ├── package.json │ │ │ │ └── lib │ │ │ │ └── extensionModule.js │ │ ├── package.json │ │ └── ui5.yaml │ └── application.h │ │ ├── webapp │ │ ├── sectionsA │ │ │ ├── section1.js │ │ │ ├── section2.js │ │ │ └── section3.js │ │ ├── sectionsB │ │ │ ├── section1.js │ │ │ ├── section2.js │ │ │ └── section3.js │ │ ├── Component.js │ │ └── manifest.json │ │ ├── projectDependencies-missing-id.yaml │ │ ├── projectDependencies-missing-path.yaml │ │ ├── projectDependencies-missing-version.yaml │ │ ├── projectDependencies.yaml │ │ ├── webapp-properties.appId │ │ └── manifest.json │ │ ├── webapp-project.artifactId │ │ └── manifest.json │ │ ├── webapp-properties.componentName │ │ └── manifest.json │ │ └── pom.xml └── lib │ ├── build │ └── definitions │ │ ├── module.js │ │ └── utils.js │ ├── ui5framework │ └── AbstractInstaller.js │ ├── utils │ └── fs.js │ └── graph │ ├── graphFromPackageDependencies.js │ └── providers │ └── NodePackageDependencies.js ├── .github ├── in-solidarity.yml ├── ISSUE_TEMPLATE.md ├── ISSUE_TEMPLATE │ └── config.yml ├── workflows │ ├── reuse-compliance.yml │ ├── github-ci.yml │ └── dependabot-auto-merge.yml ├── dependabot.yml └── PULL_REQUEST_TEMPLATE.md ├── .npmrc ├── CONTRIBUTING.md ├── .gitattributes ├── docs ├── BuildExtensibility.md └── Configuration.md ├── eslint.config.js ├── lib ├── utils │ └── fs.js ├── build │ ├── definitions │ │ ├── module.js │ │ ├── _utils.js │ │ └── themeLibrary.js │ └── helpers │ │ └── ProjectBuilderOutputStyle.js ├── ui5Framework │ └── maven │ │ └── CacheMode.js ├── validation │ └── schema │ │ ├── specVersion │ │ └── specVersion.json │ │ └── ui5.json └── specifications │ ├── extensions │ ├── ServerMiddleware.js │ ├── Task.js │ └── ProjectShim.js │ └── Extension.js ├── jsdoc-plugin.cjs ├── .editorconfig ├── .chglog ├── config.yml ├── RELEASE.tpl.md └── release-config.yml ├── .gitignore └── jsdoc.json /test/fixtures/glob/package.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/init-library/src/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/init-library/test/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.a/ui5-test-empty.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.a/package.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.a/webapp/test.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/package.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/init-application/webapp/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.e/test/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.h/empty-ui5-workspace.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/fsInterface/foo.txt: -------------------------------------------------------------------------------- 1 | content of /foo.txt -------------------------------------------------------------------------------- /test/fixtures/glob/application.a/webapp/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/init-invalid-webapp-src/src/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/init-invalid-webapp-src/webapp/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/in-solidarity.yml: -------------------------------------------------------------------------------- 1 | _extends: ietf/terminology 2 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.c/test/LibraryC/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/i18n.properties: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/init-invalid-no-package-json/webapp/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.a/test/library/a/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.b/test/library/b/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.c/test/LibraryC/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.a/test/library/a/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.b/test/library/b/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/embedded/manifest.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/i18n/i18n.properties: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/i18n/i18n_de.properties: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/i18n/l10n.properties: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.a/test/legacy/library/a/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.b/test/legacy/library/b/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/theme.library.e/test/theme/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.a/ui5-test-corrupt.yaml: -------------------------------------------------------------------------------- 1 | |-\nfoo\nbar 2 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/embedded/i18n_fr.properties: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.h/corrupt-ui5-workspace.yaml: -------------------------------------------------------------------------------- 1 | |-\nfoo\nbar 2 | -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/i18n.properties: -------------------------------------------------------------------------------- 1 | title=app-i18n-wrong -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/i18n/i18n.properties: -------------------------------------------------------------------------------- 1 | title=app-i18n -------------------------------------------------------------------------------- /test/fixtures/build-manifest/library.e/test-resources/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/collection/node_modules/library.d/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/embedded/i18n/i18n.properties: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/webapp/embedded/i18n/i18n_de.properties: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.e/node_modules/library.d/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/module.a/dev/devTools.js: -------------------------------------------------------------------------------- 1 | console.log("dev dev dev"); 2 | -------------------------------------------------------------------------------- /test/fixtures/module.a/dist/index.js: -------------------------------------------------------------------------------- 1 | console.log("Hello World!"); 2 | -------------------------------------------------------------------------------- /test/fixtures/application.a/task.a.js: -------------------------------------------------------------------------------- 1 | module.exports = function () {}; 2 | -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/i18n/i18n_de.properties: -------------------------------------------------------------------------------- 1 | title=app-i18n_de -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/i18n/l10n.properties: -------------------------------------------------------------------------------- 1 | title=app-i18n-wrong -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.e/test/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.e/test/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.e/test/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/test/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.e/node_modules/library.e/test/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.e/test/library/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.a/middleware.a.js: -------------------------------------------------------------------------------- 1 | module.exports = function () {}; 2 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/embedded/i18n/i18n.properties: -------------------------------------------------------------------------------- 1 | title=embedded-i18n -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.g/node_modules/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.a/test/library/a/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.b/test/library/b/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.c/test/LibraryC/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.a/test/library/a/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.b/test/library/b/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.c/test/LibraryC/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.x/test/legacy/library/x/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.y/test/legacy/library/y/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/node_modules/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/embedded/i18n/i18n_de.properties: -------------------------------------------------------------------------------- 1 | title=embedded-i18n_de -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/embedded/i18n_fr.properties: -------------------------------------------------------------------------------- 1 | title=embedded-i18n_fr-wrong -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d-depender/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.a/test/cycle/a/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.b/test/cycle/b/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/test/cycle/c/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.d/test/cycle/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.e/test/cycle/e/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.e/node_modules/library.d/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/node_modules/library.d/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/lbt/modules/not_a_module.js: -------------------------------------------------------------------------------- 1 | // this file does not contain a UI5 module definition -------------------------------------------------------------------------------- /test/fixtures/library.h/src/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/node_modules/library.d/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/node_modules/library.d/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.e/node_modules/library.d/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/component.cycle.a/test/component/cycle/a/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.g/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ -------------------------------------------------------------------------------- /test/fixtures/library.e/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: library.d 3 | type: library 4 | -------------------------------------------------------------------------------- /test/fixtures/extension.a.esm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extension.a", 3 | "type": "module" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/extension.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extension.a", 3 | "version": "1.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/library.e/src/library/e/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/library.f/src/library/f/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/library.g/src/library/g/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/node_modules/library.d/main/test/library/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/library.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.f 6 | -------------------------------------------------------------------------------- /test/fixtures/library.g/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.g 6 | -------------------------------------------------------------------------------- /test/fixtures/library.h/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.6" 3 | type: library 4 | metadata: 5 | name: library.h 6 | -------------------------------------------------------------------------------- /test/fixtures/module.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.6" 3 | type: module 4 | metadata: 5 | name: module.a 6 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | # Enforce public npm registry 2 | registry=https://registry.npmjs.org/ 3 | lockfile-version=3 4 | ignore-scripts=true -------------------------------------------------------------------------------- /test/fixtures/legacy.library.a/src/legacy/library/a/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/legacy.library.b/src/legacy/library/b/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.e/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: library.d 3 | type: library 4 | -------------------------------------------------------------------------------- /test/fixtures/build-manifest/library.e/resources/library/e/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/collection/library.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.a 6 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.b/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.b 6 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.c/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.c 6 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); 5 | -------------------------------------------------------------------------------- /test/fixtures/application.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.a 6 | -------------------------------------------------------------------------------- /test/fixtures/application.b/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.b 6 | -------------------------------------------------------------------------------- /test/fixtures/application.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.d 6 | -------------------------------------------------------------------------------- /test/fixtures/application.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.e 6 | -------------------------------------------------------------------------------- /test/fixtures/application.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.f 6 | -------------------------------------------------------------------------------- /test/fixtures/application.g/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.g 6 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.a 6 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.b/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.b 6 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.c/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.c 6 | -------------------------------------------------------------------------------- /test/fixtures/err.application.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: err.app.a 6 | -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/src/library/e/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/node_modules/@ui5-internal/library.cycle.d/test/cycle/d/Test.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.a 6 | -------------------------------------------------------------------------------- /test/fixtures/glob/application.b/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.b 6 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.g/node_modules/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.a/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.b/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.c/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.d/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.e/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.f/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.h/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.i/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.j/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.k/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.l/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.m/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/node_modules/library.f/src/library/f/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/node_modules/library.g/src/library/g/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/library.f/node_modules/library.g/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.g 6 | -------------------------------------------------------------------------------- /test/fixtures/library.g/node_modules/library.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.f 6 | -------------------------------------------------------------------------------- /test/fixtures/application.a/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/test.js: -------------------------------------------------------------------------------- 1 | import {globby} from 'globby'; 2 | 3 | const paths = await globby(["library.a"]); 4 | console.log("paths") 5 | -------------------------------------------------------------------------------- /test/fixtures/collection/test.js: -------------------------------------------------------------------------------- 1 | import {globby} from 'globby'; 2 | 3 | const paths = await globby(["library.a"]); 4 | console.log("paths") 5 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.a/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.b/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.d/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.e/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.x/src/legacy/library/x/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.y/src/legacy/library/y/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/legacy.library.a/node_modules/library.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.f 6 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.b/node_modules/library.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.f 6 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/node_modules/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.a/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.b/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.c/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.d/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.e/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.f/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/component.cycle.a/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.a/src/cycle/a/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.b/src/cycle/b/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/src/cycle/c/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.d/src/cycle/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.e/src/cycle/e/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.c/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.c 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.d 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.e 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.f 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.g/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.g 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.h/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.h 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.i/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.i 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.j/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.j 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.k/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.k 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.l/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.l 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.m/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: module 4 | metadata: 5 | name: module.m 6 | -------------------------------------------------------------------------------- /test/fixtures/err.application.a/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/node_modules/library.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.f 6 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/node_modules/library.g/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.g 6 | -------------------------------------------------------------------------------- /test/fixtures/application.a.aliases/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.a 6 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.b/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.b 6 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.c/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.c 6 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.a 6 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.b/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.b 6 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.c/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.c 6 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d-depender/main/src/library/d-depender/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to the UI5 CLI 2 | 3 | See CONTRIBUTING.md in the [UI5/cli](https://github.com/UI5/cli/blob/v4/CONTRIBUTING.md) repository. 4 | -------------------------------------------------------------------------------- /test/fixtures/application.a/ui5-test-error.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.a 6 | xyz: 7 | foo: true -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp/sectionsA/section1.js: -------------------------------------------------------------------------------- 1 | sap.ui.define(["sap/m/Button"], function(Button) { 2 | console.log("Section 1 included"); 3 | }); 4 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp/sectionsA/section2.js: -------------------------------------------------------------------------------- 1 | sap.ui.define(["sap/m/Button"], function(Button) { 2 | console.log("Section 2 included"); 3 | }); 4 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp/sectionsA/section3.js: -------------------------------------------------------------------------------- 1 | sap.ui.define(["sap/m/Button"], function(Button) { 2 | console.log("Section 3 included"); 3 | }); 4 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp/sectionsB/section1.js: -------------------------------------------------------------------------------- 1 | sap.ui.define(["sap/m/Button"], function(Button) { 2 | console.log("Section 1 included"); 3 | }); 4 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp/sectionsB/section2.js: -------------------------------------------------------------------------------- 1 | sap.ui.define(["sap/m/Button"], function(Button) { 2 | console.log("Section 2 included"); 3 | }); 4 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp/sectionsB/section3.js: -------------------------------------------------------------------------------- 1 | sap.ui.define(["sap/m/Button"], function(Button) { 2 | console.log("Section 3 included"); 3 | }); 4 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/component.cycle.a/src/component/cycle/a/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/application.a/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application A 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.e/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | -------------------------------------------------------------------------------- /test/fixtures/build-manifest/application.a/resources/id1/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/application.a.aliases/node_modules/extension.a.esm.alias/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extension.a", 3 | "type": "module", 4 | "version": "1.0.0" 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/node_modules/library.d/main/src/library/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/build-manifest/application.a/resources/id1/test-dbg.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.x/node_modules/library.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.f 6 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.y/node_modules/library.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.f 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.cycle.a 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.c/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.cycle.c 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.cycle.d 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.cycle.e 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.f/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.cycle.f 6 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | build/** -linguist-generated=false 3 | lib/build/** linguist-generated=false 4 | lib/** linguist-vendored=false 5 | lib/** linguist-generated=false -------------------------------------------------------------------------------- /test/fixtures/extension.a/lib/extensionModule.js: -------------------------------------------------------------------------------- 1 | module.exports = () => "extension module"; 2 | module.exports.determineRequiredDependencies = () => "required dependencies function"; 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## 🚨 Issues Have Been Transferred to UI5 CLI Repository 2 | 3 | Please create new issues in the UI5 CLI repository: https://github.com/UI5/cli/issues/new/choose 4 | -------------------------------------------------------------------------------- /test/fixtures/application.a.aliases/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application A 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/application.a/ui5-test-configPath.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.a 6 | customConfiguration: 7 | configPathTest: true -------------------------------------------------------------------------------- /test/fixtures/build-manifest/application.a/resources/id1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application A 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.a/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.b/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.c/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.d/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.e/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.f/webapp/test.js: -------------------------------------------------------------------------------- 1 | function test(paramA) { 2 | var variableA = paramA; 3 | console.log(variableA); 4 | } 5 | test(); 6 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/node_modules/@ui5-internal/library.cycle.d/.npmrc: -------------------------------------------------------------------------------- 1 | registry=http://127.0.0.1:99999/ 2 | ignore-scripts=true 3 | offline=true -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/node_modules/@ui5-internal/library.cycle.d/src/cycle/d/some.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | console.log('HelloWorld'); -------------------------------------------------------------------------------- /test/fixtures/err.application.a/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Error Application A 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/extension.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.0" 3 | kind: extension 4 | type: task 5 | metadata: 6 | name: extension.a-ui5-yaml 7 | task: 8 | path: lib/extensionModule.js 9 | -------------------------------------------------------------------------------- /test/fixtures/lbt/modules/define_toplevel_unnamed.js: -------------------------------------------------------------------------------- 1 | //declares module sap.ui.testmodule 2 | sap.ui.define(["define/arg1","define/arg2"], function(Strings,Dom,Something) { 3 | 4 | }); 5 | -------------------------------------------------------------------------------- /test/fixtures/extension.a.esm/lib/extensionModule.js: -------------------------------------------------------------------------------- 1 | export default () => "extension module"; 2 | export function determineRequiredDependencies () { return "required dependencies function" }; 3 | -------------------------------------------------------------------------------- /test/fixtures/library.h/invalid-ui5-workspace.yaml: -------------------------------------------------------------------------------- 1 | specVersion: wörkspace/1.0 2 | metadata: 3 | name: default 4 | dependencyManagement: 5 | resolutions: 6 | - path: ../library.d 7 | -------------------------------------------------------------------------------- /test/fixtures/lbt/modules/define_toplevel_named.js: -------------------------------------------------------------------------------- 1 | //declares module sap.ui.testmodule 2 | sap.ui.define("sap/ui/testmodule", ["define/arg1","define/arg2"], function(Strings,Dom,Something) { 3 | 4 | }); 5 | -------------------------------------------------------------------------------- /test/fixtures/application.c/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.c 6 | resources: 7 | configuration: 8 | paths: 9 | webapp: src 10 | -------------------------------------------------------------------------------- /docs/BuildExtensibility.md: -------------------------------------------------------------------------------- 1 | # UI5 Build Extensibility 2 | This documentation moved to a new place: [ui5.github.io/cli/pages/extensibility/CustomTasks/](https://ui5.github.io/cli/pages/extensibility/CustomTasks/) 3 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.c2 6 | resources: 7 | configuration: 8 | paths: 9 | webapp: src 10 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: application 4 | metadata: 5 | name: application.c3 6 | resources: 7 | configuration: 8 | paths: 9 | webapp: src 10 | -------------------------------------------------------------------------------- /test/fixtures/application.h/projectDependencies-missing-id.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: "0.0.1" 3 | path: "../application.a" 4 | dependencies: 5 | - id: static-library.e 6 | version: "0.0.1" 7 | path: "../library.e" 8 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.a/src/library/a/themes/base/library.source.less: -------------------------------------------------------------------------------- 1 | @libraryAColor1: lightgoldenrodyellow; 2 | 3 | .library-a-foo { 4 | color: @libraryAColor1; 5 | padding: 1px 2px 3px 4px; 6 | } 7 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/sub-empty/.keep: -------------------------------------------------------------------------------- 1 | This file is a stand-in for an empty project directory. 2 | This directory, even though matching the npm workspace configuration pattern, should be ignored by UI5 CLI. 3 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.a/src/library/a/themes/base/library.source.less: -------------------------------------------------------------------------------- 1 | @libraryAColor1: lightgoldenrodyellow; 2 | 3 | .library-a-foo { 4 | color: @libraryAColor1; 5 | padding: 1px 2px 3px 4px; 6 | } 7 | -------------------------------------------------------------------------------- /test/fixtures/theme.library.e/src/theme/library/e/themes/my_theme/library.source.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * ${copyright} 3 | */ 4 | 5 | @mycolor: blue; 6 | 7 | .sapUiBody { 8 | background-color: @mycolor; 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.h/projectDependencies-missing-path.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: static-application.a 3 | version: "0.0.1" 4 | path: "../application.a" 5 | dependencies: 6 | - id: static-library.e 7 | version: "0.0.1" 8 | -------------------------------------------------------------------------------- /test/fixtures/application.h/projectDependencies-missing-version.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: static-application.a 3 | path: "../application.a" 4 | dependencies: 5 | - id: static-library.e 6 | version: "0.0.1" 7 | path: "../library.e" 8 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/ui5.yaml: -------------------------------------------------------------------------------- 1 | specVersion: "2.3" 2 | type: library 3 | metadata: 4 | name: library.d 5 | resources: 6 | configuration: 7 | paths: 8 | src: main/src 9 | test: main/test 10 | -------------------------------------------------------------------------------- /test/fixtures/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.a.aliases/node_modules/extension.a.esm.alias/lib/extensionModule.js: -------------------------------------------------------------------------------- 1 | export default () => "extension module"; 2 | export function determineRequiredDependencies () { return "required dependencies function" }; 3 | -------------------------------------------------------------------------------- /test/fixtures/application.h/projectDependencies.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: static-application.a 3 | version: "0.0.1" 4 | path: "../application.a" 5 | dependencies: 6 | - id: static-library.e 7 | version: "0.0.1" 8 | path: "../library.e" 9 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.a/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application Cycle A 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.b/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application Cycle B 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.c/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application Cycle C 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.d/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application Cycle D 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.e/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application Cycle E 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.f/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Application Cycle F 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.a/src/library/a/themes/base/library.source.less: -------------------------------------------------------------------------------- 1 | @libraryAColor1: lightgoldenrodyellow; 2 | 3 | .library-a-foo { 4 | color: @libraryAColor1; 5 | padding: 1px 2px 3px 4px; 6 | } 7 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.a/src/library/a/themes/base/library.source.less: -------------------------------------------------------------------------------- 1 | @libraryAColor1: lightgoldenrodyellow; 2 | 3 | .library-a-foo { 4 | color: @libraryAColor1; 5 | padding: 1px 2px 3px 4px; 6 | } 7 | -------------------------------------------------------------------------------- /test/fixtures/collection/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d-depender 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.g/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp/Component.js: -------------------------------------------------------------------------------- 1 | sap.ui.define(["sap/ui/core/UIComponent"], function(UIComponent){ 2 | "use strict"; 3 | return UIComponent.extend('application.h.Component', { 4 | metadata: { 5 | manifest: "json" 6 | } 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Report UI5 CLI Issues or Request a Feature 4 | url: https://github.com/UI5/cli/issues/new/choose 5 | about: Please create new issues in the UI5 CLI repository 6 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/sub-collection/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sub-collection", 3 | "version": "1.0.0", 4 | "description": "Sub-Collection package", 5 | "ui5": { 6 | "workspaces": [ 7 | "../../library.d" 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d-depender 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d-depender/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d-depender 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | 12 | -------------------------------------------------------------------------------- /test/lib/build/definitions/module.js: -------------------------------------------------------------------------------- 1 | import test from "ava"; 2 | import moduleDefinition from "../../../../lib/build/definitions/module.js"; 3 | 4 | test("Standard build", (t) => { 5 | const tasks = moduleDefinition({}); 6 | t.is(tasks.size, 0, "No tasks returned"); 7 | }); 8 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import eslintCommonConfig from "./eslint.common.config.js"; 2 | 3 | export default [ 4 | ...eslintCommonConfig, // Load common ESLint config 5 | { 6 | // Add project-specific ESLint config rules here 7 | // in order to override common config 8 | } 9 | ]; 10 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/node_modules/library.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.d 6 | resources: 7 | configuration: 8 | paths: 9 | src: main/src 10 | test: main/test 11 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.b", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.c/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.c", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.b", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.c/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.c", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/collection/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/library.e/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.g/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.b", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.c/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.c", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.b", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.c/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.c", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/theme.library.e/src/theme/library/e/themes/my_theme/.theme: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | my_theme 5 | me 6 | ${copyright} 7 | ${version} 8 | 9 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.e/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.e/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/init-library/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "init-library", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "UNLICENSED" 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/node_modules/library.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/init-application/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "init-application", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "UNLICENSED" 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "legacy.library.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - legacy library missing ui5.yaml", 5 | "devDependencies": { 6 | }, 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "legacy.library.b", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - legacy library missing ui5.yaml", 5 | "devDependencies": { 6 | }, 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/init-invalid-webapp-src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "init-invalid", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "UNLICENSED" 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/library.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.e 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d-depender", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "devDependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.e/node_modules/library.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "devDependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "devDependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "devDependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.x/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "legacy.library.x", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - legacy library missing ui5.yaml", 5 | "devDependencies": { 6 | }, 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.y/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "legacy.library.y", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - legacy library missing ui5.yaml", 5 | "devDependencies": { 6 | }, 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/library.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for dev dependencies", 5 | "devDependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/library.e/ui5-workspace.yaml: -------------------------------------------------------------------------------- 1 | specVersion: workspace/1.0 2 | metadata: 3 | name: config-a 4 | dependencyManagement: 5 | resolutions: 6 | - path: ../library.d 7 | --- 8 | specVersion: workspace/1.0 9 | metadata: 10 | name: config-b 11 | dependencyManagement: 12 | resolutions: 13 | - path: ../library.x 14 | -------------------------------------------------------------------------------- /test/fixtures/library.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "dependencies": { 6 | "library.g": "file:../library.g" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/library.h/src/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.h 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library G 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/theme.library.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "1.1" 3 | type: theme-library 4 | metadata: 5 | name: theme.library.e 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/library.g/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.g", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "devDependencies": { 6 | "library.f": "file:../library.f" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.e 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/application.c/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.e 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.e 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.e 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.e 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/library.e/src/library/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.e 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/library.f/src/library/f/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.f 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library F 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/library.g/src/library/g/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.g 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library G 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.a/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d-depender", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d-depender/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d-depender", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.d/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.e/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.f/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.g/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/build-manifest/library.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for dev dependencies", 5 | "devDependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /docs/Configuration.md: -------------------------------------------------------------------------------- 1 | # Configuration 2 | This documentation moved to a new place: [ui5.github.io/cli/pages/Configuration/](https://ui5.github.io/cli/pages/Configuration/). 3 | 4 | The **Specification Version Documentation** can be found here: [ui5.github.io/cli/pages/Configuration/#specification-versions](https://ui5.github.io/cli/pages/Configuration/#specification-versions) 5 | -------------------------------------------------------------------------------- /test/fixtures/err.application.a/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /lib/utils/fs.js: -------------------------------------------------------------------------------- 1 | import fs from "graceful-fs"; 2 | import {promisify} from "node:util"; 3 | const mkdir = promisify(fs.mkdir); 4 | const rm = promisify(fs.rm); 5 | 6 | export async function mkdirp(dirPath) { 7 | return mkdir(dirPath, {recursive: true}); 8 | } 9 | 10 | export async function rmrf(dirPath) { 11 | return rm(dirPath, {recursive: true, force: true}); 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/ui5.yaml: -------------------------------------------------------------------------------- 1 | specVersion: "2.1" 2 | metadata: 3 | name: application.a.collection.dependency.shim 4 | kind: extension 5 | type: project-shim 6 | shims: 7 | collections: 8 | collection: 9 | modules: 10 | "library.a": "./library.a" 11 | "library.b": "./library.b" 12 | "library.c": "./library.c" -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for dev dependencies", 5 | "devDependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for dev dependencies", 5 | "devDependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/library.f/node_modules/library.g/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.g", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "devDependencies": { 6 | "library.f": "file:../library.f" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/library.g/node_modules/library.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "dependencies": { 6 | "library.g": "file:../library.g" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /jsdoc-plugin.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | * This plugin fixes unexpected JSDoc behavior that prevents us from using types that start with an at-sign (@). 3 | * JSDoc doesn't see "{@" as a valid type expression, probably as there's also {@link ...}. 4 | */ 5 | exports.handlers = { 6 | jsdocCommentFound: function(e) { 7 | e.comment = e.comment.replace(/{@ui5\//g, "{ @ui5/"); 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /test/fixtures/application.a.aliases/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/application.b/webapp/embedded/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1.embedded", 6 | "type": "component", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeddedBy": "../", 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "application.h", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.cycle.a 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.b/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.cycle.b 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.cycle.c 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.cycle.d 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.cycle.e 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.a/node_modules/library.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "dependencies": { 6 | "library.g": "file:../library.g" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.b/node_modules/library.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "dependencies": { 6 | "library.g": "file:../library.g" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - test for dev dependencies", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.e": "file:../library.e" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/build-manifest/application.a/resources/id1/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/collection/node_modules/library.d/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/component.cycle.a/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: component.cycle.a 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/node_modules/library.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "dependencies": { 6 | "library.g": "file:../library.g" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/node_modules/library.g/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.g", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "devDependencies": { 6 | "library.f": "file:../library.f" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/library.e/node_modules/library.d/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.a.aliases/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.a.aliases", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application", 5 | "main": "index.html", 6 | "dependencies": { 7 | "extension.a.esm.alias": "file:../extension.a.esm" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.e/src/library/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.e 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.e/src/library/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.e 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.e/src/library/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.e 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/src/library/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.e 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.e/node_modules/library.e/src/library/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.e/src/library/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.e 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/build-manifest/library.e/resources/library/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.e 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.a/src/legacy/library/a/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | legacy.library.a 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Legacy Library A 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/legacy.library.b/src/legacy/library/b/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | legacy.library.b 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Legacy Library B 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/lib/ui5framework/AbstractInstaller.js: -------------------------------------------------------------------------------- 1 | import test from "ava"; 2 | import AbstractInstaller from "../../../lib/ui5Framework/AbstractInstaller.js"; 3 | 4 | test("AbstractInstaller: constructor throws an error", (t) => { 5 | t.throws(() => { 6 | new AbstractInstaller(); 7 | }, { 8 | instanceOf: TypeError, 9 | message: "Class 'AbstractInstaller' is abstract" 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /lib/build/definitions/module.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Get tasks and their configuration for a given application project 3 | * 4 | * @private 5 | * @param {object} parameters 6 | * @param {object} parameters.project 7 | * @param {object} parameters.taskUtil 8 | * @param {Function} parameters.getTask 9 | */ 10 | export default function({project, taskUtil, getTask}) { 11 | return new Map(); 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp-properties.appId/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "${appId}", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/node_modules/library.f/src/library/f/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.f 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library F 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/node_modules/library.g/src/library/g/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.g 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library G 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.e/node_modules/library.e/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.e 6 | builder: 7 | configuration: 8 | copyright: |- 9 | UI development toolkit for HTML5 (OpenUI5) 10 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 11 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 12 | -------------------------------------------------------------------------------- /test/fixtures/application.f/node_modules/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.g/node_modules/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/err.application.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "err.application.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - test for missing dependencies", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.xx": "file:../not.existing" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/application.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.d": "file:../library.d", 8 | "collection": "file:../collection" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/application.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.b", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.d": "file:../library.d", 8 | "collection": "file:../collection" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/collection/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "collection", 3 | "version": "1.0.0", 4 | "description": "Simple Collection", 5 | "dependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "workspaces": [ 12 | "library.a", 13 | "library.b", 14 | "library.c" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.b", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies", 5 | "dependencies": { 6 | "@ui5-internal/module.c": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.m/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.m", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies", 5 | "dependencies": { 6 | "@ui5-internal/module.l": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.x/node_modules/library.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "dependencies": { 6 | "library.g": "file:../library.g" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.y/node_modules/library.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - test for circular dependencies", 5 | "dependencies": { 6 | "library.g": "file:../library.g" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/library.d-adtl-deps/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.d", 3 | "version": "2.0.0", 4 | "description": "Version of library.d that has additional dependencies defined. Used for testing UI5 Workspace resolutions", 5 | "dependencies": { 6 | "library.f": "file:../library.f" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/library.d-depender/node_modules/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/node_modules/library.d/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/node_modules/library.d/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c/node_modules/library.e/node_modules/library.d/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.e/node_modules/library.d/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.d/node_modules/library.e/node_modules/library.d/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp-project.artifactId/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "${project.artifactId}", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/application.h/webapp-properties.componentName/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "${componentName}", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.a/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.b/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.c/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.d/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.e/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.f/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.1.0", 3 | "sap.app": { 4 | "_version": "1.1.0", 5 | "id": "id1", 6 | "type": "application", 7 | "applicationVersion": { 8 | "version": "1.2.2" 9 | }, 10 | "embeds": ["embedded"], 11 | "title": "{{title}}" 12 | } 13 | } -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.a/src/cycle/a/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | cycle.a 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library Cycle A 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.b/src/cycle/b/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | cycle.b 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library Cycle B 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.l/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.l", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies", 5 | "devDependencies": { 6 | "@ui5-internal/module.m": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/src/cycle/c/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.cycle.b 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library Cycle C 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.d/src/cycle/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.cycle.b 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library Cycle D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.e/src/cycle/e/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.cycle.b 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library Cycle E 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.x/src/legacy/library/x/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | legacy.library.x 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Legacy Library X 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/legacy.collection.a/src/legacy.library.y/src/legacy/library/y/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | legacy.library.y 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Legacy Library Y 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "collection", 3 | "version": "1.0.0", 4 | "description": "Simple Collection used for Workspace testing", 5 | "dependencies": { 6 | }, 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "ui5": { 11 | "workspaces": [ 12 | "library.{a,b}", 13 | "*c", 14 | "sub-*" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/fixtures/library.h/ui5-workspace.yaml: -------------------------------------------------------------------------------- 1 | specVersion: workspace/1.0 2 | metadata: 3 | name: default 4 | dependencyManagement: 5 | resolutions: 6 | - path: ../library.d 7 | --- 8 | specVersion: workspace/1.0 9 | metadata: 10 | name: all-libraries 11 | dependencyManagement: 12 | resolutions: 13 | - path: ../library.d 14 | - path: ../library.e 15 | - path: ../library.f 16 | -------------------------------------------------------------------------------- /test/fixtures/build-manifest/application.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.a-archive", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.d": "file:../library.d", 8 | "collection": "file:../collection" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/node_modules/@ui5-internal/library.cycle.d/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.3" 3 | type: library 4 | metadata: 5 | name: library.cycle.d 6 | copyright: |- 7 | UI development toolkit for HTML5 (OpenUI5) 8 | * (c) Copyright 2009-xxx SAP SE or an SAP affiliate company. 9 | * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.a", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - cycle via module.c", 5 | "dependencies": { 6 | "@ui5-internal/module.b": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.c/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.c", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies- cycle via module.a", 5 | "dependencies": { 6 | "@ui5-internal/module.a": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.f", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - cycle via module.c", 5 | "dependencies": { 6 | "@ui5-internal/module.a": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.g/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.g", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - cycle via module.c", 5 | "dependencies": { 6 | "@ui5-internal/module.a": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.j/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.j", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - Like npm package 'd'", 5 | "dependencies": { 6 | "@ui5-internal/module.i": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # see http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = tab 8 | 9 | [*.{css,html,js,cjs,mjs,jsx,ts,tsx,less,txt,json,yml,md}] 10 | trim_trailing_whitespace = true 11 | end_of_line = lf 12 | indent_size = 4 13 | insert_final_newline = true 14 | 15 | [*.{yml,yaml}] 16 | indent_style = space 17 | indent_size = 2 18 | 19 | [*.md] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/node_modules/library.d-depender/main/src/library/d-depender/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d-depender 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/component.cycle.a/src/component/cycle/a/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | component.cycle.a 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Component Cycle A 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/library.h/custom-ui5-workspace.yaml: -------------------------------------------------------------------------------- 1 | specVersion: workspace/1.0 2 | metadata: 3 | name: library-d 4 | dependencyManagement: 5 | resolutions: 6 | - path: ../library.d 7 | --- 8 | specVersion: workspace/1.0 9 | metadata: 10 | name: all-libraries 11 | dependencyManagement: 12 | resolutions: 13 | - path: ../library.d 14 | - path: ../library.e 15 | - path: ../library.f 16 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/node_modules/library.d-depender/node_modules/library.d/main/src/library/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.d 5 | SAP SE 6 | Some fancy copyright 7 | ${version} 8 | 9 | Library D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - test for circular dependencies", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.f": "file:../library.f", 8 | "library.g": "file:../library.g" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.d", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - cycle with module.e", 5 | "dependencies": { 6 | "@ui5-internal/module.e": "file:../module.e" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.i/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.i", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - Like npm package 'es5-ext'", 5 | "dependencies": { 6 | "@ui5-internal/module.k": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.e", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - cycle with module.d", 5 | "devDependencies": { 6 | "@ui5-internal/module.d": "file:../module.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/library.cycle.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - Test for cyclic dependencies", 5 | "devDependencies": { 6 | "@ui5-internal/component.cycle.a": "file:../component.cycle.a" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/library.cycle.b", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - Test for cyclic dependencies", 5 | "devDependencies": { 6 | "@ui5-internal/component.cycle.a": "file:../component.cycle.a" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/node_modules/@ui5-internal/library.cycle.d/src/cycle/d/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.cycle.b 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library Cycle D 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/fixtures/application.g/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.g", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - test for npm optionalDependencies", 5 | "main": "index.html", 6 | "optionalDependencies": { 7 | "library.d": "file:../library.d", 8 | "library.nonexistent": "file:../library.nonexistent" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "ui5": { 10 | "name": "library.a", 11 | "type": "library", 12 | "settings": { 13 | "src": "src", 14 | "test": "test" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "library.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library", 5 | "dependencies": {}, 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "ui5": { 10 | "name": "library.a", 11 | "type": "library", 12 | "settings": { 13 | "src": "src", 14 | "test": "test" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/library.cycle.c", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - Test for cyclic npm UI5 dependencies - Cycle via projectPreprocessor deduplication", 5 | "dependencies": { 6 | "@ui5-internal/library.cycle.d": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/library.cycle.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - Test for cyclic npm UI5 dependencies - Cycle via projectPreprocessor deduplication", 5 | "dependencies": { 6 | "@ui5-internal/library.cycle.c": "^1.0.0" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/application.c/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.c", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - test for dev dependencies. Optional dep gets resolved through root project", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.e": "file:../library.e", 8 | "library.d": "file:../library.d" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.h/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.h", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - Like npm package 'es6-symbol'", 5 | "dependencies": { 6 | "@ui5-internal/module.i": "^1.0.0", 7 | "@ui5-internal/module.j": "^1.0.0" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.github/workflows/reuse-compliance.yml: -------------------------------------------------------------------------------- 1 | name: REUSE 2 | 3 | on: 4 | push: 5 | branches: 6 | - v4 7 | pull_request: 8 | branches: 9 | - v4 10 | 11 | # No permissions are required for this workflow 12 | permissions: {} 13 | 14 | jobs: 15 | compliance-check: 16 | name: Compliance Check 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v6 20 | - name: Execute REUSE Compliance Check 21 | uses: fsfe/reuse-action@v6 22 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/application.cycle.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - Test for cyclic UI5 dependencies", 5 | "main": "index.html", 6 | "dependencies": { 7 | "@ui5-internal/component.cycle.a": "file:../component.cycle.a" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | - package-ecosystem: npm 8 | directory: "/" 9 | schedule: 10 | interval: weekly 11 | day: sunday 12 | time: "10:00" 13 | timezone: Etc/UCT 14 | reviewers: 15 | - "SAP/ui5-foundation" 16 | versioning-strategy: increase 17 | commit-message: 18 | prefix: "[DEPENDENCY] " 19 | prefix-development: "[INTERNAL] " 20 | -------------------------------------------------------------------------------- /test/fixtures/application.c2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.c2", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - test for dev dependencies. Optional dep gets resolved through other project", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.e": "file:../library.e", 8 | "library.d-depender": "file:../library.d-depender" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.c/src/library/c/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.c 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library C 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.c/src/library/c/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.c 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library C 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/application.c3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.c3", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - test for dev dependencies. Optional dep gets resolved through other project (but got hoisted)", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.e": "file:../library.e", 8 | "library.d-depender": "file:../library.d-depender" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "collection", 3 | "version": "1.0.0", 4 | "description": "Simple Collection", 5 | "dependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "collection": { 12 | "modules": { 13 | "library.a": "./library.a", 14 | "library.b": "./library.b", 15 | "library.c": "./library.c" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "collection", 3 | "version": "1.0.0", 4 | "description": "Simple Collection", 5 | "dependencies": { 6 | "library.d": "file:../library.d" 7 | }, 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "collection": { 12 | "modules": { 13 | "library.a": "./library.a", 14 | "library.b": "./library.b", 15 | "library.c": "./library.c" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/library.cycle.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - Test for cyclic npm UI5 dependencies - Cycle via projectPreprocessor deduplication", 5 | "dependencies": { 6 | "@ui5-internal/library.cycle.c": "^1.0.0", 7 | "@ui5-internal/library.cycle.e": "^1.0.0" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/module.k/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/module.k", 3 | "version": "1.0.0", 4 | "description": "Simple npm module - Test for cyclic npm (non-UI5) dependencies - Like npm package 'es6-iterator'", 5 | "dependencies": { 6 | "@ui5-internal/module.h": "^1.0.0", 7 | "@ui5-internal/module.i": "^1.0.0", 8 | "@ui5-internal/module.j": "^1.0.0" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/application.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - test for ui5-dependencies configuration", 5 | "main": "index.html", 6 | "dependencies": { 7 | "library.d": "file:../library.d", 8 | "library.e": "file:../library.e" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "ui5": { 14 | "dependencies": [ 15 | "library.d" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.a/src/library/a/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.a 5 | SAP SE 6 | Some fancy copyright ${currentYear} 7 | ${version} 8 | 9 | Library A 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/collection.b/library.b/src/library/b/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.b 5 | SAP SE 6 | Some fancy copyright ${currentYear} 7 | ${version} 8 | 9 | Library B 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.a/src/library/a/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.a 5 | SAP SE 6 | Some fancy copyright ${currentYear} 7 | ${version} 8 | 9 | Library A 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/collection/library.b/src/library/b/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.b 5 | SAP SE 6 | Some fancy copyright ${currentYear} 7 | ${version} 8 | 9 | Library B 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.a/src/library/a/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.a 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library A 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.b/src/library/b/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.b 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library B 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/application.a/node_modules/collection/library.c/src/library/c/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.c 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library C 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.a/src/library/a/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.a 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library A 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.b/src/library/b/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.b 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library B 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/application.b/node_modules/collection/library.c/src/library/c/.library: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | library.c 5 | SAP SE 6 | ${copyright} 7 | ${version} 8 | 9 | Library C 10 | 11 | 12 | 13 | library.d 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/lib/utils/fs.js: -------------------------------------------------------------------------------- 1 | import test from "ava"; 2 | import path from "node:path"; 3 | import {stat} from "node:fs/promises"; 4 | import {mkdirp} from "../../../lib/utils/fs.js"; 5 | 6 | const __dirname = import.meta.dirname; 7 | 8 | test("mkdirp: Create directory hierarchy", async (t) => { 9 | const targetPath = path.join(__dirname, "..", "..", "tmp", "mkdir-test", "this", "is", "a", "directory"); 10 | await mkdirp(targetPath); 11 | const res = await stat(targetPath); 12 | t.truthy(res, "Target directory has been created"); 13 | }); 14 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.e/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/application.cycle.e", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - Test for cyclic npm (non-UI5) dependencies - Indirect cycle via devDependency (pending dev)", 5 | "main": "index.html", 6 | "dependencies": { 7 | "@ui5-internal/module.l": "^1.0.0", 8 | "@ui5-internal/module.m": "^1.0.0" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/ui5Framework/maven/CacheMode.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | /** 4 | * Cache modes for maven consumption 5 | * 6 | * @public 7 | * @readonly 8 | * @enum {string} 9 | * @property {string} Default Cache everything, invalidate after 9 hours 10 | * @property {string} Force Use cache only. Do not send any requests to the repository 11 | * @property {string} Off Invalidate the cache and update from the repository 12 | * @module @ui5/project/ui5Framework/maven/CacheMode 13 | */ 14 | export default { 15 | Default: "Default", 16 | Force: "Force", 17 | Off: "Off" 18 | }; 19 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.f/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/application.cycle.f", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - Test for cyclic npm UI5 dependencies - Cycle via projectPreprocessor deduplication", 5 | "main": "index.html", 6 | "dependencies": { 7 | "@ui5-internal/library.cycle.c": "^1.0.0", 8 | "@ui5-internal/library.cycle.d": "^1.0.0" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/library.cycle.c/node_modules/@ui5-internal/library.cycle.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/library.cycle.d", 3 | "version": "0.9.0", 4 | "description": "Simple SAPUI5 based library - Test for cyclic npm UI5 dependencies - Cycle via projectPreprocessor deduplication", 5 | "dependencies": { 6 | "@ui5-internal/library.cycle.c": "^1.0.0", 7 | "@ui5-internal/library.cycle.e": "^1.0.0" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/lib/build/definitions/utils.js: -------------------------------------------------------------------------------- 1 | import test from "ava"; 2 | import {enhancePatternWithExcludes} from "../../../../lib/build/definitions/_utils.js"; 3 | 4 | test("enhancePatternWithExcludes", (t) => { 5 | const patterns = ["/default/pattern", "!/other/pattern"]; 6 | const excludes = ["a", "!b", "c", "!d"]; 7 | 8 | enhancePatternWithExcludes(patterns, excludes, "/prefix/"); 9 | 10 | t.deepEqual(patterns, [ 11 | "/default/pattern", 12 | "!/other/pattern", 13 | "!/prefix/a", 14 | "/prefix/b", 15 | "!/prefix/c", 16 | "/prefix/d" 17 | ]); 18 | }); 19 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.b/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/application.cycle.b", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - Test for cyclic npm (non-UI5) dependencies - Cycle on second level via dev dependency", 5 | "main": "index.html", 6 | "dependencies": { 7 | "@ui5-internal/module.d": "file:../module.d", 8 | "@ui5-internal/module.e": "file:../module.e" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.b/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "2.2" 3 | type: application 4 | metadata: 5 | name: application.cycle.b 6 | --- 7 | specVersion: "2.2" 8 | kind: extension 9 | type: project-shim 10 | metadata: 11 | name: application.cycle.b-shim 12 | shims: 13 | configurations: 14 | module.d: 15 | specVersion: "2.2" 16 | type: module 17 | metadata: 18 | name: module.d 19 | module.e: 20 | specVersion: "2.2" 21 | type: module 22 | metadata: 23 | name: module.e -------------------------------------------------------------------------------- /test/fixtures/library.h/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.21.0", 3 | "sap.app": { 4 | "id": "library.h", 5 | "type": "library", 6 | "embeds": [], 7 | "applicationVersion": { 8 | "version": "1.0.0" 9 | }, 10 | "title": "Library H", 11 | "description": "Library H" 12 | }, 13 | "sap.ui": { 14 | "technology": "UI5", 15 | "supportedThemes": [] 16 | }, 17 | "sap.ui5": { 18 | "dependencies": { 19 | "minUI5Version": "1.0", 20 | "libs": {} 21 | }, 22 | "library": { 23 | "i18n": false 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/component.cycle.a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/component.cycle.a", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based library - Test for cyclic dependencies", 5 | "dependencies": { 6 | "@ui5-internal/library.cycle.a": "file:../library.cycle.a", 7 | "@ui5-internal/library.cycle.b": "file:../library.cycle.b" 8 | }, 9 | "devDependencies": { 10 | "@ui5-internal/application.cycle.a": "file:../application.cycle.a" 11 | }, 12 | "scripts": { 13 | "test": "echo \"Error: no test specified\" && exit 1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **Thank you for your contribution!** 🙌 2 | 3 | To get it merged faster, kindly review the checklist below: 4 | 5 | ## Pull Request Checklist 6 | - [ ] Reviewed the [Contributing Guidelines](https://github.com/UI5/cli/blob/v4/CONTRIBUTING.md#-contributing-code) 7 | + Especially the [How to Contribute](https://github.com/UI5/cli/blob/v4/CONTRIBUTING.md#how-to-contribute) section 8 | - [ ] [No merge commits](https://github.com/UI5/cli/blob/v4/docs/Guidelines.md#no-merge-commits) 9 | - [ ] [Correct commit message style](https://github.com/UI5/cli/blob/v4/docs/Guidelines.md#commit-message-style) 10 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.c/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/application.cycle.c", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - Test for cyclic npm (non-UI5) dependencies - Cycle on third level", 5 | "_ui5_test_comment": "This scenario can't be tested using file: URLs as npm can't create cyclic symlinks.", 6 | "_ui5_test_comment2": "However publishing to and installing from a registry works.", 7 | "main": "index.html", 8 | "dependencies": { 9 | "@ui5-internal/module.f": "^1.0.0", 10 | "@ui5-internal/module.g": "^1.0.0" 11 | }, 12 | "scripts": { 13 | "test": "echo \"Error: no test specified\" && exit 1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/fixtures/application.a.aliases/ui5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | specVersion: "3.1" 3 | type: application 4 | metadata: 5 | name: application.a.aliases 6 | 7 | --- # Everything below this line could also be put into the ui5.yaml of a standalone extension module 8 | specVersion: "3.1" 9 | kind: extension 10 | type: project-shim 11 | metadata: 12 | name: my.application.thirdparty 13 | shims: 14 | configurations: 15 | extension.a.esm.alias: # name as defined in package.json 16 | specVersion: "3.1" 17 | type: module # Use module type 18 | metadata: 19 | name: extension.a.esm.alias 20 | resources: 21 | configuration: 22 | paths: 23 | /resources/my/application/thirdparty/: "" # map root directory of lodash module 24 | -------------------------------------------------------------------------------- /lib/build/helpers/ProjectBuilderOutputStyle.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Processes build results into a specific directory structure. 3 | * 4 | * @public 5 | * @readonly 6 | * @enum {string} 7 | * @property {string} Default The default directory structure for every project type. 8 | * For applications this is identical to "Flat" and for libraries to "Namespace". 9 | * Other types have a more distinct default output style. 10 | * @property {string} Flat Omits the project namespace and the "resources" directory. 11 | * @property {string} Namespace Respects project namespace and the "resources" directory. 12 | * @module @ui5/project/build/ProjectBuilderOutputStyle 13 | */ 14 | export default { 15 | Default: "Default", 16 | Flat: "Flat", 17 | Namespace: "Namespace" 18 | }; 19 | -------------------------------------------------------------------------------- /.chglog/config.yml: -------------------------------------------------------------------------------- 1 | style: github 2 | template: CHANGELOG.tpl.md 3 | info: 4 | title: CHANGELOG 5 | repository_url: https://github.com/SAP/ui5-project 6 | options: 7 | commits: 8 | filters: 9 | Type: 10 | - FEATURE 11 | - FIX 12 | - PERF 13 | - DEPENDENCY 14 | - BREAKING 15 | commit_groups: 16 | title_maps: 17 | FEATURE: Features 18 | FIX: Bug Fixes 19 | PERF: Performance Improvements 20 | DEPENDENCY: Dependency Updates 21 | BREAKING: Breaking Changes 22 | header: 23 | pattern: "^\\[(\\w*)\\]\\s(?:([^\\:]*)\\:\\s)?(.*)$" 24 | pattern_maps: 25 | - Type 26 | - Scope 27 | - Subject 28 | issues: 29 | prefix: 30 | - "#" 31 | notes: 32 | keywords: 33 | - BREAKING CHANGE 34 | -------------------------------------------------------------------------------- /test/fixtures/theme.library.e/src/theme/library/e/themes/my_theme/.theming: -------------------------------------------------------------------------------- 1 | { 2 | "sEntity": "Theme", 3 | "sId": "sap_belize", 4 | "oExtends": "base", 5 | "sVendor": "SAP", 6 | "aBundled": ["sap_belize_plus"], 7 | "mCssScopes": { 8 | "library": { 9 | "sBaseFile": "library", 10 | "sEmbeddingMethod": "APPEND", 11 | "aScopes": [ 12 | { 13 | "sLabel": "Contrast", 14 | "sSelector": "sapContrast", 15 | "sEmbeddedFile": "sap_belize_plus.library", 16 | "sEmbeddedCompareFile": "library", 17 | "sThemeIdSuffix": "Contrast", 18 | "sThemability": "PUBLIC", 19 | "aThemabilityFilter": [ 20 | "Color" 21 | ], 22 | "rExcludeSelector": "\\.sapContrastPlus\\W" 23 | } 24 | ] 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/fixtures/cyclic-deps/node_modules/@ui5-internal/application.cycle.d/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ui5-internal/application.cycle.d", 3 | "version": "1.0.0", 4 | "description": "Simple SAPUI5 based application - Test for cyclic npm (non-UI5) dependencies - Heavily influenced by npm package 'es6-map'", 5 | "_ui5_test_comment": "This scenario can't be tested using file: URLs as npm can't create cyclic symlinks.", 6 | "_ui5_test_comment2": "However publishing to and installing from a registry works.", 7 | "main": "index.html", 8 | "dependencies": { 9 | "@ui5-internal/module.h": "^1.0.0", 10 | "@ui5-internal/module.i": "^1.0.0", 11 | "@ui5-internal/module.j": "^1.0.0", 12 | "@ui5-internal/module.k": "^1.0.0" 13 | }, 14 | "scripts": { 15 | "test": "echo \"Error: no test specified\" && exit 1" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.github/workflows/github-ci.yml: -------------------------------------------------------------------------------- 1 | name: GitHub CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - v4 7 | pull_request: 8 | branches: 9 | - v4 10 | 11 | # No permissions are required for this workflow 12 | permissions: {} 13 | 14 | jobs: 15 | test: 16 | name: General checks, tests and coverage reporting 17 | runs-on: ubuntu-24.04 18 | steps: 19 | 20 | - uses: actions/checkout@v6 21 | 22 | - name: Use Node.js LTS 20.11.0 23 | uses: actions/setup-node@v6.1.0 24 | with: 25 | node-version: 20.11.0 26 | 27 | - name: Install dependencies 28 | run: npm ci --engine-strict # --engine-strict is used to fail-fast if deps require node versions unsupported by the repo 29 | 30 | - name: Perform checks and tests 31 | run: npm test 32 | 33 | - name: Send report to Coveralls 34 | uses: coverallsapp/github-action@v2.3.7 35 | -------------------------------------------------------------------------------- /.chglog/RELEASE.tpl.md: -------------------------------------------------------------------------------- 1 | {{ range .Versions }} 2 | {{ range .CommitGroups -}} 3 | ### {{ .Title }} 4 | {{ range .Commits -}} 5 | - {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }} [`{{ .Hash.Short }}`]({{ $.Info.RepositoryURL }}/commit/{{ .Hash.Long }}) 6 | {{ end }} 7 | {{ end -}} 8 | 9 | {{- if .RevertCommits -}} 10 | ### Reverts 11 | {{ range .RevertCommits -}} 12 | - {{ .Revert.Header }} 13 | {{ end }} 14 | {{ end -}} 15 | 16 | {{- if .NoteGroups -}} 17 | {{ range .NoteGroups -}} 18 | ### {{ .Title }} 19 | {{ range .Notes }} 20 | {{ .Body }} 21 | {{ end }} 22 | {{ end -}} 23 | {{ end -}} 24 | 25 | {{ if .Tag.Previous }} 26 | ### All changes 27 | [`{{ .Tag.Previous.Name }}...{{ .Tag.Name }}`] 28 | {{ end }} 29 | 30 | {{ if .Tag.Previous -}} 31 | [`{{ .Tag.Previous.Name }}...{{ .Tag.Name }}`]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }} 32 | {{ end -}} 33 | {{ end -}} 34 | -------------------------------------------------------------------------------- /.chglog/release-config.yml: -------------------------------------------------------------------------------- 1 | style: github 2 | template: RELEASE.tpl.md 3 | info: 4 | repository_url: https://github.com/SAP/ui5-project 5 | options: 6 | tag_filter_pattern: '^v[^0123]' # For release notes ignore versions below v4 to that we always compare the _last v4+_ tag with the current release 7 | commits: 8 | filters: 9 | Type: 10 | - FEATURE 11 | - FIX 12 | - PERF 13 | - DEPENDENCY 14 | - BREAKING 15 | commit_groups: 16 | title_maps: 17 | FEATURE: Features 18 | FIX: Bug Fixes 19 | PERF: Performance Improvements 20 | DEPENDENCY: Dependency Updates 21 | BREAKING: Breaking Changes 22 | header: 23 | pattern: "^\\[(\\w*)\\]\\s(?:([^\\:]*)\\:\\s)?(.*)$" 24 | pattern_maps: 25 | - Type 26 | - Scope 27 | - Subject 28 | issues: 29 | prefix: 30 | - "#" 31 | notes: 32 | keywords: 33 | - BREAKING CHANGE 34 | -------------------------------------------------------------------------------- /lib/build/definitions/_utils.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Appends the list of 'excludes' to the list of 'patterns'. To harmonize both lists, the 'excludes' 4 | * are negated and the 'patternPrefix' is added to make them absolute. 5 | * 6 | * @private 7 | * @param {string[]} patterns 8 | * List of absolute default patterns. 9 | * @param {string[]} excludes 10 | * List of relative patterns to be excluded. Excludes with a leading "!" are meant to be re-included. 11 | * @param {string} patternPrefix 12 | * Prefix to be added to the excludes to make them absolute. The prefix must have a leading and a 13 | * trailing "/". 14 | */ 15 | export function enhancePatternWithExcludes(patterns, excludes, patternPrefix) { 16 | excludes.forEach((exclude) => { 17 | if (exclude.startsWith("!")) { 18 | patterns.push(`${patternPrefix}${exclude.slice(1)}`); 19 | } else { 20 | patterns.push(`!${patternPrefix}${exclude}`); 21 | } 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /lib/validation/schema/specVersion/specVersion.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema", 3 | "$id": "http://ui5.sap/schema/specVersion/2.0.json", 4 | 5 | "type": "object", 6 | "required": ["specVersion"], 7 | "properties": { 8 | "specVersion": { "enum": ["4.0", "3.2", "3.1", "3.0", "2.6", "2.5", "2.4", "2.3", "2.2", "2.1", "2.0"] }, 9 | "kind": { 10 | "enum": ["project", "extension", null], 11 | "$comment": "Using null to allow not defining 'kind' which defaults to project" 12 | } 13 | }, 14 | "if": { 15 | "properties": { 16 | "kind": { 17 | "enum": ["project", null], 18 | "$comment": "Using null to allow not defining 'kind' which defaults to project" 19 | } 20 | } 21 | }, 22 | "then": { 23 | "$ref": "kind/project.json" 24 | }, 25 | "else": { 26 | "if": { 27 | "properties": { 28 | "kind": { 29 | "enum": ["extension"] 30 | } 31 | } 32 | }, 33 | "then": { 34 | "$ref": "kind/extension.json" 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /test/fixtures/build-manifest/application.a/.ui5/build-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "project": { 3 | "specVersion": "2.3", 4 | "type": "application", 5 | "metadata": { 6 | "name": "application.a" 7 | }, 8 | "resources": { 9 | "configuration": { 10 | "paths": { 11 | "webapp": "resources/id1" 12 | } 13 | } 14 | } 15 | }, 16 | "buildManifest": { 17 | "manifestVersion": "0.1", 18 | "timestamp": "2022-05-04T12:45:30.024Z", 19 | "versions": { 20 | "builderVersion": "3.0.0", 21 | "projectVersion": "3.0.0", 22 | "fsVersion": "3.0.0" 23 | }, 24 | "buildConfig": { 25 | "selfContained": false, 26 | "jsdoc": false, 27 | "includedTasks": [], 28 | "excludedTasks": [] 29 | }, 30 | "id": "application.a", 31 | "version": "0.2.0", 32 | "namespace": "id1", 33 | "tags": { 34 | "/resources/id1/test.js": { 35 | "ui5:HasDebugVariant": true 36 | }, 37 | "/resources/id1/test-dbg.js": { 38 | "ui5:IsDebugVariant": true 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /test/fixtures/build-manifest/library.e/.ui5/build-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "project": { 3 | "specVersion": "2.3", 4 | "type": "library", 5 | "metadata": { 6 | "name": "library.e" 7 | }, 8 | "resources": { 9 | "configuration": { 10 | "paths": { 11 | "src": "resources", 12 | "test": "test-resources" 13 | } 14 | } 15 | } 16 | }, 17 | "buildManifest": { 18 | "manifestVersion": "0.1", 19 | "timestamp": "2022-05-06T09:54:29.051Z", 20 | "versions": { 21 | "builderVersion": "3.0.0", 22 | "projectVersion": "3.0.0", 23 | "fsVersion": "3.0.0" 24 | }, 25 | "buildConfig": { 26 | "selfContained": false, 27 | "jsdoc": false, 28 | "includedTasks": [], 29 | "excludedTasks": [] 30 | }, 31 | "id": "library.e", 32 | "version": "1.0.0", 33 | "namespace": "library/e", 34 | "tags": { 35 | "/resources/library/e/some.js": { 36 | "ui5:HasDebugVariant": true 37 | }, 38 | "/resources/library/e/some-dbg.js": { 39 | "ui5:IsDebugVariant": true 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /.github/workflows/dependabot-auto-merge.yml: -------------------------------------------------------------------------------- 1 | name: Dependabot auto-merge 2 | on: 3 | pull_request: 4 | branches: 5 | - v4 6 | 7 | permissions: 8 | contents: write 9 | pull-requests: write 10 | 11 | jobs: 12 | dependabot: 13 | runs-on: ubuntu-latest 14 | if: ${{ github.actor == 'dependabot[bot]' && github.event.pull_request.auto_merge == null }} 15 | steps: 16 | - name: Dependabot metadata 17 | id: metadata 18 | uses: dependabot/fetch-metadata@v2 19 | with: 20 | github-token: "${{ secrets.GITHUB_TOKEN }}" 21 | - name: Approve and auto-merge PRs for minor/patch updates of github-actions 22 | if: | 23 | steps.metadata.outputs.package-ecosystem == 'github_actions' && 24 | contains(fromJSON('["version-update:semver-minor", "version-update:semver-patch"]'), steps.metadata.outputs.update-type) 25 | run: gh pr review --approve "$PR_URL" && gh pr merge --auto --rebase "$PR_URL" 26 | env: 27 | PR_URL: ${{github.event.pull_request.html_url}} 28 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # CI (Azure Pipelines) xUnit test results 21 | test-results.xml 22 | 23 | # IDEs 24 | .vscode/ 25 | *.~vsdx 26 | .idea/ 27 | 28 | # node-waf configuration 29 | .lock-wscript 30 | 31 | # Compiled binary addons (http://nodejs.org/api/addons.html) 32 | build/Release 33 | 34 | # Dependency directories 35 | node_modules 36 | jspm_packages 37 | 38 | # Optional npm cache directory 39 | .npm 40 | 41 | # Optional eslint cache 42 | .eslintcache 43 | 44 | # Optional REPL history 45 | .node_repl_history 46 | 47 | # Output of 'npm pack' 48 | *.tgz 49 | 50 | # Yarn Integrity file 51 | .yarn-integrity 52 | 53 | # Misc 54 | yarn.lock 55 | .DS_Store 56 | 57 | # Don't include private SSH key for deployment via Travis CI 58 | deploy_key 59 | 60 | # Custom directories 61 | !test/fixtures/**/node_modules 62 | test/tmp/ 63 | jsdocs/ 64 | -------------------------------------------------------------------------------- /lib/specifications/extensions/ServerMiddleware.js: -------------------------------------------------------------------------------- 1 | import path from "node:path"; 2 | import Extension from "../Extension.js"; 3 | import {pathToFileURL} from "node:url"; 4 | 5 | /** 6 | * ServerMiddleware 7 | * 8 | * @public 9 | * @class 10 | * @alias @ui5/project/specifications/extensions/ServerMiddleware 11 | * @extends @ui5/project/specifications/Extension 12 | * @hideconstructor 13 | */ 14 | class ServerMiddleware extends Extension { 15 | constructor(parameters) { 16 | super(parameters); 17 | } 18 | 19 | /* === Attributes === */ 20 | /** 21 | * @public 22 | */ 23 | async getMiddleware() { 24 | const middlewarePath = path.join(this.getRootPath(), this._config.middleware.path); 25 | const {default: middleware} = await import(pathToFileURL(middlewarePath)); 26 | return middleware; 27 | } 28 | /* === Internals === */ 29 | /** 30 | * @private 31 | */ 32 | async _validateConfig() { 33 | // TODO: Move to validator 34 | if (/--\d+$/.test(this.getName())) { 35 | throw new Error(`Server middleware name must not end with '--'`); 36 | } 37 | // TODO: Check that paths exist 38 | } 39 | } 40 | 41 | export default ServerMiddleware; 42 | -------------------------------------------------------------------------------- /lib/specifications/Extension.js: -------------------------------------------------------------------------------- 1 | import Specification from "./Specification.js"; 2 | 3 | /** 4 | * Extension 5 | * 6 | * @public 7 | * @abstract 8 | * @class 9 | * @alias @ui5/project/specifications/Extension 10 | * @extends @ui5/project/specifications/Specification 11 | * @hideconstructor 12 | */ 13 | class Extension extends Specification { 14 | constructor(parameters) { 15 | super(parameters); 16 | if (new.target === Extension) { 17 | throw new TypeError("Class 'Extension' is abstract. Please use one of the 'types' subclasses"); 18 | } 19 | } 20 | 21 | /** 22 | * @param {object} parameters Specification parameters 23 | * @param {string} parameters.id Unique ID 24 | * @param {string} parameters.version Version 25 | * @param {string} parameters.modulePath File System path to access resources 26 | * @param {object} parameters.configuration Configuration object 27 | */ 28 | async init(parameters) { 29 | await super.init(parameters); 30 | 31 | try { 32 | await this._validateConfig(); 33 | } catch (err) { 34 | throw new Error( 35 | `Failed to validate configuration of ${this.getType()} extension ${this.getName()}: ` + 36 | err.message); 37 | } 38 | 39 | return this; 40 | } 41 | 42 | async _validateConfig() {} 43 | } 44 | 45 | export default Extension; 46 | -------------------------------------------------------------------------------- /lib/validation/schema/ui5.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema", 3 | "$id": "http://ui5.sap/schema/ui5.json", 4 | "title": "ui5.yaml", 5 | "description": "Schema for UI5 CLI Configuration File (ui5.yaml)", 6 | "$comment": "See https://ui5.github.io/cli/", 7 | 8 | "type": "object", 9 | "required": ["specVersion"], 10 | "properties": { 11 | "specVersion": { 12 | "enum": [ 13 | "4.0", 14 | "3.2", "3.1", "3.0", 15 | "2.6", "2.5", "2.4", "2.3", "2.2", "2.1", "2.0", 16 | "1.1", "1.0", "0.1" 17 | ], 18 | "errorMessage": "Unsupported \"specVersion\"\nYour UI5 CLI installation might be outdated.\nSupported specification versions: \"4.0\", \"3.2\", \"3.1\", \"3.0\", \"2.6\", \"2.5\", \"2.4\", \"2.3\", \"2.2\", \"2.1\", \"2.0\", \"1.1\", \"1.0\", \"0.1\"\nFor details, see: https://ui5.github.io/cli/pages/Configuration/#specification-versions" 19 | } 20 | }, 21 | 22 | "if": { 23 | "properties": { 24 | "specVersion": { "enum": ["4.0", "3.2", "3.1", "3.0", "2.6", "2.5", "2.4", "2.3", "2.2", "2.1", "2.0"] } 25 | } 26 | }, 27 | "then": { 28 | "$ref": "specVersion/specVersion.json" 29 | }, 30 | "else": { 31 | "if": { 32 | "properties": { 33 | "specVersion": { "enum": ["1.1", "1.0", "0.1"] } 34 | } 35 | }, 36 | "then": { 37 | "additionalProperties": true 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/specifications/extensions/Task.js: -------------------------------------------------------------------------------- 1 | import path from "node:path"; 2 | import Extension from "../Extension.js"; 3 | import {pathToFileURL} from "node:url"; 4 | 5 | /** 6 | * Task 7 | * 8 | * @public 9 | * @class 10 | * @alias @ui5/project/specifications/extensions/Task 11 | * @extends @ui5/project/specifications/Extension 12 | * @hideconstructor 13 | */ 14 | class Task extends Extension { 15 | constructor(parameters) { 16 | super(parameters); 17 | } 18 | 19 | /* === Attributes === */ 20 | /** 21 | * @public 22 | */ 23 | async getTask() { 24 | return (await this._getImplementation()).task; 25 | } 26 | 27 | /** 28 | * @public 29 | */ 30 | async getRequiredDependenciesCallback() { 31 | return (await this._getImplementation()).determineRequiredDependencies; 32 | } 33 | 34 | /* === Internals === */ 35 | /** 36 | * @private 37 | */ 38 | async _getImplementation() { 39 | const taskPath = path.join(this.getRootPath(), this._config.task.path); 40 | const {default: task, determineRequiredDependencies} = await import(pathToFileURL(taskPath)); 41 | return { 42 | task, determineRequiredDependencies 43 | }; 44 | } 45 | 46 | /** 47 | * @private 48 | */ 49 | async _validateConfig() { 50 | // TODO: Move to validator 51 | if (/--\d+$/.test(this.getName())) { 52 | throw new Error(`Task name must not end with '--'`); 53 | } 54 | // TODO: Check that paths exist 55 | } 56 | } 57 | 58 | export default Task; 59 | -------------------------------------------------------------------------------- /lib/specifications/extensions/ProjectShim.js: -------------------------------------------------------------------------------- 1 | import Extension from "../Extension.js"; 2 | 3 | /** 4 | * ProjectShim 5 | * 6 | * @public 7 | * @class 8 | * @alias @ui5/project/specifications/extensions/ProjectShim 9 | * @extends @ui5/project/specifications/Extension 10 | * @hideconstructor 11 | */ 12 | class ProjectShim extends Extension { 13 | constructor(parameters) { 14 | super(parameters); 15 | } 16 | 17 | 18 | /* === Attributes === */ 19 | /** 20 | * @public 21 | */ 22 | getDependencyShims() { 23 | return this._config.shims.dependencies || {}; 24 | } 25 | 26 | /** 27 | * @public 28 | */ 29 | getConfigurationShims() { 30 | return this._config.shims.configurations || {}; 31 | } 32 | 33 | /** 34 | * @public 35 | */ 36 | getCollectionShims() { 37 | return this._config.shims.collections || {}; 38 | } 39 | 40 | /* === Internals === */ 41 | /** 42 | * @private 43 | */ 44 | async _validateConfig() { 45 | if (this._config.shims.collections) { 46 | const { 47 | default: path 48 | } = await import("path"); 49 | for (const dependencyDefinition of Object.values(this._config.shims.collections)) { 50 | Object.values(dependencyDefinition.modules).forEach((depPath) => { 51 | if (path.isAbsolute(depPath)) { 52 | throw new Error("All module paths of collections defined in a project-shim must be relative"); 53 | } 54 | }); 55 | } 56 | } 57 | } 58 | } 59 | 60 | export default ProjectShim; 61 | -------------------------------------------------------------------------------- /jsdoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags": { 3 | "allowUnknownTags": false 4 | }, 5 | "source": { 6 | "include": ["README.md"], 7 | "includePattern": ".+\\.js$", 8 | "excludePattern": "(node_modules(\\\\|/))" 9 | }, 10 | "plugins": [ 11 | "./jsdoc-plugin.cjs" 12 | ], 13 | "opts": { 14 | "encoding": "utf8", 15 | "destination": "jsdocs/", 16 | "recurse": true, 17 | "verbose": true, 18 | "access": "public" 19 | }, 20 | "templates": { 21 | "cleverLinks": false, 22 | "monospaceLinks": false, 23 | "default": { 24 | "useLongnameInNav": true 25 | } 26 | }, 27 | "openGraph": { 28 | "title": "UI5 CLI - API Reference", 29 | "type": "website", 30 | "image": "https://ui5.github.io/cli/v4/images/UI5_logo_wide.png", 31 | "site_name": "UI5 CLI - API Reference", 32 | "url": "https://ui5.github.io/cli/" 33 | }, 34 | "docdash": { 35 | "sectionOrder": [ 36 | "Modules", 37 | "Namespaces", 38 | "Classes", 39 | "Externals", 40 | "Events", 41 | "Mixins", 42 | "Tutorials", 43 | "Interfaces" 44 | ], 45 | "meta": { 46 | "title": "UI5 CLI - API Reference - UI5 Project", 47 | "description": "UI5 CLI - API Reference - UI5 Project", 48 | "keyword": "openui5 sapui5 ui5 build development tool api reference" 49 | }, 50 | "search": true, 51 | "wrap": true, 52 | "menu": { 53 | "GitHub": { 54 | "href": "https://github.com/SAP/ui5-project", 55 | "target": "_blank", 56 | "class": "menu-item", 57 | "id": "github_link" 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /test/fixtures/lbt/modules/declare_toplevel.js: -------------------------------------------------------------------------------- 1 | //declares module sap.ui.testmodule 2 | jQuery.sap.declare("sap.ui.testmodule"); 3 | 4 | // top level statements in the scope 5 | jQuery.sap.require("top.require.void"); 6 | var x = jQuery.sap.require("top.require.var"); 7 | x = jQuery.sap.require("top.require.assign"); 8 | var xs = sap.ui.requireSync("top/requireSync/var"); 9 | xs = sap.ui.requireSync("top/requireSync/assign"); 10 | 11 | // a block with require statements 12 | { 13 | jQuery.sap.require("block.require.void"); 14 | var z = jQuery.sap.require("block.require.var"); 15 | z = jQuery.sap.require("block.require.assign"); 16 | var zs = sap.ui.requireSync("block/requireSync/var"); 17 | zs = sap.ui.requireSync("block/requireSync/assign"); 18 | } 19 | 20 | // a nested function invocation with require statements 21 | (function() { 22 | jQuery.sap.require("nested.scope.require.void"); 23 | var z = jQuery.sap.require("nested.scope.require.var"); 24 | z = jQuery.sap.require("nested.scope.require.assign"); 25 | var zs = sap.ui.requireSync("nested/scope/requireSync/var"); 26 | zs = sap.ui.requireSync("nested/scope/requireSync/assign"); 27 | }()); 28 | 29 | //a nested function expression with require statements 30 | (function() { 31 | jQuery.sap.require("nested.scope2.require.void"); 32 | var z = jQuery.sap.require("nested.scope2.require.var"); 33 | z = jQuery.sap.require("nested.scope2.require.assign"); 34 | var zs = sap.ui.requireSync("nested/scope2/requireSync/var"); 35 | zs = sap.ui.requireSync("nested/scope2/requireSync/assign"); 36 | })(); 37 | -------------------------------------------------------------------------------- /test/fixtures/application.h/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 4.0.0 10 | 11 | 12 | 15 | 16 | com.sap.test 17 | application.h 18 | 1.0.0 19 | war 20 | 21 | 22 | 25 | 26 | application.h 27 | Simple SAPUI5 based application 28 | 29 | 30 | 33 | 34 | 35 | 36 | application.h 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /test/lib/graph/graphFromPackageDependencies.js: -------------------------------------------------------------------------------- 1 | import test from "ava"; 2 | import path from "node:path"; 3 | import sinonGlobal from "sinon"; 4 | import {graphFromPackageDependencies} from "../../../lib/graph/graph.js"; 5 | 6 | const __dirname = import.meta.dirname; 7 | 8 | const applicationAPath = path.join(__dirname, "..", "..", "fixtures", "application.a"); 9 | test.beforeEach((t) => { 10 | t.context.sinon = sinonGlobal.createSandbox(); 11 | }); 12 | 13 | test.afterEach.always((t) => { 14 | t.context.sinon.restore(); 15 | }); 16 | 17 | test("Application A", async (t) => { 18 | const projectGraph = await graphFromPackageDependencies({cwd: applicationAPath}); 19 | const rootProject = projectGraph.getRoot(); 20 | t.is(rootProject.getName(), "application.a", "Returned correct root project"); 21 | }); 22 | 23 | test("Application A: Traverse project graph breadth first", async (t) => { 24 | const projectGraph = await graphFromPackageDependencies({cwd: applicationAPath}); 25 | const callbackStub = t.context.sinon.stub().resolves(); 26 | await projectGraph.traverseBreadthFirst(callbackStub); 27 | 28 | t.is(callbackStub.callCount, 5, "Five projects have been visited"); 29 | 30 | const callbackCalls = callbackStub.getCalls().map((call) => call.args[0].project.getName()); 31 | 32 | t.deepEqual(callbackCalls, [ 33 | "application.a", 34 | "library.d", 35 | "library.a", 36 | "library.b", 37 | "library.c" 38 | ], "Traversed graph in correct order"); 39 | }); 40 | 41 | // More integration tests for package.json dependencies in graph/providers/NodePackageDependencies.integration.js 42 | -------------------------------------------------------------------------------- /lib/build/definitions/themeLibrary.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Get tasks and their configuration for a given application project 4 | * 5 | * @private 6 | * @param {object} parameters 7 | * @param {object} parameters.project 8 | * @param {object} parameters.taskUtil 9 | * @param {Function} parameters.getTask 10 | */ 11 | export default function({project, taskUtil, getTask}) { 12 | const tasks = new Map(); 13 | tasks.set("replaceCopyright", { 14 | options: { 15 | copyright: project.getCopyright(), 16 | pattern: "/resources/**/*.{less,theme}" 17 | } 18 | }); 19 | 20 | tasks.set("replaceVersion", { 21 | options: { 22 | version: project.getVersion(), 23 | pattern: "/resources/**/*.{less,theme}" 24 | } 25 | }); 26 | 27 | tasks.set("buildThemes", { 28 | requiresDependencies: true, 29 | options: { 30 | projectName: project.getName(), 31 | librariesPattern: !taskUtil.isRootProject() ? "/resources/**/(*.library|library.js)" : undefined, 32 | themesPattern: !taskUtil.isRootProject() ? "/resources/sap/ui/core/themes/*" : undefined, 33 | inputPattern: "/resources/**/themes/*/library.source.less", 34 | cssVariables: taskUtil.getBuildOption("cssVariables") 35 | } 36 | }); 37 | 38 | if (project.isFrameworkProject()) { 39 | tasks.set("generateThemeDesignerResources", { 40 | requiresDependencies: true, 41 | options: { 42 | version: project.getVersion() 43 | } 44 | }); 45 | } else { 46 | tasks.set("generateThemeDesignerResources", {taskFunction: null}); 47 | } 48 | 49 | tasks.set("generateResourcesJson", {requiresDependencies: true}); 50 | return tasks; 51 | } 52 | -------------------------------------------------------------------------------- /test/fixtures/lbt/modules/declare_function_invocation_scope.js: -------------------------------------------------------------------------------- 1 | //uses a function invocation expr to create a scope 2 | (function($2, window){ 3 | 4 | //declares module sap.ui.testmodule 5 | jQuery.sap.declare("sap.ui.testmodule"); 6 | 7 | // top level statements in the scope 8 | jQuery.sap.require("top.require.void"); 9 | var x = jQuery.sap.require("top.require.var"); 10 | x = jQuery.sap.require("top.require.assign"); 11 | var xs = sap.ui.requireSync("top/requireSync/var"); 12 | xs = sap.ui.requireSync("top/requireSync/assign"); 13 | 14 | // a block with require statements 15 | { 16 | jQuery.sap.require("block.require.void"); 17 | var z = jQuery.sap.require("block.require.var"); 18 | z = jQuery.sap.require("block.require.assign"); 19 | var zs = sap.ui.requireSync("block/requireSync/var"); 20 | zs = sap.ui.requireSync("block/requireSync/assign"); 21 | } 22 | 23 | // a nested function invocation with require statements 24 | (function() { 25 | jQuery.sap.require("nested.scope.require.void"); 26 | var z = jQuery.sap.require("nested.scope.require.var"); 27 | z = jQuery.sap.require("nested.scope.require.assign"); 28 | var zs = sap.ui.requireSync("nested/scope/requireSync/var"); 29 | zs = sap.ui.requireSync("nested/scope/requireSync/assign"); 30 | }()); 31 | 32 | //a nested function expression with require statements 33 | (function() { 34 | jQuery.sap.require("nested.scope2.require.void"); 35 | var z = jQuery.sap.require("nested.scope2.require.var"); 36 | z = jQuery.sap.require("nested.scope2.require.assign"); 37 | var zs = sap.ui.requireSync("nested/scope2/requireSync/var"); 38 | zs = sap.ui.requireSync("nested/scope2/requireSync/assign"); 39 | })(); 40 | 41 | }(jQuery, this)); 42 | -------------------------------------------------------------------------------- /test/lib/graph/providers/NodePackageDependencies.js: -------------------------------------------------------------------------------- 1 | import test from "ava"; 2 | import sinonGlobal from "sinon"; 3 | import esmock from "esmock"; 4 | 5 | test.beforeEach(async (t) => { 6 | const sinon = t.context.sinon = sinonGlobal.createSandbox(); 7 | 8 | t.context.readPackageUp = sinon.stub(); 9 | 10 | t.context.NodePackageDependencies = await esmock("../../../../lib/graph/providers/NodePackageDependencies.js", { 11 | "read-package-up": { 12 | readPackageUp: t.context.readPackageUp 13 | } 14 | }); 15 | }); 16 | 17 | test.afterEach.always((t) => { 18 | t.context.sinon.restore(); 19 | }); 20 | 21 | test("getRootNode should reject with error when 'name' is empty/missing in package.json", async (t) => { 22 | const {NodePackageDependencies, readPackageUp} = t.context; 23 | 24 | const resolver = new NodePackageDependencies({cwd: "cwd"}); 25 | 26 | readPackageUp.resolves({ 27 | path: "/path/to/root/package.json", 28 | packageJson: { 29 | name: "" 30 | } 31 | }); 32 | 33 | await t.throwsAsync(() => resolver.getRootNode(), { 34 | message: "Missing or empty 'name' attribute in package.json at /path/to/root" 35 | }); 36 | }); 37 | 38 | test("getRootNode should reject with error when 'version' is empty/missing in package.json", async (t) => { 39 | const {NodePackageDependencies, readPackageUp} = t.context; 40 | 41 | const resolver = new NodePackageDependencies({cwd: "cwd"}); 42 | 43 | readPackageUp.resolves({ 44 | path: "/path/to/root/package.json", 45 | packageJson: { 46 | name: "test-package-name", 47 | version: "" 48 | } 49 | }); 50 | 51 | await t.throwsAsync(() => resolver.getRootNode(), { 52 | message: "Missing or empty 'version' attribute in package.json at /path/to/root" 53 | }); 54 | }); 55 | --------------------------------------------------------------------------------