From 8ab8ace3c771fbbb3fd1b76bee794703ad7ee7de Mon Sep 17 00:00:00 2001 From: Florian Vogt Date: Tue, 7 Apr 2026 15:08:23 +0200 Subject: [PATCH] build: Refactor project to mono repository setup --- .github/dependabot.yml | 25 - .github/workflows/build.yml | 6 +- .github/workflows/dependabot-auto-merge.yml | 26 - .github/workflows/deploy.yml | 6 +- 404.html | 18 + README_AUTHORS.md => CONTRIBUTING.md | 62 +- README.md | 105 +- REUSE.toml | 4 +- ...40ef5357d7f4d36955092cdaf1884a2_LowRes.png | Bin 0 -> 17013 bytes ...9e1157d948c488c9717ef840fa9b396_LowRes.png | Bin 0 -> 61396 bytes ...c157e9764b846fea7de519d141c33ac_LowRes.png | Bin 0 -> 15502 bytes package-lock.json | 1417 +++++++++-------- package.json | 28 +- packages/quickstart/README.md | 29 + packages/quickstart/steps/01/Component.ts | 10 + packages/quickstart/steps/01/README.md | 384 +++++ packages/quickstart/steps/01/package.json | 18 + packages/quickstart/steps/01/tsconfig.json | 21 + packages/quickstart/steps/01/ui5.yaml | 25 + .../quickstart/steps/01/webapp/index.html | 18 + packages/quickstart/steps/01/webapp/index.ts | 9 + .../quickstart/steps/01/webapp/manifest.json | 11 + packages/quickstart/steps/02/Component.ts | 10 + packages/quickstart/steps/02/README.md | 128 ++ packages/quickstart/steps/02/package.json | 18 + packages/quickstart/steps/02/tsconfig.json | 17 + packages/quickstart/steps/02/ui5.yaml | 25 + .../steps/02/webapp/App.controller.ts | 11 + .../quickstart/steps/02/webapp/App.view.xml | 15 + .../quickstart/steps/02/webapp/index.html | 18 + packages/quickstart/steps/02/webapp/index.ts | 5 + .../quickstart/steps/02/webapp/manifest.json | 11 + packages/quickstart/steps/03/Component.ts | 10 + packages/quickstart/steps/03/README.md | 220 +++ packages/quickstart/steps/03/package.json | 18 + packages/quickstart/steps/03/tsconfig.json | 17 + packages/quickstart/steps/03/ui5.yaml | 25 + .../steps/03/webapp/App.controller.ts | 34 + .../quickstart/steps/03/webapp/App.view.xml | 48 + .../quickstart/steps/03/webapp/index.html | 18 + packages/quickstart/steps/03/webapp/index.ts | 5 + .../quickstart/steps/03/webapp/manifest.json | 11 + packages/walkthrough/README.md | 64 + .../walkthrough/steps}/01/README.md | 6 +- ...dd456361379431aab7e5bcdaaeff00f_LowRes.png | Bin .../walkthrough/steps}/01/package.json | 0 .../walkthrough/steps}/01/ui5.yaml | 0 .../walkthrough/steps}/01/webapp/index.html | 0 .../steps}/01/webapp/manifest.json | 0 .../walkthrough/steps}/02/README.md | 10 +- ...f6b6b9dc46a474da9287c382c8d3456_LowRes.png | Bin .../walkthrough/steps}/02/package.json | 0 .../walkthrough/steps}/02/tsconfig.json | 0 .../walkthrough/steps}/02/ui5.yaml | 2 +- .../steps}/02/webapp/index-cdn.html | 0 .../walkthrough/steps}/02/webapp/index.html | 0 .../walkthrough/steps}/02/webapp/index.ts | 0 .../steps}/02/webapp/manifest.json | 0 .../walkthrough/steps}/03/README.md | 8 +- ...0a42d381b9e4388bf7fdc0b941e5381_LowRes.png | Bin .../walkthrough/steps}/03/package.json | 2 +- .../walkthrough/steps}/03/tsconfig.json | 0 .../walkthrough/steps/03}/ui5.yaml | 2 +- .../steps}/03/webapp/index-cdn.html | 0 .../walkthrough/steps}/03/webapp/index.html | 0 .../walkthrough/steps}/03/webapp/index.ts | 0 .../steps}/03/webapp/manifest.json | 0 .../walkthrough/steps}/04/README.md | 6 +- ...5f6775a39d3409ea673f4acc3812142_LowRes.png | Bin .../walkthrough/steps}/04/package.json | 2 +- .../walkthrough/steps}/04/tsconfig.json | 0 .../walkthrough/steps/04}/ui5.yaml | 2 +- .../steps}/04/webapp/index-cdn.html | 0 .../walkthrough/steps}/04/webapp/index.html | 0 .../walkthrough/steps}/04/webapp/index.ts | 0 .../steps}/04/webapp/manifest.json | 0 .../steps}/04/webapp/view/App.view.xml | 0 .../walkthrough/steps}/05/README.md | 6 +- ...edfdf89b30643ddbfcab1fe50bfa892_LowRes.png | Bin .../walkthrough/steps}/05/package.json | 2 +- .../walkthrough/steps}/05/tsconfig.json | 0 .../walkthrough/steps/05}/ui5.yaml | 2 +- .../05/webapp/controller/App.controller.ts | 0 .../steps}/05/webapp/index-cdn.html | 0 .../walkthrough/steps}/05/webapp/index.html | 0 .../walkthrough/steps}/05/webapp/index.ts | 0 .../steps}/05/webapp/manifest.json | 0 .../steps}/05/webapp/view/App.view.xml | 0 .../walkthrough/steps}/06/README.md | 6 +- ...f629a95211f49afa367b60d233fb390_LowRes.png | Bin .../walkthrough/steps}/06/package.json | 2 +- .../walkthrough/steps}/06/tsconfig.json | 0 .../walkthrough/steps/06}/ui5.yaml | 2 +- .../06/webapp/controller/App.controller.ts | 0 .../steps}/06/webapp/index-cdn.html | 0 .../walkthrough/steps}/06/webapp/index.html | 0 .../walkthrough/steps}/06/webapp/index.ts | 0 .../steps}/06/webapp/manifest.json | 0 .../steps}/06/webapp/view/App.view.xml | 0 .../walkthrough/steps}/07/README.md | 6 +- ...fc105517a644407bd90662e3d94ea01_LowRes.png | Bin .../walkthrough/steps}/07/package.json | 2 +- .../walkthrough/steps}/07/tsconfig.json | 0 packages/walkthrough/steps/07/ui5.yaml | 23 + .../07/webapp/controller/App.controller.ts | 0 .../steps}/07/webapp/index-cdn.html | 0 .../walkthrough/steps}/07/webapp/index.html | 0 .../walkthrough/steps}/07/webapp/index.ts | 0 .../steps}/07/webapp/manifest.json | 0 .../steps}/07/webapp/view/App.view.xml | 0 .../walkthrough/steps}/08/README.md | 6 +- ...eb579e2f2a64c5a9894086322c7faa0_LowRes.png | Bin .../walkthrough/steps}/08/package.json | 2 +- .../walkthrough/steps}/08/tsconfig.json | 0 packages/walkthrough/steps/08/ui5.yaml | 23 + .../08/webapp/controller/App.controller.ts | 0 .../steps}/08/webapp/i18n/i18n.properties | 0 .../steps}/08/webapp/index-cdn.html | 0 .../walkthrough/steps}/08/webapp/index.html | 0 .../walkthrough/steps}/08/webapp/index.ts | 0 .../steps}/08/webapp/manifest.json | 0 .../steps}/08/webapp/view/App.view.xml | 0 .../walkthrough/steps}/09/README.md | 6 +- ...e237a36972a44ac8522dd1a540ac062_LowRes.png | Bin ...ac9bcfa902c44c496d115acd7ee7376_LowRes.png | Bin .../walkthrough/steps}/09/package.json | 2 +- .../walkthrough/steps}/09/tsconfig.json | 0 packages/walkthrough/steps/09/ui5.yaml | 23 + .../walkthrough/steps}/09/webapp/Component.ts | 0 .../09/webapp/controller/App.controller.ts | 0 .../steps}/09/webapp/i18n/i18n.properties | 0 .../steps}/09/webapp/index-cdn.html | 0 .../walkthrough/steps}/09/webapp/index.html | 0 .../walkthrough/steps}/09/webapp/index.ts | 0 .../steps}/09/webapp/manifest.json | 0 .../steps}/09/webapp/view/App.view.xml | 0 .../walkthrough/steps}/10/README.md | 6 +- ...b2aef85c016485da4a31c087bf4c0f0_LowRes.png | Bin .../walkthrough/steps}/10/package.json | 2 +- .../walkthrough/steps}/10/tsconfig.json | 0 packages/walkthrough/steps/10/ui5.yaml | 23 + .../walkthrough/steps}/10/webapp/Component.ts | 0 .../10/webapp/controller/App.controller.ts | 0 .../steps}/10/webapp/i18n/i18n.properties | 0 .../steps}/10/webapp/index-cdn.html | 0 .../walkthrough/steps}/10/webapp/index.html | 0 .../steps}/10/webapp/manifest.json | 0 .../steps}/10/webapp/view/App.view.xml | 0 .../walkthrough/steps}/11/README.md | 6 +- ...7feb5417c89462ead5b4259f3ecfd47_LowRes.png | Bin .../walkthrough/steps}/11/package.json | 2 +- .../walkthrough/steps}/11/tsconfig.json | 0 packages/walkthrough/steps/11/ui5.yaml | 23 + .../walkthrough/steps}/11/webapp/Component.ts | 0 .../11/webapp/controller/App.controller.ts | 0 .../steps}/11/webapp/i18n/i18n.properties | 0 .../steps}/11/webapp/index-cdn.html | 0 .../walkthrough/steps}/11/webapp/index.html | 0 .../steps}/11/webapp/manifest.json | 0 .../steps}/11/webapp/view/App.view.xml | 0 .../walkthrough/steps}/12/README.md | 6 +- ...becf3ee81f5486a864e3b39ba036402_LowRes.png | Bin .../walkthrough/steps}/12/package.json | 2 +- .../walkthrough/steps}/12/tsconfig.json | 0 packages/walkthrough/steps/12/ui5.yaml | 23 + .../walkthrough/steps}/12/webapp/Component.ts | 0 .../12/webapp/controller/App.controller.ts | 0 .../steps}/12/webapp/i18n/i18n.properties | 0 .../steps}/12/webapp/index-cdn.html | 0 .../walkthrough/steps}/12/webapp/index.html | 0 .../steps}/12/webapp/manifest.json | 0 .../steps}/12/webapp/view/App.view.xml | 0 .../walkthrough/steps}/13/README.md | 6 +- ...becf3ee81f5486a864e3b39ba036402_LowRes.png | Bin .../walkthrough/steps}/13/package.json | 2 +- .../walkthrough/steps}/13/tsconfig.json | 0 packages/walkthrough/steps/13/ui5.yaml | 23 + .../walkthrough/steps}/13/webapp/Component.ts | 0 .../13/webapp/controller/App.controller.ts | 0 .../steps}/13/webapp/i18n/i18n.properties | 0 .../steps}/13/webapp/index-cdn.html | 0 .../walkthrough/steps}/13/webapp/index.html | 0 .../steps}/13/webapp/manifest.json | 0 .../steps}/13/webapp/view/App.view.xml | 0 .../walkthrough/steps}/14/README.md | 6 +- ...9a40e539b7c49c485be821efbd3821f_LowRes.png | Bin .../walkthrough/steps}/14/package.json | 2 +- .../walkthrough/steps}/14/tsconfig.json | 0 packages/walkthrough/steps/14/ui5.yaml | 23 + .../walkthrough/steps}/14/webapp/Component.ts | 0 .../14/webapp/controller/App.controller.ts | 0 .../steps}/14/webapp/css/style.css | 0 .../steps}/14/webapp/i18n/i18n.properties | 0 .../steps}/14/webapp/index-cdn.html | 0 .../walkthrough/steps}/14/webapp/index.html | 0 .../steps}/14/webapp/manifest.json | 0 .../steps}/14/webapp/view/App.view.xml | 0 .../walkthrough/steps}/15/README.md | 6 +- ...3724d2f97e94a78b27d8ab01ff9c37d_LowRes.png | Bin .../walkthrough/steps}/15/package.json | 2 +- .../walkthrough/steps}/15/tsconfig.json | 0 packages/walkthrough/steps/15/ui5.yaml | 23 + .../walkthrough/steps}/15/webapp/Component.ts | 0 .../15/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../steps}/15/webapp/css/style.css | 0 .../steps}/15/webapp/i18n/i18n.properties | 0 .../steps}/15/webapp/index-cdn.html | 0 .../walkthrough/steps}/15/webapp/index.html | 0 .../steps}/15/webapp/manifest.json | 0 .../steps}/15/webapp/view/App.view.xml | 0 .../steps}/15/webapp/view/HelloPanel.view.xml | 0 .../walkthrough/steps}/16/README.md | 6 +- ...916080895e144ed8b31963bfb18e17f_LowRes.png | Bin .../walkthrough/steps}/16/package.json | 2 +- .../walkthrough/steps}/16/tsconfig.json | 0 packages/walkthrough/steps/16/ui5.yaml | 23 + .../walkthrough/steps}/16/webapp/Component.ts | 0 .../16/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../steps}/16/webapp/css/style.css | 0 .../steps}/16/webapp/i18n/i18n.properties | 0 .../steps}/16/webapp/index-cdn.html | 0 .../walkthrough/steps}/16/webapp/index.html | 0 .../steps}/16/webapp/manifest.json | 0 .../steps}/16/webapp/view/App.view.xml | 0 .../16/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/16/webapp/view/HelloPanel.view.xml | 0 .../walkthrough/steps}/17/README.md | 6 +- ...351bbd078824c43bf1758b0c3679cbd_LowRes.png | Bin .../walkthrough/steps}/17/package.json | 2 +- .../walkthrough/steps}/17/tsconfig.json | 0 packages/walkthrough/steps/17/ui5.yaml | 23 + .../walkthrough/steps}/17/webapp/Component.ts | 0 .../17/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../steps}/17/webapp/css/style.css | 0 .../steps}/17/webapp/i18n/i18n.properties | 0 .../steps}/17/webapp/index-cdn.html | 0 .../walkthrough/steps}/17/webapp/index.html | 0 .../steps}/17/webapp/manifest.json | 0 .../steps}/17/webapp/view/App.view.xml | 0 .../17/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/17/webapp/view/HelloPanel.view.xml | 0 .../walkthrough/steps}/18/README.md | 6 +- ...bc48e23cc7d45e393cc95bbbfc6e0a3_LowRes.png | Bin .../walkthrough/steps}/18/package.json | 2 +- .../walkthrough/steps}/18/tsconfig.json | 0 packages/walkthrough/steps/18/ui5.yaml | 23 + .../walkthrough/steps}/18/webapp/Component.ts | 0 .../18/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../steps}/18/webapp/css/style.css | 0 .../steps}/18/webapp/i18n/i18n.properties | 0 .../steps}/18/webapp/index-cdn.html | 0 .../walkthrough/steps}/18/webapp/index.html | 0 .../steps}/18/webapp/manifest.json | 0 .../steps}/18/webapp/view/App.view.xml | 0 .../18/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/18/webapp/view/HelloPanel.view.xml | 0 .../walkthrough/steps}/19/README.md | 8 +- ...05bdb47393b4abda3e1b54498959c38_LowRes.png | Bin .../walkthrough/steps}/19/package.json | 2 +- .../walkthrough/steps}/19/tsconfig.json | 0 packages/walkthrough/steps/19/ui5.yaml | 23 + .../walkthrough/steps}/19/webapp/Component.ts | 0 .../19/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../steps}/19/webapp/css/style.css | 0 .../steps}/19/webapp/i18n/i18n.properties | 0 .../steps}/19/webapp/index-cdn.html | 0 .../walkthrough/steps}/19/webapp/index.html | 0 .../steps}/19/webapp/manifest.json | 0 .../steps}/19/webapp/model/localInvoices.json | 0 .../steps}/19/webapp/view/App.view.xml | 0 .../19/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/19/webapp/view/HelloPanel.view.xml | 0 .../19/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/20/README.md | 6 +- ...c9e919119564ddab78b8d0550ecfa9b_LowRes.png | Bin .../walkthrough/steps}/20/package.json | 2 +- .../walkthrough/steps}/20/tsconfig.json | 0 packages/walkthrough/steps/20/ui5.yaml | 23 + .../walkthrough/steps}/20/webapp/Component.ts | 0 .../20/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/20/webapp/css/style.css | 0 .../steps}/20/webapp/i18n/i18n.properties | 0 .../steps}/20/webapp/index-cdn.html | 0 .../walkthrough/steps}/20/webapp/index.html | 0 .../steps}/20/webapp/manifest.json | 0 .../steps}/20/webapp/model/localInvoices.json | 0 .../steps}/20/webapp/view/App.view.xml | 0 .../20/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/20/webapp/view/HelloPanel.view.xml | 0 .../20/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/21/README.md | 6 +- ...36b7008113442c8a4765bb710dd8ea9_LowRes.png | Bin .../walkthrough/steps}/21/package.json | 2 +- .../walkthrough/steps}/21/tsconfig.json | 0 packages/walkthrough/steps/21/ui5.yaml | 23 + .../walkthrough/steps}/21/webapp/Component.ts | 0 .../21/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/21/webapp/css/style.css | 0 .../steps}/21/webapp/i18n/i18n.properties | 0 .../steps}/21/webapp/index-cdn.html | 0 .../walkthrough/steps}/21/webapp/index.html | 0 .../steps}/21/webapp/manifest.json | 0 .../steps}/21/webapp/model/localInvoices.json | 0 .../steps}/21/webapp/view/App.view.xml | 0 .../21/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/21/webapp/view/HelloPanel.view.xml | 0 .../21/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/22/README.md | 6 +- ...aa185a90dd7495cb6ec30c96bc80a54_LowRes.png | Bin .../walkthrough/steps}/22/package.json | 2 +- .../walkthrough/steps}/22/tsconfig.json | 0 packages/walkthrough/steps/22/ui5.yaml | 23 + .../walkthrough/steps}/22/webapp/Component.ts | 0 .../22/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/22/webapp/css/style.css | 0 .../steps}/22/webapp/i18n/i18n.properties | 0 .../steps}/22/webapp/index-cdn.html | 0 .../walkthrough/steps}/22/webapp/index.html | 0 .../steps}/22/webapp/manifest.json | 0 .../steps}/22/webapp/model/formatter.ts | 0 .../steps}/22/webapp/model/localInvoices.json | 0 .../steps}/22/webapp/view/App.view.xml | 0 .../22/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/22/webapp/view/HelloPanel.view.xml | 0 .../22/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/23/README.md | 6 +- ...72ab6bf88674c23ba103efd97163133_LowRes.png | Bin .../walkthrough/steps}/23/package.json | 2 +- .../walkthrough/steps}/23/tsconfig.json | 0 packages/walkthrough/steps/23/ui5.yaml | 23 + .../walkthrough/steps}/23/webapp/Component.ts | 0 .../23/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/23/webapp/css/style.css | 0 .../steps}/23/webapp/i18n/i18n.properties | 0 .../steps}/23/webapp/index-cdn.html | 0 .../walkthrough/steps}/23/webapp/index.html | 0 .../steps}/23/webapp/manifest.json | 0 .../steps}/23/webapp/model/formatter.ts | 0 .../steps}/23/webapp/model/localInvoices.json | 0 .../steps}/23/webapp/view/App.view.xml | 0 .../23/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/23/webapp/view/HelloPanel.view.xml | 0 .../23/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/24/README.md | 6 +- ...3f71b44bb644d1fa2a0ab14f1fcc02a_LowRes.png | Bin .../walkthrough/steps}/24/package.json | 2 +- .../walkthrough/steps}/24/tsconfig.json | 0 packages/walkthrough/steps/24/ui5.yaml | 23 + .../walkthrough/steps}/24/webapp/Component.ts | 0 .../24/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/24/webapp/css/style.css | 0 .../steps}/24/webapp/i18n/i18n.properties | 0 .../steps}/24/webapp/index-cdn.html | 0 .../walkthrough/steps}/24/webapp/index.html | 0 .../steps}/24/webapp/manifest.json | 0 .../steps}/24/webapp/model/formatter.ts | 0 .../steps}/24/webapp/model/localInvoices.json | 0 .../steps}/24/webapp/view/App.view.xml | 0 .../24/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/24/webapp/view/HelloPanel.view.xml | 0 .../24/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/25/README.md | 6 +- ...b76bb4b15eb44e1862d0b6c1c802571_LowRes.png | Bin .../walkthrough/steps}/25/package.json | 2 +- .../walkthrough/steps}/25/tsconfig.json | 0 .../walkthrough/steps}/25/ui5.yaml | 2 +- .../walkthrough/steps}/25/webapp/Component.ts | 0 .../25/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/25/webapp/css/style.css | 0 .../steps}/25/webapp/i18n/i18n.properties | 0 .../steps}/25/webapp/index-cdn.html | 0 .../walkthrough/steps}/25/webapp/index.html | 0 .../steps}/25/webapp/manifest.json | 0 .../steps}/25/webapp/model/formatter.ts | 0 .../steps}/25/webapp/view/App.view.xml | 0 .../25/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/25/webapp/view/HelloPanel.view.xml | 0 .../25/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/26/README.md | 6 +- ...a5e2b02d72d40d388f5e601d7de74df_LowRes.png | Bin ...e1403346ce9499f8bb102beaa4986d5_LowRes.png | Bin .../walkthrough/steps}/26/package.json | 2 +- .../walkthrough/steps}/26/tsconfig.json | 0 .../walkthrough/steps}/26/ui5.yaml | 2 +- .../walkthrough/steps}/26/webapp/Component.ts | 0 .../26/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/26/webapp/css/style.css | 0 .../steps}/26/webapp/i18n/i18n.properties | 0 .../steps}/26/webapp/index-cdn.html | 0 .../walkthrough/steps}/26/webapp/index.html | 0 .../26/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../26/webapp/localService/mockserver.ts | 0 .../steps}/26/webapp/manifest.json | 0 .../steps}/26/webapp/model/formatter.ts | 0 .../steps}/26/webapp/test/initMockServer.ts | 0 .../steps}/26/webapp/test/mockServer-cdn.html | 0 .../steps}/26/webapp/test/mockServer.html | 0 .../steps}/26/webapp/view/App.view.xml | 0 .../26/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/26/webapp/view/HelloPanel.view.xml | 0 .../26/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/27/README.md | 6 +- ...d29491d96574cfe8d8158d60a0a32e2_LowRes.png | Bin ...b5613ac3ab94757af2c7823039222a9_LowRes.png | Bin .../walkthrough/steps}/27/package.json | 2 +- .../walkthrough/steps}/27/tsconfig.json | 0 .../walkthrough/steps}/27/ui5.yaml | 0 .../walkthrough/steps}/27/webapp/Component.ts | 0 .../27/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/27/webapp/css/style.css | 0 .../steps}/27/webapp/i18n/i18n.properties | 0 .../steps}/27/webapp/index-cdn.html | 0 .../walkthrough/steps}/27/webapp/index.html | 0 .../27/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../27/webapp/localService/mockserver.ts | 0 .../steps}/27/webapp/manifest.json | 0 .../steps}/27/webapp/model/formatter.ts | 0 .../steps}/27/webapp/test/Test.cdn.qunit.html | 0 .../steps}/27/webapp/test/Test.qunit.html | 0 .../steps}/27/webapp/test/initMockServer.ts | 0 .../steps}/27/webapp/test/mockServer-cdn.html | 0 .../steps}/27/webapp/test/mockServer.html | 0 .../27/webapp/test/testsuite.cdn.qunit.html | 0 .../27/webapp/test/testsuite.cdn.qunit.ts | 0 .../27/webapp/test/testsuite.qunit.html | 0 .../steps}/27/webapp/test/testsuite.qunit.ts | 0 .../27/webapp/test/unit/model/formatter.ts | 0 .../27/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/27/webapp/view/App.view.xml | 0 .../27/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/27/webapp/view/HelloPanel.view.xml | 0 .../27/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/28/README.md | 6 +- ...50d5b92921d44a4b432cc0fade88cc9_LowRes.png | Bin ...7e84d5bd72a485498564b92894869b5_LowRes.png | Bin .../walkthrough/steps}/28/package.json | 2 +- .../walkthrough/steps}/28/tsconfig.json | 0 .../walkthrough/steps}/28/ui5.yaml | 0 .../walkthrough/steps}/28/webapp/Component.ts | 0 .../28/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/28/webapp/css/style.css | 0 .../steps}/28/webapp/i18n/i18n.properties | 0 .../steps}/28/webapp/index-cdn.html | 0 .../walkthrough/steps}/28/webapp/index.html | 0 .../28/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../28/webapp/localService/mockserver.ts | 0 .../steps}/28/webapp/manifest.json | 0 .../steps}/28/webapp/model/formatter.ts | 0 .../steps}/28/webapp/test/Test.cdn.qunit.html | 0 .../steps}/28/webapp/test/Test.qunit.html | 0 .../steps}/28/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/28/webapp/test/mockServer-cdn.html | 0 .../steps}/28/webapp/test/mockServer.html | 0 .../28/webapp/test/testsuite.cdn.qunit.html | 0 .../28/webapp/test/testsuite.cdn.qunit.ts | 0 .../28/webapp/test/testsuite.qunit.html | 0 .../steps}/28/webapp/test/testsuite.qunit.ts | 0 .../28/webapp/test/unit/model/formatter.ts | 0 .../28/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/28/webapp/view/App.view.xml | 0 .../28/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/28/webapp/view/HelloPanel.view.xml | 0 .../28/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/29/README.md | 4 +- ...4c4b02c74eb4848b8b720d86042bfdc_LowRes.png | Bin ...30de31b311f43ffa9df9261ca760da0_LowRes.png | Bin .../walkthrough/steps}/29/package.json | 2 +- .../walkthrough/steps}/29/tsconfig.json | 0 .../walkthrough/steps}/29/ui5.yaml | 0 .../walkthrough/steps}/29/webapp/Component.ts | 0 .../29/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/29/webapp/css/style.css | 0 .../steps}/29/webapp/i18n/i18n.properties | 0 .../steps}/29/webapp/index-cdn.html | 0 .../walkthrough/steps}/29/webapp/index.html | 0 .../29/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../29/webapp/localService/mockserver.ts | 0 .../steps}/29/webapp/manifest.json | 0 .../steps}/29/webapp/model/formatter.ts | 0 .../steps}/29/webapp/test/Test.cdn.qunit.html | 0 .../steps}/29/webapp/test/Test.qunit.html | 0 .../steps}/29/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/29/webapp/test/mockServer-cdn.html | 0 .../steps}/29/webapp/test/mockServer.html | 0 .../29/webapp/test/testsuite.cdn.qunit.html | 0 .../29/webapp/test/testsuite.cdn.qunit.ts | 0 .../29/webapp/test/testsuite.qunit.html | 0 .../steps}/29/webapp/test/testsuite.qunit.ts | 0 .../29/webapp/test/unit/model/formatter.ts | 0 .../29/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/29/webapp/view/App.view.xml | 0 .../29/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/29/webapp/view/HelloPanel.view.xml | 0 .../29/webapp/view/InvoiceList.view.xml | 0 .../walkthrough/steps}/30/README.md | 6 +- ...4152a595fe24d45b12223e0abcccb9c_LowRes.png | Bin .../walkthrough/steps}/30/package.json | 2 +- .../walkthrough/steps}/30/tsconfig.json | 0 .../walkthrough/steps}/30/ui5.yaml | 0 .../walkthrough/steps}/30/webapp/Component.ts | 0 .../30/webapp/controller/App.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/30/webapp/css/style.css | 0 .../steps}/30/webapp/i18n/i18n.properties | 0 .../steps}/30/webapp/index-cdn.html | 0 .../walkthrough/steps}/30/webapp/index.html | 0 .../30/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../30/webapp/localService/mockserver.ts | 0 .../steps}/30/webapp/manifest.json | 0 .../steps}/30/webapp/model/formatter.ts | 0 .../steps}/30/webapp/test/Test.cdn.qunit.html | 0 .../steps}/30/webapp/test/Test.qunit.html | 0 .../steps}/30/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/30/webapp/test/mockServer-cdn.html | 0 .../steps}/30/webapp/test/mockServer.html | 0 .../30/webapp/test/testsuite.cdn.qunit.html | 0 .../30/webapp/test/testsuite.cdn.qunit.ts | 0 .../30/webapp/test/testsuite.qunit.html | 0 .../steps}/30/webapp/test/testsuite.qunit.ts | 0 .../30/webapp/test/unit/model/formatter.ts | 0 .../30/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/30/webapp/view/App.view.xml | 0 .../steps}/30/webapp/view/Detail.view.xml | 0 .../30/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/30/webapp/view/HelloPanel.view.xml | 0 .../30/webapp/view/InvoiceList.view.xml | 0 .../steps}/30/webapp/view/Overview.view.xml | 0 .../walkthrough/steps}/31/README.md | 6 +- ...1da9d48ae204c36a991146b90648c21_LowRes.png | Bin .../walkthrough/steps}/31/package.json | 2 +- .../walkthrough/steps}/31/tsconfig.json | 0 .../walkthrough/steps}/31/ui5.yaml | 0 .../walkthrough/steps}/31/webapp/Component.ts | 0 .../31/webapp/controller/App.controller.ts | 0 .../31/webapp/controller/Detail.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/31/webapp/css/style.css | 0 .../steps}/31/webapp/i18n/i18n.properties | 0 .../steps}/31/webapp/index-cdn.html | 0 .../walkthrough/steps}/31/webapp/index.html | 0 .../31/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../31/webapp/localService/mockserver.ts | 0 .../steps}/31/webapp/manifest.json | 0 .../steps}/31/webapp/model/formatter.ts | 0 .../steps}/31/webapp/test/Test.cdn.qunit.html | 0 .../steps}/31/webapp/test/Test.qunit.html | 0 .../steps}/31/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/31/webapp/test/mockServer-cdn.html | 0 .../steps}/31/webapp/test/mockServer.html | 0 .../31/webapp/test/testsuite.cdn.qunit.html | 0 .../31/webapp/test/testsuite.cdn.qunit.ts | 0 .../31/webapp/test/testsuite.qunit.html | 0 .../steps}/31/webapp/test/testsuite.qunit.ts | 0 .../31/webapp/test/unit/model/formatter.ts | 0 .../31/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/31/webapp/view/App.view.xml | 0 .../steps}/31/webapp/view/Detail.view.xml | 0 .../31/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/31/webapp/view/HelloPanel.view.xml | 0 .../31/webapp/view/InvoiceList.view.xml | 0 .../steps}/31/webapp/view/Overview.view.xml | 0 .../walkthrough/steps}/32/README.md | 6 +- ...3a8341077bb458685274c64d2317f6b_LowRes.png | Bin .../walkthrough/steps}/32/package.json | 2 +- .../walkthrough/steps}/32/tsconfig.json | 0 .../walkthrough/steps}/32/ui5.yaml | 0 .../walkthrough/steps}/32/webapp/Component.ts | 0 .../32/webapp/controller/App.controller.ts | 0 .../32/webapp/controller/Detail.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/32/webapp/css/style.css | 0 .../steps}/32/webapp/i18n/i18n.properties | 0 .../steps}/32/webapp/index-cdn.html | 0 .../walkthrough/steps}/32/webapp/index.html | 0 .../32/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../32/webapp/localService/mockserver.ts | 0 .../steps}/32/webapp/manifest.json | 0 .../steps}/32/webapp/model/formatter.ts | 0 .../steps}/32/webapp/test/Test.cdn.qunit.html | 0 .../steps}/32/webapp/test/Test.qunit.html | 0 .../steps}/32/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/32/webapp/test/mockServer-cdn.html | 0 .../steps}/32/webapp/test/mockServer.html | 0 .../32/webapp/test/testsuite.cdn.qunit.html | 0 .../32/webapp/test/testsuite.cdn.qunit.ts | 0 .../32/webapp/test/testsuite.qunit.html | 0 .../steps}/32/webapp/test/testsuite.qunit.ts | 0 .../32/webapp/test/unit/model/formatter.ts | 0 .../32/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/32/webapp/view/App.view.xml | 0 .../steps}/32/webapp/view/Detail.view.xml | 0 .../32/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/32/webapp/view/HelloPanel.view.xml | 0 .../32/webapp/view/InvoiceList.view.xml | 0 .../steps}/32/webapp/view/Overview.view.xml | 0 .../walkthrough/steps}/33/README.md | 6 +- ...1dd14c37b67473b817c8865f168f668_LowRes.png | Bin .../walkthrough/steps}/33/package.json | 2 +- .../walkthrough/steps}/33/tsconfig.json | 0 .../walkthrough/steps}/33/ui5.yaml | 0 .../walkthrough/steps}/33/webapp/Component.ts | 0 .../33/webapp/control/ProductRating.gen.d.ts | 0 .../steps}/33/webapp/control/ProductRating.ts | 0 .../33/webapp/controller/App.controller.ts | 0 .../33/webapp/controller/Detail.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/33/webapp/css/style.css | 0 .../steps}/33/webapp/i18n/i18n.properties | 0 .../steps}/33/webapp/index-cdn.html | 0 .../walkthrough/steps}/33/webapp/index.html | 0 .../33/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../33/webapp/localService/mockserver.ts | 0 .../steps}/33/webapp/manifest.json | 0 .../steps}/33/webapp/model/formatter.ts | 0 .../steps}/33/webapp/test/Test.cdn.qunit.html | 0 .../steps}/33/webapp/test/Test.qunit.html | 0 .../steps}/33/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/33/webapp/test/mockServer-cdn.html | 0 .../steps}/33/webapp/test/mockServer.html | 0 .../33/webapp/test/testsuite.cdn.qunit.html | 0 .../33/webapp/test/testsuite.cdn.qunit.ts | 0 .../33/webapp/test/testsuite.qunit.html | 0 .../steps}/33/webapp/test/testsuite.qunit.ts | 0 .../33/webapp/test/unit/model/formatter.ts | 0 .../33/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/33/webapp/view/App.view.xml | 0 .../steps}/33/webapp/view/Detail.view.xml | 0 .../33/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/33/webapp/view/HelloPanel.view.xml | 0 .../33/webapp/view/InvoiceList.view.xml | 0 .../steps}/33/webapp/view/Overview.view.xml | 0 .../walkthrough/steps}/34/README.md | 6 +- ...c3f2e0d8ac6471288af6495836c2f07_LowRes.png | Bin .../walkthrough/steps}/34/package.json | 2 +- .../walkthrough/steps}/34/tsconfig.json | 0 .../walkthrough/steps}/34/ui5.yaml | 0 .../walkthrough/steps}/34/webapp/Component.ts | 0 .../34/webapp/control/ProductRating.gen.d.ts | 0 .../steps}/34/webapp/control/ProductRating.ts | 0 .../34/webapp/controller/App.controller.ts | 0 .../34/webapp/controller/Detail.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/34/webapp/css/style.css | 0 .../steps}/34/webapp/i18n/i18n.properties | 0 .../steps}/34/webapp/index-cdn.html | 0 .../walkthrough/steps}/34/webapp/index.html | 0 .../34/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../34/webapp/localService/mockserver.ts | 0 .../steps}/34/webapp/manifest.json | 0 .../steps}/34/webapp/model/formatter.ts | 0 .../steps}/34/webapp/test/Test.cdn.qunit.html | 0 .../steps}/34/webapp/test/Test.qunit.html | 0 .../steps}/34/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/34/webapp/test/mockServer-cdn.html | 0 .../steps}/34/webapp/test/mockServer.html | 0 .../34/webapp/test/testsuite.cdn.qunit.html | 0 .../34/webapp/test/testsuite.cdn.qunit.ts | 0 .../34/webapp/test/testsuite.qunit.html | 0 .../steps}/34/webapp/test/testsuite.qunit.ts | 0 .../34/webapp/test/unit/model/formatter.ts | 0 .../34/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/34/webapp/view/App.view.xml | 0 .../steps}/34/webapp/view/Detail.view.xml | 0 .../34/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/34/webapp/view/HelloPanel.view.xml | 0 .../34/webapp/view/InvoiceList.view.xml | 0 .../steps}/34/webapp/view/Overview.view.xml | 0 .../walkthrough/steps}/35/README.md | 6 +- ...b0d57e04e574d7fbc4b10395e6cb260_LowRes.png | Bin .../walkthrough/steps}/35/package.json | 2 +- .../walkthrough/steps}/35/tsconfig.json | 0 .../walkthrough/steps}/35/ui5.yaml | 0 .../walkthrough/steps}/35/webapp/Component.ts | 0 .../35/webapp/control/ProductRating.gen.d.ts | 0 .../steps}/35/webapp/control/ProductRating.ts | 0 .../35/webapp/controller/App.controller.ts | 0 .../35/webapp/controller/Detail.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/35/webapp/css/style.css | 0 .../steps}/35/webapp/i18n/i18n.properties | 0 .../steps}/35/webapp/index-cdn.html | 0 .../walkthrough/steps}/35/webapp/index.html | 0 .../35/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../35/webapp/localService/mockserver.ts | 0 .../steps}/35/webapp/manifest.json | 0 .../steps}/35/webapp/model/formatter.ts | 0 .../steps}/35/webapp/test/Test.cdn.qunit.html | 0 .../steps}/35/webapp/test/Test.qunit.html | 0 .../steps}/35/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/35/webapp/test/mockServer-cdn.html | 0 .../steps}/35/webapp/test/mockServer.html | 0 .../35/webapp/test/testsuite.cdn.qunit.html | 0 .../35/webapp/test/testsuite.cdn.qunit.ts | 0 .../35/webapp/test/testsuite.qunit.html | 0 .../steps}/35/webapp/test/testsuite.qunit.ts | 0 .../35/webapp/test/unit/model/formatter.ts | 0 .../35/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/35/webapp/view/App.view.xml | 0 .../steps}/35/webapp/view/Detail.view.xml | 0 .../35/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/35/webapp/view/HelloPanel.view.xml | 0 .../35/webapp/view/InvoiceList.view.xml | 0 .../steps}/35/webapp/view/Overview.view.xml | 0 .../walkthrough/steps}/36/README.md | 6 +- ...216b131c492448d8a1df25db2b9a26d_LowRes.png | Bin .../walkthrough/steps}/36/package.json | 2 +- .../walkthrough/steps}/36/tsconfig.json | 0 .../walkthrough/steps}/36/ui5.yaml | 0 .../walkthrough/steps}/36/webapp/Component.ts | 0 .../36/webapp/control/ProductRating.gen.d.ts | 0 .../steps}/36/webapp/control/ProductRating.ts | 0 .../36/webapp/controller/App.controller.ts | 0 .../36/webapp/controller/Detail.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/36/webapp/css/style.css | 0 .../steps}/36/webapp/i18n/i18n.properties | 0 .../steps}/36/webapp/index-cdn.html | 0 .../walkthrough/steps}/36/webapp/index.html | 0 .../36/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../36/webapp/localService/mockserver.ts | 0 .../steps}/36/webapp/manifest.json | 0 .../steps}/36/webapp/model/formatter.ts | 0 .../steps}/36/webapp/test/Test.cdn.qunit.html | 0 .../steps}/36/webapp/test/Test.qunit.html | 0 .../steps}/36/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/36/webapp/test/mockServer-cdn.html | 0 .../steps}/36/webapp/test/mockServer.html | 0 .../36/webapp/test/testsuite.cdn.qunit.html | 0 .../36/webapp/test/testsuite.cdn.qunit.ts | 0 .../36/webapp/test/testsuite.qunit.html | 0 .../steps}/36/webapp/test/testsuite.qunit.ts | 0 .../36/webapp/test/unit/model/formatter.ts | 0 .../36/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/36/webapp/view/App.view.xml | 0 .../steps}/36/webapp/view/Detail.view.xml | 0 .../36/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/36/webapp/view/HelloPanel.view.xml | 0 .../36/webapp/view/InvoiceList.view.xml | 0 .../steps}/36/webapp/view/Overview.view.xml | 0 .../walkthrough/steps}/37/README.md | 6 +- ...54e9bca5a5844c14b45b5405496166b1_HiRes.png | Bin ...35deda1ebe1433fbf0ff066f6e3fc4b_LowRes.png | Bin ...f38dee2624c2437d8977de70575b3eae_HiRes.png | Bin .../walkthrough/steps}/37/package.json | 2 +- .../walkthrough/steps}/37/tsconfig.json | 0 .../walkthrough/steps}/37/ui5.yaml | 0 .../walkthrough/steps}/37/webapp/Component.ts | 0 .../37/webapp/control/ProductRating.gen.d.ts | 0 .../steps}/37/webapp/control/ProductRating.ts | 0 .../37/webapp/controller/App.controller.ts | 0 .../37/webapp/controller/Detail.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/37/webapp/css/style.css | 0 .../steps}/37/webapp/i18n/i18n.properties | 0 .../steps}/37/webapp/index-cdn.html | 0 .../walkthrough/steps}/37/webapp/index.html | 0 .../37/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../37/webapp/localService/mockserver.ts | 0 .../steps}/37/webapp/manifest.json | 0 .../steps}/37/webapp/model/formatter.ts | 0 .../steps}/37/webapp/test/Test.cdn.qunit.html | 0 .../steps}/37/webapp/test/Test.qunit.html | 0 .../steps}/37/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/37/webapp/test/mockServer-cdn.html | 0 .../steps}/37/webapp/test/mockServer.html | 0 .../37/webapp/test/testsuite.cdn.qunit.html | 0 .../37/webapp/test/testsuite.cdn.qunit.ts | 0 .../37/webapp/test/testsuite.qunit.html | 0 .../steps}/37/webapp/test/testsuite.qunit.ts | 0 .../37/webapp/test/unit/model/formatter.ts | 0 .../37/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/37/webapp/view/App.view.xml | 0 .../steps}/37/webapp/view/Detail.view.xml | 0 .../37/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/37/webapp/view/HelloPanel.view.xml | 0 .../37/webapp/view/InvoiceList.view.xml | 0 .../steps}/37/webapp/view/Overview.view.xml | 0 .../walkthrough/steps}/38/README.md | 4 +- ...b12cea5ac9b45bb9007aac5a1a8689f_LowRes.png | Bin .../walkthrough/steps}/38/package.json | 2 +- .../walkthrough/steps}/38/tsconfig.json | 0 .../walkthrough/steps}/38/ui5.yaml | 0 .../walkthrough/steps}/38/webapp/Component.ts | 0 .../38/webapp/control/ProductRating.gen.d.ts | 0 .../steps}/38/webapp/control/ProductRating.ts | 0 .../38/webapp/controller/App.controller.ts | 0 .../38/webapp/controller/Detail.controller.ts | 0 .../controller/HelloPanel.controller.ts | 0 .../controller/InvoiceList.controller.ts | 0 .../steps}/38/webapp/css/style.css | 0 .../steps}/38/webapp/i18n/i18n.properties | 0 .../steps}/38/webapp/index-cdn.html | 0 .../walkthrough/steps}/38/webapp/index.html | 0 .../walkthrough/steps}/38/webapp/index.ts | 0 .../38/webapp/localService/metadata.xml | 0 .../localService/mockdata/Invoices.json | 0 .../38/webapp/localService/mockserver.ts | 0 .../steps}/38/webapp/manifest.json | 0 .../steps}/38/webapp/model/formatter.ts | 0 .../steps}/38/webapp/test/Test.cdn.qunit.html | 0 .../steps}/38/webapp/test/Test.qunit.html | 0 .../steps}/38/webapp/test/initMockServer.ts | 0 .../test/integration/NavigationJourney.ts | 0 .../webapp/test/integration/opaTests.qunit.ts | 0 .../test/integration/pages/HelloPanelPage.ts | 0 .../steps}/38/webapp/test/mockServer-cdn.html | 0 .../steps}/38/webapp/test/mockServer.html | 0 .../38/webapp/test/testsuite.cdn.qunit.html | 0 .../38/webapp/test/testsuite.cdn.qunit.ts | 0 .../38/webapp/test/testsuite.qunit.html | 0 .../steps}/38/webapp/test/testsuite.qunit.ts | 0 .../38/webapp/test/unit/model/formatter.ts | 0 .../38/webapp/test/unit/unitTests.qunit.ts | 0 .../steps}/38/webapp/view/App.view.xml | 0 .../steps}/38/webapp/view/Detail.view.xml | 0 .../38/webapp/view/HelloDialog.fragment.xml | 0 .../steps}/38/webapp/view/HelloPanel.view.xml | 0 .../38/webapp/view/InvoiceList.view.xml | 0 .../steps}/38/webapp/view/Overview.view.xml | 0 renovate.json | 61 + steps/07/ui5.yaml | 23 - steps/08/ui5.yaml | 23 - steps/09/ui5.yaml | 23 - steps/10/ui5.yaml | 23 - steps/11/ui5.yaml | 23 - steps/12/ui5.yaml | 23 - steps/13/ui5.yaml | 23 - steps/14/ui5.yaml | 23 - steps/15/ui5.yaml | 23 - steps/16/ui5.yaml | 23 - steps/17/ui5.yaml | 23 - steps/18/ui5.yaml | 23 - steps/19/ui5.yaml | 23 - steps/20/ui5.yaml | 23 - steps/21/ui5.yaml | 23 - steps/22/ui5.yaml | 23 - steps/23/ui5.yaml | 23 - steps/24/ui5.yaml | 23 - tools/builder/prepare-gh-pages.js | 204 ++- tools/dev-server/ghpage-template.hbs | 2 +- tools/utils/download-assets.js | 2 +- 916 files changed, 2884 insertions(+), 1481 deletions(-) delete mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/dependabot-auto-merge.yml create mode 100644 404.html rename README_AUTHORS.md => CONTRIBUTING.md (58%) create mode 100644 assets/loio240ef5357d7f4d36955092cdaf1884a2_LowRes.png create mode 100644 assets/loio79e1157d948c488c9717ef840fa9b396_LowRes.png create mode 100644 assets/loio9c157e9764b846fea7de519d141c33ac_LowRes.png create mode 100644 packages/quickstart/README.md create mode 100644 packages/quickstart/steps/01/Component.ts create mode 100644 packages/quickstart/steps/01/README.md create mode 100644 packages/quickstart/steps/01/package.json create mode 100644 packages/quickstart/steps/01/tsconfig.json create mode 100644 packages/quickstart/steps/01/ui5.yaml create mode 100644 packages/quickstart/steps/01/webapp/index.html create mode 100644 packages/quickstart/steps/01/webapp/index.ts create mode 100644 packages/quickstart/steps/01/webapp/manifest.json create mode 100644 packages/quickstart/steps/02/Component.ts create mode 100644 packages/quickstart/steps/02/README.md create mode 100644 packages/quickstart/steps/02/package.json create mode 100644 packages/quickstart/steps/02/tsconfig.json create mode 100644 packages/quickstart/steps/02/ui5.yaml create mode 100644 packages/quickstart/steps/02/webapp/App.controller.ts create mode 100644 packages/quickstart/steps/02/webapp/App.view.xml create mode 100644 packages/quickstart/steps/02/webapp/index.html create mode 100644 packages/quickstart/steps/02/webapp/index.ts create mode 100644 packages/quickstart/steps/02/webapp/manifest.json create mode 100644 packages/quickstart/steps/03/Component.ts create mode 100644 packages/quickstart/steps/03/README.md create mode 100644 packages/quickstart/steps/03/package.json create mode 100644 packages/quickstart/steps/03/tsconfig.json create mode 100644 packages/quickstart/steps/03/ui5.yaml create mode 100644 packages/quickstart/steps/03/webapp/App.controller.ts create mode 100644 packages/quickstart/steps/03/webapp/App.view.xml create mode 100644 packages/quickstart/steps/03/webapp/index.html create mode 100644 packages/quickstart/steps/03/webapp/index.ts create mode 100644 packages/quickstart/steps/03/webapp/manifest.json create mode 100644 packages/walkthrough/README.md rename {steps => packages/walkthrough/steps}/01/README.md (98%) rename {steps => packages/walkthrough/steps}/01/assets/loio1dd456361379431aab7e5bcdaaeff00f_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/01/package.json (100%) rename {steps => packages/walkthrough/steps}/01/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/01/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/01/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/02/README.md (98%) rename {steps => packages/walkthrough/steps}/02/assets/loio0f6b6b9dc46a474da9287c382c8d3456_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/02/package.json (100%) rename {steps => packages/walkthrough/steps}/02/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/02/ui5.yaml (96%) rename {steps => packages/walkthrough/steps}/02/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/02/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/02/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/02/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/03/README.md (97%) rename {steps => packages/walkthrough/steps}/03/assets/loio30a42d381b9e4388bf7fdc0b941e5381_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/03/package.json (92%) rename {steps => packages/walkthrough/steps}/03/tsconfig.json (100%) rename {steps/06 => packages/walkthrough/steps/03}/ui5.yaml (96%) rename {steps => packages/walkthrough/steps}/03/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/03/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/03/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/03/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/04/README.md (97%) rename {steps => packages/walkthrough/steps}/04/assets/loio05f6775a39d3409ea673f4acc3812142_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/04/package.json (92%) rename {steps => packages/walkthrough/steps}/04/tsconfig.json (100%) rename {steps/03 => packages/walkthrough/steps/04}/ui5.yaml (96%) rename {steps => packages/walkthrough/steps}/04/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/04/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/04/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/04/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/04/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/05/README.md (97%) rename {steps => packages/walkthrough/steps}/05/assets/loiocedfdf89b30643ddbfcab1fe50bfa892_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/05/package.json (92%) rename {steps => packages/walkthrough/steps}/05/tsconfig.json (100%) rename {steps/04 => packages/walkthrough/steps/05}/ui5.yaml (96%) rename {steps => packages/walkthrough/steps}/05/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/05/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/05/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/05/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/05/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/05/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/06/README.md (94%) rename {steps => packages/walkthrough/steps}/06/assets/loio2f629a95211f49afa367b60d233fb390_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/06/package.json (92%) rename {steps => packages/walkthrough/steps}/06/tsconfig.json (100%) rename {steps/05 => packages/walkthrough/steps/06}/ui5.yaml (96%) rename {steps => packages/walkthrough/steps}/06/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/06/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/06/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/06/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/06/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/06/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/07/README.md (98%) rename {steps => packages/walkthrough/steps}/07/assets/loioafc105517a644407bd90662e3d94ea01_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/07/package.json (92%) rename {steps => packages/walkthrough/steps}/07/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/07/ui5.yaml rename {steps => packages/walkthrough/steps}/07/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/07/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/07/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/07/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/07/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/07/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/08/README.md (98%) rename {steps => packages/walkthrough/steps}/08/assets/loio0eb579e2f2a64c5a9894086322c7faa0_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/08/package.json (93%) rename {steps => packages/walkthrough/steps}/08/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/08/ui5.yaml rename {steps => packages/walkthrough/steps}/08/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/08/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/08/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/08/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/08/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/08/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/08/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/09/README.md (98%) rename {steps => packages/walkthrough/steps}/09/assets/loio1e237a36972a44ac8522dd1a540ac062_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/09/assets/loiocac9bcfa902c44c496d115acd7ee7376_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/09/package.json (93%) rename {steps => packages/walkthrough/steps}/09/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/09/ui5.yaml rename {steps => packages/walkthrough/steps}/09/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/09/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/09/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/09/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/09/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/09/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/09/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/09/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/10/README.md (99%) rename {steps => packages/walkthrough/steps}/10/assets/loio7b2aef85c016485da4a31c087bf4c0f0_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/10/package.json (93%) rename {steps => packages/walkthrough/steps}/10/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/10/ui5.yaml rename {steps => packages/walkthrough/steps}/10/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/10/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/10/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/10/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/10/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/10/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/10/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/11/README.md (97%) rename {steps => packages/walkthrough/steps}/11/assets/loio97feb5417c89462ead5b4259f3ecfd47_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/11/package.json (93%) rename {steps => packages/walkthrough/steps}/11/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/11/ui5.yaml rename {steps => packages/walkthrough/steps}/11/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/11/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/11/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/11/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/11/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/11/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/11/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/12/README.md (95%) rename {steps => packages/walkthrough/steps}/12/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/12/package.json (93%) rename {steps => packages/walkthrough/steps}/12/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/12/ui5.yaml rename {steps => packages/walkthrough/steps}/12/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/12/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/12/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/12/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/12/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/12/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/12/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/13/README.md (96%) rename {steps => packages/walkthrough/steps}/13/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/13/package.json (93%) rename {steps => packages/walkthrough/steps}/13/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/13/ui5.yaml rename {steps => packages/walkthrough/steps}/13/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/13/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/13/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/13/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/13/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/13/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/13/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/14/README.md (98%) rename {steps => packages/walkthrough/steps}/14/assets/loiod9a40e539b7c49c485be821efbd3821f_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/14/package.json (93%) rename {steps => packages/walkthrough/steps}/14/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/14/ui5.yaml rename {steps => packages/walkthrough/steps}/14/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/14/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/14/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/14/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/14/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/14/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/14/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/14/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/15/README.md (97%) rename {steps => packages/walkthrough/steps}/15/assets/loiof3724d2f97e94a78b27d8ab01ff9c37d_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/15/package.json (92%) rename {steps => packages/walkthrough/steps}/15/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/15/ui5.yaml rename {steps => packages/walkthrough/steps}/15/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/15/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/15/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/15/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/15/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/15/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/15/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/15/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/15/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/15/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/16/README.md (98%) rename {steps => packages/walkthrough/steps}/16/assets/loio0916080895e144ed8b31963bfb18e17f_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/16/package.json (93%) rename {steps => packages/walkthrough/steps}/16/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/16/ui5.yaml rename {steps => packages/walkthrough/steps}/16/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/16/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/16/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/16/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/16/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/16/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/16/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/16/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/16/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/16/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/16/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/17/README.md (97%) rename {steps => packages/walkthrough/steps}/17/assets/loioc351bbd078824c43bf1758b0c3679cbd_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/17/package.json (93%) rename {steps => packages/walkthrough/steps}/17/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/17/ui5.yaml rename {steps => packages/walkthrough/steps}/17/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/17/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/17/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/17/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/17/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/17/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/17/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/17/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/17/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/17/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/17/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/18/README.md (96%) rename {steps => packages/walkthrough/steps}/18/assets/loiofbc48e23cc7d45e393cc95bbbfc6e0a3_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/18/package.json (92%) rename {steps => packages/walkthrough/steps}/18/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/18/ui5.yaml rename {steps => packages/walkthrough/steps}/18/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/18/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/18/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/18/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/18/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/18/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/18/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/18/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/18/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/18/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/18/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/19/README.md (98%) rename {steps => packages/walkthrough/steps}/19/assets/loiob05bdb47393b4abda3e1b54498959c38_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/19/package.json (93%) rename {steps => packages/walkthrough/steps}/19/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/19/ui5.yaml rename {steps => packages/walkthrough/steps}/19/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/19/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/19/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/19/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/19/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/19/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/19/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/19/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/19/webapp/model/localInvoices.json (100%) rename {steps => packages/walkthrough/steps}/19/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/19/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/19/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/19/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/20/README.md (98%) rename {steps => packages/walkthrough/steps}/20/assets/loiodc9e919119564ddab78b8d0550ecfa9b_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/20/package.json (92%) rename {steps => packages/walkthrough/steps}/20/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/20/ui5.yaml rename {steps => packages/walkthrough/steps}/20/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/20/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/20/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/20/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/20/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/20/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/20/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/20/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/20/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/20/webapp/model/localInvoices.json (100%) rename {steps => packages/walkthrough/steps}/20/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/20/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/20/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/20/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/21/README.md (96%) rename {steps => packages/walkthrough/steps}/21/assets/loio636b7008113442c8a4765bb710dd8ea9_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/21/package.json (93%) rename {steps => packages/walkthrough/steps}/21/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/21/ui5.yaml rename {steps => packages/walkthrough/steps}/21/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/21/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/21/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/21/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/21/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/21/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/21/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/21/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/21/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/21/webapp/model/localInvoices.json (100%) rename {steps => packages/walkthrough/steps}/21/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/21/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/21/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/21/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/22/README.md (98%) rename {steps => packages/walkthrough/steps}/22/assets/loio7aa185a90dd7495cb6ec30c96bc80a54_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/22/package.json (93%) rename {steps => packages/walkthrough/steps}/22/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/22/ui5.yaml rename {steps => packages/walkthrough/steps}/22/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/22/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/22/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/22/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/22/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/22/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/22/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/22/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/22/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/22/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/22/webapp/model/localInvoices.json (100%) rename {steps => packages/walkthrough/steps}/22/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/22/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/22/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/22/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/23/README.md (98%) rename {steps => packages/walkthrough/steps}/23/assets/loio472ab6bf88674c23ba103efd97163133_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/23/package.json (92%) rename {steps => packages/walkthrough/steps}/23/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/23/ui5.yaml rename {steps => packages/walkthrough/steps}/23/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/23/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/23/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/23/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/23/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/23/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/23/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/23/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/23/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/23/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/23/webapp/model/localInvoices.json (100%) rename {steps => packages/walkthrough/steps}/23/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/23/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/23/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/23/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/24/README.md (96%) rename {steps => packages/walkthrough/steps}/24/assets/loio33f71b44bb644d1fa2a0ab14f1fcc02a_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/24/package.json (93%) rename {steps => packages/walkthrough/steps}/24/tsconfig.json (100%) create mode 100644 packages/walkthrough/steps/24/ui5.yaml rename {steps => packages/walkthrough/steps}/24/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/24/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/24/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/24/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/24/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/24/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/24/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/24/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/24/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/24/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/24/webapp/model/localInvoices.json (100%) rename {steps => packages/walkthrough/steps}/24/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/24/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/24/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/24/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/25/README.md (98%) rename {steps => packages/walkthrough/steps}/25/assets/loio5b76bb4b15eb44e1862d0b6c1c802571_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/25/package.json (93%) rename {steps => packages/walkthrough/steps}/25/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/25/ui5.yaml (96%) rename {steps => packages/walkthrough/steps}/25/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/25/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/25/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/25/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/25/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/25/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/25/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/25/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/25/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/25/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/25/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/25/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/25/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/25/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/26/README.md (98%) rename {steps => packages/walkthrough/steps}/26/assets/loio7a5e2b02d72d40d388f5e601d7de74df_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/26/assets/loiofe1403346ce9499f8bb102beaa4986d5_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/26/package.json (93%) rename {steps => packages/walkthrough/steps}/26/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/26/ui5.yaml (96%) rename {steps => packages/walkthrough/steps}/26/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/26/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/26/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/26/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/26/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/26/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/26/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/26/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/26/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/26/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/26/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/26/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/26/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/26/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/26/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/26/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/26/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/26/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/26/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/26/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/27/README.md (98%) rename {steps => packages/walkthrough/steps}/27/assets/loio0d29491d96574cfe8d8158d60a0a32e2_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/27/assets/loio1b5613ac3ab94757af2c7823039222a9_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/27/package.json (93%) rename {steps => packages/walkthrough/steps}/27/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/27/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/27/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/27/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/27/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/27/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/27/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/27/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/27/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/27/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/27/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/27/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/27/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/27/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/28/README.md (97%) rename {steps => packages/walkthrough/steps}/28/assets/loio250d5b92921d44a4b432cc0fade88cc9_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/28/assets/loio27e84d5bd72a485498564b92894869b5_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/28/package.json (93%) rename {steps => packages/walkthrough/steps}/28/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/28/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/28/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/28/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/28/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/28/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/28/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/28/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/28/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/28/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/28/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/28/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/28/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/28/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/29/README.md (98%) rename {steps => packages/walkthrough/steps}/29/assets/loio34c4b02c74eb4848b8b720d86042bfdc_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/29/assets/loio930de31b311f43ffa9df9261ca760da0_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/29/package.json (93%) rename {steps => packages/walkthrough/steps}/29/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/29/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/29/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/29/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/29/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/29/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/29/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/29/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/29/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/29/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/29/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/29/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/29/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/29/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/30/README.md (99%) rename {steps => packages/walkthrough/steps}/30/assets/loio94152a595fe24d45b12223e0abcccb9c_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/30/package.json (93%) rename {steps => packages/walkthrough/steps}/30/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/30/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/30/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/30/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/30/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/30/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/30/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/30/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/30/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/30/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/30/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/30/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/30/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/30/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/30/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/30/webapp/view/Overview.view.xml (100%) rename {steps => packages/walkthrough/steps}/31/README.md (98%) rename {steps => packages/walkthrough/steps}/31/assets/loio31da9d48ae204c36a991146b90648c21_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/31/package.json (93%) rename {steps => packages/walkthrough/steps}/31/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/31/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/31/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/controller/Detail.controller.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/31/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/31/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/31/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/31/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/31/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/31/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/31/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/31/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/31/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/31/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/31/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/31/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/31/webapp/view/Overview.view.xml (100%) rename {steps => packages/walkthrough/steps}/32/README.md (97%) rename {steps => packages/walkthrough/steps}/32/assets/loio33a8341077bb458685274c64d2317f6b_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/32/package.json (93%) rename {steps => packages/walkthrough/steps}/32/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/32/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/32/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/controller/Detail.controller.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/32/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/32/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/32/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/32/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/32/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/32/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/32/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/32/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/32/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/32/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/32/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/32/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/32/webapp/view/Overview.view.xml (100%) rename {steps => packages/walkthrough/steps}/33/README.md (99%) rename {steps => packages/walkthrough/steps}/33/assets/loio21dd14c37b67473b817c8865f168f668_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/33/package.json (94%) rename {steps => packages/walkthrough/steps}/33/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/33/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/33/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/control/ProductRating.gen.d.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/control/ProductRating.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/controller/Detail.controller.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/33/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/33/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/33/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/33/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/33/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/33/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/33/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/33/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/33/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/33/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/33/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/33/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/33/webapp/view/Overview.view.xml (100%) rename {steps => packages/walkthrough/steps}/34/README.md (98%) rename {steps => packages/walkthrough/steps}/34/assets/loiocc3f2e0d8ac6471288af6495836c2f07_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/34/package.json (94%) rename {steps => packages/walkthrough/steps}/34/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/34/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/34/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/control/ProductRating.gen.d.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/control/ProductRating.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/controller/Detail.controller.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/34/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/34/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/34/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/34/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/34/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/34/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/34/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/34/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/34/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/34/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/34/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/34/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/34/webapp/view/Overview.view.xml (100%) rename {steps => packages/walkthrough/steps}/35/README.md (98%) rename {steps => packages/walkthrough/steps}/35/assets/loio0b0d57e04e574d7fbc4b10395e6cb260_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/35/package.json (94%) rename {steps => packages/walkthrough/steps}/35/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/35/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/35/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/control/ProductRating.gen.d.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/control/ProductRating.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/controller/Detail.controller.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/35/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/35/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/35/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/35/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/35/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/35/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/35/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/35/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/35/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/35/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/35/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/35/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/35/webapp/view/Overview.view.xml (100%) rename {steps => packages/walkthrough/steps}/36/README.md (97%) rename {steps => packages/walkthrough/steps}/36/assets/loiof216b131c492448d8a1df25db2b9a26d_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/36/package.json (94%) rename {steps => packages/walkthrough/steps}/36/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/36/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/36/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/control/ProductRating.gen.d.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/control/ProductRating.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/controller/Detail.controller.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/36/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/36/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/36/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/36/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/36/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/36/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/36/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/36/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/36/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/36/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/36/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/36/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/36/webapp/view/Overview.view.xml (100%) rename {steps => packages/walkthrough/steps}/37/README.md (97%) rename {steps => packages/walkthrough/steps}/37/assets/loio54e9bca5a5844c14b45b5405496166b1_HiRes.png (100%) rename {steps => packages/walkthrough/steps}/37/assets/loiob35deda1ebe1433fbf0ff066f6e3fc4b_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/37/assets/loiof38dee2624c2437d8977de70575b3eae_HiRes.png (100%) rename {steps => packages/walkthrough/steps}/37/package.json (94%) rename {steps => packages/walkthrough/steps}/37/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/37/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/37/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/control/ProductRating.gen.d.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/control/ProductRating.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/controller/Detail.controller.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/37/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/37/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/37/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/37/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/37/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/37/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/37/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/37/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/37/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/37/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/37/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/37/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/37/webapp/view/Overview.view.xml (100%) rename {steps => packages/walkthrough/steps}/38/README.md (98%) rename {steps => packages/walkthrough/steps}/38/assets/loiofb12cea5ac9b45bb9007aac5a1a8689f_LowRes.png (100%) rename {steps => packages/walkthrough/steps}/38/package.json (95%) rename {steps => packages/walkthrough/steps}/38/tsconfig.json (100%) rename {steps => packages/walkthrough/steps}/38/ui5.yaml (100%) rename {steps => packages/walkthrough/steps}/38/webapp/Component.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/control/ProductRating.gen.d.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/control/ProductRating.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/controller/App.controller.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/controller/Detail.controller.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/controller/HelloPanel.controller.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/controller/InvoiceList.controller.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/css/style.css (100%) rename {steps => packages/walkthrough/steps}/38/webapp/i18n/i18n.properties (100%) rename {steps => packages/walkthrough/steps}/38/webapp/index-cdn.html (100%) rename {steps => packages/walkthrough/steps}/38/webapp/index.html (100%) rename {steps => packages/walkthrough/steps}/38/webapp/index.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/localService/metadata.xml (100%) rename {steps => packages/walkthrough/steps}/38/webapp/localService/mockdata/Invoices.json (100%) rename {steps => packages/walkthrough/steps}/38/webapp/localService/mockserver.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/manifest.json (100%) rename {steps => packages/walkthrough/steps}/38/webapp/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/Test.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/Test.qunit.html (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/initMockServer.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/integration/NavigationJourney.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/integration/opaTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/integration/pages/HelloPanelPage.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/mockServer-cdn.html (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/mockServer.html (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/testsuite.cdn.qunit.html (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/testsuite.cdn.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/testsuite.qunit.html (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/testsuite.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/unit/model/formatter.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/test/unit/unitTests.qunit.ts (100%) rename {steps => packages/walkthrough/steps}/38/webapp/view/App.view.xml (100%) rename {steps => packages/walkthrough/steps}/38/webapp/view/Detail.view.xml (100%) rename {steps => packages/walkthrough/steps}/38/webapp/view/HelloDialog.fragment.xml (100%) rename {steps => packages/walkthrough/steps}/38/webapp/view/HelloPanel.view.xml (100%) rename {steps => packages/walkthrough/steps}/38/webapp/view/InvoiceList.view.xml (100%) rename {steps => packages/walkthrough/steps}/38/webapp/view/Overview.view.xml (100%) create mode 100644 renovate.json delete mode 100644 steps/07/ui5.yaml delete mode 100644 steps/08/ui5.yaml delete mode 100644 steps/09/ui5.yaml delete mode 100644 steps/10/ui5.yaml delete mode 100644 steps/11/ui5.yaml delete mode 100644 steps/12/ui5.yaml delete mode 100644 steps/13/ui5.yaml delete mode 100644 steps/14/ui5.yaml delete mode 100644 steps/15/ui5.yaml delete mode 100644 steps/16/ui5.yaml delete mode 100644 steps/17/ui5.yaml delete mode 100644 steps/18/ui5.yaml delete mode 100644 steps/19/ui5.yaml delete mode 100644 steps/20/ui5.yaml delete mode 100644 steps/21/ui5.yaml delete mode 100644 steps/22/ui5.yaml delete mode 100644 steps/23/ui5.yaml delete mode 100644 steps/24/ui5.yaml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index ff3ed5fc8..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,25 +0,0 @@ -version: 2 -updates: -- package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" - commit-message: - prefix: "ci(github-actions)" -- package-ecosystem: npm - directory: "/" - ignore: - - dependency-name: "@types/openui5" - schedule: - interval: weekly - day: sunday - time: "10:00" - timezone: Etc/UCT - reviewers: - - petermuessig - - flovogt - - margopolo - versioning-strategy: increase - commit-message: - prefix: "deps" - prefix-development: "build(deps-dev)" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5ffb9915b..c6093f271 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,13 +14,13 @@ jobs: strategy: matrix: - node-version: [20.x] + node-version: [24.x] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml deleted file mode 100644 index 441aa3e0b..000000000 --- a/.github/workflows/dependabot-auto-merge.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Dependabot auto-merge -on: - pull_request: - branches: - - main - -permissions: - contents: write - pull-requests: write - -jobs: - dependabot: - runs-on: ubuntu-latest - if: ${{ github.actor == 'dependabot[bot]' }} - steps: - - name: Dependabot metadata - id: metadata - uses: dependabot/fetch-metadata@v2 - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - - name: Enable auto-merge for Dependabot PRs - if: ${{contains(fromJSON('["version-update:semver-minor", "version-update:semver-patch"]'), steps.metadata.outputs.update-type)}} - run: gh pr review --approve "$PR_URL" && gh pr merge --auto --rebase "$PR_URL" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a8cc5deb4..a6421a670 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -13,12 +13,12 @@ jobs: strategy: matrix: - node-version: [20.x] + node-version: [24.x] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} diff --git a/404.html b/404.html new file mode 100644 index 000000000..580734011 --- /dev/null +++ b/404.html @@ -0,0 +1,18 @@ + + + + + + + +

If you are not redirected in five seconds, please navigate manually to https://community.sap.com/topics/open-source.

+ diff --git a/README_AUTHORS.md b/CONTRIBUTING.md similarity index 58% rename from README_AUTHORS.md rename to CONTRIBUTING.md index 358e63836..8dca92657 100644 --- a/README_AUTHORS.md +++ b/CONTRIBUTING.md @@ -1,6 +1,40 @@ -# Documentation for Tutorial Authors +# Contributing to OpenUI5 Sample App -# General +In general the contributing guidelines of OpenUI5 also apply to this project. They can be found here: +https://github.com/UI5/openui5/blob/main/CONTRIBUTING.md + +Some parts might not be relevant for this project (e.g. the browser-specific requirements like jQuery, CSS and accessibility in the "Contribution Content Guidelines") and the contribution process is easier (pull requests will be merged directly on GitHub). + +## Requirements + +Running the content of this repository locally (as opposed to following the tutorial steps) requires a [Node.js](https://nodejs.org/) version >= `20.11.0` to be installed. + +## Download and Installation + +> This section describes how to run the content of the repository locally and is *not* required for following the tutorial. For following the tutorial, simply start with Step 1 in the list of steps above. From there, you can also download and run the result of each step locally. + +The project is set up as monorepo. All steps are located inside the `steps` folder and labelled with their step number. The monorepo uses `npm` workspaces to manage all steps together. But you can also run `npm` inside each individual step. + +To set up the monorepo you first need to install all depenedencies: + +```sh +npm install +``` + +To run any step, just execute one of the scripts from `package.json` via npm, e.g.: + +```sh +# Option 1: use workspace command to start the step +npm start -w ui5.walkthrough.step01 + +# Option 2: change to the folder of the step and start it +cd steps/01 +npm start +``` + +## Documentation for Tutorial Authors + +### General The setup of this project allows maintaining *one* tutorial text that covers both JavaScript and TypeScript with minimal overhead and without duplication of content. @@ -11,12 +45,12 @@ Main features of the two-language support are: 2. Two adjacent code sections in different languages are automatically converted to a tab container which allows switching between languages. 3. File extensions writen as `.?s` appear automatically as `.js` or `.ts` depending on the current language. -## Limitations +### Limitations The feature 3. above does not work inside code blocks (yet). -## Running the preview/dev server +### Running the preview/dev server To immediately preview the markdown document you are writing *including* the two-language magic, simply run @@ -35,11 +69,11 @@ npm start A browser window will automatically open (on port 3000 or the next free port) and automatically reload on every saved change. -## Writing *one* document which covers both JavaScript and TypeScript without duplication +### Writing *one* document which covers both JavaScript and TypeScript without duplication The following features help providing language-specific content without duplication of other content. -### 1. Language-specific Blocks of Content +#### 1. Language-specific Blocks of Content When a certain part of the tutorial content (can be explanation and/or code) is only relevant for *one* of the languages (JavaScript *or* TypeScript), then enclose it within the following tags. The CSS class decides for which language it is meant! @@ -61,7 +95,7 @@ JavaScript-only: The `markdown="1"` part is required for markdown parsing within HTML and the `` is helpful for readers of the raw markdown view, so please use the tag structure as-is, with your actual content in between. -#### Resulting Appearance +##### Resulting Appearance
This section is relevant for TypeScript only ...here comes the TS-only text... @@ -72,7 +106,7 @@ The `markdown="1"` part is required for markdown parsing within HTML and the ` -### 2. Switchable code blocks in both languages +#### 2. Switchable code blocks in both languages When a piece of code should be displayed in either JS or TS, whatever is current, then simply create two adjacent markdown-fenced code blocks. They are automatically recognized as language-specific alternatives. @@ -91,7 +125,7 @@ Example: > Some places where this occurs may not be properly recognized, so make sure to test it. -#### Resulting Appearance +##### Resulting Appearance ```js const i = 0; @@ -101,7 +135,7 @@ const i = 0; const i: number = 0; ``` -### 3. File Extensions (`.js/.ts`) +#### 3. File Extensions (`.js/.ts`) When the text or a section heading mentions the name of a file that will be JavaScript or TypeScript, depending on the language, then use the file extension `.\?s`. It will automatically be switched to the current language. @@ -110,11 +144,11 @@ Example: In this step you create the file `Example.controller.\?s`. ``` -#### Resulting Appearance +##### Resulting Appearance In this step you create the file `Example.controller.?s`. -## Converting the JS Code to TypeScript +### Converting the JS Code to TypeScript TODO: tool support for this functionality does not exist yet. It can, however, already be done manually. @@ -137,5 +171,7 @@ sap.ui.define(["./BaseController"], function (__BaseController) { Remove the function definition and the line calling the function. Rename the dependency in the `sap.ui.define` call from `__BaseController` to `BaseController`. +## Contributing with AI-generated code +As artificial intelligence evolves, AI-generated code is becoming valuable for many software projects, including open-source initiatives. While we recognize the potential benefits of incorporating AI-generated content into our open-source projects there are certain requirements that need to be reflected and adhered to when making contributions. -### TODO: Some more similar things, unless we do it in the transpiler +Please see our [guideline for AI-generated code contributions to SAP Open Source Software Projects](https://github.com/SAP/.github/blob/main/CONTRIBUTING_USING_GENAI.md) for these requirements. diff --git a/README.md b/README.md index 1eba22cab..eea04b0c5 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,6 @@ - - [![REUSE status](https://api.reuse.software/badge/github.com/SAP-samples/ui5-typescript-walkthrough)](https://api.reuse.software/info/github.com/SAP-samples/ui5-typescript-walkthrough) -# OpenUI5 Walkthrough +# UI5 Tutorials In this tutorial we'll introduce you to all major development paradigms of OpenUI5.
This section is relevant for TypeScript onlyWe'll also demonstrate the use of TypeScript with OpenUI5 and highlight the specific characteristics of this approach.
@@ -24,90 +8,11 @@ In this tutorial we'll introduce you to all major development paradigms of OpenU We first introduce you to the basic development paradigms like *Model-View-Controller* and establish a best-practice structure of our application. We'll do this along the classic example of ā€œHello Worldā€ and start a new app from scratch. Next, we'll introduce the fundamental data binding concepts of OpenUI5 and extend our app to show a list of invoices. We'll continue to add more functionality by adding navigation, extending controls, and making our app responsive. We'll also have look at the testing features and the built-in support tools of OpenUI5. -### Preview - -![Preview of the OpenUI5 application that is going to be built in this tutorial. Contains a Hello World upper part with buttons and a text input. The lower part shows list of invoices with details, grouped by vendor names.](assets/loiofb12cea5ac9b45bb9007aac5a1a8689f_LowRes.png) - -> šŸ’” **Tip:**
-> You don't have to do all tutorial steps sequentially, you can also jump directly to any step you want. Just download the code from the previous step and make sure that the application runs as intended. -> -> You can view the samples for all steps here in this repository. -> -> For more information, read the [Getting Started](#getting-started) section below. - -### Steps - -The tutorial consists of the following steps. To start, just open the first link - you`ll be guided from there. - -- **[Step 1: Hello World!](steps/01/README.md "As you know OpenUI5 is all about HTML5. Let’s get started with building a first "Hello World" with only HTML.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/01/index.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-01.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-01-js.zip)
) -- **[Step 2: Bootstrap](steps/02/README.md "Before we can do something with OpenUI5, we need to load and initialize it. This process of loading and initializing OpenUI5 is called bootstrapping. Once this bootstrapping is finished, we simply display an alert.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/02/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-02.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-02-js.zip)
) -- **[Step 3: Controls](steps/03/README.md "Now it is time to build our first little UI by replacing the "Hello World" text in the HTML body by the OpenUI5 control sap/m/Text. In the beginning, we will use the JavaScript control interface to set up the UI, the control instance is then placed into the HTML body. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/03/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-03.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-03-js.zip)
) -- **[Step 4: XML Views](steps/04/README.md "Putting all our UI into the index.ts file will very soon result in a messy setup, and there is quite a bit of work ahead of us. So let’s do a first modularization by putting the sap/m/Text control into a dedicated view.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/04/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-04.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-04-js.zip)
) -- **[Step 5: Controllers](steps/05/README.md "In this step, we replace the text with a button and show the "Hello World" message when the button is pressed. The handling of the button's press event is implemented in the controller of the view.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/05/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-05.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-05-js.zip)
) -- **[Step 6: Modules](steps/06/README.md "In OpenUI5, resources are often referred to as modules. In this step, we replace the alert from the last exercise with a proper Message Toast from the sap.m library.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/06/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-06.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-06-js.zip)
) -- **[Step 7: JSON Model](steps/07/README.md "Now that we have set up the view and controller, it’s about time to think about the M in MVC.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/07/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-07.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-07-js.zip)
) -- **[Step 8: Translatable Texts](steps/08/README.md "In this step we move the texts of our UI to a separate resource file.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/08/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-08.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-08-js.zip)
) -- **[Step 9: Component Configuration](steps/09/README.md "After we have introduced all three parts of the Model-View-Controller /(MVC/) concept, we now come to another important structural aspect of OpenUI5. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/09/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-09.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-09-js.zip)
) -- **[Step 10: Descriptor for Applications](steps/10/README.md "All application-specific configuration settings will now further be put in a separate descriptor file called manifest.json. This clearly separates the application coding from the configuration settings and makes our app even more flexible. For example, all SAP Fiori applications are realized as components and come with a descriptor file in order to be hosted in the SAP Fiori launchpad.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/10/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-10.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-10-js.zip)
) -- **[Step 11: Pages and Panels](steps/11/README.md "After all the work on the app structure it’s time to improve the look of our app. We will use two controls from the sap.m library to add a bit more "bling" to our UI. You will also learn about control aggregations in this step.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/11/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-11.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-11-js.zip)
) -- **[Step 12: Shell Control as Container](steps/12/README.md "Now we use a shell control as container for our app and use it as our new root element. The shell takes care of visual adaptation of the application to the device’s screen size by introducing a so-called letterbox on desktop screens.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/12/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-12.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-12-js.zip)
) -- **[Step 13: Margins and Paddings](steps/13/README.md "Our app content is still glued to the corners of the letterbox. To fine-tune our layout, we can add margins and paddings to the controls that we added in the previous step. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/13/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-13.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-13-js.zip)
) -- **[Step 14: Custom CSS and Theme Colors](steps/14/README.md "Sometimes we need to define some more fine-granular layouts and this is when we can use the flexibility of CSS by adding custom style classes to controls and style them as we like. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/14/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-14.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-14-js.zip)
) -- **[Step 15: Nested Views](steps/15/README.md "Our panel content is getting more and more complex and now it is time to move the panel content to a separate view. With that approach, the application structure is much easier to understand, and the individual parts of the app can be reused.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/15/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-15.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-15-js.zip)
) -- **[Step 16: Dialogs and Fragments](steps/16/README.md "In this step, we will take a closer look at another element which can be used to assemble views: the fragment. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/16/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-16.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-16-js.zip)
) -- **[Step 17: Fragment Callbacks](steps/17/README.md "Now that we have integrated the dialog, it's time to add some user interaction. The user will definitely want to close the dialog again at some point, so we add a button to close the dialog and assign an event handler.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/17/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-17.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-17-js.zip)
) -- **[Step 18: Icons](steps/18/README.md "Our dialog is still pretty much empty. Since OpenUI5 is shipped with a large icon font that contains more than 500 icons, we will add an icon to greet our users when the dialog is opened.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/18/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-18.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-18-js.zip)
) -- **[Step 19: Aggregation Binding](steps/19/README.md "Now that we have established a good structure for our app, it's time to add some more functionality. We start exploring more features of data binding by adding some invoice data in JSON format that we display in a list below the panel.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/19/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-19.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-19-js.zip)
) -- **[Step 20: Data Types](steps/20/README.md "The list of invoices is already looking nice, but what is an invoice without a price assigned? Typically prices are stored in a technical format and with a /'./' delimiter in the data model. For example, our invoice for pineapples has the calculated price 87.2 without a currency. We are going to use the OpenUI5 data types to format the price properly, with a locale-dependent decimal separator and two digits after the separator.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/20/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-20.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-20-js.zip)
) -- **[Step 21: Expression Binding](steps/21/README.md "Sometimes the predefined types of OpenUI5 are not flexible enough and you want to do a simple calculation or formatting in the view - that is where expressions are really helpful. We use them to format our price according to the current number in the data model.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/21/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-21.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-21-js.zip)
) -- **[Step 22: Custom Formatters](steps/22/README.md "If we want to do a more complex logic for formatting properties of our data model, we can also write a custom formatting function. We will now add a localized status with a custom formatter, because the status in our data model is in a rather technical format.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/22/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-22.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-22-js.zip)
) -- **[Step 23: Filtering](steps/23/README.md "In this step, we add a search field for our product list and define a filter that represents the search term. When searching, the list is automatically updated to show only the items that match the search term.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/23/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-23.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-23-js.zip)
) -- **[Step 24: Sorting and Grouping](steps/24/README.md "To make our list of invoices even more user-friendly, we sort it alphabetically instead of just showing the order from the data model. Additionally, we introduce groups and add the company that ships the products so that the data is easier to consume.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/24/index-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-24.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-24-js.zip)
) -- **[Step 25: Remote OData Service](steps/25/README.md "So far we have worked with local JSON data, but now we will access a real OData service to visualize remote data.")** (šŸ”— Live Preview *unfeasible* \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-25.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-25-js.zip)
) -- **[Step 26: Mock Server Configuration](steps/26/README.md "We just ran our app against a real service, but for developing and testing our app we do not want to rely on the availability of the ā€œrealā€ service or put additional load on the system where the data service is located.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/26/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-26.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-26-js.zip)
) -- **[Step 27: Unit Test with QUnit](steps/27/README.md "Now that we have a test folder in the app, we can start to increase our test coverage. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/27/test/Test.cdn.qunit.html?testsuite=test-resources/ui5/walkthrough/testsuite.cdn.qunit&test=unit/unitTests) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-27.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-27-js.zip)
) -- **[Step 28: Integration Test with OPA](steps/28/README.md "If we want to test interaction patterns or more visual features of our app, we can also write an integration test. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/28/test/Test.cdn.qunit.html?testsuite=test-resources/ui5/walkthrough/testsuite.cdn.qunit&test=integration/opaTests) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-28.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-28-js.zip)
) -- **[Step 29: Debugging Tools](steps/29/README.md "Even though we have added a basic test coverage in the previous steps, it seems like we accidentally broke our app, because it does not display prices to our invoices anymore. We need to debug the issue and fix it before someone finds out.")** (*code remains unchanged from the previous step*) -- **[Step 30: Routing and Navigation](steps/30/README.md "So far, we have put all app content on one single page. As we add more and more features, we want to split the content and put it on separate pages.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/30/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-30.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-30-js.zip)
) -- **[Step 31: Routing with Parameters](steps/31/README.md "We can now navigate between the overview and the detail page, but the actual item that we selected in the overview is not displayed on the detail page yet. A typical use case for our app is to show additional information for the selected item on the detail page. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/31/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-31.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-31-js.zip)
) -- **[Step 32: Routing Back and History](steps/32/README.md "Now we can navigate to our detail page and display an invoice, but we cannot go back to the overview page yet. We'll add a back button to the detail page and implement a function that shows our overview page again.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/32/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-32.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-32-js.zip)
) -- **[Step 33: Custom Controls](steps/33/README.md "In this step, we are going to extend the functionality of OpenUI5 with a custom control. We want to rate the product shown on the detail page, so we create a composition of multiple standard controls using the OpenUI5 extension mechanism and add some glue code to make them work nicely together. This way, we can reuse the control across the app and keep all related functionality in one module.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/33/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-33.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-33-js.zip)
) -- **[Step 34: Responsiveness](steps/34/README.md "In this step, we improve the responsiveness of our app. OpenUI5 applications can be run on phone, tablet, and desktop devices and we can configure the application to make best use of the screen estate for each scenario. Fortunately, OpenUI5 controls like the sap.m.Table already deliver a lot of features that we can use.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/34/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-34.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-34-js.zip)
) -- **[Step 35: Device Adaptation](steps/35/README.md "We now configure the visibility and properties of controls based on the device that we run the application on. By making use of the sap.ui.Device API and defining a device model we will make the app look great on many devices.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/35/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-35.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-35-js.zip)
) -- **[Step 36: Content Density](steps/36/README.md "In this step of our Walkthrough tutorial, we adjust the content density based on the user’s device. OpenUI5 contains different content densities allowing you to display larger controls for touch-enabled devices and a smaller, more compact design for devices that are operated by mouse. In our app, we will detect the device and adjust the density accordingly.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/36/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-36.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-36-js.zip)
) -- **[Step 37: Accessibility](steps/37/README.md "In this step we're going to improve the accessibility of our app.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/build/37/test/mockServer-cdn.html) \|
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-37.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-37-js.zip)
) -- **[Step 38: Build Your Application](steps/38/README.md "In this step we're going to build our application and consume the speed of a built OpenUI5 application.")** (
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-38.zip)
[šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-38-js.zip)
) - -## Requirements - -Running the content of this repository locally (as opposed to following the tutorial steps) requires a [Node.js](https://nodejs.org/) version >= `20.11.0` to be installed. - -## Download and Installation - -> This section describes how to run the content of the repository locally and is *not* required for following the tutorial. For following the tutorial, simply start with Step 1 in the list of steps above. From there, you can also download and run the result of each step locally. - -The project is set up as monorepo. All steps are located inside the `steps` folder and labelled with their step number. The monorepo uses `npm` workspaces to manage all steps together. But you can also run `npm` inside each individual step. - -To set up the monorepo you first need to install all depenedencies: - -```sh -npm install -``` - -To run any step, just execute one of the scripts from `package.json` via npm, e.g.: - -```sh -# Option 1: use workspace command to start the step -npm start -w ui5.walkthrough.step01 - -# Option 2: change to the folder of the step and start it -cd steps/01 -npm start -``` - -## Known Issues +## Tutorials -No known issues. +This repository contains following tutorials: +- [Quickstart](./packages/quickstart/) +- [Walkthrough](./packages/walkthrough/) ## How to obtain support diff --git a/REUSE.toml b/REUSE.toml index 3c40793d8..422641208 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -1,11 +1,11 @@ version = 1 SPDX-PackageName = "ui5-typescript-walkthrough" SPDX-PackageSupplier = "ospo@sap.com" -SPDX-PackageDownloadLocation = "" +SPDX-PackageDownloadLocation = "" SPDX-PackageComment = "The code in this project may include calls to APIs (\"API Calls\") of\n SAP or third-party products or services developed outside of this project\n (\"External Products\").\n \"APIs\" means application programming interfaces, as well as their respective\n specifications and implementing code that allows software to communicate with\n other software.\n API Calls to External Products are not licensed under the open source license\n that governs this project. The use of such API Calls and related External\n Products are subject to applicable additional agreements with the relevant\n provider of the External Products. In no event shall the open source license\n that governs this project grant any rights in or to any External Products,or\n alter, expand or supersede any terms of the applicable additional agreements.\n If you have a valid license agreement with SAP for the use of a particular SAP\n External Product, then you may make use of any API Calls included in this\n project's code for that SAP External Product, subject to the terms of such\n license agreement. If you do not have a valid license agreement for the use of\n a particular SAP External Product, then you may only make use of any API Calls\n in this project for that SAP External Product for your internal, non-productive\n and non-commercial test and evaluation of such API Calls. Nothing herein grants\n you any rights to use or access any SAP External Product, or provide any third\n parties the right to use of access any SAP External Product, through API Calls." [[annotations]] path = "**" precedence = "aggregate" -SPDX-FileCopyrightText = "2023 SAP SE or an SAP affiliate company and ui5-typescript-walkthrough contributors" +SPDX-FileCopyrightText = "2026 SAP SE or an SAP affiliate company and UI5 TypeScript Walkthrough contributors" SPDX-License-Identifier = "Apache-2.0" diff --git a/assets/loio240ef5357d7f4d36955092cdaf1884a2_LowRes.png b/assets/loio240ef5357d7f4d36955092cdaf1884a2_LowRes.png new file mode 100644 index 0000000000000000000000000000000000000000..59ff5ab36bbfddf3ac27ca92795b9afc5cb603d7 GIT binary patch literal 17013 zcmb`u2UOEd*Do4GL`8~JDFTKrRY4&HDbf^_CPg|3f^-NqbVR8FhAL8}H>n~Z?EwS= zNEeV^5_&VCgg}7vk3R1?-@4~J>)v(OVTmgJBGX_lP3*5m za^6Sr!cnL!^jnPMbfAlqpX2mbr$2uJaNoV2bjFmGXTIBZBLrzj50q?_U&-ukfV(g4 zLr?`juErYIIU9y;N;>CNWJx=;JP@%RG`}1efZsT{1gJzNI+8GTusMG;w>#3^o?j}| zkxr(*H}@h=9e398I_qp)^nB6mR%QS|%84*=`89P{w`6pyhZieHz-{kW44T&e$n^ZP zcw)FZUFTvPRgmMkafKKA)Yuz+dJwO-!3?baF5`m*37NG_=}3I=Y<|EPW8~fA8%)6@ z${f53py0-SjG2C}_LhKwgQSOPxmK^#AcU% z7&pz#*T3iwW115{`1>!1jwBC`IZT9RHNp<2rn3yx&aZ#;Ub}9+IiBHnLP5nQeb;Iy zXFnz=5c8lp>Nx_CAP)|zQ+j#sw%%L2QfAUPoON31QR@LV5LK2tQtp&aUK*)9NxJ;9 zRPvhH4c~o^oz@N47Wj@IZU^sR=G&S`CASne^>ivVSHLyst3sa!nVH31-jiIw8-tbR z%1m(_r;F!3-QW7B(nc%wR?$D_&GA~N&k4#!E=rz6XPD@6d#Q@pu(tPsB5XT7?d zI@9UAjVrLyA?sFhoJJ?d8Re(J1?}r~^^bi4xY-|+%72(vz{4%rr6<*q;Rjx`$7D`4 z+bso7jd;wJQJb{fxHHF-om1g~qAR0>m_Gf_eKF^o2b%E;_f+0JLHp9Zny#&2=Pi0i z{rVty5f$%d-YV&iY+xN z*`6iLFm@Xhofy2e=*Xr_t20&;bE=5zIo23v>F0dTXD;ii^a06Qw{DNifCk;Uyj%ji z^A|R|(7Z16`iWX}?1R&bHBmJkN;|JULS|FMPTest*~4Sm)KkjP{G;SSZ^(JEb~Q{N zbE{M537eEbZ7reU0bpFMbesKzTY~K|Mel_D3!>%jM4E&e&3<@Sq{Cydx-IU|7uzfm zpMmT+$gtw;N5+(DXLA_bit5x3@v(7>5H-R0vA*QPCKL{Qkg^Y66a7$QVfO)fniiaU z8_!wI3NX~N2Ah9_WpL;=_r}hi5RfZQP{8Xf0#;9WN>{o{C0{MOXj{Rev++mSQc9+m z$7E$7^obO^MY|j-=PsWr%}kQS;B@$*VLD+R%}xp;!zWwevoOQ#>jik=#H;>yyv46x=X|#XL#jtAd*TVDD!O8$PdM&$>8;yam_+HjmIbE#W=&^Edcq5u1G- z&v%n;jM(zGE9HDIWgU6G>a_iUoUL+QFR{LEKLj@2!|^hoBIgNtO$FOeb<{09i(PGN0XpE$(XMfpK(t`ciGn%*E*<>$ zjj6-6S=yx0!hv+C3&7(a#m8uG!dLtv`$1Kt|0?_Z{oz`^xZM5?iaJu<;g;NogD;q* zwQoAYU7)3X1XR*_X1}W1uyJRl%&e{_YqrIq0@9m( zC(?fii8-q-IWT_CrWdS~R3@eNW8EOa13a-G1O!Z|FN0HX1ttEePUMV1mSA=125%9R z0}^=KO@^r0NJ7pF3k+tM(a+Nw~pq;I-H0>^J=hUdCakA zN^&Z@tS^De5U7M8O($^HeLu?~koHM{?1RXeXicD&g8q4yfgG#y+bF~LE&*lWO4R4E zPc!TSv_RbiY^ZKf-rsnLF|P>1A}M4Z5jSumPCiSYI;U)CyozIqBr@j4&V{O6ax?kd z7RLs)j3fDX638gETfa*66TVJ`x1Lv4IY>Hd$0_^eY~0(;W=A*Vy6-A5KD{~QsSewk zs+kA)1lyLLET(LY-vRW0?Lzi}OZ|P`--jXez>*43?TNoP09gO|wE)l%e}jRtEN}bo z2jbv=qyDdy|1E)QE3gaT`({@9s{&^P3Fq3GAkXX8nt;5^k&HfkH6OwH@x0Lv%MMO} zNF@_!Dlg-q9Q4WFXK78K7t2JZ>rk@c*Y3`Cn}W zQ1FPo$^Z3TqjvCWnYi;?g z2GRNlGnSgO2747p%Bq@k8`HbXOp;3;T?VOqGgD_NbenSD9G3g;i@>K^If8oS?(j*} zeYEVau`zZpPn{qDdbH?xipJ?52(Zw$iC z6YmnA$*%m1`w%lO(J>i^ulH8j4TN
    8O~KRZJ1d30#jeBp+$aS9?y{1d=Dd{^%} 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 YT$gEI)>8EXPnJQCl{J*gA6mTrA6_(_vj6}9 literal 0 HcmV?d00001 diff --git a/assets/loio79e1157d948c488c9717ef840fa9b396_LowRes.png b/assets/loio79e1157d948c488c9717ef840fa9b396_LowRes.png new file mode 100644 index 0000000000000000000000000000000000000000..f443a0f11ff0f6294af1e62ade597d542348f20e GIT binary patch literal 61396 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 z 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 7e9d459df..ac8085252 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,15 @@ { - "name": "ui5-typescript-walkthrough", + "name": "@ui5/tutorials", + "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { + "name": "@ui5/tutorials", + "version": "0.0.0", + "license": "Apache-2.0", "workspaces": [ - "steps/*" + "packages/*/steps/*" ], "devDependencies": { "@highlightjs/cdn-assets": "^11.11.1", @@ -25,9 +29,9 @@ } }, "node_modules/@75lb/deep-merge": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.2.tgz", - "integrity": "sha512-08K9ou5VNbheZFxM5tDWoqjA3ImC50DiuuJ2tj1yEPRfkp8lLLg6XAaJ4On+a0yAXor/8ay5gHnAIshRM44Kpw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.3.tgz", + "integrity": "sha512-XhE6kVFVmX0oyynUI7k70s2fj1cUch/ipSM5SzI+NRFu3IwDZ2T/sNjY1DPO8lAaY3W0tZ2MITeAvPLhm7sdVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -36,6 +40,14 @@ }, "engines": { "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/@adobe/css-tools": { @@ -272,9 +284,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.7.tgz", - "integrity": "sha512-6Fqi8MtQ/PweQ9xvux65emkLQ83uB+qAVtfHkC9UodyHMIZdxNI01HjLCLUtybElp2KY2XNE0nOgyP1E1vXw9w==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", "dev": true, "license": "MIT", "dependencies": { @@ -488,23 +500,23 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { @@ -1572,9 +1584,9 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", - "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", + "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", "dev": true, "license": "MIT", "dependencies": { @@ -1791,31 +1803,6 @@ "node": ">=12.0.0" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -1911,14 +1898,14 @@ } }, "node_modules/@jsdoc/salty": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz", - "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.12.tgz", + "integrity": "sha512-TuB0x50EoAvEX/UEWITd8Mkn3WhiTjSvbTMCLj0BhsQEl5iUzjXdA0bETEVpTk+5TGTLR6QktI9H4hLviVeaAQ==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "lodash": "^4.17.21" + "lodash": "^4.18.1" }, "engines": { "node": ">=v12.0.0" @@ -2118,14 +2105,14 @@ } }, "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "peer": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@npmcli/git/node_modules/which": { @@ -2237,14 +2224,14 @@ } }, "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "peer": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@npmcli/promise-spawn/node_modules/which": { @@ -2295,14 +2282,14 @@ } }, "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "peer": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@npmcli/run-script/node_modules/which": { @@ -2352,9 +2339,9 @@ } }, "node_modules/@octokit/endpoint": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", - "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", + "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", "dev": true, "license": "MIT", "dependencies": { @@ -2433,16 +2420,17 @@ } }, "node_modules/@octokit/request": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz", - "integrity": "sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.8.tgz", + "integrity": "sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/endpoint": "^11.0.2", + "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "fast-content-type-parse": "^3.0.0", + "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" }, "engines": { @@ -2586,9 +2574,9 @@ } }, "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, "license": "MIT", "peer": true, @@ -2663,9 +2651,9 @@ } }, "node_modules/@types/jquery": { - "version": "3.5.33", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.33.tgz", - "integrity": "sha512-SeyVJXlCZpEki5F0ghuYe+L+PprQta6nRZqhONt9F13dWBtR/ftoaIbdRQ7cis7womE+X2LKhsDdDtkkDhJS6g==", + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.34.tgz", + "integrity": "sha512-3m3939S3erqmTLJANS/uy0B6V7BorKx7RorcGZVjZ62dF5PAGbKEDZK1CuLtKombJkFA2T1jl8LAIIs7IV6gBQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2701,13 +2689,13 @@ "peer": true }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.2.tgz", + "integrity": "sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/normalize-package-data": { @@ -2719,9 +2707,9 @@ "peer": true }, "node_modules/@types/openui5": { - "version": "1.143.0", - "resolved": "https://registry.npmjs.org/@types/openui5/-/openui5-1.143.0.tgz", - "integrity": "sha512-lsQVKgcMRGe0Xd1zR8bRj8ahsR4fSNpXraHAwBi+VbSISkMIoC92Nt0qIoG03K2XZKX4mL8bjkVR+GR5XfasrQ==", + "version": "1.145.0", + "resolved": "https://registry.npmjs.org/@types/openui5/-/openui5-1.145.0.tgz", + "integrity": "sha512-SYE0fL5KWKmzmAS0HA8CFZ31fFgWpwqCOS2AtayZou1N/5bCtPfxq9csCm2oPLvv4rl9b0FfBLyJjZ6wzG7AXw==", "dev": true, "license": "MIT", "dependencies": { @@ -2743,27 +2731,37 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@ui5/builder": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@ui5/builder/-/builder-4.1.3.tgz", - "integrity": "sha512-ScwlLZ/xyFjFOVpK1t3KfXq2i6N5iVuHW1ymWMPLdU7Qu8JFLkIWFWaLN9+rUE0pTGtewFzST+Zhk9cS0GfeRg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@ui5/builder/-/builder-4.1.5.tgz", + "integrity": "sha512-eDd1mICbgL7fcK6MgpinG/cXDrkjTigaKSAmC/PlV+1RJKCN7fIpjSfW8HiRYvbAh81/HNUIo1FZ0JS+0gilTA==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5", - "@ui5/fs": "^4.0.3", + "@ui5/fs": "^4.0.5", "@ui5/logger": "^4.0.2", "cheerio": "1.0.0", - "escape-unicode": "^0.2.0", + "escape-unicode": "^0.3.0", "escope": "^4.0.0", "espree": "^10.4.0", "graceful-fs": "^4.2.11", "jsdoc": "^4.0.5", "less-openui5": "^0.11.6", "pretty-data": "^0.40.0", - "semver": "^7.7.3", - "terser": "^5.44.1", + "semver": "^7.7.4", + "terser": "^5.46.1", "workerpool": "^9.3.4", "xml2js": "^0.6.2" }, @@ -9448,9 +9446,9 @@ "license": "BSD" }, "node_modules/@ui5/fs": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@ui5/fs/-/fs-4.0.3.tgz", - "integrity": "sha512-GVgAaSQlGQOrUXT4xLFW7H492XjeoKNr4AG+2i2jjjzXuEXcHFvvCjS5ANLxiAtZwQslfSUcsn4RUA9J2pEO0w==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@ui5/fs/-/fs-4.0.5.tgz", + "integrity": "sha512-P2pkzHig7neVpElvEaaG5WG/NR/IVz08PDxiizycdQUXG1rqSaGxlww7CV5lUA3YFFBu2bYTh3CJ7ayTu9RYVg==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -9458,10 +9456,10 @@ "@ui5/logger": "^4.0.2", "clone": "^2.1.2", "escape-string-regexp": "^5.0.0", - "globby": "^14.1.0", + "globby": "^16.1.0", "graceful-fs": "^4.2.11", "micromatch": "^4.0.8", - "minimatch": "^10.0.3", + "minimatch": "^10.2.0", "pretty-hrtime": "^1.0.3", "random-int": "^3.1.0" }, @@ -9470,18 +9468,43 @@ "npm": ">= 8" } }, + "node_modules/@ui5/fs/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ui5/fs/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@ui5/fs/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", "peer": true, "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.5" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -9519,18 +9542,18 @@ } }, "node_modules/@ui5/project": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@ui5/project/-/project-4.0.9.tgz", - "integrity": "sha512-H/dp1kBWPNGnvwbr5s/B+v/orv8Y/fFN/99RpGNZm9GYDpX+vmuZJueIRDA1s5MAmXjkudfYdCkrm86CifThrg==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@ui5/project/-/project-4.0.15.tgz", + "integrity": "sha512-Fo1g1t15NCLb9xKxVVJ4jD7BTGimk2CoE+4nMTg0NEA9DGv0UUWkfVygnNnmur1NJg4HV4sqK/mKO1yszFpCAQ==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { "@npmcli/config": "^9.0.0", - "@ui5/fs": "^4.0.3", + "@ui5/fs": "^4.0.5", "@ui5/logger": "^4.0.2", - "ajv": "^6.12.6", - "ajv-errors": "^1.0.1", + "ajv": "^8.18.0", + "ajv-errors": "^3.0.0", "chalk": "^5.6.2", "escape-string-regexp": "^5.0.0", "globby": "^14.1.0", @@ -9539,12 +9562,12 @@ "lockfile": "^1.0.4", "make-fetch-happen": "^14.0.3", "node-stream-zip": "^1.15.0", - "pacote": "^19.0.1", + "pacote": "^19.0.2", "pretty-hrtime": "^1.0.3", "read-package-up": "^11.0.0", "read-pkg": "^9.0.1", "resolve": "^1.22.11", - "semver": "^7.7.3", + "semver": "^7.7.4", "xml2js": "^0.6.2", "yesno": "^0.4.0" }, @@ -9553,7 +9576,7 @@ "npm": ">= 8" }, "peerDependencies": { - "@ui5/builder": "^4.1.3" + "@ui5/builder": "^4.1.5" }, "peerDependenciesMeta": { "@ui5/builder": { @@ -9561,6 +9584,20 @@ } } }, + "node_modules/@ui5/project/node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@ui5/project/node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", @@ -9575,6 +9612,42 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@ui5/project/node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ui5/project/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@ui5/ts-interface-generator": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/@ui5/ts-interface-generator/-/ts-interface-generator-0.10.5.tgz", @@ -9731,9 +9804,9 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "peer": true, @@ -9794,17 +9867,17 @@ "license": "MIT" }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -9812,14 +9885,14 @@ } }, "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", + "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", "dev": true, "license": "MIT", "peer": true, "peerDependencies": { - "ajv": ">=5.0.0" + "ajv": "^8.0.1" } }, "node_modules/anchor-js": { @@ -9939,9 +10012,9 @@ "license": "Python-2.0" }, "node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz", + "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==", "dev": true, "license": "MIT", "engines": { @@ -9999,9 +10072,9 @@ } }, "node_modules/b4a": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", - "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", "dev": true, "license": "Apache-2.0", "peerDependencies": { @@ -10014,14 +10087,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.16.tgz", - "integrity": "sha512-xaVwwSfebXf0ooE11BJovZYKhFjIvQo7TsyVpETuIeH2JHv0k/T6Y5j22pPTvqYqmpkxdlPAJlyJ0tfOJAoMxw==", + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.7", + "@babel/helper-define-polyfill-provider": "^0.6.8", "semver": "^6.3.1" }, "peerDependencies": { @@ -10039,13 +10112,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.1.tgz", - "integrity": "sha512-ENp89vM9Pw4kv/koBb5N2f9bDZsR0hpf3BdPMOg/pkS3pwO4dzNnQZVXtBbeyAadgm865DmQG2jMMLqmZXvuCw==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.7", + "@babel/helper-define-polyfill-provider": "^0.6.8", "core-js-compat": "^3.48.0" }, "peerDependencies": { @@ -10053,13 +10126,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.7.tgz", - "integrity": "sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.7" + "@babel/helper-define-polyfill-provider": "^0.6.8" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -10130,6 +10203,88 @@ } } }, + "node_modules/bare-fs": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.6.0.tgz", + "integrity": "sha512-2YkS7NuiJceSEbyEOdSNLE9tsGd+f4+f7C+Nik/MCk27SYdwIMPT/yRKvg++FZhQXgk0KWJKJyXX9RhVV0RGqA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz", + "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.12.0.tgz", + "integrity": "sha512-w28i8lkBgREV3rPXGbgK+BO66q+ZpKqRWrZLiCdmmUlLPrQ45CzkvRhN+7lnv00Gpi2zy5naRxnUFAxCECDm9g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "streamx": "^2.25.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-abort-controller": "*", + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", + "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -10162,13 +10317,16 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.9.15", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.15.tgz", - "integrity": "sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==", + "version": "2.10.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.16.tgz", + "integrity": "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA==", "dev": true, "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/basic-auth": { @@ -10301,9 +10459,9 @@ "peer": true }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", "dependencies": { @@ -10398,9 +10556,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -10418,11 +10576,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -10613,9 +10771,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001765", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", - "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", + "version": "1.0.30001786", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001786.tgz", + "integrity": "sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA==", "dev": true, "funding": [ { @@ -10763,9 +10921,9 @@ } }, "node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, "funding": [ { @@ -11040,16 +11198,16 @@ } }, "node_modules/command-line-args": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.1.tgz", - "integrity": "sha512-Jr3eByUjqyK0qd8W0SGFW1nZwqCaNCtbXjRo2cRJC1OYxWl3MZ5t1US3jq+cO4sPavqgw4l9BMGX0CBe+trepg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.2.tgz", + "integrity": "sha512-AIjYVxrV9X752LmPDLbVYv8aMCuHPSLZJXEo2qo/xJfv+NYhaZ4sMSF01rM+gHPaMgvPM0l5D/F+Qx+i2WfSmQ==", "dev": true, "license": "MIT", "dependencies": { - "array-back": "^6.2.2", + "array-back": "^6.2.3", "find-replace": "^5.0.2", "lodash.camelcase": "^4.3.0", - "typical": "^7.2.0" + "typical": "^7.3.0" }, "engines": { "node": ">=12.20" @@ -11064,16 +11222,16 @@ } }, "node_modules/command-line-usage": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", - "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.4.tgz", + "integrity": "sha512-85UdvzTNx/+s5CkSgBm/0hzP80RFHAa7PsfeADE5ezZF3uHz3/Tqj9gIKGT9PTtpycc3Ua64T0oVulGfKxzfqg==", "dev": true, "license": "MIT", "dependencies": { "array-back": "^6.2.2", "chalk-template": "^0.4.0", - "table-layout": "^4.1.0", - "typical": "^7.1.1" + "table-layout": "^4.1.1", + "typical": "^7.3.0" }, "engines": { "node": ">=12.20.0" @@ -11303,9 +11461,9 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", - "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { @@ -11324,9 +11482,9 @@ "license": "MIT" }, "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "dev": true, "license": "MIT", "dependencies": { @@ -11335,7 +11493,11 @@ }, "engines": { "node": ">= 0.10" - } + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } }, "node_modules/crc-32": { "version": "1.2.2", @@ -11605,9 +11767,9 @@ } }, "node_modules/dotenv": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", - "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.1.tgz", + "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -11671,9 +11833,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "version": "1.5.332", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.332.tgz", + "integrity": "sha512-7OOtytmh/rINMLwaFTbcMVvYXO3AUm029X0LcyfYk0B557RlPkdpTpnH9+htMlfu5dKwOmT0+Zs2Aw+lnn6TeQ==", "dev": true, "license": "ISC" }, @@ -11694,6 +11856,18 @@ "node": ">= 0.8" } }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/encoding-sniffer": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", @@ -11723,15 +11897,31 @@ "node": ">=0.10.0" } }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/engine.io": { - "version": "6.6.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.5.tgz", - "integrity": "sha512-2RZdgEbXmp5+dVbRm0P7HQUImZpICccJy7rN7Tv+SFa55pH+lxnuw6/K1ZxxBfHoYpSkHLAO92oa8O4SwFXA2A==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.6.tgz", + "integrity": "sha512-U2SN0w3OpjFRVlrc17E6TMDmH58Xl9rai1MblNjAdwWp07Kk+llmzX0hjDpQdrDGzwmvOtgM5yI+meYX6iZ2xA==", "dev": true, "license": "MIT", "dependencies": { "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", + "@types/ws": "^8.5.12", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.7.2", @@ -11979,15 +12169,22 @@ } }, "node_modules/escape-unicode": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/escape-unicode/-/escape-unicode-0.2.0.tgz", - "integrity": "sha512-7jMQuKb8nm0h/9HYLfu4NCLFwoUsd5XO6OZ1z86PbKcMf8zDK1m7nFR0iA2CCShq4TSValaLIveE8T1UBxgALQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/escape-unicode/-/escape-unicode-0.3.0.tgz", + "integrity": "sha512-4Lr9Prysw8FBwpW8dURr4T3/VRU4RYlhayLgy34zavplBG9bUsTtaCuM7Lw3szWTuidQvkZ2a1qJxG3e5+o99w==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/neocotic" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/neocotic" + } + ], "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } + "peer": true }, "node_modules/escope": { "version": "4.0.0", @@ -12349,12 +12546,22 @@ "node": ">=8.6.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", "peer": true }, "node_modules/fastq": { @@ -12618,21 +12825,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -12674,9 +12866,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "dev": true, "license": "MIT", "engines": { @@ -12742,6 +12934,7 @@ "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -12773,22 +12966,22 @@ } }, "node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", + "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", + "@sindresorhus/merge-streams": "^4.0.0", "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", + "ignore": "^7.0.5", + "is-path-inside": "^4.0.0", "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" + "unicorn-magic": "^0.4.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13253,9 +13446,9 @@ } }, "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.3.tgz", + "integrity": "sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==", "dev": true, "license": "MIT", "engines": { @@ -13454,6 +13647,20 @@ "lodash.isfinite": "^3.3.2" } }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", @@ -13662,9 +13869,9 @@ } }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT", "peer": true @@ -13676,6 +13883,13 @@ "dev": true, "license": "ISC" }, + "node_modules/json-with-bigint": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.8.tgz", + "integrity": "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -13730,7 +13944,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT", "dependencies": { @@ -13752,9 +13965,9 @@ } }, "node_modules/koa": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.3.tgz", - "integrity": "sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==", + "version": "2.16.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.4.tgz", + "integrity": "sha512-3An0GCLDSR34tsCO4H8Tef8Pp2ngtaZDAZnsWJYelqXUK5wyiHvGItgK/xcSkmHLSTn1Jcho1mRQs2ehRzvKKw==", "dev": true, "license": "MIT", "dependencies": { @@ -13856,58 +14069,22 @@ "license": "MIT" }, "node_modules/koa-compress": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.1.1.tgz", - "integrity": "sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.2.1.tgz", + "integrity": "sha512-k8VJMZI7vvSq1/G/t6Jggeg4h7fec1NJxcYaDWC4/1PK6mJFPs0OYqj44vx/soUcDVEJR7ysR5cc6pszKpnzXA==", "dev": true, "license": "MIT", "dependencies": { "bytes": "^3.1.2", "compressible": "^2.0.18", - "http-errors": "^1.8.1", - "koa-is-json": "^1.0.0" + "http-errors": "^2.0.1", + "koa-is-json": "^1.0.0", + "negotiator": "^1.0.0" }, "engines": { "node": ">= 12" } }, - "node_modules/koa-compress/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/koa-compress/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/koa-compress/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/koa-conditional-get": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/koa-conditional-get/-/koa-conditional-get-2.0.0.tgz", @@ -14478,9 +14655,9 @@ "peer": true }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, @@ -14823,9 +15000,9 @@ } }, "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "dev": true, "license": "MIT", "peer": true, @@ -14983,13 +15160,13 @@ } }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -15009,11 +15186,11 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -15052,11 +15229,11 @@ } }, "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz", + "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "peer": true, "dependencies": { "minipass": "^3.0.0" @@ -15296,14 +15473,14 @@ } }, "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "peer": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/node-gyp/node_modules/which": { @@ -15324,9 +15501,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT" }, @@ -15708,9 +15885,9 @@ "license": "BlueOak-1.0.0" }, "node_modules/pacote": { - "version": "19.0.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-19.0.1.tgz", - "integrity": "sha512-zIpxWAsr/BvhrkSruspG8aqCQUUrWtpwx0GjiRZQhEM/pZXrigA32ElN3vTcCPUDOFmHr6SFxwYrvVUs5NTEUg==", + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-19.0.2.tgz", + "integrity": "sha512-iNInrWMS+PzYbaef5EW/mU8OiCPxGuTmYn6ht5ImeXd5TZIVY4+dDmIrbpB6v0MKG/KIMMvj2UD7eKU9GbTGHA==", "dev": true, "license": "ISC", "peer": true, @@ -15731,7 +15908,7 @@ "promise-retry": "^2.0.1", "sigstore": "^3.0.0", "ssri": "^12.0.0", - "tar": "^6.1.11" + "tar": "^7.5.10" }, "bin": { "pacote": "bin/index.js" @@ -15740,113 +15917,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/pacote/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "license": "ISC", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/pacote/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pacote/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/pacote/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pacote/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "license": "ISC", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC", - "peer": true - }, "node_modules/parse-json": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", @@ -15988,9 +16058,9 @@ } }, "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "dev": true, "license": "MIT", "funding": { @@ -16020,9 +16090,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -16185,17 +16255,6 @@ "node": ">=10" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", @@ -16217,9 +16276,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -16388,9 +16447,9 @@ } }, "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", "dependencies": { @@ -16476,9 +16535,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -16498,6 +16557,17 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -16622,9 +16692,9 @@ } }, "node_modules/resp-modifier/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -16633,9 +16703,9 @@ } }, "node_modules/resp-modifier/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -16797,9 +16867,9 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", "dev": true, "license": "BlueOak-1.0.0", "peer": true, @@ -16808,9 +16878,9 @@ } }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "peer": true, @@ -16854,22 +16924,26 @@ "license": "MIT" }, "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.4", + "accepts": "~1.3.8", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" }, "engines": { "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serve-index-75lb": { @@ -17013,28 +17087,22 @@ } }, "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "license": "MIT", "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "license": "ISC" - }, "node_modules/serve-index/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -17068,13 +17136,6 @@ "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true, - "license": "ISC" - }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -17591,9 +17652,9 @@ "license": "MIT" }, "node_modules/socket.io-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.5.tgz", - "integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "dev": true, "license": "MIT", "dependencies": { @@ -17826,9 +17887,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0", "peer": true @@ -18038,9 +18099,9 @@ } }, "node_modules/streamx": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", - "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", "dev": true, "license": "MIT", "dependencies": { @@ -18124,13 +18185,13 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -18218,9 +18279,9 @@ } }, "node_modules/tar": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.3.tgz", - "integrity": "sha512-ENg5JUHUm2rDD7IvKNFGzyElLXNjachNLp6RaGf4+JOgxXHkqA+gq81ZAMCUmtMtqBsoU62lcp6S27g1LCYGGQ==", + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", "dev": true, "license": "BlueOak-1.0.0", "peer": true, @@ -18236,21 +18297,32 @@ } }, "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", "dev": true, "license": "MIT", "dependencies": { "b4a": "^1.6.4", + "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, "node_modules/terser": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", - "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -18276,9 +18348,9 @@ "peer": true }, "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -18330,9 +18402,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "peer": true, @@ -18699,13 +18771,13 @@ } }, "node_modules/ui5-middleware-simpleproxy/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "version": "7.4.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.9.tgz", + "integrity": "sha512-Brg/fp/iAVDOQoHxkuN5bEYhyQlZhxddI78yWsCbeEwTHXQjlNLtiJDUsp1GIptVqMI7/gkJMz4vVAc01mpoBw==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=10" @@ -18755,170 +18827,182 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/ui5.quickstart.step01": { + "resolved": "packages/quickstart/steps/01", + "link": true + }, + "node_modules/ui5.quickstart.step02": { + "resolved": "packages/quickstart/steps/02", + "link": true + }, + "node_modules/ui5.quickstart.step03": { + "resolved": "packages/quickstart/steps/03", + "link": true + }, "node_modules/ui5.walkthrough.step01": { - "resolved": "steps/01", + "resolved": "packages/walkthrough/steps/01", "link": true }, "node_modules/ui5.walkthrough.step02": { - "resolved": "steps/02", + "resolved": "packages/walkthrough/steps/02", "link": true }, "node_modules/ui5.walkthrough.step03": { - "resolved": "steps/03", + "resolved": "packages/walkthrough/steps/03", "link": true }, "node_modules/ui5.walkthrough.step04": { - "resolved": "steps/04", + "resolved": "packages/walkthrough/steps/04", "link": true }, "node_modules/ui5.walkthrough.step05": { - "resolved": "steps/05", + "resolved": "packages/walkthrough/steps/05", "link": true }, "node_modules/ui5.walkthrough.step06": { - "resolved": "steps/06", + "resolved": "packages/walkthrough/steps/06", "link": true }, "node_modules/ui5.walkthrough.step07": { - "resolved": "steps/07", + "resolved": "packages/walkthrough/steps/07", "link": true }, "node_modules/ui5.walkthrough.step08": { - "resolved": "steps/08", + "resolved": "packages/walkthrough/steps/08", "link": true }, "node_modules/ui5.walkthrough.step09": { - "resolved": "steps/09", + "resolved": "packages/walkthrough/steps/09", "link": true }, "node_modules/ui5.walkthrough.step10": { - "resolved": "steps/10", + "resolved": "packages/walkthrough/steps/10", "link": true }, "node_modules/ui5.walkthrough.step11": { - "resolved": "steps/11", + "resolved": "packages/walkthrough/steps/11", "link": true }, "node_modules/ui5.walkthrough.step12": { - "resolved": "steps/12", + "resolved": "packages/walkthrough/steps/12", "link": true }, "node_modules/ui5.walkthrough.step13": { - "resolved": "steps/13", + "resolved": "packages/walkthrough/steps/13", "link": true }, "node_modules/ui5.walkthrough.step14": { - "resolved": "steps/14", + "resolved": "packages/walkthrough/steps/14", "link": true }, "node_modules/ui5.walkthrough.step15": { - "resolved": "steps/15", + "resolved": "packages/walkthrough/steps/15", "link": true }, "node_modules/ui5.walkthrough.step16": { - "resolved": "steps/16", + "resolved": "packages/walkthrough/steps/16", "link": true }, "node_modules/ui5.walkthrough.step17": { - "resolved": "steps/17", + "resolved": "packages/walkthrough/steps/17", "link": true }, "node_modules/ui5.walkthrough.step18": { - "resolved": "steps/18", + "resolved": "packages/walkthrough/steps/18", "link": true }, "node_modules/ui5.walkthrough.step19": { - "resolved": "steps/19", + "resolved": "packages/walkthrough/steps/19", "link": true }, "node_modules/ui5.walkthrough.step20": { - "resolved": "steps/20", + "resolved": "packages/walkthrough/steps/20", "link": true }, "node_modules/ui5.walkthrough.step21": { - "resolved": "steps/21", + "resolved": "packages/walkthrough/steps/21", "link": true }, "node_modules/ui5.walkthrough.step22": { - "resolved": "steps/22", + "resolved": "packages/walkthrough/steps/22", "link": true }, "node_modules/ui5.walkthrough.step23": { - "resolved": "steps/23", + "resolved": "packages/walkthrough/steps/23", "link": true }, "node_modules/ui5.walkthrough.step24": { - "resolved": "steps/24", + "resolved": "packages/walkthrough/steps/24", "link": true }, "node_modules/ui5.walkthrough.step25": { - "resolved": "steps/25", + "resolved": "packages/walkthrough/steps/25", "link": true }, "node_modules/ui5.walkthrough.step26": { - "resolved": "steps/26", + "resolved": "packages/walkthrough/steps/26", "link": true }, "node_modules/ui5.walkthrough.step27": { - "resolved": "steps/27", + "resolved": "packages/walkthrough/steps/27", "link": true }, "node_modules/ui5.walkthrough.step28": { - "resolved": "steps/28", + "resolved": "packages/walkthrough/steps/28", "link": true }, "node_modules/ui5.walkthrough.step29": { - "resolved": "steps/29", + "resolved": "packages/walkthrough/steps/29", "link": true }, "node_modules/ui5.walkthrough.step30": { - "resolved": "steps/30", + "resolved": "packages/walkthrough/steps/30", "link": true }, "node_modules/ui5.walkthrough.step31": { - "resolved": "steps/31", + "resolved": "packages/walkthrough/steps/31", "link": true }, "node_modules/ui5.walkthrough.step32": { - "resolved": "steps/32", + "resolved": "packages/walkthrough/steps/32", "link": true }, "node_modules/ui5.walkthrough.step33": { - "resolved": "steps/33", + "resolved": "packages/walkthrough/steps/33", "link": true }, "node_modules/ui5.walkthrough.step34": { - "resolved": "steps/34", + "resolved": "packages/walkthrough/steps/34", "link": true }, "node_modules/ui5.walkthrough.step35": { - "resolved": "steps/35", + "resolved": "packages/walkthrough/steps/35", "link": true }, "node_modules/ui5.walkthrough.step36": { - "resolved": "steps/36", + "resolved": "packages/walkthrough/steps/36", "link": true }, "node_modules/ui5.walkthrough.step37": { - "resolved": "steps/37", + "resolved": "packages/walkthrough/steps/37", "link": true }, "node_modules/ui5.walkthrough.step38": { - "resolved": "steps/38", + "resolved": "packages/walkthrough/steps/38", "link": true }, "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", + "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", "dev": true, "license": "MIT", "peer": true }, "node_modules/undici": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", - "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz", + "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==", "dev": true, "license": "MIT", "peer": true, @@ -18927,9 +19011,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, @@ -18978,14 +19062,14 @@ } }, "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", "dev": true, "license": "MIT", "peer": true, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -19077,17 +19161,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -19139,13 +19212,21 @@ } }, "node_modules/walk-back": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.1.tgz", - "integrity": "sha512-e/FRLDVdZQWFrAzU6Hdvpm7D7m2ina833gIKLptQykRK49mmCYHLHq7UqjPDbxbKLZkTkW1rFqbengdE3sLfdw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.2.tgz", + "integrity": "sha512-uCgzIY1U7fyXvJm+mesY0xjf2HXu7mtTnptONwVQ11ur1JhMrUyQJn2fDje1CGFQDnTFTo1Slr1vRuvUS9PYoQ==", "dev": true, "license": "MIT", "engines": { "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/walk-up-path": { @@ -19557,14 +19638,50 @@ "node": ">= 14" } }, - "steps/01": { + "packages/quickstart/steps/01": { + "name": "ui5.quickstart.step01", + "version": "1.0.0", + "devDependencies": { + "@types/openui5": "^1.145.0", + "@ui5/cli": "^4", + "typescript": "^5.9.3", + "ui5-middleware-livereload": "^3.3.0", + "ui5-middleware-serveframework": "^3.8.0", + "ui5-tooling-transpile": "^3.11.0" + } + }, + "packages/quickstart/steps/02": { + "name": "ui5.quickstart.step02", + "version": "1.0.0", + "devDependencies": { + "@types/openui5": "^1.145.0", + "@ui5/cli": "^4", + "typescript": "^5.9.3", + "ui5-middleware-livereload": "^3.3.0", + "ui5-middleware-serveframework": "^3.8.0", + "ui5-tooling-transpile": "^3.11.0" + } + }, + "packages/quickstart/steps/03": { + "name": "ui5.quickstart.step03", + "version": "1.0.0", + "devDependencies": { + "@types/openui5": "^1.145.0", + "@ui5/cli": "^4", + "typescript": "^5.9.3", + "ui5-middleware-livereload": "^3.3.0", + "ui5-middleware-serveframework": "^3.8.0", + "ui5-tooling-transpile": "^3.11.0" + } + }, + "packages/walkthrough/steps/01": { "name": "ui5.walkthrough.step01", "version": "1.0.0", "devDependencies": { "@ui5/cli": "^4.0.51" } }, - "steps/02": { + "packages/walkthrough/steps/02": { "name": "ui5.walkthrough.step02", "version": "1.0.0", "devDependencies": { @@ -19575,11 +19692,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/03": { + "packages/walkthrough/steps/03": { "name": "ui5.walkthrough.step03", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19587,11 +19704,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/04": { + "packages/walkthrough/steps/04": { "name": "ui5.walkthrough.step04", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19599,11 +19716,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/05": { + "packages/walkthrough/steps/05": { "name": "ui5.walkthrough.step05", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19611,11 +19728,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/06": { + "packages/walkthrough/steps/06": { "name": "ui5.walkthrough.step06", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19623,11 +19740,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/07": { + "packages/walkthrough/steps/07": { "name": "ui5.walkthrough.step07", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19635,11 +19752,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/08": { + "packages/walkthrough/steps/08": { "name": "ui5.walkthrough.step08", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19647,11 +19764,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/09": { + "packages/walkthrough/steps/09": { "name": "ui5.walkthrough.step09", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19659,11 +19776,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/10": { + "packages/walkthrough/steps/10": { "name": "ui5.walkthrough.step10", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19671,11 +19788,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/11": { + "packages/walkthrough/steps/11": { "name": "ui5.walkthrough.step11", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19683,11 +19800,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/12": { + "packages/walkthrough/steps/12": { "name": "ui5.walkthrough.step12", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19695,11 +19812,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/13": { + "packages/walkthrough/steps/13": { "name": "ui5.walkthrough.step13", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19707,11 +19824,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/14": { + "packages/walkthrough/steps/14": { "name": "ui5.walkthrough.step14", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19719,11 +19836,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/15": { + "packages/walkthrough/steps/15": { "name": "ui5.walkthrough.step15", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19731,11 +19848,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/16": { + "packages/walkthrough/steps/16": { "name": "ui5.walkthrough.step16", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19743,11 +19860,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/17": { + "packages/walkthrough/steps/17": { "name": "ui5.walkthrough.step17", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19755,11 +19872,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/18": { + "packages/walkthrough/steps/18": { "name": "ui5.walkthrough.step18", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19767,11 +19884,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/19": { + "packages/walkthrough/steps/19": { "name": "ui5.walkthrough.step19", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19779,11 +19896,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/20": { + "packages/walkthrough/steps/20": { "name": "ui5.walkthrough.step20", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19791,11 +19908,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/21": { + "packages/walkthrough/steps/21": { "name": "ui5.walkthrough.step21", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19803,11 +19920,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/22": { + "packages/walkthrough/steps/22": { "name": "ui5.walkthrough.step22", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19815,11 +19932,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/23": { + "packages/walkthrough/steps/23": { "name": "ui5.walkthrough.step23", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19827,11 +19944,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/24": { + "packages/walkthrough/steps/24": { "name": "ui5.walkthrough.step24", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19839,11 +19956,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/25": { + "packages/walkthrough/steps/25": { "name": "ui5.walkthrough.step25", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19852,11 +19969,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/26": { + "packages/walkthrough/steps/26": { "name": "ui5.walkthrough.step26", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19865,11 +19982,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/27": { + "packages/walkthrough/steps/27": { "name": "ui5.walkthrough.step27", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19878,11 +19995,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/28": { + "packages/walkthrough/steps/28": { "name": "ui5.walkthrough.step28", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19891,11 +20008,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/29": { + "packages/walkthrough/steps/29": { "name": "ui5.walkthrough.step29", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19904,11 +20021,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/30": { + "packages/walkthrough/steps/30": { "name": "ui5.walkthrough.step30", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19917,11 +20034,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/31": { + "packages/walkthrough/steps/31": { "name": "ui5.walkthrough.step31", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19930,11 +20047,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/32": { + "packages/walkthrough/steps/32": { "name": "ui5.walkthrough.step32", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", @@ -19943,11 +20060,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/33": { + "packages/walkthrough/steps/33": { "name": "ui5.walkthrough.step33", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", @@ -19957,11 +20074,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/34": { + "packages/walkthrough/steps/34": { "name": "ui5.walkthrough.step34", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", @@ -19971,11 +20088,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/35": { + "packages/walkthrough/steps/35": { "name": "ui5.walkthrough.step35", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", @@ -19985,11 +20102,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/36": { + "packages/walkthrough/steps/36": { "name": "ui5.walkthrough.step36", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", @@ -19999,11 +20116,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/37": { + "packages/walkthrough/steps/37": { "name": "ui5.walkthrough.step37", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", @@ -20013,11 +20130,11 @@ "ui5-tooling-transpile": "^3.11.0" } }, - "steps/38": { + "packages/walkthrough/steps/38": { "name": "ui5.walkthrough.step38", "version": "1.0.0", "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "local-web-server": "^5.4.0", diff --git a/package.json b/package.json index 89c314382..1cc1baf5f 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,30 @@ { - "description": "OpenUI5 TypeScript Walkthrough", - "author": "SAP SE", + "name": "@ui5/tutorials", "private": true, + "version": "0.0.0", + "description": "A repository offering tutorials for UI5.", + "author": { + "name": "SAP SE", + "email": "openui5@sap.com", + "url": "https://www.sap.com" + }, + "keywords": [ + "openui5", + "sapui5", + "ui5", + "build", + "development", + "tutorial" + ], + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git@github.com:SAP-samples/ui5-typescript-walkthrough.git" + }, "scripts": { "build": "node tools/builder", - "start": "node tools/dev-server" + "start": "node tools/dev-server", + "download-assets": "node tools/utils/download-assets" }, "devDependencies": { "@highlightjs/cdn-assets": "^11.11.1", @@ -23,6 +43,6 @@ "showdown-highlight": "^3.1.0" }, "workspaces": [ - "steps/*" + "packages/*/steps/*" ] } diff --git a/packages/quickstart/README.md b/packages/quickstart/README.md new file mode 100644 index 000000000..9b75e21f0 --- /dev/null +++ b/packages/quickstart/README.md @@ -0,0 +1,29 @@ +# OpenUI5 Quickstart + +In this tutorial we'll introduce you to all major development paradigms of OpenUI5.
    This section is relevant for TypeScript onlyWe'll also demonstrate the use of TypeScript with OpenUI5 and highlight the specific characteristics of this approach.
    + +## Description + +We first introduce you to the basic development paradigms like *Model-View-Controller* and establish a best-practice structure of our application. We'll do this along the classic example of ā€œHello Worldā€ and start a new app from scratch. Next, we'll introduce the fundamental data binding concepts of OpenUI5 and extend our app to show a list of invoices. We'll continue to add more functionality by adding navigation, extending controls, and making our app responsive. We'll also have look at the testing features and the built-in support tools of OpenUI5. + +### Preview + +![Preview of the OpenUI5 application that is going to be built in this tutorial. Contains a Hello World upper part with buttons and a text input. The lower part shows list of invoices with details, grouped by vendor names.](assets/loiofb12cea5ac9b45bb9007aac5a1a8689f_LowRes.png) + +> šŸ’” **Tip:**
    +> You don't have to do all tutorial steps sequentially, you can also jump directly to any step you want. Just download the code from the previous step and make sure that the application runs as intended. +> +> You can view the samples for all steps here in this repository. +> + +### Steps + +The tutorial consists of the following steps. To start, just open the first link - you`ll be guided from there. + +- **[Step 1: Ready...](steps/01/README.md "Let's get you ready for your journey! We bootstrap OpenUI5 in an HTML page and implement a simple "Hello World" example.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/build/01/index.html) \|
    [šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/quickstart-step-01.zip)
    [šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/quickstart-step-01-js.zip)
    ) +- **[Step 2: Steady...](steps/02/README.md "Now we extend our minimalist HTML page to a basic app with a view and a controller.")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/build/02/index-cdn.html) \|
    [šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/quickstart-step-02.zip)
    [šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/quickstart-step-02-js.zip)
    ) +- **[Step 3: Go!](steps/03/README.md "Now it is time to build our first little UI by replacing the "Hello World" text in the HTML body by the OpenUI5 control sap/m/Text. In the beginning, we will use the JavaScript control interface to set up the UI, the control instance is then placed into the HTML body. ")** ([šŸ”— Live Preview](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/build/03/index-cdn.html) \|
    [šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/quickstart-step-03.zip)
    [šŸ“„ Download Solution](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/quickstart-step-03-js.zip)
    ) + +## License + +Copyright (c) 2025 SAP SE or an SAP affiliate company. All rights reserved. This project is licensed under the Apache Software License, version 2.0 except as noted otherwise in the [LICENSE](../../LICENSE) file. diff --git a/packages/quickstart/steps/01/Component.ts b/packages/quickstart/steps/01/Component.ts new file mode 100644 index 000000000..4491b5ce6 --- /dev/null +++ b/packages/quickstart/steps/01/Component.ts @@ -0,0 +1,10 @@ +import UIComponent from "sap/ui/core/UIComponent"; + +/** + * @namespace sap.m.tutorial.quickstart.01 + */ +export default class Component extends UIComponent { + static readonly metadata = { + manifest: "json" + }; +} diff --git a/packages/quickstart/steps/01/README.md b/packages/quickstart/steps/01/README.md new file mode 100644 index 000000000..ea8ef5c08 --- /dev/null +++ b/packages/quickstart/steps/01/README.md @@ -0,0 +1,384 @@ +## Step 1: Ready... + +Let's get you ready for your journey! We bootstrap OpenUI5 in an HTML page and implement a simple "Hello World" example. + +  + +*** + +### Preview + + +![](assets/loio9c157e9764b846fea7de519d141c33ac_LowRes.png "The browser shows a "Ready" button that triggers a "Hello World" message") + +*The browser shows a "Ready" button that triggers a "Hello World" message* + +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 1](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/build/01/index.html). + +*** + +### Coding + +
    + +You can download the solution for this step here: [šŸ“„ Download step 1](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart-step-01.zip). + +
    + +
    + +You can download the solution for this step here: [šŸ“„ Download step 1](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart-step-01-js.zip). + +
    +*** + + +### App root folder \(New\) + +Create a folder on your local machine which will contain all the sources of the app we're going to build. We'll refer to this folder as the "app root folder". + +### webapp \(New\) + +Create a new folder named `webapp` in the app root folder. It will contain all the sources that become available in the browser later. We'll refer to this folder as the "webapp folder". + +*** + +### webapp/index.html \(New\) + +In our webapp folder, we create a new HTML file named `index.html` and copy the following content to it: + +```html + + + + + Quickstart Tutorial + + + + +``` + +With the `script` tag, we load and initialize OpenUI5 with typical bootstrap parameters. We define, for example, a theme, control libraries, as well as performance and compatibility flags. +- The bootstrap property `resource-roots` defines the namespace for all resources of the app. This way, we can easily reference additional files that we are about to create in this step. +- The `index` module that we load with the `onInit` parameter will hold the application logic. +- The `body` tag is defined with the `sapUiBody` class and the `content` ID. This is where we will add the content of the app in the next steps. + +*** + +### webapp/index.?s \(New\) + +In your `webapp` folder, create a new file `index.js` that will be called as soon as OpenUI5 is loaded and initialized. We load two UI controls - a button and a message toast - and place the button in the element with the `content` ID. The button is defined with a `text` property and a callback attached to its `press` event. + +```ts +import Button from "sap/m/Button"; +import MessageToast from "sap/m/MessageToast"; + +new Button({ + text: "Ready...", + press() { + MessageToast.show("Hello World!"); + } +}).placeAt("content"); + +``` +```js +sap.ui.define([ + "sap/m/Button", + "sap/m/MessageToast" +], (Button, MessageToast) => { + "use strict"; + + new Button({ + text: "Ready...", + press() { + MessageToast.show("Hello World!"); + } + }).placeAt("content"); +}); +``` + +*** + +### webapp/manifest.json \(New\) + +Create a new file named `manifest.json` in the webapp folder; it's also known as the "app descriptor". All application-specific configuration options which we'll introduce in this tutorial will be added to this file. Enter the following content: + +```json +{ + "_version": "1.60.0", + "sap.app": { + "id": "ui5.quickstart" + } +} +``` + +> šŸ“ **Note:**
    +> In this tutorial step, we focus on adding the absolute minimum configuration to the app descriptor file. In certain development environments you might encounter validation errors due to missing settings. However, for the purposes of this tutorial you can safely ignore these errors. In [Step 10: Descriptor for Applications](../10/README.md) we'll examine the purpose of the file in detail and configure some further options. + +*** + +### Development Environment + +The following steps are tailored for using this project with [UI5 CLI](https://ui5.github.io/cli/stable/pages/CLI/#local-vs-global-installation). + +*** + +#### package.json \(New\) + +Create a new file called `package.json` which will enable you to execute commands and consume packages from the[npm registry](https://www.npmjs.com/) via the npm command line interface. + +Enter the following content: + +```json +{ + "name": "ui5.quickstart", + "version": "1.0.0", + "description": "The UI5 quickstart tutorial", + "scripts": { + "start": "ui5 serve -o index.html" + } +} + +``` + +
    + +#### TypeScript Setup + +To work with TypeScript, we must install it in our project. To do this, we execute the following command in the terminal: + + +```sh +npm install typescript --save-dev +``` + +By running this command, npm will download the TypeScript package from the npm registry and install it in our project's "node_modules" directory. It will also add an entry for TypeScript in the "devDependencies" section of our package.json file, so that other developers working on the project can easily install the same version of TypeScript. + + +##### tsconfig.json \(New\) + +As a next step, we need to create the file `tsconfig.json` in the app root directory to indicate that this folder is the root of a TypeScript project. This file specifies various compiler options and project settings that affect how TypeScript code is compiled into JavaScript. + +We specify the compiler options as follow: + + +```json +{ + "compilerOptions": { + "target": "es2023", + "module": "es2022", + "moduleResolution": "node", + "skipLibCheck": true, + "allowJs": true, + "strict": true, + "strictPropertyInitialization": false, + "rootDir": "webapp", + "baseUrl": "./", + "paths": { + "ui5/quickstart/*": ["webapp/*"] + } + }, + "include": ["webapp/**/*"] +} +``` + + + +Let's go through the compiler options specified in the file: + +- `"target": "es2022"`: The `target` parameter sets the JavaScript language level that the TypeScript code should be compiled down to. We set it to ES2022, which means the generated JavaScript code will be compatible with ECMAScript 2022. + +- `"module": "es2022"`: The `module` parameter specifies the module code generation for the compiled JavaScript. We configured it to ES2022, which means the generated JavaScript will use ECMAScript modules. + +- `"moduleResolution": "node"`: The `moduleResolution` parameter specifies how module dependencies should be resolved. We set it to "node", which means the compiler will use Node.js-style module resolution. + +- `"skipLibCheck": true`: When the `skipLibCheck` parameter is set to `true`, it tells the compiler to skip type checking of declaration files (`.d.ts` files) that are part of external libraries. This can improve compilation speed. + +- `"allowJs": true`: The `allwJs` parameter allows JavaScript files to be included in the TypeScript project. This option enables TypeScript to compile JavaScript code along with TypeScript code. + +- `"strict": true`: When set to "true" the `strict` parameter enables a wide range of type checking behavior that results in more type-safe programs. It includes settings like `noImplicitAny`, `noImplicitThis`, `alwaysStrict` and others. + +- `"strictPropertyInitialization": false`: The `strictPropertyInitialization` parameter is a specific type of strict check that ensures that each instance property of a class gets initialized in the constructor body, or by a property initializer. By setting this to false, it disables strict checking of uninitialized class properties. This means that class properties can be left uninitialized or assigned the value `undefined` without causing a compiler error. + +- `"rootDir": "webapp"`: The `rootDir` paraemter specifies the root directory of the TypeScript source files. The compiler will consider this directory as the starting point for resolving file paths. We set it to our `webapp` folder. + +- `"baseUrl": "./"`: The `baseUrl` parameter is used to resolve non-relative module names. We specified that non-relative module names are resolved relative to the location of the `tsconfig.json` file. + +- `"paths": { "ui5/quickstart/*": ["webapp/*"] }`: The `path` paramter specifies path mappings for module resolution. It allows you to define custom module paths that map to specific directories or files. In this case, it maps the module path `ui5/quickstart/*` + +*** + +
    + +### UI5 CLI + +Next, we install the UI5 CLI and add it as development dependency to our project. For this, we open a terminal in the app root folder and execute the following command: + +```sh +npm install --save-dev @ui5/cli +``` + +Finally, we initialize the UI5 CLI configuration for our project by executing the following command on the app root folder: + +```sh +ui5 init +``` + +This will generate a `ui5.yaml` file in the app root directory, which is essential for using UI5 CLI with our project. +  + +To use OpenUI5, execute the following command: + +```sh +ui5 use OpenUI5 +``` + +To use install the required UI5 libraries, execute the following command: + +```sh +ui5 add sap.m sap.tnt sap.ui.core sap.ui.layout themelib_sap_horizon` +``` + +Let's enhance our tooling setup once again by installing some custom middleware for the ui5-server. This will help us handle our development project more efficiently. + +We open a terminal and navigate to the root folder of our app. Then, we execute the following command: + +
    + +```sh +npm install ui5-middleware-livereload ui5-middleware-serveframework ui5-tooling-transpile --save-dev +``` +
    + +
    + +```sh +npm install ui5-middleware-livereload ui5-middleware-serveframework --save-dev +``` +
    + +When you run the command, npm will download the specified packages from the npm registry and store them in a folder called `node_modules` within your project directory. The `--save-dev` flag instructs npm to save these packages as development dependencies in the `devDependencies` section of the `package.json` file. Development dependencies are packages that are only needed during development and not in production. By separating them from production dependencies, we can keep our project clean and ensure that only the required packages are included when deploying the application. + +Let's break down what each package does: + +- `ui5-middleware-livereload` is a middleware plugin for the UI5 CLI that enables live reloading of your application in the browser. Live-reloading means that whenever you make changes to your code, the browser automatically refreshes and displays the updated version without requiring manual refreshes (e.g. upon *Save*). + +- `ui5-middleware-serveframework` is another middleware plugin for the UI5 CLI that provides a web server to serve your OpenUI5 project during development. It allows you to easily serve the necessary OpenUI5 libraries and resources required by your application from your development environment. + +
    + +- `ui5-tooling-transpile` is a plugin for the UI5 CLI that transpiles modern JavaScript (ES6+) and TypeScript into a compatible version for OpenUI5. OpenUI5 is based on older versions of JavaScript, so this plugin allows you to take advantage of the latest language features and syntax while ensuring that your code remains compatible with OpenUI5. + +
    + +#### ui5.yaml + +Next, we have to configure the tooling extension we installed from npm to our UI5 CLI setup, so we can use them in our project. To hook a custom task into a certain build phase of a project, it needs to reference another task that will get executed before or after it. The same applies for a custom middleware: +
    + +- For the `ui5-tooling-transpile-task` we specify that this should happen after the`replaceVersion` task. + +
    + +- All our custom middleware extensions will be called after the `compression` middleware. + +> šŸ“Œ **Important:**
    +> Middleware configurations are applied in the order in which they are defined. + +
    + +```yaml +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.tnt + - name: sap.ui.core + - name: sap.ui.layout + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression +``` +Now you can benefit from live reload on changes, built framework resources at development time, and make use of TypeScript in OpenUI5. + +
    + +
    + +```yaml +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.ui.core + - name: themelib_sap_horizon +builder: +server: + customMiddleware: + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression +``` +Now you can benefit from live reload on changes and built framework resources at development time. + +
    + +
    +> šŸ“ **Note:**
    +> During its initial run, the `ui5-middleware-serveframework` middleware will build the framework, which can take a while. In all following steps, the build will not happen again and the framework is served from the built resources. + +  + +To start the web server and to open a new browser window hosting your newly created `index.html`, execute the following command: + +```sh +npm start +``` + +*** + +### Conventions + +- The `index.html` file is located in the `webapp` folder. + +  + +*** + +**Next:** [Step 2: Steady...](../02/README.md "Before we can do something with UI5, we need to laod and initialize it. This process of loading and initializing UI5 is called bootstrapping. Once this bootstrapping is finished, we simply display an alert.") + +*** + +**Related Information** + +[Descriptor for Applications, Components, and Libraries \(manifest.json\)](https://sdk.openui5.org/topic/be0cf40f61184b358b5faedaec98b2da.html "The descriptor for applications, components, and libraries (in short: app descriptor) is inspired by the WebApplication Manifest concept introduced by the W3C. The descriptor provides a central, machine-readable, and easy-to-access location for storing metadata associated with an application, an application component, or a library.") + +[ui5-manifest](https://github.com/SAP/ui5-manifest/tree/main) + +[Development Environment](https://sdk.openui5.org/topic/7bb04e05f9484e1b95b38a2e48ecef4f.html "This part of the documentation introduces you to some common and recommended use cases for the installation, configuration, and setup of OpenUI5 development environments.") + +[App Development](https://sdk.openui5.org/topic/b1fbe1a22f8d4a5bbb601591e27b68d1 "There are several ways to develop OpenUI5 applications. Select the one that meets the requirements of your projects and your expectations best.") + +[UI5 CLI: Getting Started](https://ui5.github.io/cli/stable/pages/GettingStarted/) diff --git a/packages/quickstart/steps/01/package.json b/packages/quickstart/steps/01/package.json new file mode 100644 index 000000000..121d0b477 --- /dev/null +++ b/packages/quickstart/steps/01/package.json @@ -0,0 +1,18 @@ +{ + "name": "ui5.quickstart.step01", + "private": true, + "version": "1.0.0", + "author": "SAP SE", + "description": "UI5 Demo App - Quickstart Tutorial", + "scripts": { + "start": "ui5 serve -o index.html" + }, + "devDependencies": { + "@types/openui5": "^1.145.0", + "@ui5/cli": "^4", + "typescript": "^5.9.3", + "ui5-middleware-livereload": "^3.3.0", + "ui5-middleware-serveframework": "^3.8.0", + "ui5-tooling-transpile": "^3.11.0" + } +} diff --git a/packages/quickstart/steps/01/tsconfig.json b/packages/quickstart/steps/01/tsconfig.json new file mode 100644 index 000000000..7bfb38f1f --- /dev/null +++ b/packages/quickstart/steps/01/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es2023", + "module": "es2022", + "moduleResolution": "node", + "skipLibCheck": true, + "allowJs": true, + "strict": true, + "strictPropertyInitialization": false, + "rootDir": "webapp", + "baseUrl": "./", + "paths": { + "ui5/quickstart/*": [ + "webapp/*" + ] + } + }, + "include": [ + "webapp/**/*" + ] +} diff --git a/packages/quickstart/steps/01/ui5.yaml b/packages/quickstart/steps/01/ui5.yaml new file mode 100644 index 000000000..8c94b8480 --- /dev/null +++ b/packages/quickstart/steps/01/ui5.yaml @@ -0,0 +1,25 @@ +specVersion: "4.0" +metadata: + name: quickstart-tutorial +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.tnt + - name: sap.ui.layout + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/packages/quickstart/steps/01/webapp/index.html b/packages/quickstart/steps/01/webapp/index.html new file mode 100644 index 000000000..b5e19abc9 --- /dev/null +++ b/packages/quickstart/steps/01/webapp/index.html @@ -0,0 +1,18 @@ + + + + + Quickstart Tutorial + + + + \ No newline at end of file diff --git a/packages/quickstart/steps/01/webapp/index.ts b/packages/quickstart/steps/01/webapp/index.ts new file mode 100644 index 000000000..957dd02d6 --- /dev/null +++ b/packages/quickstart/steps/01/webapp/index.ts @@ -0,0 +1,9 @@ +import Button from "sap/m/Button"; +import MessageToast from "sap/m/MessageToast"; + +new Button({ + text: "Ready...", + press() { + MessageToast.show("Hello World!"); + } +}).placeAt("content"); diff --git a/packages/quickstart/steps/01/webapp/manifest.json b/packages/quickstart/steps/01/webapp/manifest.json new file mode 100644 index 000000000..bc55cb8e8 --- /dev/null +++ b/packages/quickstart/steps/01/webapp/manifest.json @@ -0,0 +1,11 @@ +{ + "_version": "1.60.0", + "sap.app": { + "id": "ui5.quickstart", + "type": "application", + "title": "OpenUI5 Quickstart", + "applicationVersion": { + "version": "1.0.0" + } + } +} diff --git a/packages/quickstart/steps/02/Component.ts b/packages/quickstart/steps/02/Component.ts new file mode 100644 index 000000000..ee77bacf3 --- /dev/null +++ b/packages/quickstart/steps/02/Component.ts @@ -0,0 +1,10 @@ +import UIComponent from "sap/ui/core/UIComponent"; + +/** + * @namespace sap.m.tutorial.quickstart.02 + */ +export default class Component extends UIComponent { + static readonly metadata = { + manifest: "json" + }; +} diff --git a/packages/quickstart/steps/02/README.md b/packages/quickstart/steps/02/README.md new file mode 100644 index 000000000..17ea9e9b7 --- /dev/null +++ b/packages/quickstart/steps/02/README.md @@ -0,0 +1,128 @@ +## Step 2: Steady... + +Now we extend our minimalist HTML page to a basic app with a view and a controller. + +  + +*** + +### Preview + + +![](assets/loio240ef5357d7f4d36955092cdaf1884a2_LowRes.png "The browser shows a Steady button in an app") + +*The browser shows a Steady button in an app* + +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 2](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart/build/02/index.html). + +*** + +### Coding + +
    + +You can download the solution for this step here: [šŸ“„ Download step 2](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart-step-02.zip). + +
    + +
    + +You can download the solution for this step here: [šŸ“„ Download step 2](https://sap-samples.github.io/ui5-typescript-walkthrough/quickstart-step-02-js.zip). + +
    +*** + + +### webapp/index.?s + +Now we replace most of the code in this file: We remove the inline button from the previous step, and introduce a proper XML view to separate the presentation from the controller logic. We prefix the view name `ui5.quickstart.App` with our newly defined namespace. The view is loaded asynchronously. + +Similar to the step before, the view is placed in the element with the `content` ID after it has finished loading. + +```ts +import XMLView from "sap/ui/core/mvc/XMLView"; + +XMLView.create({ + viewName: "ui5.quickstart.App" +}).then((oView) => oView.placeAt("content")); +``` +```js +sap.ui.define([ + "sap/ui/core/mvc/XMLView" +], (XMLView) => { + "use strict"; + + XMLView.create({ + viewName: "ui5.quickstart.App" + }).then((oView) => oView.placeAt("content")); +}); +``` + +### webapp/App.view.xml \(New\) + +The presentation logic is now defined declaratively in an XML view. UI controls are located in libraries that we define in the `View` tag. In our case, we use the bread-and-butter controls from `sap.m`. The new controls in the view are an `App` and a `Page`. They define a Web app with a header bar and a title. + +The button from the previous examples now also defines a `type` and a `class` attribute. This improves the layout of our button and makes it stand out more. + +We outsource the controller logic to an app controller. The `.onPress` event now references a function in the controller. + +```xml + + + +
\ No newline at end of file + diff --git a/steps/03/assets/loio30a42d381b9e4388bf7fdc0b941e5381_LowRes.png b/packages/walkthrough/steps/03/assets/loio30a42d381b9e4388bf7fdc0b941e5381_LowRes.png similarity index 100% rename from steps/03/assets/loio30a42d381b9e4388bf7fdc0b941e5381_LowRes.png rename to packages/walkthrough/steps/03/assets/loio30a42d381b9e4388bf7fdc0b941e5381_LowRes.png diff --git a/steps/03/package.json b/packages/walkthrough/steps/03/package.json similarity index 92% rename from steps/03/package.json rename to packages/walkthrough/steps/03/package.json index 12b631fe8..97dbbb183 100644 --- a/steps/03/package.json +++ b/packages/walkthrough/steps/03/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/03/tsconfig.json b/packages/walkthrough/steps/03/tsconfig.json similarity index 100% rename from steps/03/tsconfig.json rename to packages/walkthrough/steps/03/tsconfig.json diff --git a/steps/06/ui5.yaml b/packages/walkthrough/steps/03/ui5.yaml similarity index 96% rename from steps/06/ui5.yaml rename to packages/walkthrough/steps/03/ui5.yaml index 06cb1107d..dfa185033 100644 --- a/steps/06/ui5.yaml +++ b/packages/walkthrough/steps/03/ui5.yaml @@ -4,7 +4,7 @@ metadata: type: application framework: name: OpenUI5 - version: "1.136.7" + version: "1.145.1" libraries: - name: sap.m - name: sap.ui.core diff --git a/steps/03/webapp/index-cdn.html b/packages/walkthrough/steps/03/webapp/index-cdn.html similarity index 100% rename from steps/03/webapp/index-cdn.html rename to packages/walkthrough/steps/03/webapp/index-cdn.html diff --git a/steps/03/webapp/index.html b/packages/walkthrough/steps/03/webapp/index.html similarity index 100% rename from steps/03/webapp/index.html rename to packages/walkthrough/steps/03/webapp/index.html diff --git a/steps/03/webapp/index.ts b/packages/walkthrough/steps/03/webapp/index.ts similarity index 100% rename from steps/03/webapp/index.ts rename to packages/walkthrough/steps/03/webapp/index.ts diff --git a/steps/03/webapp/manifest.json b/packages/walkthrough/steps/03/webapp/manifest.json similarity index 100% rename from steps/03/webapp/manifest.json rename to packages/walkthrough/steps/03/webapp/manifest.json diff --git a/steps/04/README.md b/packages/walkthrough/steps/04/README.md similarity index 97% rename from steps/04/README.md rename to packages/walkthrough/steps/04/README.md index 2bf873f63..6596ee055 100644 --- a/steps/04/README.md +++ b/packages/walkthrough/steps/04/README.md @@ -14,7 +14,7 @@ When working with OpenUI5, we recommend the use of XML views, as this produces t *The "Hello World" text is now displayed by an OpenUI5 control \(No visual changes to last step\)* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 4](https://sap-samples.github.io/ui5-typescript-walkthrough/build/04/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 4](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/04/index-cdn.html). *** @@ -22,13 +22,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 4](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-04.zip). +You can download the solution for this step here: [šŸ“„ Download step 4](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-04.zip).
-You can download the solution for this step here: [šŸ“„ Download step 4](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-04-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 4](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-04-js.zip).
*** diff --git a/steps/04/assets/loio05f6775a39d3409ea673f4acc3812142_LowRes.png b/packages/walkthrough/steps/04/assets/loio05f6775a39d3409ea673f4acc3812142_LowRes.png similarity index 100% rename from steps/04/assets/loio05f6775a39d3409ea673f4acc3812142_LowRes.png rename to packages/walkthrough/steps/04/assets/loio05f6775a39d3409ea673f4acc3812142_LowRes.png diff --git a/steps/04/package.json b/packages/walkthrough/steps/04/package.json similarity index 92% rename from steps/04/package.json rename to packages/walkthrough/steps/04/package.json index 0250f7ef2..749cf9a99 100644 --- a/steps/04/package.json +++ b/packages/walkthrough/steps/04/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/04/tsconfig.json b/packages/walkthrough/steps/04/tsconfig.json similarity index 100% rename from steps/04/tsconfig.json rename to packages/walkthrough/steps/04/tsconfig.json diff --git a/steps/03/ui5.yaml b/packages/walkthrough/steps/04/ui5.yaml similarity index 96% rename from steps/03/ui5.yaml rename to packages/walkthrough/steps/04/ui5.yaml index 06cb1107d..dfa185033 100644 --- a/steps/03/ui5.yaml +++ b/packages/walkthrough/steps/04/ui5.yaml @@ -4,7 +4,7 @@ metadata: type: application framework: name: OpenUI5 - version: "1.136.7" + version: "1.145.1" libraries: - name: sap.m - name: sap.ui.core diff --git a/steps/04/webapp/index-cdn.html b/packages/walkthrough/steps/04/webapp/index-cdn.html similarity index 100% rename from steps/04/webapp/index-cdn.html rename to packages/walkthrough/steps/04/webapp/index-cdn.html diff --git a/steps/04/webapp/index.html b/packages/walkthrough/steps/04/webapp/index.html similarity index 100% rename from steps/04/webapp/index.html rename to packages/walkthrough/steps/04/webapp/index.html diff --git a/steps/04/webapp/index.ts b/packages/walkthrough/steps/04/webapp/index.ts similarity index 100% rename from steps/04/webapp/index.ts rename to packages/walkthrough/steps/04/webapp/index.ts diff --git a/steps/04/webapp/manifest.json b/packages/walkthrough/steps/04/webapp/manifest.json similarity index 100% rename from steps/04/webapp/manifest.json rename to packages/walkthrough/steps/04/webapp/manifest.json diff --git a/steps/04/webapp/view/App.view.xml b/packages/walkthrough/steps/04/webapp/view/App.view.xml similarity index 100% rename from steps/04/webapp/view/App.view.xml rename to packages/walkthrough/steps/04/webapp/view/App.view.xml diff --git a/steps/05/README.md b/packages/walkthrough/steps/05/README.md similarity index 97% rename from steps/05/README.md rename to packages/walkthrough/steps/05/README.md index 8f2e1503d..d005c4419 100644 --- a/steps/05/README.md +++ b/packages/walkthrough/steps/05/README.md @@ -13,7 +13,7 @@ In this step, we replace the text with a button and show the ā€œHello Worldā€ m *A Say Hello button is added* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 5](https://sap-samples.github.io/ui5-typescript-walkthrough/build/05/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 5](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/05/index-cdn.html). *** @@ -21,13 +21,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 5](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-05.zip). +You can download the solution for this step here: [šŸ“„ Download step 5](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-05.zip).
-You can download the solution for this step here: [šŸ“„ download step 5](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-05-js.zip). +You can download the solution for this step here: [šŸ“„ download step 5](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-05-js.zip).
*** diff --git a/steps/05/assets/loiocedfdf89b30643ddbfcab1fe50bfa892_LowRes.png b/packages/walkthrough/steps/05/assets/loiocedfdf89b30643ddbfcab1fe50bfa892_LowRes.png similarity index 100% rename from steps/05/assets/loiocedfdf89b30643ddbfcab1fe50bfa892_LowRes.png rename to packages/walkthrough/steps/05/assets/loiocedfdf89b30643ddbfcab1fe50bfa892_LowRes.png diff --git a/steps/05/package.json b/packages/walkthrough/steps/05/package.json similarity index 92% rename from steps/05/package.json rename to packages/walkthrough/steps/05/package.json index 834eebf69..dadef0cc3 100644 --- a/steps/05/package.json +++ b/packages/walkthrough/steps/05/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/05/tsconfig.json b/packages/walkthrough/steps/05/tsconfig.json similarity index 100% rename from steps/05/tsconfig.json rename to packages/walkthrough/steps/05/tsconfig.json diff --git a/steps/04/ui5.yaml b/packages/walkthrough/steps/05/ui5.yaml similarity index 96% rename from steps/04/ui5.yaml rename to packages/walkthrough/steps/05/ui5.yaml index 06cb1107d..dfa185033 100644 --- a/steps/04/ui5.yaml +++ b/packages/walkthrough/steps/05/ui5.yaml @@ -4,7 +4,7 @@ metadata: type: application framework: name: OpenUI5 - version: "1.136.7" + version: "1.145.1" libraries: - name: sap.m - name: sap.ui.core diff --git a/steps/05/webapp/controller/App.controller.ts b/packages/walkthrough/steps/05/webapp/controller/App.controller.ts similarity index 100% rename from steps/05/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/05/webapp/controller/App.controller.ts diff --git a/steps/05/webapp/index-cdn.html b/packages/walkthrough/steps/05/webapp/index-cdn.html similarity index 100% rename from steps/05/webapp/index-cdn.html rename to packages/walkthrough/steps/05/webapp/index-cdn.html diff --git a/steps/05/webapp/index.html b/packages/walkthrough/steps/05/webapp/index.html similarity index 100% rename from steps/05/webapp/index.html rename to packages/walkthrough/steps/05/webapp/index.html diff --git a/steps/05/webapp/index.ts b/packages/walkthrough/steps/05/webapp/index.ts similarity index 100% rename from steps/05/webapp/index.ts rename to packages/walkthrough/steps/05/webapp/index.ts diff --git a/steps/05/webapp/manifest.json b/packages/walkthrough/steps/05/webapp/manifest.json similarity index 100% rename from steps/05/webapp/manifest.json rename to packages/walkthrough/steps/05/webapp/manifest.json diff --git a/steps/05/webapp/view/App.view.xml b/packages/walkthrough/steps/05/webapp/view/App.view.xml similarity index 100% rename from steps/05/webapp/view/App.view.xml rename to packages/walkthrough/steps/05/webapp/view/App.view.xml diff --git a/steps/06/README.md b/packages/walkthrough/steps/06/README.md similarity index 94% rename from steps/06/README.md rename to packages/walkthrough/steps/06/README.md index 1ba8344d5..caa0e6c0d 100644 --- a/steps/06/README.md +++ b/packages/walkthrough/steps/06/README.md @@ -12,7 +12,7 @@ In OpenUI5, resources are often referred to as modules. In this step, we replace *A message toast displays the "Hello World" message* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 6](https://sap-samples.github.io/ui5-typescript-walkthrough/build/06/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 6](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/06/index-cdn.html). *** @@ -20,13 +20,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 6](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-06.zip). +You can download the solution for this step here: [šŸ“„ Download step 6](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-06.zip).
-You can download the solution for this step here: [šŸ“„ Download step 6](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-06-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 6](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-06-js.zip).
*** diff --git a/steps/06/assets/loio2f629a95211f49afa367b60d233fb390_LowRes.png b/packages/walkthrough/steps/06/assets/loio2f629a95211f49afa367b60d233fb390_LowRes.png similarity index 100% rename from steps/06/assets/loio2f629a95211f49afa367b60d233fb390_LowRes.png rename to packages/walkthrough/steps/06/assets/loio2f629a95211f49afa367b60d233fb390_LowRes.png diff --git a/steps/06/package.json b/packages/walkthrough/steps/06/package.json similarity index 92% rename from steps/06/package.json rename to packages/walkthrough/steps/06/package.json index c790d0119..87a231472 100644 --- a/steps/06/package.json +++ b/packages/walkthrough/steps/06/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/06/tsconfig.json b/packages/walkthrough/steps/06/tsconfig.json similarity index 100% rename from steps/06/tsconfig.json rename to packages/walkthrough/steps/06/tsconfig.json diff --git a/steps/05/ui5.yaml b/packages/walkthrough/steps/06/ui5.yaml similarity index 96% rename from steps/05/ui5.yaml rename to packages/walkthrough/steps/06/ui5.yaml index 06cb1107d..dfa185033 100644 --- a/steps/05/ui5.yaml +++ b/packages/walkthrough/steps/06/ui5.yaml @@ -4,7 +4,7 @@ metadata: type: application framework: name: OpenUI5 - version: "1.136.7" + version: "1.145.1" libraries: - name: sap.m - name: sap.ui.core diff --git a/steps/06/webapp/controller/App.controller.ts b/packages/walkthrough/steps/06/webapp/controller/App.controller.ts similarity index 100% rename from steps/06/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/06/webapp/controller/App.controller.ts diff --git a/steps/06/webapp/index-cdn.html b/packages/walkthrough/steps/06/webapp/index-cdn.html similarity index 100% rename from steps/06/webapp/index-cdn.html rename to packages/walkthrough/steps/06/webapp/index-cdn.html diff --git a/steps/06/webapp/index.html b/packages/walkthrough/steps/06/webapp/index.html similarity index 100% rename from steps/06/webapp/index.html rename to packages/walkthrough/steps/06/webapp/index.html diff --git a/steps/06/webapp/index.ts b/packages/walkthrough/steps/06/webapp/index.ts similarity index 100% rename from steps/06/webapp/index.ts rename to packages/walkthrough/steps/06/webapp/index.ts diff --git a/steps/06/webapp/manifest.json b/packages/walkthrough/steps/06/webapp/manifest.json similarity index 100% rename from steps/06/webapp/manifest.json rename to packages/walkthrough/steps/06/webapp/manifest.json diff --git a/steps/06/webapp/view/App.view.xml b/packages/walkthrough/steps/06/webapp/view/App.view.xml similarity index 100% rename from steps/06/webapp/view/App.view.xml rename to packages/walkthrough/steps/06/webapp/view/App.view.xml diff --git a/steps/07/README.md b/packages/walkthrough/steps/07/README.md similarity index 98% rename from steps/07/README.md rename to packages/walkthrough/steps/07/README.md index d832f4791..3ca34d574 100644 --- a/steps/07/README.md +++ b/packages/walkthrough/steps/07/README.md @@ -14,7 +14,7 @@ We'll create a view model in our controller, add an input field to our app, bind *An input field and a description displaying the value of the input field* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 7](https://sap-samples.github.io/ui5-typescript-walkthrough/build/07/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 7](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/07/index-cdn.html). *** @@ -22,13 +22,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 7](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-07.zip). +You can download the solution for this step here: [šŸ“„ Download step 7](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-07.zip).
-You can download the solution for this step here: [šŸ“„ Download step 7](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-07-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 7](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-07-js.zip).
*** diff --git a/steps/07/assets/loioafc105517a644407bd90662e3d94ea01_LowRes.png b/packages/walkthrough/steps/07/assets/loioafc105517a644407bd90662e3d94ea01_LowRes.png similarity index 100% rename from steps/07/assets/loioafc105517a644407bd90662e3d94ea01_LowRes.png rename to packages/walkthrough/steps/07/assets/loioafc105517a644407bd90662e3d94ea01_LowRes.png diff --git a/steps/07/package.json b/packages/walkthrough/steps/07/package.json similarity index 92% rename from steps/07/package.json rename to packages/walkthrough/steps/07/package.json index 6efba05ec..32022e6cb 100644 --- a/steps/07/package.json +++ b/packages/walkthrough/steps/07/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/07/tsconfig.json b/packages/walkthrough/steps/07/tsconfig.json similarity index 100% rename from steps/07/tsconfig.json rename to packages/walkthrough/steps/07/tsconfig.json diff --git a/packages/walkthrough/steps/07/ui5.yaml b/packages/walkthrough/steps/07/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/07/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/07/webapp/controller/App.controller.ts b/packages/walkthrough/steps/07/webapp/controller/App.controller.ts similarity index 100% rename from steps/07/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/07/webapp/controller/App.controller.ts diff --git a/steps/07/webapp/index-cdn.html b/packages/walkthrough/steps/07/webapp/index-cdn.html similarity index 100% rename from steps/07/webapp/index-cdn.html rename to packages/walkthrough/steps/07/webapp/index-cdn.html diff --git a/steps/07/webapp/index.html b/packages/walkthrough/steps/07/webapp/index.html similarity index 100% rename from steps/07/webapp/index.html rename to packages/walkthrough/steps/07/webapp/index.html diff --git a/steps/07/webapp/index.ts b/packages/walkthrough/steps/07/webapp/index.ts similarity index 100% rename from steps/07/webapp/index.ts rename to packages/walkthrough/steps/07/webapp/index.ts diff --git a/steps/07/webapp/manifest.json b/packages/walkthrough/steps/07/webapp/manifest.json similarity index 100% rename from steps/07/webapp/manifest.json rename to packages/walkthrough/steps/07/webapp/manifest.json diff --git a/steps/07/webapp/view/App.view.xml b/packages/walkthrough/steps/07/webapp/view/App.view.xml similarity index 100% rename from steps/07/webapp/view/App.view.xml rename to packages/walkthrough/steps/07/webapp/view/App.view.xml diff --git a/steps/08/README.md b/packages/walkthrough/steps/08/README.md similarity index 98% rename from steps/08/README.md rename to packages/walkthrough/steps/08/README.md index 99f080d86..c6267b2a1 100644 --- a/steps/08/README.md +++ b/packages/walkthrough/steps/08/README.md @@ -14,20 +14,20 @@ This way, they are all in a central place and can be easily translated into othe *An input field and a description displaying the value of the input field \(No visual changes to last step\)* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 8](https://sap-samples.github.io/ui5-typescript-walkthrough/build/08/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 8](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/08/index-cdn.html). *** ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 8](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-08.zip). +You can download the solution for this step here: [šŸ“„ Download step 8](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-08.zip).
-You can download the solution for this step here: [šŸ“„ Download step 8](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-08-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 8](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-08-js.zip).
*** diff --git a/steps/08/assets/loio0eb579e2f2a64c5a9894086322c7faa0_LowRes.png b/packages/walkthrough/steps/08/assets/loio0eb579e2f2a64c5a9894086322c7faa0_LowRes.png similarity index 100% rename from steps/08/assets/loio0eb579e2f2a64c5a9894086322c7faa0_LowRes.png rename to packages/walkthrough/steps/08/assets/loio0eb579e2f2a64c5a9894086322c7faa0_LowRes.png diff --git a/steps/08/package.json b/packages/walkthrough/steps/08/package.json similarity index 93% rename from steps/08/package.json rename to packages/walkthrough/steps/08/package.json index c2f9b30b4..032757d36 100644 --- a/steps/08/package.json +++ b/packages/walkthrough/steps/08/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/08/tsconfig.json b/packages/walkthrough/steps/08/tsconfig.json similarity index 100% rename from steps/08/tsconfig.json rename to packages/walkthrough/steps/08/tsconfig.json diff --git a/packages/walkthrough/steps/08/ui5.yaml b/packages/walkthrough/steps/08/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/08/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/08/webapp/controller/App.controller.ts b/packages/walkthrough/steps/08/webapp/controller/App.controller.ts similarity index 100% rename from steps/08/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/08/webapp/controller/App.controller.ts diff --git a/steps/08/webapp/i18n/i18n.properties b/packages/walkthrough/steps/08/webapp/i18n/i18n.properties similarity index 100% rename from steps/08/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/08/webapp/i18n/i18n.properties diff --git a/steps/08/webapp/index-cdn.html b/packages/walkthrough/steps/08/webapp/index-cdn.html similarity index 100% rename from steps/08/webapp/index-cdn.html rename to packages/walkthrough/steps/08/webapp/index-cdn.html diff --git a/steps/08/webapp/index.html b/packages/walkthrough/steps/08/webapp/index.html similarity index 100% rename from steps/08/webapp/index.html rename to packages/walkthrough/steps/08/webapp/index.html diff --git a/steps/08/webapp/index.ts b/packages/walkthrough/steps/08/webapp/index.ts similarity index 100% rename from steps/08/webapp/index.ts rename to packages/walkthrough/steps/08/webapp/index.ts diff --git a/steps/08/webapp/manifest.json b/packages/walkthrough/steps/08/webapp/manifest.json similarity index 100% rename from steps/08/webapp/manifest.json rename to packages/walkthrough/steps/08/webapp/manifest.json diff --git a/steps/08/webapp/view/App.view.xml b/packages/walkthrough/steps/08/webapp/view/App.view.xml similarity index 100% rename from steps/08/webapp/view/App.view.xml rename to packages/walkthrough/steps/08/webapp/view/App.view.xml diff --git a/steps/09/README.md b/packages/walkthrough/steps/09/README.md similarity index 98% rename from steps/09/README.md rename to packages/walkthrough/steps/09/README.md index c84c0ec85..e428611bf 100644 --- a/steps/09/README.md +++ b/packages/walkthrough/steps/09/README.md @@ -17,7 +17,7 @@ By encapsulating our application as a component, we can seamlessly integrate it *An input field and a description displaying the value of the input field \(No visual changes to last step\)* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 9](https://sap-samples.github.io/ui5-typescript-walkthrough/build/09/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 9](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/09/index-cdn.html). After this step your project structure will look like the figure below. We will create the `Component.?s` file now and modify the related files in the app. @@ -30,13 +30,13 @@ After this step your project structure will look like the figure below. We will
-You can download the solution for this step here: [šŸ“„ Download step 9](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-09.zip). +You can download the solution for this step here: [šŸ“„ Download step 9](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-09.zip).
-You can download the solution for this step here: [šŸ“„ Download step 9](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-09-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 9](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-09-js.zip).
*** diff --git a/steps/09/assets/loio1e237a36972a44ac8522dd1a540ac062_LowRes.png b/packages/walkthrough/steps/09/assets/loio1e237a36972a44ac8522dd1a540ac062_LowRes.png similarity index 100% rename from steps/09/assets/loio1e237a36972a44ac8522dd1a540ac062_LowRes.png rename to packages/walkthrough/steps/09/assets/loio1e237a36972a44ac8522dd1a540ac062_LowRes.png diff --git a/steps/09/assets/loiocac9bcfa902c44c496d115acd7ee7376_LowRes.png b/packages/walkthrough/steps/09/assets/loiocac9bcfa902c44c496d115acd7ee7376_LowRes.png similarity index 100% rename from steps/09/assets/loiocac9bcfa902c44c496d115acd7ee7376_LowRes.png rename to packages/walkthrough/steps/09/assets/loiocac9bcfa902c44c496d115acd7ee7376_LowRes.png diff --git a/steps/09/package.json b/packages/walkthrough/steps/09/package.json similarity index 93% rename from steps/09/package.json rename to packages/walkthrough/steps/09/package.json index 3009d2ba7..64d7e617b 100644 --- a/steps/09/package.json +++ b/packages/walkthrough/steps/09/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/09/tsconfig.json b/packages/walkthrough/steps/09/tsconfig.json similarity index 100% rename from steps/09/tsconfig.json rename to packages/walkthrough/steps/09/tsconfig.json diff --git a/packages/walkthrough/steps/09/ui5.yaml b/packages/walkthrough/steps/09/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/09/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/09/webapp/Component.ts b/packages/walkthrough/steps/09/webapp/Component.ts similarity index 100% rename from steps/09/webapp/Component.ts rename to packages/walkthrough/steps/09/webapp/Component.ts diff --git a/steps/09/webapp/controller/App.controller.ts b/packages/walkthrough/steps/09/webapp/controller/App.controller.ts similarity index 100% rename from steps/09/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/09/webapp/controller/App.controller.ts diff --git a/steps/09/webapp/i18n/i18n.properties b/packages/walkthrough/steps/09/webapp/i18n/i18n.properties similarity index 100% rename from steps/09/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/09/webapp/i18n/i18n.properties diff --git a/steps/09/webapp/index-cdn.html b/packages/walkthrough/steps/09/webapp/index-cdn.html similarity index 100% rename from steps/09/webapp/index-cdn.html rename to packages/walkthrough/steps/09/webapp/index-cdn.html diff --git a/steps/09/webapp/index.html b/packages/walkthrough/steps/09/webapp/index.html similarity index 100% rename from steps/09/webapp/index.html rename to packages/walkthrough/steps/09/webapp/index.html diff --git a/steps/09/webapp/index.ts b/packages/walkthrough/steps/09/webapp/index.ts similarity index 100% rename from steps/09/webapp/index.ts rename to packages/walkthrough/steps/09/webapp/index.ts diff --git a/steps/09/webapp/manifest.json b/packages/walkthrough/steps/09/webapp/manifest.json similarity index 100% rename from steps/09/webapp/manifest.json rename to packages/walkthrough/steps/09/webapp/manifest.json diff --git a/steps/09/webapp/view/App.view.xml b/packages/walkthrough/steps/09/webapp/view/App.view.xml similarity index 100% rename from steps/09/webapp/view/App.view.xml rename to packages/walkthrough/steps/09/webapp/view/App.view.xml diff --git a/steps/10/README.md b/packages/walkthrough/steps/10/README.md similarity index 99% rename from steps/10/README.md rename to packages/walkthrough/steps/10/README.md index 6564733a1..761d8b1ff 100644 --- a/steps/10/README.md +++ b/packages/walkthrough/steps/10/README.md @@ -13,7 +13,7 @@ Instead of relying on a local HTML file for the bootstrap, the manifest is parse *An input field and a description displaying the value of the input field \(No visual changes to last step\)* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 10](https://sap-samples.github.io/ui5-typescript-walkthrough/build/10/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 10](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/10/index-cdn.html). *** @@ -21,13 +21,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 10](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-10.zip). +You can download the solution for this step here: [šŸ“„ Download step 10](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-10.zip).
-You can download the solution for this step here: [šŸ“„ Download step 10](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-10-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 10](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-10-js.zip).
*** diff --git a/steps/10/assets/loio7b2aef85c016485da4a31c087bf4c0f0_LowRes.png b/packages/walkthrough/steps/10/assets/loio7b2aef85c016485da4a31c087bf4c0f0_LowRes.png similarity index 100% rename from steps/10/assets/loio7b2aef85c016485da4a31c087bf4c0f0_LowRes.png rename to packages/walkthrough/steps/10/assets/loio7b2aef85c016485da4a31c087bf4c0f0_LowRes.png diff --git a/steps/10/package.json b/packages/walkthrough/steps/10/package.json similarity index 93% rename from steps/10/package.json rename to packages/walkthrough/steps/10/package.json index 87c3338c5..d48fcf5ef 100644 --- a/steps/10/package.json +++ b/packages/walkthrough/steps/10/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/10/tsconfig.json b/packages/walkthrough/steps/10/tsconfig.json similarity index 100% rename from steps/10/tsconfig.json rename to packages/walkthrough/steps/10/tsconfig.json diff --git a/packages/walkthrough/steps/10/ui5.yaml b/packages/walkthrough/steps/10/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/10/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/10/webapp/Component.ts b/packages/walkthrough/steps/10/webapp/Component.ts similarity index 100% rename from steps/10/webapp/Component.ts rename to packages/walkthrough/steps/10/webapp/Component.ts diff --git a/steps/10/webapp/controller/App.controller.ts b/packages/walkthrough/steps/10/webapp/controller/App.controller.ts similarity index 100% rename from steps/10/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/10/webapp/controller/App.controller.ts diff --git a/steps/10/webapp/i18n/i18n.properties b/packages/walkthrough/steps/10/webapp/i18n/i18n.properties similarity index 100% rename from steps/10/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/10/webapp/i18n/i18n.properties diff --git a/steps/10/webapp/index-cdn.html b/packages/walkthrough/steps/10/webapp/index-cdn.html similarity index 100% rename from steps/10/webapp/index-cdn.html rename to packages/walkthrough/steps/10/webapp/index-cdn.html diff --git a/steps/10/webapp/index.html b/packages/walkthrough/steps/10/webapp/index.html similarity index 100% rename from steps/10/webapp/index.html rename to packages/walkthrough/steps/10/webapp/index.html diff --git a/steps/10/webapp/manifest.json b/packages/walkthrough/steps/10/webapp/manifest.json similarity index 100% rename from steps/10/webapp/manifest.json rename to packages/walkthrough/steps/10/webapp/manifest.json diff --git a/steps/10/webapp/view/App.view.xml b/packages/walkthrough/steps/10/webapp/view/App.view.xml similarity index 100% rename from steps/10/webapp/view/App.view.xml rename to packages/walkthrough/steps/10/webapp/view/App.view.xml diff --git a/steps/11/README.md b/packages/walkthrough/steps/11/README.md similarity index 97% rename from steps/11/README.md rename to packages/walkthrough/steps/11/README.md index bbcb57c5a..859d5ffd6 100644 --- a/steps/11/README.md +++ b/packages/walkthrough/steps/11/README.md @@ -12,7 +12,7 @@ After all the work on the app structure it’s time to improve the look of our a *A panel is now displaying the controls from the previous steps* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 11](https://sap-samples.github.io/ui5-typescript-walkthrough/build/11/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 11](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/11/index-cdn.html). *** @@ -21,13 +21,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 11](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-11.zip). +You can download the solution for this step here: [šŸ“„ Download step 11](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-11.zip).
-You can download the solution for this step here: [šŸ“„ Download step 11](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-11-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 11](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-11-js.zip).
*** diff --git a/steps/11/assets/loio97feb5417c89462ead5b4259f3ecfd47_LowRes.png b/packages/walkthrough/steps/11/assets/loio97feb5417c89462ead5b4259f3ecfd47_LowRes.png similarity index 100% rename from steps/11/assets/loio97feb5417c89462ead5b4259f3ecfd47_LowRes.png rename to packages/walkthrough/steps/11/assets/loio97feb5417c89462ead5b4259f3ecfd47_LowRes.png diff --git a/steps/11/package.json b/packages/walkthrough/steps/11/package.json similarity index 93% rename from steps/11/package.json rename to packages/walkthrough/steps/11/package.json index 02c7a9ee3..bae982477 100644 --- a/steps/11/package.json +++ b/packages/walkthrough/steps/11/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/11/tsconfig.json b/packages/walkthrough/steps/11/tsconfig.json similarity index 100% rename from steps/11/tsconfig.json rename to packages/walkthrough/steps/11/tsconfig.json diff --git a/packages/walkthrough/steps/11/ui5.yaml b/packages/walkthrough/steps/11/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/11/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/11/webapp/Component.ts b/packages/walkthrough/steps/11/webapp/Component.ts similarity index 100% rename from steps/11/webapp/Component.ts rename to packages/walkthrough/steps/11/webapp/Component.ts diff --git a/steps/11/webapp/controller/App.controller.ts b/packages/walkthrough/steps/11/webapp/controller/App.controller.ts similarity index 100% rename from steps/11/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/11/webapp/controller/App.controller.ts diff --git a/steps/11/webapp/i18n/i18n.properties b/packages/walkthrough/steps/11/webapp/i18n/i18n.properties similarity index 100% rename from steps/11/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/11/webapp/i18n/i18n.properties diff --git a/steps/11/webapp/index-cdn.html b/packages/walkthrough/steps/11/webapp/index-cdn.html similarity index 100% rename from steps/11/webapp/index-cdn.html rename to packages/walkthrough/steps/11/webapp/index-cdn.html diff --git a/steps/11/webapp/index.html b/packages/walkthrough/steps/11/webapp/index.html similarity index 100% rename from steps/11/webapp/index.html rename to packages/walkthrough/steps/11/webapp/index.html diff --git a/steps/11/webapp/manifest.json b/packages/walkthrough/steps/11/webapp/manifest.json similarity index 100% rename from steps/11/webapp/manifest.json rename to packages/walkthrough/steps/11/webapp/manifest.json diff --git a/steps/11/webapp/view/App.view.xml b/packages/walkthrough/steps/11/webapp/view/App.view.xml similarity index 100% rename from steps/11/webapp/view/App.view.xml rename to packages/walkthrough/steps/11/webapp/view/App.view.xml diff --git a/steps/12/README.md b/packages/walkthrough/steps/12/README.md similarity index 95% rename from steps/12/README.md rename to packages/walkthrough/steps/12/README.md index a99ab2afe..2078ff79f 100644 --- a/steps/12/README.md +++ b/packages/walkthrough/steps/12/README.md @@ -12,7 +12,7 @@ Now we use a shell control as container for our app and use it as our new root e *The app is now run in a shell that limits the app width* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 12](https://sap-samples.github.io/ui5-typescript-walkthrough/build/12/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 12](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/12/index-cdn.html). *** @@ -20,13 +20,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 12](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-12.zip). +You can download the solution for this step here: [šŸ“„ Download step 12](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-12.zip).
-You can download the solution for this step here: [šŸ“„ Download step 12](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-12-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 12](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-12-js.zip).
*** diff --git a/steps/12/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png b/packages/walkthrough/steps/12/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png similarity index 100% rename from steps/12/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png rename to packages/walkthrough/steps/12/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png diff --git a/steps/12/package.json b/packages/walkthrough/steps/12/package.json similarity index 93% rename from steps/12/package.json rename to packages/walkthrough/steps/12/package.json index a1b395135..e573f106d 100644 --- a/steps/12/package.json +++ b/packages/walkthrough/steps/12/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/12/tsconfig.json b/packages/walkthrough/steps/12/tsconfig.json similarity index 100% rename from steps/12/tsconfig.json rename to packages/walkthrough/steps/12/tsconfig.json diff --git a/packages/walkthrough/steps/12/ui5.yaml b/packages/walkthrough/steps/12/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/12/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/12/webapp/Component.ts b/packages/walkthrough/steps/12/webapp/Component.ts similarity index 100% rename from steps/12/webapp/Component.ts rename to packages/walkthrough/steps/12/webapp/Component.ts diff --git a/steps/12/webapp/controller/App.controller.ts b/packages/walkthrough/steps/12/webapp/controller/App.controller.ts similarity index 100% rename from steps/12/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/12/webapp/controller/App.controller.ts diff --git a/steps/12/webapp/i18n/i18n.properties b/packages/walkthrough/steps/12/webapp/i18n/i18n.properties similarity index 100% rename from steps/12/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/12/webapp/i18n/i18n.properties diff --git a/steps/12/webapp/index-cdn.html b/packages/walkthrough/steps/12/webapp/index-cdn.html similarity index 100% rename from steps/12/webapp/index-cdn.html rename to packages/walkthrough/steps/12/webapp/index-cdn.html diff --git a/steps/12/webapp/index.html b/packages/walkthrough/steps/12/webapp/index.html similarity index 100% rename from steps/12/webapp/index.html rename to packages/walkthrough/steps/12/webapp/index.html diff --git a/steps/12/webapp/manifest.json b/packages/walkthrough/steps/12/webapp/manifest.json similarity index 100% rename from steps/12/webapp/manifest.json rename to packages/walkthrough/steps/12/webapp/manifest.json diff --git a/steps/12/webapp/view/App.view.xml b/packages/walkthrough/steps/12/webapp/view/App.view.xml similarity index 100% rename from steps/12/webapp/view/App.view.xml rename to packages/walkthrough/steps/12/webapp/view/App.view.xml diff --git a/steps/13/README.md b/packages/walkthrough/steps/13/README.md similarity index 96% rename from steps/13/README.md rename to packages/walkthrough/steps/13/README.md index 2b6f126f0..62094693f 100644 --- a/steps/13/README.md +++ b/packages/walkthrough/steps/13/README.md @@ -14,7 +14,7 @@ Instead of manually adding CSS to the controls, we will use the standard classes *The layout of the panel and its content now has margins and padding* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 13](https://sap-samples.github.io/ui5-typescript-walkthrough/build/13/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 13](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/13/index-cdn.html). *** @@ -22,13 +22,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 13](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-13.zip). +You can download the solution for this step here: [šŸ“„ Download step 13](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-13.zip).
-You can download the solution for this step here: [šŸ“„ Download step 13](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-13-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 13](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-13-js.zip).
*** diff --git a/steps/13/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png b/packages/walkthrough/steps/13/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png similarity index 100% rename from steps/13/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png rename to packages/walkthrough/steps/13/assets/loio0becf3ee81f5486a864e3b39ba036402_LowRes.png diff --git a/steps/13/package.json b/packages/walkthrough/steps/13/package.json similarity index 93% rename from steps/13/package.json rename to packages/walkthrough/steps/13/package.json index ccdfaffc3..053133851 100644 --- a/steps/13/package.json +++ b/packages/walkthrough/steps/13/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/13/tsconfig.json b/packages/walkthrough/steps/13/tsconfig.json similarity index 100% rename from steps/13/tsconfig.json rename to packages/walkthrough/steps/13/tsconfig.json diff --git a/packages/walkthrough/steps/13/ui5.yaml b/packages/walkthrough/steps/13/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/13/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/13/webapp/Component.ts b/packages/walkthrough/steps/13/webapp/Component.ts similarity index 100% rename from steps/13/webapp/Component.ts rename to packages/walkthrough/steps/13/webapp/Component.ts diff --git a/steps/13/webapp/controller/App.controller.ts b/packages/walkthrough/steps/13/webapp/controller/App.controller.ts similarity index 100% rename from steps/13/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/13/webapp/controller/App.controller.ts diff --git a/steps/13/webapp/i18n/i18n.properties b/packages/walkthrough/steps/13/webapp/i18n/i18n.properties similarity index 100% rename from steps/13/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/13/webapp/i18n/i18n.properties diff --git a/steps/13/webapp/index-cdn.html b/packages/walkthrough/steps/13/webapp/index-cdn.html similarity index 100% rename from steps/13/webapp/index-cdn.html rename to packages/walkthrough/steps/13/webapp/index-cdn.html diff --git a/steps/13/webapp/index.html b/packages/walkthrough/steps/13/webapp/index.html similarity index 100% rename from steps/13/webapp/index.html rename to packages/walkthrough/steps/13/webapp/index.html diff --git a/steps/13/webapp/manifest.json b/packages/walkthrough/steps/13/webapp/manifest.json similarity index 100% rename from steps/13/webapp/manifest.json rename to packages/walkthrough/steps/13/webapp/manifest.json diff --git a/steps/13/webapp/view/App.view.xml b/packages/walkthrough/steps/13/webapp/view/App.view.xml similarity index 100% rename from steps/13/webapp/view/App.view.xml rename to packages/walkthrough/steps/13/webapp/view/App.view.xml diff --git a/steps/14/README.md b/packages/walkthrough/steps/14/README.md similarity index 98% rename from steps/14/README.md rename to packages/walkthrough/steps/14/README.md index d0a0a90a7..e7b4298d7 100644 --- a/steps/14/README.md +++ b/packages/walkthrough/steps/14/README.md @@ -15,7 +15,7 @@ Sometimes we need to define some more fine-granular layouts and this is when we *The space between the button and the input field is now smaller and the output text is bold* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 14](https://sap-samples.github.io/ui5-typescript-walkthrough/build/14/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 14](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/14/index-cdn.html). *** @@ -24,13 +24,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 14](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-14.zip). +You can download the solution for this step here: [šŸ“„ Download step 14](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-14.zip).
-You can download the solution for this step here: [šŸ“„ Download step 14](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-14-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 14](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-14-js.zip).
*** diff --git a/steps/14/assets/loiod9a40e539b7c49c485be821efbd3821f_LowRes.png b/packages/walkthrough/steps/14/assets/loiod9a40e539b7c49c485be821efbd3821f_LowRes.png similarity index 100% rename from steps/14/assets/loiod9a40e539b7c49c485be821efbd3821f_LowRes.png rename to packages/walkthrough/steps/14/assets/loiod9a40e539b7c49c485be821efbd3821f_LowRes.png diff --git a/steps/14/package.json b/packages/walkthrough/steps/14/package.json similarity index 93% rename from steps/14/package.json rename to packages/walkthrough/steps/14/package.json index 0f03dbd0d..b5b3cb06b 100644 --- a/steps/14/package.json +++ b/packages/walkthrough/steps/14/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/14/tsconfig.json b/packages/walkthrough/steps/14/tsconfig.json similarity index 100% rename from steps/14/tsconfig.json rename to packages/walkthrough/steps/14/tsconfig.json diff --git a/packages/walkthrough/steps/14/ui5.yaml b/packages/walkthrough/steps/14/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/14/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/14/webapp/Component.ts b/packages/walkthrough/steps/14/webapp/Component.ts similarity index 100% rename from steps/14/webapp/Component.ts rename to packages/walkthrough/steps/14/webapp/Component.ts diff --git a/steps/14/webapp/controller/App.controller.ts b/packages/walkthrough/steps/14/webapp/controller/App.controller.ts similarity index 100% rename from steps/14/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/14/webapp/controller/App.controller.ts diff --git a/steps/14/webapp/css/style.css b/packages/walkthrough/steps/14/webapp/css/style.css similarity index 100% rename from steps/14/webapp/css/style.css rename to packages/walkthrough/steps/14/webapp/css/style.css diff --git a/steps/14/webapp/i18n/i18n.properties b/packages/walkthrough/steps/14/webapp/i18n/i18n.properties similarity index 100% rename from steps/14/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/14/webapp/i18n/i18n.properties diff --git a/steps/14/webapp/index-cdn.html b/packages/walkthrough/steps/14/webapp/index-cdn.html similarity index 100% rename from steps/14/webapp/index-cdn.html rename to packages/walkthrough/steps/14/webapp/index-cdn.html diff --git a/steps/14/webapp/index.html b/packages/walkthrough/steps/14/webapp/index.html similarity index 100% rename from steps/14/webapp/index.html rename to packages/walkthrough/steps/14/webapp/index.html diff --git a/steps/14/webapp/manifest.json b/packages/walkthrough/steps/14/webapp/manifest.json similarity index 100% rename from steps/14/webapp/manifest.json rename to packages/walkthrough/steps/14/webapp/manifest.json diff --git a/steps/14/webapp/view/App.view.xml b/packages/walkthrough/steps/14/webapp/view/App.view.xml similarity index 100% rename from steps/14/webapp/view/App.view.xml rename to packages/walkthrough/steps/14/webapp/view/App.view.xml diff --git a/steps/15/README.md b/packages/walkthrough/steps/15/README.md similarity index 97% rename from steps/15/README.md rename to packages/walkthrough/steps/15/README.md index c187ab60c..6ba83a46b 100644 --- a/steps/15/README.md +++ b/packages/walkthrough/steps/15/README.md @@ -12,7 +12,7 @@ Our panel content is getting more and more complex and now it is time to move th *The panel content is now refactored to a separate view \(No visual changes to last step\)* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 15](https://sap-samples.github.io/ui5-typescript-walkthrough/build/15/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 15](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/15/index-cdn.html). *** @@ -21,13 +21,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 15](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-15.zip). +You can download the solution for this step here: [šŸ“„ Download step 15](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-15.zip).
-You can download the solution for this step here: [šŸ“„ Download step 15](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-15-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 15](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-15-js.zip).
*** diff --git a/steps/15/assets/loiof3724d2f97e94a78b27d8ab01ff9c37d_LowRes.png b/packages/walkthrough/steps/15/assets/loiof3724d2f97e94a78b27d8ab01ff9c37d_LowRes.png similarity index 100% rename from steps/15/assets/loiof3724d2f97e94a78b27d8ab01ff9c37d_LowRes.png rename to packages/walkthrough/steps/15/assets/loiof3724d2f97e94a78b27d8ab01ff9c37d_LowRes.png diff --git a/steps/15/package.json b/packages/walkthrough/steps/15/package.json similarity index 92% rename from steps/15/package.json rename to packages/walkthrough/steps/15/package.json index 9ad7bd43d..cc910b26d 100644 --- a/steps/15/package.json +++ b/packages/walkthrough/steps/15/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/15/tsconfig.json b/packages/walkthrough/steps/15/tsconfig.json similarity index 100% rename from steps/15/tsconfig.json rename to packages/walkthrough/steps/15/tsconfig.json diff --git a/packages/walkthrough/steps/15/ui5.yaml b/packages/walkthrough/steps/15/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/15/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/15/webapp/Component.ts b/packages/walkthrough/steps/15/webapp/Component.ts similarity index 100% rename from steps/15/webapp/Component.ts rename to packages/walkthrough/steps/15/webapp/Component.ts diff --git a/steps/15/webapp/controller/App.controller.ts b/packages/walkthrough/steps/15/webapp/controller/App.controller.ts similarity index 100% rename from steps/15/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/15/webapp/controller/App.controller.ts diff --git a/steps/15/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/15/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/15/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/15/webapp/controller/HelloPanel.controller.ts diff --git a/steps/15/webapp/css/style.css b/packages/walkthrough/steps/15/webapp/css/style.css similarity index 100% rename from steps/15/webapp/css/style.css rename to packages/walkthrough/steps/15/webapp/css/style.css diff --git a/steps/15/webapp/i18n/i18n.properties b/packages/walkthrough/steps/15/webapp/i18n/i18n.properties similarity index 100% rename from steps/15/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/15/webapp/i18n/i18n.properties diff --git a/steps/15/webapp/index-cdn.html b/packages/walkthrough/steps/15/webapp/index-cdn.html similarity index 100% rename from steps/15/webapp/index-cdn.html rename to packages/walkthrough/steps/15/webapp/index-cdn.html diff --git a/steps/15/webapp/index.html b/packages/walkthrough/steps/15/webapp/index.html similarity index 100% rename from steps/15/webapp/index.html rename to packages/walkthrough/steps/15/webapp/index.html diff --git a/steps/15/webapp/manifest.json b/packages/walkthrough/steps/15/webapp/manifest.json similarity index 100% rename from steps/15/webapp/manifest.json rename to packages/walkthrough/steps/15/webapp/manifest.json diff --git a/steps/15/webapp/view/App.view.xml b/packages/walkthrough/steps/15/webapp/view/App.view.xml similarity index 100% rename from steps/15/webapp/view/App.view.xml rename to packages/walkthrough/steps/15/webapp/view/App.view.xml diff --git a/steps/15/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/15/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/15/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/15/webapp/view/HelloPanel.view.xml diff --git a/steps/16/README.md b/packages/walkthrough/steps/16/README.md similarity index 98% rename from steps/16/README.md rename to packages/walkthrough/steps/16/README.md index 3f4a2889e..0afcfc7ed 100644 --- a/steps/16/README.md +++ b/packages/walkthrough/steps/16/README.md @@ -18,7 +18,7 @@ We will now add a dialog to our app. Dialogs are special, because they open on t *A dialog opens when the new ā€œSay Hello With Dialogā€ button is clicked* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 16](https://sap-samples.github.io/ui5-typescript-walkthrough/build/16/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 16](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/16/index-cdn.html). *** @@ -27,13 +27,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 16](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-16.zip). +You can download the solution for this step here: [šŸ“„ Download step 16](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-16.zip).
-You can download the solution for this step here: [šŸ“„ Download step 16](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-16-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 16](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-16-js.zip).
*** diff --git a/steps/16/assets/loio0916080895e144ed8b31963bfb18e17f_LowRes.png b/packages/walkthrough/steps/16/assets/loio0916080895e144ed8b31963bfb18e17f_LowRes.png similarity index 100% rename from steps/16/assets/loio0916080895e144ed8b31963bfb18e17f_LowRes.png rename to packages/walkthrough/steps/16/assets/loio0916080895e144ed8b31963bfb18e17f_LowRes.png diff --git a/steps/16/package.json b/packages/walkthrough/steps/16/package.json similarity index 93% rename from steps/16/package.json rename to packages/walkthrough/steps/16/package.json index 418371a94..7cf7e45df 100644 --- a/steps/16/package.json +++ b/packages/walkthrough/steps/16/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/16/tsconfig.json b/packages/walkthrough/steps/16/tsconfig.json similarity index 100% rename from steps/16/tsconfig.json rename to packages/walkthrough/steps/16/tsconfig.json diff --git a/packages/walkthrough/steps/16/ui5.yaml b/packages/walkthrough/steps/16/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/16/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/16/webapp/Component.ts b/packages/walkthrough/steps/16/webapp/Component.ts similarity index 100% rename from steps/16/webapp/Component.ts rename to packages/walkthrough/steps/16/webapp/Component.ts diff --git a/steps/16/webapp/controller/App.controller.ts b/packages/walkthrough/steps/16/webapp/controller/App.controller.ts similarity index 100% rename from steps/16/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/16/webapp/controller/App.controller.ts diff --git a/steps/16/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/16/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/16/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/16/webapp/controller/HelloPanel.controller.ts diff --git a/steps/16/webapp/css/style.css b/packages/walkthrough/steps/16/webapp/css/style.css similarity index 100% rename from steps/16/webapp/css/style.css rename to packages/walkthrough/steps/16/webapp/css/style.css diff --git a/steps/16/webapp/i18n/i18n.properties b/packages/walkthrough/steps/16/webapp/i18n/i18n.properties similarity index 100% rename from steps/16/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/16/webapp/i18n/i18n.properties diff --git a/steps/16/webapp/index-cdn.html b/packages/walkthrough/steps/16/webapp/index-cdn.html similarity index 100% rename from steps/16/webapp/index-cdn.html rename to packages/walkthrough/steps/16/webapp/index-cdn.html diff --git a/steps/16/webapp/index.html b/packages/walkthrough/steps/16/webapp/index.html similarity index 100% rename from steps/16/webapp/index.html rename to packages/walkthrough/steps/16/webapp/index.html diff --git a/steps/16/webapp/manifest.json b/packages/walkthrough/steps/16/webapp/manifest.json similarity index 100% rename from steps/16/webapp/manifest.json rename to packages/walkthrough/steps/16/webapp/manifest.json diff --git a/steps/16/webapp/view/App.view.xml b/packages/walkthrough/steps/16/webapp/view/App.view.xml similarity index 100% rename from steps/16/webapp/view/App.view.xml rename to packages/walkthrough/steps/16/webapp/view/App.view.xml diff --git a/steps/16/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/16/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/16/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/16/webapp/view/HelloDialog.fragment.xml diff --git a/steps/16/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/16/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/16/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/16/webapp/view/HelloPanel.view.xml diff --git a/steps/17/README.md b/packages/walkthrough/steps/17/README.md similarity index 97% rename from steps/17/README.md rename to packages/walkthrough/steps/17/README.md index 1bffdd736..bd46634f1 100644 --- a/steps/17/README.md +++ b/packages/walkthrough/steps/17/README.md @@ -12,20 +12,20 @@ Now that we have integrated the dialog, it's time to add some user interaction. *The dialog now has an "OK" button to close the dialog* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 17](https://sap-samples.github.io/ui5-typescript-walkthrough/build/17/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 17](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/17/index-cdn.html). *** ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 17](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-17.zip). +You can download the solution for this step here: [šŸ“„ Download step 17](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-17.zip).
-You can download the solution for this step here: [šŸ“„ Download step 17](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-17-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 17](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-17-js.zip).
*** diff --git a/steps/17/assets/loioc351bbd078824c43bf1758b0c3679cbd_LowRes.png b/packages/walkthrough/steps/17/assets/loioc351bbd078824c43bf1758b0c3679cbd_LowRes.png similarity index 100% rename from steps/17/assets/loioc351bbd078824c43bf1758b0c3679cbd_LowRes.png rename to packages/walkthrough/steps/17/assets/loioc351bbd078824c43bf1758b0c3679cbd_LowRes.png diff --git a/steps/17/package.json b/packages/walkthrough/steps/17/package.json similarity index 93% rename from steps/17/package.json rename to packages/walkthrough/steps/17/package.json index 1a408a2fd..0a9b381a2 100644 --- a/steps/17/package.json +++ b/packages/walkthrough/steps/17/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/17/tsconfig.json b/packages/walkthrough/steps/17/tsconfig.json similarity index 100% rename from steps/17/tsconfig.json rename to packages/walkthrough/steps/17/tsconfig.json diff --git a/packages/walkthrough/steps/17/ui5.yaml b/packages/walkthrough/steps/17/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/17/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/17/webapp/Component.ts b/packages/walkthrough/steps/17/webapp/Component.ts similarity index 100% rename from steps/17/webapp/Component.ts rename to packages/walkthrough/steps/17/webapp/Component.ts diff --git a/steps/17/webapp/controller/App.controller.ts b/packages/walkthrough/steps/17/webapp/controller/App.controller.ts similarity index 100% rename from steps/17/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/17/webapp/controller/App.controller.ts diff --git a/steps/17/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/17/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/17/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/17/webapp/controller/HelloPanel.controller.ts diff --git a/steps/17/webapp/css/style.css b/packages/walkthrough/steps/17/webapp/css/style.css similarity index 100% rename from steps/17/webapp/css/style.css rename to packages/walkthrough/steps/17/webapp/css/style.css diff --git a/steps/17/webapp/i18n/i18n.properties b/packages/walkthrough/steps/17/webapp/i18n/i18n.properties similarity index 100% rename from steps/17/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/17/webapp/i18n/i18n.properties diff --git a/steps/17/webapp/index-cdn.html b/packages/walkthrough/steps/17/webapp/index-cdn.html similarity index 100% rename from steps/17/webapp/index-cdn.html rename to packages/walkthrough/steps/17/webapp/index-cdn.html diff --git a/steps/17/webapp/index.html b/packages/walkthrough/steps/17/webapp/index.html similarity index 100% rename from steps/17/webapp/index.html rename to packages/walkthrough/steps/17/webapp/index.html diff --git a/steps/17/webapp/manifest.json b/packages/walkthrough/steps/17/webapp/manifest.json similarity index 100% rename from steps/17/webapp/manifest.json rename to packages/walkthrough/steps/17/webapp/manifest.json diff --git a/steps/17/webapp/view/App.view.xml b/packages/walkthrough/steps/17/webapp/view/App.view.xml similarity index 100% rename from steps/17/webapp/view/App.view.xml rename to packages/walkthrough/steps/17/webapp/view/App.view.xml diff --git a/steps/17/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/17/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/17/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/17/webapp/view/HelloDialog.fragment.xml diff --git a/steps/17/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/17/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/17/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/17/webapp/view/HelloPanel.view.xml diff --git a/steps/18/README.md b/packages/walkthrough/steps/18/README.md similarity index 96% rename from steps/18/README.md rename to packages/walkthrough/steps/18/README.md index 8b280d8f9..d9ace078c 100644 --- a/steps/18/README.md +++ b/packages/walkthrough/steps/18/README.md @@ -12,20 +12,20 @@ Our dialog is still pretty much empty. Since OpenUI5 is shipped with a large ico *An icon is now displayed in the dialog box* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 18](https://sap-samples.github.io/ui5-typescript-walkthrough/build/18/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 18](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/18/index-cdn.html). *** ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 18](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-18.zip). +You can download the solution for this step here: [šŸ“„ Download step 18](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-18.zip).
-You can download the solution for this step here: [šŸ“„ Download step 18](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-18-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 18](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-18-js.zip).
*** diff --git a/steps/18/assets/loiofbc48e23cc7d45e393cc95bbbfc6e0a3_LowRes.png b/packages/walkthrough/steps/18/assets/loiofbc48e23cc7d45e393cc95bbbfc6e0a3_LowRes.png similarity index 100% rename from steps/18/assets/loiofbc48e23cc7d45e393cc95bbbfc6e0a3_LowRes.png rename to packages/walkthrough/steps/18/assets/loiofbc48e23cc7d45e393cc95bbbfc6e0a3_LowRes.png diff --git a/steps/18/package.json b/packages/walkthrough/steps/18/package.json similarity index 92% rename from steps/18/package.json rename to packages/walkthrough/steps/18/package.json index 5bae0f064..cdddf4a84 100644 --- a/steps/18/package.json +++ b/packages/walkthrough/steps/18/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/18/tsconfig.json b/packages/walkthrough/steps/18/tsconfig.json similarity index 100% rename from steps/18/tsconfig.json rename to packages/walkthrough/steps/18/tsconfig.json diff --git a/packages/walkthrough/steps/18/ui5.yaml b/packages/walkthrough/steps/18/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/18/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/18/webapp/Component.ts b/packages/walkthrough/steps/18/webapp/Component.ts similarity index 100% rename from steps/18/webapp/Component.ts rename to packages/walkthrough/steps/18/webapp/Component.ts diff --git a/steps/18/webapp/controller/App.controller.ts b/packages/walkthrough/steps/18/webapp/controller/App.controller.ts similarity index 100% rename from steps/18/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/18/webapp/controller/App.controller.ts diff --git a/steps/18/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/18/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/18/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/18/webapp/controller/HelloPanel.controller.ts diff --git a/steps/18/webapp/css/style.css b/packages/walkthrough/steps/18/webapp/css/style.css similarity index 100% rename from steps/18/webapp/css/style.css rename to packages/walkthrough/steps/18/webapp/css/style.css diff --git a/steps/18/webapp/i18n/i18n.properties b/packages/walkthrough/steps/18/webapp/i18n/i18n.properties similarity index 100% rename from steps/18/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/18/webapp/i18n/i18n.properties diff --git a/steps/18/webapp/index-cdn.html b/packages/walkthrough/steps/18/webapp/index-cdn.html similarity index 100% rename from steps/18/webapp/index-cdn.html rename to packages/walkthrough/steps/18/webapp/index-cdn.html diff --git a/steps/18/webapp/index.html b/packages/walkthrough/steps/18/webapp/index.html similarity index 100% rename from steps/18/webapp/index.html rename to packages/walkthrough/steps/18/webapp/index.html diff --git a/steps/18/webapp/manifest.json b/packages/walkthrough/steps/18/webapp/manifest.json similarity index 100% rename from steps/18/webapp/manifest.json rename to packages/walkthrough/steps/18/webapp/manifest.json diff --git a/steps/18/webapp/view/App.view.xml b/packages/walkthrough/steps/18/webapp/view/App.view.xml similarity index 100% rename from steps/18/webapp/view/App.view.xml rename to packages/walkthrough/steps/18/webapp/view/App.view.xml diff --git a/steps/18/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/18/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/18/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/18/webapp/view/HelloDialog.fragment.xml diff --git a/steps/18/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/18/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/18/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/18/webapp/view/HelloPanel.view.xml diff --git a/steps/19/README.md b/packages/walkthrough/steps/19/README.md similarity index 98% rename from steps/19/README.md rename to packages/walkthrough/steps/19/README.md index 125da14ef..dfd1a070b 100644 --- a/steps/19/README.md +++ b/packages/walkthrough/steps/19/README.md @@ -11,7 +11,7 @@ Now that we have established a good structure for our app, it's time to add some *A list of invoices is displayed below the panel* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 19](https://sap-samples.github.io/ui5-typescript-walkthrough/build/19/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 19](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/19/index-cdn.html). *** @@ -19,13 +19,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 19](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-19.zip). +You can download the solution for this step here: [šŸ“„ Download step 19](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-19.zip).
-You can download the solution for this step here: [šŸ“„ Download step 19](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-19-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 19](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-19-js.zip).
*** @@ -219,4 +219,4 @@ In the app view we add a second view and assign it to our newly created InvoiceL [API Reference: sap.m.List](https://sdk.openui5.org/#/api/sap.m.List) -[Samples: sap.m.List](https://sdk.openui5.org/#/entity/sap.m.List) \ No newline at end of file +[Samples: sap.m.List](https://sdk.openui5.org/#/entity/sap.m.List) diff --git a/steps/19/assets/loiob05bdb47393b4abda3e1b54498959c38_LowRes.png b/packages/walkthrough/steps/19/assets/loiob05bdb47393b4abda3e1b54498959c38_LowRes.png similarity index 100% rename from steps/19/assets/loiob05bdb47393b4abda3e1b54498959c38_LowRes.png rename to packages/walkthrough/steps/19/assets/loiob05bdb47393b4abda3e1b54498959c38_LowRes.png diff --git a/steps/19/package.json b/packages/walkthrough/steps/19/package.json similarity index 93% rename from steps/19/package.json rename to packages/walkthrough/steps/19/package.json index e0e8e8a14..b812dbb55 100644 --- a/steps/19/package.json +++ b/packages/walkthrough/steps/19/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/19/tsconfig.json b/packages/walkthrough/steps/19/tsconfig.json similarity index 100% rename from steps/19/tsconfig.json rename to packages/walkthrough/steps/19/tsconfig.json diff --git a/packages/walkthrough/steps/19/ui5.yaml b/packages/walkthrough/steps/19/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/19/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/19/webapp/Component.ts b/packages/walkthrough/steps/19/webapp/Component.ts similarity index 100% rename from steps/19/webapp/Component.ts rename to packages/walkthrough/steps/19/webapp/Component.ts diff --git a/steps/19/webapp/controller/App.controller.ts b/packages/walkthrough/steps/19/webapp/controller/App.controller.ts similarity index 100% rename from steps/19/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/19/webapp/controller/App.controller.ts diff --git a/steps/19/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/19/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/19/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/19/webapp/controller/HelloPanel.controller.ts diff --git a/steps/19/webapp/css/style.css b/packages/walkthrough/steps/19/webapp/css/style.css similarity index 100% rename from steps/19/webapp/css/style.css rename to packages/walkthrough/steps/19/webapp/css/style.css diff --git a/steps/19/webapp/i18n/i18n.properties b/packages/walkthrough/steps/19/webapp/i18n/i18n.properties similarity index 100% rename from steps/19/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/19/webapp/i18n/i18n.properties diff --git a/steps/19/webapp/index-cdn.html b/packages/walkthrough/steps/19/webapp/index-cdn.html similarity index 100% rename from steps/19/webapp/index-cdn.html rename to packages/walkthrough/steps/19/webapp/index-cdn.html diff --git a/steps/19/webapp/index.html b/packages/walkthrough/steps/19/webapp/index.html similarity index 100% rename from steps/19/webapp/index.html rename to packages/walkthrough/steps/19/webapp/index.html diff --git a/steps/19/webapp/manifest.json b/packages/walkthrough/steps/19/webapp/manifest.json similarity index 100% rename from steps/19/webapp/manifest.json rename to packages/walkthrough/steps/19/webapp/manifest.json diff --git a/steps/19/webapp/model/localInvoices.json b/packages/walkthrough/steps/19/webapp/model/localInvoices.json similarity index 100% rename from steps/19/webapp/model/localInvoices.json rename to packages/walkthrough/steps/19/webapp/model/localInvoices.json diff --git a/steps/19/webapp/view/App.view.xml b/packages/walkthrough/steps/19/webapp/view/App.view.xml similarity index 100% rename from steps/19/webapp/view/App.view.xml rename to packages/walkthrough/steps/19/webapp/view/App.view.xml diff --git a/steps/19/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/19/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/19/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/19/webapp/view/HelloDialog.fragment.xml diff --git a/steps/19/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/19/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/19/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/19/webapp/view/HelloPanel.view.xml diff --git a/steps/19/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/19/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/19/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/19/webapp/view/InvoiceList.view.xml diff --git a/steps/20/README.md b/packages/walkthrough/steps/20/README.md similarity index 98% rename from steps/20/README.md rename to packages/walkthrough/steps/20/README.md index 789eae0e1..0c77b6b2b 100644 --- a/steps/20/README.md +++ b/packages/walkthrough/steps/20/README.md @@ -12,20 +12,20 @@ The list of invoices is already looking nice, but what is an invoice without a p *The list of invoices with prices and number units* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 20](https://sap-samples.github.io/ui5-typescript-walkthrough/build/20/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 20](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/20/index-cdn.html). *** ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 20](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-20.zip). +You can download the solution for this step here: [šŸ“„ Download step 20](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-20.zip).
-You can download the solution for this step here: [šŸ“„ Download step 20](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-20-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 20](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-20-js.zip).
*** diff --git a/steps/20/assets/loiodc9e919119564ddab78b8d0550ecfa9b_LowRes.png b/packages/walkthrough/steps/20/assets/loiodc9e919119564ddab78b8d0550ecfa9b_LowRes.png similarity index 100% rename from steps/20/assets/loiodc9e919119564ddab78b8d0550ecfa9b_LowRes.png rename to packages/walkthrough/steps/20/assets/loiodc9e919119564ddab78b8d0550ecfa9b_LowRes.png diff --git a/steps/20/package.json b/packages/walkthrough/steps/20/package.json similarity index 92% rename from steps/20/package.json rename to packages/walkthrough/steps/20/package.json index 72ee12d57..d76439b0d 100644 --- a/steps/20/package.json +++ b/packages/walkthrough/steps/20/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/20/tsconfig.json b/packages/walkthrough/steps/20/tsconfig.json similarity index 100% rename from steps/20/tsconfig.json rename to packages/walkthrough/steps/20/tsconfig.json diff --git a/packages/walkthrough/steps/20/ui5.yaml b/packages/walkthrough/steps/20/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/20/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/20/webapp/Component.ts b/packages/walkthrough/steps/20/webapp/Component.ts similarity index 100% rename from steps/20/webapp/Component.ts rename to packages/walkthrough/steps/20/webapp/Component.ts diff --git a/steps/20/webapp/controller/App.controller.ts b/packages/walkthrough/steps/20/webapp/controller/App.controller.ts similarity index 100% rename from steps/20/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/20/webapp/controller/App.controller.ts diff --git a/steps/20/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/20/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/20/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/20/webapp/controller/HelloPanel.controller.ts diff --git a/steps/20/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/20/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/20/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/20/webapp/controller/InvoiceList.controller.ts diff --git a/steps/20/webapp/css/style.css b/packages/walkthrough/steps/20/webapp/css/style.css similarity index 100% rename from steps/20/webapp/css/style.css rename to packages/walkthrough/steps/20/webapp/css/style.css diff --git a/steps/20/webapp/i18n/i18n.properties b/packages/walkthrough/steps/20/webapp/i18n/i18n.properties similarity index 100% rename from steps/20/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/20/webapp/i18n/i18n.properties diff --git a/steps/20/webapp/index-cdn.html b/packages/walkthrough/steps/20/webapp/index-cdn.html similarity index 100% rename from steps/20/webapp/index-cdn.html rename to packages/walkthrough/steps/20/webapp/index-cdn.html diff --git a/steps/20/webapp/index.html b/packages/walkthrough/steps/20/webapp/index.html similarity index 100% rename from steps/20/webapp/index.html rename to packages/walkthrough/steps/20/webapp/index.html diff --git a/steps/20/webapp/manifest.json b/packages/walkthrough/steps/20/webapp/manifest.json similarity index 100% rename from steps/20/webapp/manifest.json rename to packages/walkthrough/steps/20/webapp/manifest.json diff --git a/steps/20/webapp/model/localInvoices.json b/packages/walkthrough/steps/20/webapp/model/localInvoices.json similarity index 100% rename from steps/20/webapp/model/localInvoices.json rename to packages/walkthrough/steps/20/webapp/model/localInvoices.json diff --git a/steps/20/webapp/view/App.view.xml b/packages/walkthrough/steps/20/webapp/view/App.view.xml similarity index 100% rename from steps/20/webapp/view/App.view.xml rename to packages/walkthrough/steps/20/webapp/view/App.view.xml diff --git a/steps/20/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/20/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/20/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/20/webapp/view/HelloDialog.fragment.xml diff --git a/steps/20/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/20/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/20/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/20/webapp/view/HelloPanel.view.xml diff --git a/steps/20/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/20/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/20/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/20/webapp/view/InvoiceList.view.xml diff --git a/steps/21/README.md b/packages/walkthrough/steps/21/README.md similarity index 96% rename from steps/21/README.md rename to packages/walkthrough/steps/21/README.md index fe9065167..ee5ed1c55 100644 --- a/steps/21/README.md +++ b/packages/walkthrough/steps/21/README.md @@ -12,7 +12,7 @@ Sometimes the predefined types of OpenUI5 are not flexible enough and you want t *The price is now formatted according to its number* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 21](https://sap-samples.github.io/ui5-typescript-walkthrough/build/21/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 21](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/21/index-cdn.html). *** @@ -20,13 +20,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 21](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-21.zip). +You can download the solution for this step here: [šŸ“„ Download step 21](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-21.zip).
-You can download the solution for this step here: [šŸ“„ Download step 21](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-21-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 21](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-21-js.zip).
*** diff --git a/steps/21/assets/loio636b7008113442c8a4765bb710dd8ea9_LowRes.png b/packages/walkthrough/steps/21/assets/loio636b7008113442c8a4765bb710dd8ea9_LowRes.png similarity index 100% rename from steps/21/assets/loio636b7008113442c8a4765bb710dd8ea9_LowRes.png rename to packages/walkthrough/steps/21/assets/loio636b7008113442c8a4765bb710dd8ea9_LowRes.png diff --git a/steps/21/package.json b/packages/walkthrough/steps/21/package.json similarity index 93% rename from steps/21/package.json rename to packages/walkthrough/steps/21/package.json index dac5d7527..47fc74e13 100644 --- a/steps/21/package.json +++ b/packages/walkthrough/steps/21/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/21/tsconfig.json b/packages/walkthrough/steps/21/tsconfig.json similarity index 100% rename from steps/21/tsconfig.json rename to packages/walkthrough/steps/21/tsconfig.json diff --git a/packages/walkthrough/steps/21/ui5.yaml b/packages/walkthrough/steps/21/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/21/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/21/webapp/Component.ts b/packages/walkthrough/steps/21/webapp/Component.ts similarity index 100% rename from steps/21/webapp/Component.ts rename to packages/walkthrough/steps/21/webapp/Component.ts diff --git a/steps/21/webapp/controller/App.controller.ts b/packages/walkthrough/steps/21/webapp/controller/App.controller.ts similarity index 100% rename from steps/21/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/21/webapp/controller/App.controller.ts diff --git a/steps/21/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/21/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/21/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/21/webapp/controller/HelloPanel.controller.ts diff --git a/steps/21/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/21/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/21/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/21/webapp/controller/InvoiceList.controller.ts diff --git a/steps/21/webapp/css/style.css b/packages/walkthrough/steps/21/webapp/css/style.css similarity index 100% rename from steps/21/webapp/css/style.css rename to packages/walkthrough/steps/21/webapp/css/style.css diff --git a/steps/21/webapp/i18n/i18n.properties b/packages/walkthrough/steps/21/webapp/i18n/i18n.properties similarity index 100% rename from steps/21/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/21/webapp/i18n/i18n.properties diff --git a/steps/21/webapp/index-cdn.html b/packages/walkthrough/steps/21/webapp/index-cdn.html similarity index 100% rename from steps/21/webapp/index-cdn.html rename to packages/walkthrough/steps/21/webapp/index-cdn.html diff --git a/steps/21/webapp/index.html b/packages/walkthrough/steps/21/webapp/index.html similarity index 100% rename from steps/21/webapp/index.html rename to packages/walkthrough/steps/21/webapp/index.html diff --git a/steps/21/webapp/manifest.json b/packages/walkthrough/steps/21/webapp/manifest.json similarity index 100% rename from steps/21/webapp/manifest.json rename to packages/walkthrough/steps/21/webapp/manifest.json diff --git a/steps/21/webapp/model/localInvoices.json b/packages/walkthrough/steps/21/webapp/model/localInvoices.json similarity index 100% rename from steps/21/webapp/model/localInvoices.json rename to packages/walkthrough/steps/21/webapp/model/localInvoices.json diff --git a/steps/21/webapp/view/App.view.xml b/packages/walkthrough/steps/21/webapp/view/App.view.xml similarity index 100% rename from steps/21/webapp/view/App.view.xml rename to packages/walkthrough/steps/21/webapp/view/App.view.xml diff --git a/steps/21/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/21/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/21/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/21/webapp/view/HelloDialog.fragment.xml diff --git a/steps/21/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/21/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/21/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/21/webapp/view/HelloPanel.view.xml diff --git a/steps/21/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/21/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/21/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/21/webapp/view/InvoiceList.view.xml diff --git a/steps/22/README.md b/packages/walkthrough/steps/22/README.md similarity index 98% rename from steps/22/README.md rename to packages/walkthrough/steps/22/README.md index 31c095733..99ed8d601 100644 --- a/steps/22/README.md +++ b/packages/walkthrough/steps/22/README.md @@ -12,7 +12,7 @@ If we want to do a more complex logic for formatting properties of our data mode *A status is now displayed with a custom formatter* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 22](https://sap-samples.github.io/ui5-typescript-walkthrough/build/22/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 22](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/22/index-cdn.html). *** @@ -20,13 +20,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 22](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-22.zip). +You can download the solution for this step here: [šŸ“„ Download step 22](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-22.zip).
-You can download the solution for this step here: [šŸ“„ Download step 22](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-22-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 22](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-22-js.zip).
*** diff --git a/steps/22/assets/loio7aa185a90dd7495cb6ec30c96bc80a54_LowRes.png b/packages/walkthrough/steps/22/assets/loio7aa185a90dd7495cb6ec30c96bc80a54_LowRes.png similarity index 100% rename from steps/22/assets/loio7aa185a90dd7495cb6ec30c96bc80a54_LowRes.png rename to packages/walkthrough/steps/22/assets/loio7aa185a90dd7495cb6ec30c96bc80a54_LowRes.png diff --git a/steps/22/package.json b/packages/walkthrough/steps/22/package.json similarity index 93% rename from steps/22/package.json rename to packages/walkthrough/steps/22/package.json index 9acce5d9c..6220c83a1 100644 --- a/steps/22/package.json +++ b/packages/walkthrough/steps/22/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/22/tsconfig.json b/packages/walkthrough/steps/22/tsconfig.json similarity index 100% rename from steps/22/tsconfig.json rename to packages/walkthrough/steps/22/tsconfig.json diff --git a/packages/walkthrough/steps/22/ui5.yaml b/packages/walkthrough/steps/22/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/22/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/22/webapp/Component.ts b/packages/walkthrough/steps/22/webapp/Component.ts similarity index 100% rename from steps/22/webapp/Component.ts rename to packages/walkthrough/steps/22/webapp/Component.ts diff --git a/steps/22/webapp/controller/App.controller.ts b/packages/walkthrough/steps/22/webapp/controller/App.controller.ts similarity index 100% rename from steps/22/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/22/webapp/controller/App.controller.ts diff --git a/steps/22/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/22/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/22/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/22/webapp/controller/HelloPanel.controller.ts diff --git a/steps/22/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/22/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/22/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/22/webapp/controller/InvoiceList.controller.ts diff --git a/steps/22/webapp/css/style.css b/packages/walkthrough/steps/22/webapp/css/style.css similarity index 100% rename from steps/22/webapp/css/style.css rename to packages/walkthrough/steps/22/webapp/css/style.css diff --git a/steps/22/webapp/i18n/i18n.properties b/packages/walkthrough/steps/22/webapp/i18n/i18n.properties similarity index 100% rename from steps/22/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/22/webapp/i18n/i18n.properties diff --git a/steps/22/webapp/index-cdn.html b/packages/walkthrough/steps/22/webapp/index-cdn.html similarity index 100% rename from steps/22/webapp/index-cdn.html rename to packages/walkthrough/steps/22/webapp/index-cdn.html diff --git a/steps/22/webapp/index.html b/packages/walkthrough/steps/22/webapp/index.html similarity index 100% rename from steps/22/webapp/index.html rename to packages/walkthrough/steps/22/webapp/index.html diff --git a/steps/22/webapp/manifest.json b/packages/walkthrough/steps/22/webapp/manifest.json similarity index 100% rename from steps/22/webapp/manifest.json rename to packages/walkthrough/steps/22/webapp/manifest.json diff --git a/steps/22/webapp/model/formatter.ts b/packages/walkthrough/steps/22/webapp/model/formatter.ts similarity index 100% rename from steps/22/webapp/model/formatter.ts rename to packages/walkthrough/steps/22/webapp/model/formatter.ts diff --git a/steps/22/webapp/model/localInvoices.json b/packages/walkthrough/steps/22/webapp/model/localInvoices.json similarity index 100% rename from steps/22/webapp/model/localInvoices.json rename to packages/walkthrough/steps/22/webapp/model/localInvoices.json diff --git a/steps/22/webapp/view/App.view.xml b/packages/walkthrough/steps/22/webapp/view/App.view.xml similarity index 100% rename from steps/22/webapp/view/App.view.xml rename to packages/walkthrough/steps/22/webapp/view/App.view.xml diff --git a/steps/22/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/22/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/22/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/22/webapp/view/HelloDialog.fragment.xml diff --git a/steps/22/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/22/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/22/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/22/webapp/view/HelloPanel.view.xml diff --git a/steps/22/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/22/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/22/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/22/webapp/view/InvoiceList.view.xml diff --git a/steps/23/README.md b/packages/walkthrough/steps/23/README.md similarity index 98% rename from steps/23/README.md rename to packages/walkthrough/steps/23/README.md index 26bdcfdf7..f0bb18d91 100644 --- a/steps/23/README.md +++ b/packages/walkthrough/steps/23/README.md @@ -12,7 +12,7 @@ In this step, we add a search field for our product list and define a filter tha *A search field is displayed above the list* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 23](https://sap-samples.github.io/ui5-typescript-walkthrough/build/23/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 23](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/23/index-cdn.html). *** @@ -20,13 +20,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 23](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-23.zip). +You can download the solution for this step here: [šŸ“„ Download step 23](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-23.zip).
-You can download the solution for this step here: [šŸ“„ Download step 23](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-23-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 23](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-23-js.zip).
*** diff --git a/steps/23/assets/loio472ab6bf88674c23ba103efd97163133_LowRes.png b/packages/walkthrough/steps/23/assets/loio472ab6bf88674c23ba103efd97163133_LowRes.png similarity index 100% rename from steps/23/assets/loio472ab6bf88674c23ba103efd97163133_LowRes.png rename to packages/walkthrough/steps/23/assets/loio472ab6bf88674c23ba103efd97163133_LowRes.png diff --git a/steps/23/package.json b/packages/walkthrough/steps/23/package.json similarity index 92% rename from steps/23/package.json rename to packages/walkthrough/steps/23/package.json index 171eac625..d5f715afa 100644 --- a/steps/23/package.json +++ b/packages/walkthrough/steps/23/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/23/tsconfig.json b/packages/walkthrough/steps/23/tsconfig.json similarity index 100% rename from steps/23/tsconfig.json rename to packages/walkthrough/steps/23/tsconfig.json diff --git a/packages/walkthrough/steps/23/ui5.yaml b/packages/walkthrough/steps/23/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/23/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/23/webapp/Component.ts b/packages/walkthrough/steps/23/webapp/Component.ts similarity index 100% rename from steps/23/webapp/Component.ts rename to packages/walkthrough/steps/23/webapp/Component.ts diff --git a/steps/23/webapp/controller/App.controller.ts b/packages/walkthrough/steps/23/webapp/controller/App.controller.ts similarity index 100% rename from steps/23/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/23/webapp/controller/App.controller.ts diff --git a/steps/23/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/23/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/23/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/23/webapp/controller/HelloPanel.controller.ts diff --git a/steps/23/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/23/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/23/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/23/webapp/controller/InvoiceList.controller.ts diff --git a/steps/23/webapp/css/style.css b/packages/walkthrough/steps/23/webapp/css/style.css similarity index 100% rename from steps/23/webapp/css/style.css rename to packages/walkthrough/steps/23/webapp/css/style.css diff --git a/steps/23/webapp/i18n/i18n.properties b/packages/walkthrough/steps/23/webapp/i18n/i18n.properties similarity index 100% rename from steps/23/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/23/webapp/i18n/i18n.properties diff --git a/steps/23/webapp/index-cdn.html b/packages/walkthrough/steps/23/webapp/index-cdn.html similarity index 100% rename from steps/23/webapp/index-cdn.html rename to packages/walkthrough/steps/23/webapp/index-cdn.html diff --git a/steps/23/webapp/index.html b/packages/walkthrough/steps/23/webapp/index.html similarity index 100% rename from steps/23/webapp/index.html rename to packages/walkthrough/steps/23/webapp/index.html diff --git a/steps/23/webapp/manifest.json b/packages/walkthrough/steps/23/webapp/manifest.json similarity index 100% rename from steps/23/webapp/manifest.json rename to packages/walkthrough/steps/23/webapp/manifest.json diff --git a/steps/23/webapp/model/formatter.ts b/packages/walkthrough/steps/23/webapp/model/formatter.ts similarity index 100% rename from steps/23/webapp/model/formatter.ts rename to packages/walkthrough/steps/23/webapp/model/formatter.ts diff --git a/steps/23/webapp/model/localInvoices.json b/packages/walkthrough/steps/23/webapp/model/localInvoices.json similarity index 100% rename from steps/23/webapp/model/localInvoices.json rename to packages/walkthrough/steps/23/webapp/model/localInvoices.json diff --git a/steps/23/webapp/view/App.view.xml b/packages/walkthrough/steps/23/webapp/view/App.view.xml similarity index 100% rename from steps/23/webapp/view/App.view.xml rename to packages/walkthrough/steps/23/webapp/view/App.view.xml diff --git a/steps/23/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/23/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/23/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/23/webapp/view/HelloDialog.fragment.xml diff --git a/steps/23/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/23/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/23/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/23/webapp/view/HelloPanel.view.xml diff --git a/steps/23/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/23/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/23/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/23/webapp/view/InvoiceList.view.xml diff --git a/steps/24/README.md b/packages/walkthrough/steps/24/README.md similarity index 96% rename from steps/24/README.md rename to packages/walkthrough/steps/24/README.md index 1865a9227..82eafc9e2 100644 --- a/steps/24/README.md +++ b/packages/walkthrough/steps/24/README.md @@ -13,7 +13,7 @@ To make our list of invoices even more user-friendly, we sort it alphabetically *The list is now sorted and grouped by the shipping company* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 24](https://sap-samples.github.io/ui5-typescript-walkthrough/build/24/index-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 24](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/24/index-cdn.html). *** @@ -21,13 +21,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 24](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-24.zip). +You can download the solution for this step here: [šŸ“„ Download step 24](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-24.zip).
-You can download the solution for this step here: [šŸ“„ Download step 24](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-24-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 24](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-24-js.zip).
*** diff --git a/steps/24/assets/loio33f71b44bb644d1fa2a0ab14f1fcc02a_LowRes.png b/packages/walkthrough/steps/24/assets/loio33f71b44bb644d1fa2a0ab14f1fcc02a_LowRes.png similarity index 100% rename from steps/24/assets/loio33f71b44bb644d1fa2a0ab14f1fcc02a_LowRes.png rename to packages/walkthrough/steps/24/assets/loio33f71b44bb644d1fa2a0ab14f1fcc02a_LowRes.png diff --git a/steps/24/package.json b/packages/walkthrough/steps/24/package.json similarity index 93% rename from steps/24/package.json rename to packages/walkthrough/steps/24/package.json index dd2226860..5d3c3123a 100644 --- a/steps/24/package.json +++ b/packages/walkthrough/steps/24/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/24/tsconfig.json b/packages/walkthrough/steps/24/tsconfig.json similarity index 100% rename from steps/24/tsconfig.json rename to packages/walkthrough/steps/24/tsconfig.json diff --git a/packages/walkthrough/steps/24/ui5.yaml b/packages/walkthrough/steps/24/ui5.yaml new file mode 100644 index 000000000..dfa185033 --- /dev/null +++ b/packages/walkthrough/steps/24/ui5.yaml @@ -0,0 +1,23 @@ +specVersion: '3.0' +metadata: + name: "ui5.walkthrough" +type: application +framework: + name: OpenUI5 + version: "1.145.1" + libraries: + - name: sap.m + - name: sap.ui.core + - name: themelib_sap_horizon +builder: + customTasks: + - name: ui5-tooling-transpile-task + afterTask: replaceVersion +server: + customMiddleware: + - name: ui5-tooling-transpile-middleware + afterMiddleware: compression + - name: ui5-middleware-serveframework + afterMiddleware: compression + - name: ui5-middleware-livereload + afterMiddleware: compression diff --git a/steps/24/webapp/Component.ts b/packages/walkthrough/steps/24/webapp/Component.ts similarity index 100% rename from steps/24/webapp/Component.ts rename to packages/walkthrough/steps/24/webapp/Component.ts diff --git a/steps/24/webapp/controller/App.controller.ts b/packages/walkthrough/steps/24/webapp/controller/App.controller.ts similarity index 100% rename from steps/24/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/24/webapp/controller/App.controller.ts diff --git a/steps/24/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/24/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/24/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/24/webapp/controller/HelloPanel.controller.ts diff --git a/steps/24/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/24/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/24/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/24/webapp/controller/InvoiceList.controller.ts diff --git a/steps/24/webapp/css/style.css b/packages/walkthrough/steps/24/webapp/css/style.css similarity index 100% rename from steps/24/webapp/css/style.css rename to packages/walkthrough/steps/24/webapp/css/style.css diff --git a/steps/24/webapp/i18n/i18n.properties b/packages/walkthrough/steps/24/webapp/i18n/i18n.properties similarity index 100% rename from steps/24/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/24/webapp/i18n/i18n.properties diff --git a/steps/24/webapp/index-cdn.html b/packages/walkthrough/steps/24/webapp/index-cdn.html similarity index 100% rename from steps/24/webapp/index-cdn.html rename to packages/walkthrough/steps/24/webapp/index-cdn.html diff --git a/steps/24/webapp/index.html b/packages/walkthrough/steps/24/webapp/index.html similarity index 100% rename from steps/24/webapp/index.html rename to packages/walkthrough/steps/24/webapp/index.html diff --git a/steps/24/webapp/manifest.json b/packages/walkthrough/steps/24/webapp/manifest.json similarity index 100% rename from steps/24/webapp/manifest.json rename to packages/walkthrough/steps/24/webapp/manifest.json diff --git a/steps/24/webapp/model/formatter.ts b/packages/walkthrough/steps/24/webapp/model/formatter.ts similarity index 100% rename from steps/24/webapp/model/formatter.ts rename to packages/walkthrough/steps/24/webapp/model/formatter.ts diff --git a/steps/24/webapp/model/localInvoices.json b/packages/walkthrough/steps/24/webapp/model/localInvoices.json similarity index 100% rename from steps/24/webapp/model/localInvoices.json rename to packages/walkthrough/steps/24/webapp/model/localInvoices.json diff --git a/steps/24/webapp/view/App.view.xml b/packages/walkthrough/steps/24/webapp/view/App.view.xml similarity index 100% rename from steps/24/webapp/view/App.view.xml rename to packages/walkthrough/steps/24/webapp/view/App.view.xml diff --git a/steps/24/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/24/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/24/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/24/webapp/view/HelloDialog.fragment.xml diff --git a/steps/24/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/24/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/24/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/24/webapp/view/HelloPanel.view.xml diff --git a/steps/24/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/24/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/24/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/24/webapp/view/InvoiceList.view.xml diff --git a/steps/25/README.md b/packages/walkthrough/steps/25/README.md similarity index 98% rename from steps/25/README.md rename to packages/walkthrough/steps/25/README.md index 76dfb0c55..288c9fe8f 100644 --- a/steps/25/README.md +++ b/packages/walkthrough/steps/25/README.md @@ -24,13 +24,13 @@ In the real world, data often resides on remote servers and is accessed via an O
-You can download the solution for this step here: [šŸ“„ Download step 25](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-25.zip). +You can download the solution for this step here: [šŸ“„ Download step 25](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-25.zip).
-You can download the solution for this step here: [šŸ“„ Download step 25](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-25-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 25](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-25-js.zip).
*** @@ -62,7 +62,7 @@ metadata: type: application framework: name: OpenUI5 - version: "1.136.7" + version: "1.145.1" libraries: - name: sap.m - name: sap.ui.core diff --git a/steps/25/assets/loio5b76bb4b15eb44e1862d0b6c1c802571_LowRes.png b/packages/walkthrough/steps/25/assets/loio5b76bb4b15eb44e1862d0b6c1c802571_LowRes.png similarity index 100% rename from steps/25/assets/loio5b76bb4b15eb44e1862d0b6c1c802571_LowRes.png rename to packages/walkthrough/steps/25/assets/loio5b76bb4b15eb44e1862d0b6c1c802571_LowRes.png diff --git a/steps/25/package.json b/packages/walkthrough/steps/25/package.json similarity index 93% rename from steps/25/package.json rename to packages/walkthrough/steps/25/package.json index 72c0bb95c..74bb8c253 100644 --- a/steps/25/package.json +++ b/packages/walkthrough/steps/25/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o index.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/25/tsconfig.json b/packages/walkthrough/steps/25/tsconfig.json similarity index 100% rename from steps/25/tsconfig.json rename to packages/walkthrough/steps/25/tsconfig.json diff --git a/steps/25/ui5.yaml b/packages/walkthrough/steps/25/ui5.yaml similarity index 96% rename from steps/25/ui5.yaml rename to packages/walkthrough/steps/25/ui5.yaml index 440afbffe..997943cb9 100644 --- a/steps/25/ui5.yaml +++ b/packages/walkthrough/steps/25/ui5.yaml @@ -4,7 +4,7 @@ metadata: type: application framework: name: OpenUI5 - version: "1.136.7" + version: "1.145.1" libraries: - name: sap.m - name: sap.ui.core diff --git a/steps/25/webapp/Component.ts b/packages/walkthrough/steps/25/webapp/Component.ts similarity index 100% rename from steps/25/webapp/Component.ts rename to packages/walkthrough/steps/25/webapp/Component.ts diff --git a/steps/25/webapp/controller/App.controller.ts b/packages/walkthrough/steps/25/webapp/controller/App.controller.ts similarity index 100% rename from steps/25/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/25/webapp/controller/App.controller.ts diff --git a/steps/25/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/25/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/25/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/25/webapp/controller/HelloPanel.controller.ts diff --git a/steps/25/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/25/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/25/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/25/webapp/controller/InvoiceList.controller.ts diff --git a/steps/25/webapp/css/style.css b/packages/walkthrough/steps/25/webapp/css/style.css similarity index 100% rename from steps/25/webapp/css/style.css rename to packages/walkthrough/steps/25/webapp/css/style.css diff --git a/steps/25/webapp/i18n/i18n.properties b/packages/walkthrough/steps/25/webapp/i18n/i18n.properties similarity index 100% rename from steps/25/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/25/webapp/i18n/i18n.properties diff --git a/steps/25/webapp/index-cdn.html b/packages/walkthrough/steps/25/webapp/index-cdn.html similarity index 100% rename from steps/25/webapp/index-cdn.html rename to packages/walkthrough/steps/25/webapp/index-cdn.html diff --git a/steps/25/webapp/index.html b/packages/walkthrough/steps/25/webapp/index.html similarity index 100% rename from steps/25/webapp/index.html rename to packages/walkthrough/steps/25/webapp/index.html diff --git a/steps/25/webapp/manifest.json b/packages/walkthrough/steps/25/webapp/manifest.json similarity index 100% rename from steps/25/webapp/manifest.json rename to packages/walkthrough/steps/25/webapp/manifest.json diff --git a/steps/25/webapp/model/formatter.ts b/packages/walkthrough/steps/25/webapp/model/formatter.ts similarity index 100% rename from steps/25/webapp/model/formatter.ts rename to packages/walkthrough/steps/25/webapp/model/formatter.ts diff --git a/steps/25/webapp/view/App.view.xml b/packages/walkthrough/steps/25/webapp/view/App.view.xml similarity index 100% rename from steps/25/webapp/view/App.view.xml rename to packages/walkthrough/steps/25/webapp/view/App.view.xml diff --git a/steps/25/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/25/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/25/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/25/webapp/view/HelloDialog.fragment.xml diff --git a/steps/25/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/25/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/25/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/25/webapp/view/HelloPanel.view.xml diff --git a/steps/25/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/25/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/25/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/25/webapp/view/InvoiceList.view.xml diff --git a/steps/26/README.md b/packages/walkthrough/steps/26/README.md similarity index 98% rename from steps/26/README.md rename to packages/walkthrough/steps/26/README.md index db98af1a7..6adc68941 100644 --- a/steps/26/README.md +++ b/packages/walkthrough/steps/26/README.md @@ -23,20 +23,20 @@ The new `localService` folder contains a `metadata.xml` service description file *Folder Structure for this Step* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 26](https://sap-samples.github.io/ui5-typescript-walkthrough/build/26/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 26](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/26/test/mockServer-cdn.html). *** ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 26](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-26.zip). +You can download the solution for this step here: [šŸ“„ Download step 26](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-26.zip).
-You can download the solution for this step here: [šŸ“„ Download step 26](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-26-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 26](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-26-js.zip).
*** diff --git a/steps/26/assets/loio7a5e2b02d72d40d388f5e601d7de74df_LowRes.png b/packages/walkthrough/steps/26/assets/loio7a5e2b02d72d40d388f5e601d7de74df_LowRes.png similarity index 100% rename from steps/26/assets/loio7a5e2b02d72d40d388f5e601d7de74df_LowRes.png rename to packages/walkthrough/steps/26/assets/loio7a5e2b02d72d40d388f5e601d7de74df_LowRes.png diff --git a/steps/26/assets/loiofe1403346ce9499f8bb102beaa4986d5_LowRes.png b/packages/walkthrough/steps/26/assets/loiofe1403346ce9499f8bb102beaa4986d5_LowRes.png similarity index 100% rename from steps/26/assets/loiofe1403346ce9499f8bb102beaa4986d5_LowRes.png rename to packages/walkthrough/steps/26/assets/loiofe1403346ce9499f8bb102beaa4986d5_LowRes.png diff --git a/steps/26/package.json b/packages/walkthrough/steps/26/package.json similarity index 93% rename from steps/26/package.json rename to packages/walkthrough/steps/26/package.json index ebbde2be2..8fde875d5 100644 --- a/steps/26/package.json +++ b/packages/walkthrough/steps/26/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/26/tsconfig.json b/packages/walkthrough/steps/26/tsconfig.json similarity index 100% rename from steps/26/tsconfig.json rename to packages/walkthrough/steps/26/tsconfig.json diff --git a/steps/26/ui5.yaml b/packages/walkthrough/steps/26/ui5.yaml similarity index 96% rename from steps/26/ui5.yaml rename to packages/walkthrough/steps/26/ui5.yaml index 440afbffe..997943cb9 100644 --- a/steps/26/ui5.yaml +++ b/packages/walkthrough/steps/26/ui5.yaml @@ -4,7 +4,7 @@ metadata: type: application framework: name: OpenUI5 - version: "1.136.7" + version: "1.145.1" libraries: - name: sap.m - name: sap.ui.core diff --git a/steps/26/webapp/Component.ts b/packages/walkthrough/steps/26/webapp/Component.ts similarity index 100% rename from steps/26/webapp/Component.ts rename to packages/walkthrough/steps/26/webapp/Component.ts diff --git a/steps/26/webapp/controller/App.controller.ts b/packages/walkthrough/steps/26/webapp/controller/App.controller.ts similarity index 100% rename from steps/26/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/26/webapp/controller/App.controller.ts diff --git a/steps/26/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/26/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/26/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/26/webapp/controller/HelloPanel.controller.ts diff --git a/steps/26/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/26/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/26/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/26/webapp/controller/InvoiceList.controller.ts diff --git a/steps/26/webapp/css/style.css b/packages/walkthrough/steps/26/webapp/css/style.css similarity index 100% rename from steps/26/webapp/css/style.css rename to packages/walkthrough/steps/26/webapp/css/style.css diff --git a/steps/26/webapp/i18n/i18n.properties b/packages/walkthrough/steps/26/webapp/i18n/i18n.properties similarity index 100% rename from steps/26/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/26/webapp/i18n/i18n.properties diff --git a/steps/26/webapp/index-cdn.html b/packages/walkthrough/steps/26/webapp/index-cdn.html similarity index 100% rename from steps/26/webapp/index-cdn.html rename to packages/walkthrough/steps/26/webapp/index-cdn.html diff --git a/steps/26/webapp/index.html b/packages/walkthrough/steps/26/webapp/index.html similarity index 100% rename from steps/26/webapp/index.html rename to packages/walkthrough/steps/26/webapp/index.html diff --git a/steps/26/webapp/localService/metadata.xml b/packages/walkthrough/steps/26/webapp/localService/metadata.xml similarity index 100% rename from steps/26/webapp/localService/metadata.xml rename to packages/walkthrough/steps/26/webapp/localService/metadata.xml diff --git a/steps/26/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/26/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/26/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/26/webapp/localService/mockdata/Invoices.json diff --git a/steps/26/webapp/localService/mockserver.ts b/packages/walkthrough/steps/26/webapp/localService/mockserver.ts similarity index 100% rename from steps/26/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/26/webapp/localService/mockserver.ts diff --git a/steps/26/webapp/manifest.json b/packages/walkthrough/steps/26/webapp/manifest.json similarity index 100% rename from steps/26/webapp/manifest.json rename to packages/walkthrough/steps/26/webapp/manifest.json diff --git a/steps/26/webapp/model/formatter.ts b/packages/walkthrough/steps/26/webapp/model/formatter.ts similarity index 100% rename from steps/26/webapp/model/formatter.ts rename to packages/walkthrough/steps/26/webapp/model/formatter.ts diff --git a/steps/26/webapp/test/initMockServer.ts b/packages/walkthrough/steps/26/webapp/test/initMockServer.ts similarity index 100% rename from steps/26/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/26/webapp/test/initMockServer.ts diff --git a/steps/26/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/26/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/26/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/26/webapp/test/mockServer-cdn.html diff --git a/steps/26/webapp/test/mockServer.html b/packages/walkthrough/steps/26/webapp/test/mockServer.html similarity index 100% rename from steps/26/webapp/test/mockServer.html rename to packages/walkthrough/steps/26/webapp/test/mockServer.html diff --git a/steps/26/webapp/view/App.view.xml b/packages/walkthrough/steps/26/webapp/view/App.view.xml similarity index 100% rename from steps/26/webapp/view/App.view.xml rename to packages/walkthrough/steps/26/webapp/view/App.view.xml diff --git a/steps/26/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/26/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/26/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/26/webapp/view/HelloDialog.fragment.xml diff --git a/steps/26/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/26/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/26/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/26/webapp/view/HelloPanel.view.xml diff --git a/steps/26/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/26/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/26/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/26/webapp/view/InvoiceList.view.xml diff --git a/steps/27/README.md b/packages/walkthrough/steps/27/README.md similarity index 98% rename from steps/27/README.md rename to packages/walkthrough/steps/27/README.md index d88d02eba..5573911ea 100644 --- a/steps/27/README.md +++ b/packages/walkthrough/steps/27/README.md @@ -22,7 +22,7 @@ We add a new folder `unit` under the `test` folder and a `model` subfolder where ![](assets/loio1b5613ac3ab94757af2c7823039222a9_LowRes.png "Folder Structure for this Step") *Folder Structure for this Step* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 27](https://sap-samples.github.io/ui5-typescript-walkthrough/build/27/test/Test.cdn.qunit.html?testsuite=test-resources/ui5/walkthrough/testsuite.cdn.qunit&test=unit/unitTests). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 27](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/27/test/Test.cdn.qunit.html?testsuite=test-resources/ui5/walkthrough/testsuite.cdn.qunit&test=unit/unitTests). *** @@ -30,13 +30,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 27](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-27.zip). +You can download the solution for this step here: [šŸ“„ Download step 27](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-27.zip).
-You can download the solution for this step here: [šŸ“„ Download step 27](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-27-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 27](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-27-js.zip).
*** diff --git a/steps/27/assets/loio0d29491d96574cfe8d8158d60a0a32e2_LowRes.png b/packages/walkthrough/steps/27/assets/loio0d29491d96574cfe8d8158d60a0a32e2_LowRes.png similarity index 100% rename from steps/27/assets/loio0d29491d96574cfe8d8158d60a0a32e2_LowRes.png rename to packages/walkthrough/steps/27/assets/loio0d29491d96574cfe8d8158d60a0a32e2_LowRes.png diff --git a/steps/27/assets/loio1b5613ac3ab94757af2c7823039222a9_LowRes.png b/packages/walkthrough/steps/27/assets/loio1b5613ac3ab94757af2c7823039222a9_LowRes.png similarity index 100% rename from steps/27/assets/loio1b5613ac3ab94757af2c7823039222a9_LowRes.png rename to packages/walkthrough/steps/27/assets/loio1b5613ac3ab94757af2c7823039222a9_LowRes.png diff --git a/steps/27/package.json b/packages/walkthrough/steps/27/package.json similarity index 93% rename from steps/27/package.json rename to packages/walkthrough/steps/27/package.json index 7520eb8a9..56ece8c84 100644 --- a/steps/27/package.json +++ b/packages/walkthrough/steps/27/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/27/tsconfig.json b/packages/walkthrough/steps/27/tsconfig.json similarity index 100% rename from steps/27/tsconfig.json rename to packages/walkthrough/steps/27/tsconfig.json diff --git a/steps/27/ui5.yaml b/packages/walkthrough/steps/27/ui5.yaml similarity index 100% rename from steps/27/ui5.yaml rename to packages/walkthrough/steps/27/ui5.yaml diff --git a/steps/27/webapp/Component.ts b/packages/walkthrough/steps/27/webapp/Component.ts similarity index 100% rename from steps/27/webapp/Component.ts rename to packages/walkthrough/steps/27/webapp/Component.ts diff --git a/steps/27/webapp/controller/App.controller.ts b/packages/walkthrough/steps/27/webapp/controller/App.controller.ts similarity index 100% rename from steps/27/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/27/webapp/controller/App.controller.ts diff --git a/steps/27/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/27/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/27/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/27/webapp/controller/HelloPanel.controller.ts diff --git a/steps/27/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/27/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/27/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/27/webapp/controller/InvoiceList.controller.ts diff --git a/steps/27/webapp/css/style.css b/packages/walkthrough/steps/27/webapp/css/style.css similarity index 100% rename from steps/27/webapp/css/style.css rename to packages/walkthrough/steps/27/webapp/css/style.css diff --git a/steps/27/webapp/i18n/i18n.properties b/packages/walkthrough/steps/27/webapp/i18n/i18n.properties similarity index 100% rename from steps/27/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/27/webapp/i18n/i18n.properties diff --git a/steps/27/webapp/index-cdn.html b/packages/walkthrough/steps/27/webapp/index-cdn.html similarity index 100% rename from steps/27/webapp/index-cdn.html rename to packages/walkthrough/steps/27/webapp/index-cdn.html diff --git a/steps/27/webapp/index.html b/packages/walkthrough/steps/27/webapp/index.html similarity index 100% rename from steps/27/webapp/index.html rename to packages/walkthrough/steps/27/webapp/index.html diff --git a/steps/27/webapp/localService/metadata.xml b/packages/walkthrough/steps/27/webapp/localService/metadata.xml similarity index 100% rename from steps/27/webapp/localService/metadata.xml rename to packages/walkthrough/steps/27/webapp/localService/metadata.xml diff --git a/steps/27/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/27/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/27/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/27/webapp/localService/mockdata/Invoices.json diff --git a/steps/27/webapp/localService/mockserver.ts b/packages/walkthrough/steps/27/webapp/localService/mockserver.ts similarity index 100% rename from steps/27/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/27/webapp/localService/mockserver.ts diff --git a/steps/27/webapp/manifest.json b/packages/walkthrough/steps/27/webapp/manifest.json similarity index 100% rename from steps/27/webapp/manifest.json rename to packages/walkthrough/steps/27/webapp/manifest.json diff --git a/steps/27/webapp/model/formatter.ts b/packages/walkthrough/steps/27/webapp/model/formatter.ts similarity index 100% rename from steps/27/webapp/model/formatter.ts rename to packages/walkthrough/steps/27/webapp/model/formatter.ts diff --git a/steps/27/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/27/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/27/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/27/webapp/test/Test.cdn.qunit.html diff --git a/steps/27/webapp/test/Test.qunit.html b/packages/walkthrough/steps/27/webapp/test/Test.qunit.html similarity index 100% rename from steps/27/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/27/webapp/test/Test.qunit.html diff --git a/steps/27/webapp/test/initMockServer.ts b/packages/walkthrough/steps/27/webapp/test/initMockServer.ts similarity index 100% rename from steps/27/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/27/webapp/test/initMockServer.ts diff --git a/steps/27/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/27/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/27/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/27/webapp/test/mockServer-cdn.html diff --git a/steps/27/webapp/test/mockServer.html b/packages/walkthrough/steps/27/webapp/test/mockServer.html similarity index 100% rename from steps/27/webapp/test/mockServer.html rename to packages/walkthrough/steps/27/webapp/test/mockServer.html diff --git a/steps/27/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/27/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/27/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/27/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/27/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/27/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/27/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/27/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/27/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/27/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/27/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/27/webapp/test/testsuite.qunit.html diff --git a/steps/27/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/27/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/27/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/27/webapp/test/testsuite.qunit.ts diff --git a/steps/27/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/27/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/27/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/27/webapp/test/unit/model/formatter.ts diff --git a/steps/27/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/27/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/27/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/27/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/27/webapp/view/App.view.xml b/packages/walkthrough/steps/27/webapp/view/App.view.xml similarity index 100% rename from steps/27/webapp/view/App.view.xml rename to packages/walkthrough/steps/27/webapp/view/App.view.xml diff --git a/steps/27/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/27/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/27/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/27/webapp/view/HelloDialog.fragment.xml diff --git a/steps/27/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/27/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/27/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/27/webapp/view/HelloPanel.view.xml diff --git a/steps/27/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/27/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/27/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/27/webapp/view/InvoiceList.view.xml diff --git a/steps/28/README.md b/packages/walkthrough/steps/28/README.md similarity index 97% rename from steps/28/README.md rename to packages/walkthrough/steps/28/README.md index 2583a5705..f6609b9b2 100644 --- a/steps/28/README.md +++ b/packages/walkthrough/steps/28/README.md @@ -22,7 +22,7 @@ We add a new folder `integration` below the `test` folder, where we put our new ![](assets/loio27e84d5bd72a485498564b92894869b5_LowRes.png "Folder Structure for this Step") *Folder Structure for this Step* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 28](https://sap-samples.github.io/ui5-typescript-walkthrough/build/28/test/Test.cdn.qunit.html?testsuite=test-resources/ui5/walkthrough/testsuite.cdn.qunit&test=integration/opaTests). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 28](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/28/test/Test.cdn.qunit.html?testsuite=test-resources/ui5/walkthrough/testsuite.cdn.qunit&test=integration/opaTests). *** @@ -31,13 +31,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 28](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-28.zip). +You can download the solution for this step here: [šŸ“„ Download step 28](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-28.zip).
-You can download the solution for this step here: [šŸ“„ Download step 28](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-28-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 28](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-28-js.zip).
*** diff --git a/steps/28/assets/loio250d5b92921d44a4b432cc0fade88cc9_LowRes.png b/packages/walkthrough/steps/28/assets/loio250d5b92921d44a4b432cc0fade88cc9_LowRes.png similarity index 100% rename from steps/28/assets/loio250d5b92921d44a4b432cc0fade88cc9_LowRes.png rename to packages/walkthrough/steps/28/assets/loio250d5b92921d44a4b432cc0fade88cc9_LowRes.png diff --git a/steps/28/assets/loio27e84d5bd72a485498564b92894869b5_LowRes.png b/packages/walkthrough/steps/28/assets/loio27e84d5bd72a485498564b92894869b5_LowRes.png similarity index 100% rename from steps/28/assets/loio27e84d5bd72a485498564b92894869b5_LowRes.png rename to packages/walkthrough/steps/28/assets/loio27e84d5bd72a485498564b92894869b5_LowRes.png diff --git a/steps/28/package.json b/packages/walkthrough/steps/28/package.json similarity index 93% rename from steps/28/package.json rename to packages/walkthrough/steps/28/package.json index 3ab8c8a32..fbc690d92 100644 --- a/steps/28/package.json +++ b/packages/walkthrough/steps/28/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/28/tsconfig.json b/packages/walkthrough/steps/28/tsconfig.json similarity index 100% rename from steps/28/tsconfig.json rename to packages/walkthrough/steps/28/tsconfig.json diff --git a/steps/28/ui5.yaml b/packages/walkthrough/steps/28/ui5.yaml similarity index 100% rename from steps/28/ui5.yaml rename to packages/walkthrough/steps/28/ui5.yaml diff --git a/steps/28/webapp/Component.ts b/packages/walkthrough/steps/28/webapp/Component.ts similarity index 100% rename from steps/28/webapp/Component.ts rename to packages/walkthrough/steps/28/webapp/Component.ts diff --git a/steps/28/webapp/controller/App.controller.ts b/packages/walkthrough/steps/28/webapp/controller/App.controller.ts similarity index 100% rename from steps/28/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/28/webapp/controller/App.controller.ts diff --git a/steps/28/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/28/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/28/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/28/webapp/controller/HelloPanel.controller.ts diff --git a/steps/28/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/28/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/28/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/28/webapp/controller/InvoiceList.controller.ts diff --git a/steps/28/webapp/css/style.css b/packages/walkthrough/steps/28/webapp/css/style.css similarity index 100% rename from steps/28/webapp/css/style.css rename to packages/walkthrough/steps/28/webapp/css/style.css diff --git a/steps/28/webapp/i18n/i18n.properties b/packages/walkthrough/steps/28/webapp/i18n/i18n.properties similarity index 100% rename from steps/28/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/28/webapp/i18n/i18n.properties diff --git a/steps/28/webapp/index-cdn.html b/packages/walkthrough/steps/28/webapp/index-cdn.html similarity index 100% rename from steps/28/webapp/index-cdn.html rename to packages/walkthrough/steps/28/webapp/index-cdn.html diff --git a/steps/28/webapp/index.html b/packages/walkthrough/steps/28/webapp/index.html similarity index 100% rename from steps/28/webapp/index.html rename to packages/walkthrough/steps/28/webapp/index.html diff --git a/steps/28/webapp/localService/metadata.xml b/packages/walkthrough/steps/28/webapp/localService/metadata.xml similarity index 100% rename from steps/28/webapp/localService/metadata.xml rename to packages/walkthrough/steps/28/webapp/localService/metadata.xml diff --git a/steps/28/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/28/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/28/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/28/webapp/localService/mockdata/Invoices.json diff --git a/steps/28/webapp/localService/mockserver.ts b/packages/walkthrough/steps/28/webapp/localService/mockserver.ts similarity index 100% rename from steps/28/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/28/webapp/localService/mockserver.ts diff --git a/steps/28/webapp/manifest.json b/packages/walkthrough/steps/28/webapp/manifest.json similarity index 100% rename from steps/28/webapp/manifest.json rename to packages/walkthrough/steps/28/webapp/manifest.json diff --git a/steps/28/webapp/model/formatter.ts b/packages/walkthrough/steps/28/webapp/model/formatter.ts similarity index 100% rename from steps/28/webapp/model/formatter.ts rename to packages/walkthrough/steps/28/webapp/model/formatter.ts diff --git a/steps/28/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/28/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/28/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/28/webapp/test/Test.cdn.qunit.html diff --git a/steps/28/webapp/test/Test.qunit.html b/packages/walkthrough/steps/28/webapp/test/Test.qunit.html similarity index 100% rename from steps/28/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/28/webapp/test/Test.qunit.html diff --git a/steps/28/webapp/test/initMockServer.ts b/packages/walkthrough/steps/28/webapp/test/initMockServer.ts similarity index 100% rename from steps/28/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/28/webapp/test/initMockServer.ts diff --git a/steps/28/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/28/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/28/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/28/webapp/test/integration/NavigationJourney.ts diff --git a/steps/28/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/28/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/28/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/28/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/28/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/28/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/28/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/28/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/28/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/28/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/28/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/28/webapp/test/mockServer-cdn.html diff --git a/steps/28/webapp/test/mockServer.html b/packages/walkthrough/steps/28/webapp/test/mockServer.html similarity index 100% rename from steps/28/webapp/test/mockServer.html rename to packages/walkthrough/steps/28/webapp/test/mockServer.html diff --git a/steps/28/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/28/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/28/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/28/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/28/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/28/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/28/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/28/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/28/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/28/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/28/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/28/webapp/test/testsuite.qunit.html diff --git a/steps/28/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/28/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/28/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/28/webapp/test/testsuite.qunit.ts diff --git a/steps/28/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/28/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/28/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/28/webapp/test/unit/model/formatter.ts diff --git a/steps/28/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/28/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/28/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/28/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/28/webapp/view/App.view.xml b/packages/walkthrough/steps/28/webapp/view/App.view.xml similarity index 100% rename from steps/28/webapp/view/App.view.xml rename to packages/walkthrough/steps/28/webapp/view/App.view.xml diff --git a/steps/28/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/28/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/28/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/28/webapp/view/HelloDialog.fragment.xml diff --git a/steps/28/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/28/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/28/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/28/webapp/view/HelloPanel.view.xml diff --git a/steps/28/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/28/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/28/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/28/webapp/view/InvoiceList.view.xml diff --git a/steps/29/README.md b/packages/walkthrough/steps/29/README.md similarity index 98% rename from steps/29/README.md rename to packages/walkthrough/steps/29/README.md index bd0500bef..dbeae3b27 100644 --- a/steps/29/README.md +++ b/packages/walkthrough/steps/29/README.md @@ -23,13 +23,13 @@ Luckily, OpenUI5 provides a couple of debugging tools that we can use within the
-You can download the solution for this step here: [šŸ“„ Download step 29](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-29.zip). +You can download the solution for this step here: [šŸ“„ Download step 29](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-29.zip).
-You can download the solution for this step here: [šŸ“„ Download step 29](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-29-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 29](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-29-js.zip).
diff --git a/steps/29/assets/loio34c4b02c74eb4848b8b720d86042bfdc_LowRes.png b/packages/walkthrough/steps/29/assets/loio34c4b02c74eb4848b8b720d86042bfdc_LowRes.png similarity index 100% rename from steps/29/assets/loio34c4b02c74eb4848b8b720d86042bfdc_LowRes.png rename to packages/walkthrough/steps/29/assets/loio34c4b02c74eb4848b8b720d86042bfdc_LowRes.png diff --git a/steps/29/assets/loio930de31b311f43ffa9df9261ca760da0_LowRes.png b/packages/walkthrough/steps/29/assets/loio930de31b311f43ffa9df9261ca760da0_LowRes.png similarity index 100% rename from steps/29/assets/loio930de31b311f43ffa9df9261ca760da0_LowRes.png rename to packages/walkthrough/steps/29/assets/loio930de31b311f43ffa9df9261ca760da0_LowRes.png diff --git a/steps/29/package.json b/packages/walkthrough/steps/29/package.json similarity index 93% rename from steps/29/package.json rename to packages/walkthrough/steps/29/package.json index a399b86cc..2e17e81e1 100644 --- a/steps/29/package.json +++ b/packages/walkthrough/steps/29/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/29/tsconfig.json b/packages/walkthrough/steps/29/tsconfig.json similarity index 100% rename from steps/29/tsconfig.json rename to packages/walkthrough/steps/29/tsconfig.json diff --git a/steps/29/ui5.yaml b/packages/walkthrough/steps/29/ui5.yaml similarity index 100% rename from steps/29/ui5.yaml rename to packages/walkthrough/steps/29/ui5.yaml diff --git a/steps/29/webapp/Component.ts b/packages/walkthrough/steps/29/webapp/Component.ts similarity index 100% rename from steps/29/webapp/Component.ts rename to packages/walkthrough/steps/29/webapp/Component.ts diff --git a/steps/29/webapp/controller/App.controller.ts b/packages/walkthrough/steps/29/webapp/controller/App.controller.ts similarity index 100% rename from steps/29/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/29/webapp/controller/App.controller.ts diff --git a/steps/29/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/29/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/29/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/29/webapp/controller/HelloPanel.controller.ts diff --git a/steps/29/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/29/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/29/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/29/webapp/controller/InvoiceList.controller.ts diff --git a/steps/29/webapp/css/style.css b/packages/walkthrough/steps/29/webapp/css/style.css similarity index 100% rename from steps/29/webapp/css/style.css rename to packages/walkthrough/steps/29/webapp/css/style.css diff --git a/steps/29/webapp/i18n/i18n.properties b/packages/walkthrough/steps/29/webapp/i18n/i18n.properties similarity index 100% rename from steps/29/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/29/webapp/i18n/i18n.properties diff --git a/steps/29/webapp/index-cdn.html b/packages/walkthrough/steps/29/webapp/index-cdn.html similarity index 100% rename from steps/29/webapp/index-cdn.html rename to packages/walkthrough/steps/29/webapp/index-cdn.html diff --git a/steps/29/webapp/index.html b/packages/walkthrough/steps/29/webapp/index.html similarity index 100% rename from steps/29/webapp/index.html rename to packages/walkthrough/steps/29/webapp/index.html diff --git a/steps/29/webapp/localService/metadata.xml b/packages/walkthrough/steps/29/webapp/localService/metadata.xml similarity index 100% rename from steps/29/webapp/localService/metadata.xml rename to packages/walkthrough/steps/29/webapp/localService/metadata.xml diff --git a/steps/29/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/29/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/29/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/29/webapp/localService/mockdata/Invoices.json diff --git a/steps/29/webapp/localService/mockserver.ts b/packages/walkthrough/steps/29/webapp/localService/mockserver.ts similarity index 100% rename from steps/29/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/29/webapp/localService/mockserver.ts diff --git a/steps/29/webapp/manifest.json b/packages/walkthrough/steps/29/webapp/manifest.json similarity index 100% rename from steps/29/webapp/manifest.json rename to packages/walkthrough/steps/29/webapp/manifest.json diff --git a/steps/29/webapp/model/formatter.ts b/packages/walkthrough/steps/29/webapp/model/formatter.ts similarity index 100% rename from steps/29/webapp/model/formatter.ts rename to packages/walkthrough/steps/29/webapp/model/formatter.ts diff --git a/steps/29/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/29/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/29/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/29/webapp/test/Test.cdn.qunit.html diff --git a/steps/29/webapp/test/Test.qunit.html b/packages/walkthrough/steps/29/webapp/test/Test.qunit.html similarity index 100% rename from steps/29/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/29/webapp/test/Test.qunit.html diff --git a/steps/29/webapp/test/initMockServer.ts b/packages/walkthrough/steps/29/webapp/test/initMockServer.ts similarity index 100% rename from steps/29/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/29/webapp/test/initMockServer.ts diff --git a/steps/29/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/29/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/29/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/29/webapp/test/integration/NavigationJourney.ts diff --git a/steps/29/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/29/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/29/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/29/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/29/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/29/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/29/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/29/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/29/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/29/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/29/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/29/webapp/test/mockServer-cdn.html diff --git a/steps/29/webapp/test/mockServer.html b/packages/walkthrough/steps/29/webapp/test/mockServer.html similarity index 100% rename from steps/29/webapp/test/mockServer.html rename to packages/walkthrough/steps/29/webapp/test/mockServer.html diff --git a/steps/29/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/29/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/29/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/29/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/29/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/29/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/29/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/29/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/29/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/29/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/29/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/29/webapp/test/testsuite.qunit.html diff --git a/steps/29/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/29/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/29/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/29/webapp/test/testsuite.qunit.ts diff --git a/steps/29/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/29/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/29/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/29/webapp/test/unit/model/formatter.ts diff --git a/steps/29/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/29/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/29/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/29/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/29/webapp/view/App.view.xml b/packages/walkthrough/steps/29/webapp/view/App.view.xml similarity index 100% rename from steps/29/webapp/view/App.view.xml rename to packages/walkthrough/steps/29/webapp/view/App.view.xml diff --git a/steps/29/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/29/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/29/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/29/webapp/view/HelloDialog.fragment.xml diff --git a/steps/29/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/29/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/29/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/29/webapp/view/HelloPanel.view.xml diff --git a/steps/29/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/29/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/29/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/29/webapp/view/InvoiceList.view.xml diff --git a/steps/30/README.md b/packages/walkthrough/steps/30/README.md similarity index 99% rename from steps/30/README.md rename to packages/walkthrough/steps/30/README.md index 4d42d1607..d0759927f 100644 --- a/steps/30/README.md +++ b/packages/walkthrough/steps/30/README.md @@ -15,7 +15,7 @@ In this step, we will use the OpenUI5 navigation features to load and show a sep *A second page is added to display the invoice* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 30](https://sap-samples.github.io/ui5-typescript-walkthrough/build/30/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 30](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/30/test/mockServer-cdn.html). *** @@ -24,13 +24,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 30](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-30.zip). +You can download the solution for this step here: [šŸ“„ Download step 30](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-30.zip).
-You can download the solution for this step here: [šŸ“„ Download step 30](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-30-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 30](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-30-js.zip).
*** diff --git a/steps/30/assets/loio94152a595fe24d45b12223e0abcccb9c_LowRes.png b/packages/walkthrough/steps/30/assets/loio94152a595fe24d45b12223e0abcccb9c_LowRes.png similarity index 100% rename from steps/30/assets/loio94152a595fe24d45b12223e0abcccb9c_LowRes.png rename to packages/walkthrough/steps/30/assets/loio94152a595fe24d45b12223e0abcccb9c_LowRes.png diff --git a/steps/30/package.json b/packages/walkthrough/steps/30/package.json similarity index 93% rename from steps/30/package.json rename to packages/walkthrough/steps/30/package.json index a4fe56e32..8a4a8fb0d 100644 --- a/steps/30/package.json +++ b/packages/walkthrough/steps/30/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/30/tsconfig.json b/packages/walkthrough/steps/30/tsconfig.json similarity index 100% rename from steps/30/tsconfig.json rename to packages/walkthrough/steps/30/tsconfig.json diff --git a/steps/30/ui5.yaml b/packages/walkthrough/steps/30/ui5.yaml similarity index 100% rename from steps/30/ui5.yaml rename to packages/walkthrough/steps/30/ui5.yaml diff --git a/steps/30/webapp/Component.ts b/packages/walkthrough/steps/30/webapp/Component.ts similarity index 100% rename from steps/30/webapp/Component.ts rename to packages/walkthrough/steps/30/webapp/Component.ts diff --git a/steps/30/webapp/controller/App.controller.ts b/packages/walkthrough/steps/30/webapp/controller/App.controller.ts similarity index 100% rename from steps/30/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/30/webapp/controller/App.controller.ts diff --git a/steps/30/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/30/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/30/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/30/webapp/controller/HelloPanel.controller.ts diff --git a/steps/30/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/30/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/30/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/30/webapp/controller/InvoiceList.controller.ts diff --git a/steps/30/webapp/css/style.css b/packages/walkthrough/steps/30/webapp/css/style.css similarity index 100% rename from steps/30/webapp/css/style.css rename to packages/walkthrough/steps/30/webapp/css/style.css diff --git a/steps/30/webapp/i18n/i18n.properties b/packages/walkthrough/steps/30/webapp/i18n/i18n.properties similarity index 100% rename from steps/30/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/30/webapp/i18n/i18n.properties diff --git a/steps/30/webapp/index-cdn.html b/packages/walkthrough/steps/30/webapp/index-cdn.html similarity index 100% rename from steps/30/webapp/index-cdn.html rename to packages/walkthrough/steps/30/webapp/index-cdn.html diff --git a/steps/30/webapp/index.html b/packages/walkthrough/steps/30/webapp/index.html similarity index 100% rename from steps/30/webapp/index.html rename to packages/walkthrough/steps/30/webapp/index.html diff --git a/steps/30/webapp/localService/metadata.xml b/packages/walkthrough/steps/30/webapp/localService/metadata.xml similarity index 100% rename from steps/30/webapp/localService/metadata.xml rename to packages/walkthrough/steps/30/webapp/localService/metadata.xml diff --git a/steps/30/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/30/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/30/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/30/webapp/localService/mockdata/Invoices.json diff --git a/steps/30/webapp/localService/mockserver.ts b/packages/walkthrough/steps/30/webapp/localService/mockserver.ts similarity index 100% rename from steps/30/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/30/webapp/localService/mockserver.ts diff --git a/steps/30/webapp/manifest.json b/packages/walkthrough/steps/30/webapp/manifest.json similarity index 100% rename from steps/30/webapp/manifest.json rename to packages/walkthrough/steps/30/webapp/manifest.json diff --git a/steps/30/webapp/model/formatter.ts b/packages/walkthrough/steps/30/webapp/model/formatter.ts similarity index 100% rename from steps/30/webapp/model/formatter.ts rename to packages/walkthrough/steps/30/webapp/model/formatter.ts diff --git a/steps/30/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/30/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/30/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/30/webapp/test/Test.cdn.qunit.html diff --git a/steps/30/webapp/test/Test.qunit.html b/packages/walkthrough/steps/30/webapp/test/Test.qunit.html similarity index 100% rename from steps/30/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/30/webapp/test/Test.qunit.html diff --git a/steps/30/webapp/test/initMockServer.ts b/packages/walkthrough/steps/30/webapp/test/initMockServer.ts similarity index 100% rename from steps/30/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/30/webapp/test/initMockServer.ts diff --git a/steps/30/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/30/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/30/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/30/webapp/test/integration/NavigationJourney.ts diff --git a/steps/30/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/30/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/30/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/30/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/30/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/30/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/30/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/30/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/30/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/30/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/30/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/30/webapp/test/mockServer-cdn.html diff --git a/steps/30/webapp/test/mockServer.html b/packages/walkthrough/steps/30/webapp/test/mockServer.html similarity index 100% rename from steps/30/webapp/test/mockServer.html rename to packages/walkthrough/steps/30/webapp/test/mockServer.html diff --git a/steps/30/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/30/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/30/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/30/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/30/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/30/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/30/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/30/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/30/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/30/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/30/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/30/webapp/test/testsuite.qunit.html diff --git a/steps/30/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/30/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/30/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/30/webapp/test/testsuite.qunit.ts diff --git a/steps/30/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/30/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/30/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/30/webapp/test/unit/model/formatter.ts diff --git a/steps/30/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/30/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/30/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/30/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/30/webapp/view/App.view.xml b/packages/walkthrough/steps/30/webapp/view/App.view.xml similarity index 100% rename from steps/30/webapp/view/App.view.xml rename to packages/walkthrough/steps/30/webapp/view/App.view.xml diff --git a/steps/30/webapp/view/Detail.view.xml b/packages/walkthrough/steps/30/webapp/view/Detail.view.xml similarity index 100% rename from steps/30/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/30/webapp/view/Detail.view.xml diff --git a/steps/30/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/30/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/30/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/30/webapp/view/HelloDialog.fragment.xml diff --git a/steps/30/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/30/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/30/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/30/webapp/view/HelloPanel.view.xml diff --git a/steps/30/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/30/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/30/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/30/webapp/view/InvoiceList.view.xml diff --git a/steps/30/webapp/view/Overview.view.xml b/packages/walkthrough/steps/30/webapp/view/Overview.view.xml similarity index 100% rename from steps/30/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/30/webapp/view/Overview.view.xml diff --git a/steps/31/README.md b/packages/walkthrough/steps/31/README.md similarity index 98% rename from steps/31/README.md rename to packages/walkthrough/steps/31/README.md index 6a05c784c..de0510804 100644 --- a/steps/31/README.md +++ b/packages/walkthrough/steps/31/README.md @@ -15,7 +15,7 @@ To make this work, we have to pass over the information which item has been sele *The selected invoice details are now shown in the details page* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 31](https://sap-samples.github.io/ui5-typescript-walkthrough/build/31/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 31](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/31/test/mockServer-cdn.html). *** @@ -23,13 +23,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 31](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-31.zip). +You can download the solution for this step here: [šŸ“„ Download step 31](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-31.zip).
-You can download the solution for this step here: [šŸ“„ Download step 31](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-31-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 31](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-31-js.zip).
diff --git a/steps/31/assets/loio31da9d48ae204c36a991146b90648c21_LowRes.png b/packages/walkthrough/steps/31/assets/loio31da9d48ae204c36a991146b90648c21_LowRes.png similarity index 100% rename from steps/31/assets/loio31da9d48ae204c36a991146b90648c21_LowRes.png rename to packages/walkthrough/steps/31/assets/loio31da9d48ae204c36a991146b90648c21_LowRes.png diff --git a/steps/31/package.json b/packages/walkthrough/steps/31/package.json similarity index 93% rename from steps/31/package.json rename to packages/walkthrough/steps/31/package.json index 089ae053f..90e61efce 100644 --- a/steps/31/package.json +++ b/packages/walkthrough/steps/31/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/31/tsconfig.json b/packages/walkthrough/steps/31/tsconfig.json similarity index 100% rename from steps/31/tsconfig.json rename to packages/walkthrough/steps/31/tsconfig.json diff --git a/steps/31/ui5.yaml b/packages/walkthrough/steps/31/ui5.yaml similarity index 100% rename from steps/31/ui5.yaml rename to packages/walkthrough/steps/31/ui5.yaml diff --git a/steps/31/webapp/Component.ts b/packages/walkthrough/steps/31/webapp/Component.ts similarity index 100% rename from steps/31/webapp/Component.ts rename to packages/walkthrough/steps/31/webapp/Component.ts diff --git a/steps/31/webapp/controller/App.controller.ts b/packages/walkthrough/steps/31/webapp/controller/App.controller.ts similarity index 100% rename from steps/31/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/31/webapp/controller/App.controller.ts diff --git a/steps/31/webapp/controller/Detail.controller.ts b/packages/walkthrough/steps/31/webapp/controller/Detail.controller.ts similarity index 100% rename from steps/31/webapp/controller/Detail.controller.ts rename to packages/walkthrough/steps/31/webapp/controller/Detail.controller.ts diff --git a/steps/31/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/31/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/31/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/31/webapp/controller/HelloPanel.controller.ts diff --git a/steps/31/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/31/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/31/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/31/webapp/controller/InvoiceList.controller.ts diff --git a/steps/31/webapp/css/style.css b/packages/walkthrough/steps/31/webapp/css/style.css similarity index 100% rename from steps/31/webapp/css/style.css rename to packages/walkthrough/steps/31/webapp/css/style.css diff --git a/steps/31/webapp/i18n/i18n.properties b/packages/walkthrough/steps/31/webapp/i18n/i18n.properties similarity index 100% rename from steps/31/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/31/webapp/i18n/i18n.properties diff --git a/steps/31/webapp/index-cdn.html b/packages/walkthrough/steps/31/webapp/index-cdn.html similarity index 100% rename from steps/31/webapp/index-cdn.html rename to packages/walkthrough/steps/31/webapp/index-cdn.html diff --git a/steps/31/webapp/index.html b/packages/walkthrough/steps/31/webapp/index.html similarity index 100% rename from steps/31/webapp/index.html rename to packages/walkthrough/steps/31/webapp/index.html diff --git a/steps/31/webapp/localService/metadata.xml b/packages/walkthrough/steps/31/webapp/localService/metadata.xml similarity index 100% rename from steps/31/webapp/localService/metadata.xml rename to packages/walkthrough/steps/31/webapp/localService/metadata.xml diff --git a/steps/31/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/31/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/31/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/31/webapp/localService/mockdata/Invoices.json diff --git a/steps/31/webapp/localService/mockserver.ts b/packages/walkthrough/steps/31/webapp/localService/mockserver.ts similarity index 100% rename from steps/31/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/31/webapp/localService/mockserver.ts diff --git a/steps/31/webapp/manifest.json b/packages/walkthrough/steps/31/webapp/manifest.json similarity index 100% rename from steps/31/webapp/manifest.json rename to packages/walkthrough/steps/31/webapp/manifest.json diff --git a/steps/31/webapp/model/formatter.ts b/packages/walkthrough/steps/31/webapp/model/formatter.ts similarity index 100% rename from steps/31/webapp/model/formatter.ts rename to packages/walkthrough/steps/31/webapp/model/formatter.ts diff --git a/steps/31/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/31/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/31/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/31/webapp/test/Test.cdn.qunit.html diff --git a/steps/31/webapp/test/Test.qunit.html b/packages/walkthrough/steps/31/webapp/test/Test.qunit.html similarity index 100% rename from steps/31/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/31/webapp/test/Test.qunit.html diff --git a/steps/31/webapp/test/initMockServer.ts b/packages/walkthrough/steps/31/webapp/test/initMockServer.ts similarity index 100% rename from steps/31/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/31/webapp/test/initMockServer.ts diff --git a/steps/31/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/31/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/31/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/31/webapp/test/integration/NavigationJourney.ts diff --git a/steps/31/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/31/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/31/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/31/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/31/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/31/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/31/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/31/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/31/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/31/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/31/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/31/webapp/test/mockServer-cdn.html diff --git a/steps/31/webapp/test/mockServer.html b/packages/walkthrough/steps/31/webapp/test/mockServer.html similarity index 100% rename from steps/31/webapp/test/mockServer.html rename to packages/walkthrough/steps/31/webapp/test/mockServer.html diff --git a/steps/31/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/31/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/31/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/31/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/31/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/31/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/31/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/31/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/31/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/31/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/31/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/31/webapp/test/testsuite.qunit.html diff --git a/steps/31/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/31/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/31/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/31/webapp/test/testsuite.qunit.ts diff --git a/steps/31/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/31/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/31/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/31/webapp/test/unit/model/formatter.ts diff --git a/steps/31/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/31/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/31/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/31/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/31/webapp/view/App.view.xml b/packages/walkthrough/steps/31/webapp/view/App.view.xml similarity index 100% rename from steps/31/webapp/view/App.view.xml rename to packages/walkthrough/steps/31/webapp/view/App.view.xml diff --git a/steps/31/webapp/view/Detail.view.xml b/packages/walkthrough/steps/31/webapp/view/Detail.view.xml similarity index 100% rename from steps/31/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/31/webapp/view/Detail.view.xml diff --git a/steps/31/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/31/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/31/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/31/webapp/view/HelloDialog.fragment.xml diff --git a/steps/31/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/31/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/31/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/31/webapp/view/HelloPanel.view.xml diff --git a/steps/31/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/31/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/31/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/31/webapp/view/InvoiceList.view.xml diff --git a/steps/31/webapp/view/Overview.view.xml b/packages/walkthrough/steps/31/webapp/view/Overview.view.xml similarity index 100% rename from steps/31/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/31/webapp/view/Overview.view.xml diff --git a/steps/32/README.md b/packages/walkthrough/steps/32/README.md similarity index 97% rename from steps/32/README.md rename to packages/walkthrough/steps/32/README.md index 81d9faf90..a442e0e07 100644 --- a/steps/32/README.md +++ b/packages/walkthrough/steps/32/README.md @@ -13,7 +13,7 @@ Now we can navigate to our detail page and display an invoice, but we cannot go *A back button is now displayed on the detail page* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 32](https://sap-samples.github.io/ui5-typescript-walkthrough/build/32/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 32](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/32/test/mockServer-cdn.html). *** @@ -21,13 +21,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 32](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-32.zip). +You can download the solution for this step here: [šŸ“„ Download step 32](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-32.zip).
-You can download the solution for this step here: [šŸ“„ Download step 32](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-32-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 32](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-32-js.zip).
diff --git a/steps/32/assets/loio33a8341077bb458685274c64d2317f6b_LowRes.png b/packages/walkthrough/steps/32/assets/loio33a8341077bb458685274c64d2317f6b_LowRes.png similarity index 100% rename from steps/32/assets/loio33a8341077bb458685274c64d2317f6b_LowRes.png rename to packages/walkthrough/steps/32/assets/loio33a8341077bb458685274c64d2317f6b_LowRes.png diff --git a/steps/32/package.json b/packages/walkthrough/steps/32/package.json similarity index 93% rename from steps/32/package.json rename to packages/walkthrough/steps/32/package.json index e0f6e0af1..aadd72c91 100644 --- a/steps/32/package.json +++ b/packages/walkthrough/steps/32/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "typescript": "^5.9.3", "ui5-middleware-livereload": "^3.3.0", diff --git a/steps/32/tsconfig.json b/packages/walkthrough/steps/32/tsconfig.json similarity index 100% rename from steps/32/tsconfig.json rename to packages/walkthrough/steps/32/tsconfig.json diff --git a/steps/32/ui5.yaml b/packages/walkthrough/steps/32/ui5.yaml similarity index 100% rename from steps/32/ui5.yaml rename to packages/walkthrough/steps/32/ui5.yaml diff --git a/steps/32/webapp/Component.ts b/packages/walkthrough/steps/32/webapp/Component.ts similarity index 100% rename from steps/32/webapp/Component.ts rename to packages/walkthrough/steps/32/webapp/Component.ts diff --git a/steps/32/webapp/controller/App.controller.ts b/packages/walkthrough/steps/32/webapp/controller/App.controller.ts similarity index 100% rename from steps/32/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/32/webapp/controller/App.controller.ts diff --git a/steps/32/webapp/controller/Detail.controller.ts b/packages/walkthrough/steps/32/webapp/controller/Detail.controller.ts similarity index 100% rename from steps/32/webapp/controller/Detail.controller.ts rename to packages/walkthrough/steps/32/webapp/controller/Detail.controller.ts diff --git a/steps/32/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/32/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/32/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/32/webapp/controller/HelloPanel.controller.ts diff --git a/steps/32/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/32/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/32/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/32/webapp/controller/InvoiceList.controller.ts diff --git a/steps/32/webapp/css/style.css b/packages/walkthrough/steps/32/webapp/css/style.css similarity index 100% rename from steps/32/webapp/css/style.css rename to packages/walkthrough/steps/32/webapp/css/style.css diff --git a/steps/32/webapp/i18n/i18n.properties b/packages/walkthrough/steps/32/webapp/i18n/i18n.properties similarity index 100% rename from steps/32/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/32/webapp/i18n/i18n.properties diff --git a/steps/32/webapp/index-cdn.html b/packages/walkthrough/steps/32/webapp/index-cdn.html similarity index 100% rename from steps/32/webapp/index-cdn.html rename to packages/walkthrough/steps/32/webapp/index-cdn.html diff --git a/steps/32/webapp/index.html b/packages/walkthrough/steps/32/webapp/index.html similarity index 100% rename from steps/32/webapp/index.html rename to packages/walkthrough/steps/32/webapp/index.html diff --git a/steps/32/webapp/localService/metadata.xml b/packages/walkthrough/steps/32/webapp/localService/metadata.xml similarity index 100% rename from steps/32/webapp/localService/metadata.xml rename to packages/walkthrough/steps/32/webapp/localService/metadata.xml diff --git a/steps/32/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/32/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/32/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/32/webapp/localService/mockdata/Invoices.json diff --git a/steps/32/webapp/localService/mockserver.ts b/packages/walkthrough/steps/32/webapp/localService/mockserver.ts similarity index 100% rename from steps/32/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/32/webapp/localService/mockserver.ts diff --git a/steps/32/webapp/manifest.json b/packages/walkthrough/steps/32/webapp/manifest.json similarity index 100% rename from steps/32/webapp/manifest.json rename to packages/walkthrough/steps/32/webapp/manifest.json diff --git a/steps/32/webapp/model/formatter.ts b/packages/walkthrough/steps/32/webapp/model/formatter.ts similarity index 100% rename from steps/32/webapp/model/formatter.ts rename to packages/walkthrough/steps/32/webapp/model/formatter.ts diff --git a/steps/32/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/32/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/32/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/32/webapp/test/Test.cdn.qunit.html diff --git a/steps/32/webapp/test/Test.qunit.html b/packages/walkthrough/steps/32/webapp/test/Test.qunit.html similarity index 100% rename from steps/32/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/32/webapp/test/Test.qunit.html diff --git a/steps/32/webapp/test/initMockServer.ts b/packages/walkthrough/steps/32/webapp/test/initMockServer.ts similarity index 100% rename from steps/32/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/32/webapp/test/initMockServer.ts diff --git a/steps/32/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/32/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/32/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/32/webapp/test/integration/NavigationJourney.ts diff --git a/steps/32/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/32/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/32/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/32/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/32/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/32/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/32/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/32/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/32/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/32/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/32/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/32/webapp/test/mockServer-cdn.html diff --git a/steps/32/webapp/test/mockServer.html b/packages/walkthrough/steps/32/webapp/test/mockServer.html similarity index 100% rename from steps/32/webapp/test/mockServer.html rename to packages/walkthrough/steps/32/webapp/test/mockServer.html diff --git a/steps/32/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/32/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/32/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/32/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/32/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/32/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/32/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/32/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/32/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/32/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/32/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/32/webapp/test/testsuite.qunit.html diff --git a/steps/32/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/32/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/32/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/32/webapp/test/testsuite.qunit.ts diff --git a/steps/32/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/32/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/32/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/32/webapp/test/unit/model/formatter.ts diff --git a/steps/32/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/32/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/32/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/32/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/32/webapp/view/App.view.xml b/packages/walkthrough/steps/32/webapp/view/App.view.xml similarity index 100% rename from steps/32/webapp/view/App.view.xml rename to packages/walkthrough/steps/32/webapp/view/App.view.xml diff --git a/steps/32/webapp/view/Detail.view.xml b/packages/walkthrough/steps/32/webapp/view/Detail.view.xml similarity index 100% rename from steps/32/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/32/webapp/view/Detail.view.xml diff --git a/steps/32/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/32/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/32/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/32/webapp/view/HelloDialog.fragment.xml diff --git a/steps/32/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/32/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/32/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/32/webapp/view/HelloPanel.view.xml diff --git a/steps/32/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/32/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/32/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/32/webapp/view/InvoiceList.view.xml diff --git a/steps/32/webapp/view/Overview.view.xml b/packages/walkthrough/steps/32/webapp/view/Overview.view.xml similarity index 100% rename from steps/32/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/32/webapp/view/Overview.view.xml diff --git a/steps/33/README.md b/packages/walkthrough/steps/33/README.md similarity index 99% rename from steps/33/README.md rename to packages/walkthrough/steps/33/README.md index 0e2be8156..77b3281e1 100644 --- a/steps/33/README.md +++ b/packages/walkthrough/steps/33/README.md @@ -12,20 +12,20 @@ In this step, we are going to extend the functionality of OpenUI5 with a custom *A custom product rating control is added to the detail page* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 33](https://sap-samples.github.io/ui5-typescript-walkthrough/build/33/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 33](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/33/test/mockServer-cdn.html). *** ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 33](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-33.zip). +You can download the solution for this step here: [šŸ“„ Download step 33](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-33.zip).
-You can download the solution for this step here: [šŸ“„ Download step 33](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-33-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 33](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-33-js.zip).
*** diff --git a/steps/33/assets/loio21dd14c37b67473b817c8865f168f668_LowRes.png b/packages/walkthrough/steps/33/assets/loio21dd14c37b67473b817c8865f168f668_LowRes.png similarity index 100% rename from steps/33/assets/loio21dd14c37b67473b817c8865f168f668_LowRes.png rename to packages/walkthrough/steps/33/assets/loio21dd14c37b67473b817c8865f168f668_LowRes.png diff --git a/steps/33/package.json b/packages/walkthrough/steps/33/package.json similarity index 94% rename from steps/33/package.json rename to packages/walkthrough/steps/33/package.json index d633a367c..66f4fff9f 100644 --- a/steps/33/package.json +++ b/packages/walkthrough/steps/33/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", diff --git a/steps/33/tsconfig.json b/packages/walkthrough/steps/33/tsconfig.json similarity index 100% rename from steps/33/tsconfig.json rename to packages/walkthrough/steps/33/tsconfig.json diff --git a/steps/33/ui5.yaml b/packages/walkthrough/steps/33/ui5.yaml similarity index 100% rename from steps/33/ui5.yaml rename to packages/walkthrough/steps/33/ui5.yaml diff --git a/steps/33/webapp/Component.ts b/packages/walkthrough/steps/33/webapp/Component.ts similarity index 100% rename from steps/33/webapp/Component.ts rename to packages/walkthrough/steps/33/webapp/Component.ts diff --git a/steps/33/webapp/control/ProductRating.gen.d.ts b/packages/walkthrough/steps/33/webapp/control/ProductRating.gen.d.ts similarity index 100% rename from steps/33/webapp/control/ProductRating.gen.d.ts rename to packages/walkthrough/steps/33/webapp/control/ProductRating.gen.d.ts diff --git a/steps/33/webapp/control/ProductRating.ts b/packages/walkthrough/steps/33/webapp/control/ProductRating.ts similarity index 100% rename from steps/33/webapp/control/ProductRating.ts rename to packages/walkthrough/steps/33/webapp/control/ProductRating.ts diff --git a/steps/33/webapp/controller/App.controller.ts b/packages/walkthrough/steps/33/webapp/controller/App.controller.ts similarity index 100% rename from steps/33/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/33/webapp/controller/App.controller.ts diff --git a/steps/33/webapp/controller/Detail.controller.ts b/packages/walkthrough/steps/33/webapp/controller/Detail.controller.ts similarity index 100% rename from steps/33/webapp/controller/Detail.controller.ts rename to packages/walkthrough/steps/33/webapp/controller/Detail.controller.ts diff --git a/steps/33/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/33/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/33/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/33/webapp/controller/HelloPanel.controller.ts diff --git a/steps/33/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/33/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/33/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/33/webapp/controller/InvoiceList.controller.ts diff --git a/steps/33/webapp/css/style.css b/packages/walkthrough/steps/33/webapp/css/style.css similarity index 100% rename from steps/33/webapp/css/style.css rename to packages/walkthrough/steps/33/webapp/css/style.css diff --git a/steps/33/webapp/i18n/i18n.properties b/packages/walkthrough/steps/33/webapp/i18n/i18n.properties similarity index 100% rename from steps/33/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/33/webapp/i18n/i18n.properties diff --git a/steps/33/webapp/index-cdn.html b/packages/walkthrough/steps/33/webapp/index-cdn.html similarity index 100% rename from steps/33/webapp/index-cdn.html rename to packages/walkthrough/steps/33/webapp/index-cdn.html diff --git a/steps/33/webapp/index.html b/packages/walkthrough/steps/33/webapp/index.html similarity index 100% rename from steps/33/webapp/index.html rename to packages/walkthrough/steps/33/webapp/index.html diff --git a/steps/33/webapp/localService/metadata.xml b/packages/walkthrough/steps/33/webapp/localService/metadata.xml similarity index 100% rename from steps/33/webapp/localService/metadata.xml rename to packages/walkthrough/steps/33/webapp/localService/metadata.xml diff --git a/steps/33/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/33/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/33/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/33/webapp/localService/mockdata/Invoices.json diff --git a/steps/33/webapp/localService/mockserver.ts b/packages/walkthrough/steps/33/webapp/localService/mockserver.ts similarity index 100% rename from steps/33/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/33/webapp/localService/mockserver.ts diff --git a/steps/33/webapp/manifest.json b/packages/walkthrough/steps/33/webapp/manifest.json similarity index 100% rename from steps/33/webapp/manifest.json rename to packages/walkthrough/steps/33/webapp/manifest.json diff --git a/steps/33/webapp/model/formatter.ts b/packages/walkthrough/steps/33/webapp/model/formatter.ts similarity index 100% rename from steps/33/webapp/model/formatter.ts rename to packages/walkthrough/steps/33/webapp/model/formatter.ts diff --git a/steps/33/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/33/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/33/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/33/webapp/test/Test.cdn.qunit.html diff --git a/steps/33/webapp/test/Test.qunit.html b/packages/walkthrough/steps/33/webapp/test/Test.qunit.html similarity index 100% rename from steps/33/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/33/webapp/test/Test.qunit.html diff --git a/steps/33/webapp/test/initMockServer.ts b/packages/walkthrough/steps/33/webapp/test/initMockServer.ts similarity index 100% rename from steps/33/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/33/webapp/test/initMockServer.ts diff --git a/steps/33/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/33/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/33/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/33/webapp/test/integration/NavigationJourney.ts diff --git a/steps/33/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/33/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/33/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/33/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/33/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/33/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/33/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/33/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/33/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/33/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/33/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/33/webapp/test/mockServer-cdn.html diff --git a/steps/33/webapp/test/mockServer.html b/packages/walkthrough/steps/33/webapp/test/mockServer.html similarity index 100% rename from steps/33/webapp/test/mockServer.html rename to packages/walkthrough/steps/33/webapp/test/mockServer.html diff --git a/steps/33/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/33/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/33/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/33/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/33/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/33/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/33/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/33/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/33/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/33/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/33/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/33/webapp/test/testsuite.qunit.html diff --git a/steps/33/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/33/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/33/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/33/webapp/test/testsuite.qunit.ts diff --git a/steps/33/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/33/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/33/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/33/webapp/test/unit/model/formatter.ts diff --git a/steps/33/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/33/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/33/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/33/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/33/webapp/view/App.view.xml b/packages/walkthrough/steps/33/webapp/view/App.view.xml similarity index 100% rename from steps/33/webapp/view/App.view.xml rename to packages/walkthrough/steps/33/webapp/view/App.view.xml diff --git a/steps/33/webapp/view/Detail.view.xml b/packages/walkthrough/steps/33/webapp/view/Detail.view.xml similarity index 100% rename from steps/33/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/33/webapp/view/Detail.view.xml diff --git a/steps/33/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/33/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/33/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/33/webapp/view/HelloDialog.fragment.xml diff --git a/steps/33/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/33/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/33/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/33/webapp/view/HelloPanel.view.xml diff --git a/steps/33/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/33/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/33/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/33/webapp/view/InvoiceList.view.xml diff --git a/steps/33/webapp/view/Overview.view.xml b/packages/walkthrough/steps/33/webapp/view/Overview.view.xml similarity index 100% rename from steps/33/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/33/webapp/view/Overview.view.xml diff --git a/steps/34/README.md b/packages/walkthrough/steps/34/README.md similarity index 98% rename from steps/34/README.md rename to packages/walkthrough/steps/34/README.md index 98fdb3994..9eb1b040e 100644 --- a/steps/34/README.md +++ b/packages/walkthrough/steps/34/README.md @@ -13,7 +13,7 @@ In this step, we improve the responsiveness of our app. OpenUI5 applications can *A responsive table is hiding some of the columns on small devices* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 34](https://sap-samples.github.io/ui5-typescript-walkthrough/build/34/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 34](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/34/test/mockServer-cdn.html). *** @@ -21,13 +21,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 34](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-34.zip). +You can download the solution for this step here: [šŸ“„ Download step 34](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-34.zip).
-You can download the solution for this step here: [šŸ“„ Download step 34](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-34-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 34](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-34-js.zip).
*** diff --git a/steps/34/assets/loiocc3f2e0d8ac6471288af6495836c2f07_LowRes.png b/packages/walkthrough/steps/34/assets/loiocc3f2e0d8ac6471288af6495836c2f07_LowRes.png similarity index 100% rename from steps/34/assets/loiocc3f2e0d8ac6471288af6495836c2f07_LowRes.png rename to packages/walkthrough/steps/34/assets/loiocc3f2e0d8ac6471288af6495836c2f07_LowRes.png diff --git a/steps/34/package.json b/packages/walkthrough/steps/34/package.json similarity index 94% rename from steps/34/package.json rename to packages/walkthrough/steps/34/package.json index 75506ae60..f62ab2478 100644 --- a/steps/34/package.json +++ b/packages/walkthrough/steps/34/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", diff --git a/steps/34/tsconfig.json b/packages/walkthrough/steps/34/tsconfig.json similarity index 100% rename from steps/34/tsconfig.json rename to packages/walkthrough/steps/34/tsconfig.json diff --git a/steps/34/ui5.yaml b/packages/walkthrough/steps/34/ui5.yaml similarity index 100% rename from steps/34/ui5.yaml rename to packages/walkthrough/steps/34/ui5.yaml diff --git a/steps/34/webapp/Component.ts b/packages/walkthrough/steps/34/webapp/Component.ts similarity index 100% rename from steps/34/webapp/Component.ts rename to packages/walkthrough/steps/34/webapp/Component.ts diff --git a/steps/34/webapp/control/ProductRating.gen.d.ts b/packages/walkthrough/steps/34/webapp/control/ProductRating.gen.d.ts similarity index 100% rename from steps/34/webapp/control/ProductRating.gen.d.ts rename to packages/walkthrough/steps/34/webapp/control/ProductRating.gen.d.ts diff --git a/steps/34/webapp/control/ProductRating.ts b/packages/walkthrough/steps/34/webapp/control/ProductRating.ts similarity index 100% rename from steps/34/webapp/control/ProductRating.ts rename to packages/walkthrough/steps/34/webapp/control/ProductRating.ts diff --git a/steps/34/webapp/controller/App.controller.ts b/packages/walkthrough/steps/34/webapp/controller/App.controller.ts similarity index 100% rename from steps/34/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/34/webapp/controller/App.controller.ts diff --git a/steps/34/webapp/controller/Detail.controller.ts b/packages/walkthrough/steps/34/webapp/controller/Detail.controller.ts similarity index 100% rename from steps/34/webapp/controller/Detail.controller.ts rename to packages/walkthrough/steps/34/webapp/controller/Detail.controller.ts diff --git a/steps/34/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/34/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/34/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/34/webapp/controller/HelloPanel.controller.ts diff --git a/steps/34/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/34/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/34/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/34/webapp/controller/InvoiceList.controller.ts diff --git a/steps/34/webapp/css/style.css b/packages/walkthrough/steps/34/webapp/css/style.css similarity index 100% rename from steps/34/webapp/css/style.css rename to packages/walkthrough/steps/34/webapp/css/style.css diff --git a/steps/34/webapp/i18n/i18n.properties b/packages/walkthrough/steps/34/webapp/i18n/i18n.properties similarity index 100% rename from steps/34/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/34/webapp/i18n/i18n.properties diff --git a/steps/34/webapp/index-cdn.html b/packages/walkthrough/steps/34/webapp/index-cdn.html similarity index 100% rename from steps/34/webapp/index-cdn.html rename to packages/walkthrough/steps/34/webapp/index-cdn.html diff --git a/steps/34/webapp/index.html b/packages/walkthrough/steps/34/webapp/index.html similarity index 100% rename from steps/34/webapp/index.html rename to packages/walkthrough/steps/34/webapp/index.html diff --git a/steps/34/webapp/localService/metadata.xml b/packages/walkthrough/steps/34/webapp/localService/metadata.xml similarity index 100% rename from steps/34/webapp/localService/metadata.xml rename to packages/walkthrough/steps/34/webapp/localService/metadata.xml diff --git a/steps/34/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/34/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/34/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/34/webapp/localService/mockdata/Invoices.json diff --git a/steps/34/webapp/localService/mockserver.ts b/packages/walkthrough/steps/34/webapp/localService/mockserver.ts similarity index 100% rename from steps/34/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/34/webapp/localService/mockserver.ts diff --git a/steps/34/webapp/manifest.json b/packages/walkthrough/steps/34/webapp/manifest.json similarity index 100% rename from steps/34/webapp/manifest.json rename to packages/walkthrough/steps/34/webapp/manifest.json diff --git a/steps/34/webapp/model/formatter.ts b/packages/walkthrough/steps/34/webapp/model/formatter.ts similarity index 100% rename from steps/34/webapp/model/formatter.ts rename to packages/walkthrough/steps/34/webapp/model/formatter.ts diff --git a/steps/34/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/34/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/34/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/34/webapp/test/Test.cdn.qunit.html diff --git a/steps/34/webapp/test/Test.qunit.html b/packages/walkthrough/steps/34/webapp/test/Test.qunit.html similarity index 100% rename from steps/34/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/34/webapp/test/Test.qunit.html diff --git a/steps/34/webapp/test/initMockServer.ts b/packages/walkthrough/steps/34/webapp/test/initMockServer.ts similarity index 100% rename from steps/34/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/34/webapp/test/initMockServer.ts diff --git a/steps/34/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/34/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/34/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/34/webapp/test/integration/NavigationJourney.ts diff --git a/steps/34/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/34/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/34/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/34/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/34/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/34/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/34/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/34/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/34/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/34/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/34/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/34/webapp/test/mockServer-cdn.html diff --git a/steps/34/webapp/test/mockServer.html b/packages/walkthrough/steps/34/webapp/test/mockServer.html similarity index 100% rename from steps/34/webapp/test/mockServer.html rename to packages/walkthrough/steps/34/webapp/test/mockServer.html diff --git a/steps/34/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/34/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/34/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/34/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/34/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/34/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/34/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/34/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/34/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/34/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/34/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/34/webapp/test/testsuite.qunit.html diff --git a/steps/34/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/34/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/34/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/34/webapp/test/testsuite.qunit.ts diff --git a/steps/34/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/34/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/34/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/34/webapp/test/unit/model/formatter.ts diff --git a/steps/34/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/34/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/34/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/34/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/34/webapp/view/App.view.xml b/packages/walkthrough/steps/34/webapp/view/App.view.xml similarity index 100% rename from steps/34/webapp/view/App.view.xml rename to packages/walkthrough/steps/34/webapp/view/App.view.xml diff --git a/steps/34/webapp/view/Detail.view.xml b/packages/walkthrough/steps/34/webapp/view/Detail.view.xml similarity index 100% rename from steps/34/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/34/webapp/view/Detail.view.xml diff --git a/steps/34/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/34/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/34/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/34/webapp/view/HelloDialog.fragment.xml diff --git a/steps/34/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/34/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/34/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/34/webapp/view/HelloPanel.view.xml diff --git a/steps/34/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/34/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/34/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/34/webapp/view/InvoiceList.view.xml diff --git a/steps/34/webapp/view/Overview.view.xml b/packages/walkthrough/steps/34/webapp/view/Overview.view.xml similarity index 100% rename from steps/34/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/34/webapp/view/Overview.view.xml diff --git a/steps/35/README.md b/packages/walkthrough/steps/35/README.md similarity index 98% rename from steps/35/README.md rename to packages/walkthrough/steps/35/README.md index 3b83a7c68..399b74067 100644 --- a/steps/35/README.md +++ b/packages/walkthrough/steps/35/README.md @@ -12,20 +12,20 @@ We now configure the visibility and properties of controls based on the device t *On phone devices, the panel is collapsed to save screen space and a button is hidden* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 35](https://sap-samples.github.io/ui5-typescript-walkthrough/build/35/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 35](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/35/test/mockServer-cdn.html). *** ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 35](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-35.zip). +You can download the solution for this step here: [šŸ“„ Download step 35](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-35.zip).
-You can download the solution for this step here: [šŸ“„ Download step 35](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-35-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 35](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-35-js.zip).
*** diff --git a/steps/35/assets/loio0b0d57e04e574d7fbc4b10395e6cb260_LowRes.png b/packages/walkthrough/steps/35/assets/loio0b0d57e04e574d7fbc4b10395e6cb260_LowRes.png similarity index 100% rename from steps/35/assets/loio0b0d57e04e574d7fbc4b10395e6cb260_LowRes.png rename to packages/walkthrough/steps/35/assets/loio0b0d57e04e574d7fbc4b10395e6cb260_LowRes.png diff --git a/steps/35/package.json b/packages/walkthrough/steps/35/package.json similarity index 94% rename from steps/35/package.json rename to packages/walkthrough/steps/35/package.json index 3ae3a7ef3..76905a649 100644 --- a/steps/35/package.json +++ b/packages/walkthrough/steps/35/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", diff --git a/steps/35/tsconfig.json b/packages/walkthrough/steps/35/tsconfig.json similarity index 100% rename from steps/35/tsconfig.json rename to packages/walkthrough/steps/35/tsconfig.json diff --git a/steps/35/ui5.yaml b/packages/walkthrough/steps/35/ui5.yaml similarity index 100% rename from steps/35/ui5.yaml rename to packages/walkthrough/steps/35/ui5.yaml diff --git a/steps/35/webapp/Component.ts b/packages/walkthrough/steps/35/webapp/Component.ts similarity index 100% rename from steps/35/webapp/Component.ts rename to packages/walkthrough/steps/35/webapp/Component.ts diff --git a/steps/35/webapp/control/ProductRating.gen.d.ts b/packages/walkthrough/steps/35/webapp/control/ProductRating.gen.d.ts similarity index 100% rename from steps/35/webapp/control/ProductRating.gen.d.ts rename to packages/walkthrough/steps/35/webapp/control/ProductRating.gen.d.ts diff --git a/steps/35/webapp/control/ProductRating.ts b/packages/walkthrough/steps/35/webapp/control/ProductRating.ts similarity index 100% rename from steps/35/webapp/control/ProductRating.ts rename to packages/walkthrough/steps/35/webapp/control/ProductRating.ts diff --git a/steps/35/webapp/controller/App.controller.ts b/packages/walkthrough/steps/35/webapp/controller/App.controller.ts similarity index 100% rename from steps/35/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/35/webapp/controller/App.controller.ts diff --git a/steps/35/webapp/controller/Detail.controller.ts b/packages/walkthrough/steps/35/webapp/controller/Detail.controller.ts similarity index 100% rename from steps/35/webapp/controller/Detail.controller.ts rename to packages/walkthrough/steps/35/webapp/controller/Detail.controller.ts diff --git a/steps/35/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/35/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/35/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/35/webapp/controller/HelloPanel.controller.ts diff --git a/steps/35/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/35/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/35/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/35/webapp/controller/InvoiceList.controller.ts diff --git a/steps/35/webapp/css/style.css b/packages/walkthrough/steps/35/webapp/css/style.css similarity index 100% rename from steps/35/webapp/css/style.css rename to packages/walkthrough/steps/35/webapp/css/style.css diff --git a/steps/35/webapp/i18n/i18n.properties b/packages/walkthrough/steps/35/webapp/i18n/i18n.properties similarity index 100% rename from steps/35/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/35/webapp/i18n/i18n.properties diff --git a/steps/35/webapp/index-cdn.html b/packages/walkthrough/steps/35/webapp/index-cdn.html similarity index 100% rename from steps/35/webapp/index-cdn.html rename to packages/walkthrough/steps/35/webapp/index-cdn.html diff --git a/steps/35/webapp/index.html b/packages/walkthrough/steps/35/webapp/index.html similarity index 100% rename from steps/35/webapp/index.html rename to packages/walkthrough/steps/35/webapp/index.html diff --git a/steps/35/webapp/localService/metadata.xml b/packages/walkthrough/steps/35/webapp/localService/metadata.xml similarity index 100% rename from steps/35/webapp/localService/metadata.xml rename to packages/walkthrough/steps/35/webapp/localService/metadata.xml diff --git a/steps/35/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/35/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/35/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/35/webapp/localService/mockdata/Invoices.json diff --git a/steps/35/webapp/localService/mockserver.ts b/packages/walkthrough/steps/35/webapp/localService/mockserver.ts similarity index 100% rename from steps/35/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/35/webapp/localService/mockserver.ts diff --git a/steps/35/webapp/manifest.json b/packages/walkthrough/steps/35/webapp/manifest.json similarity index 100% rename from steps/35/webapp/manifest.json rename to packages/walkthrough/steps/35/webapp/manifest.json diff --git a/steps/35/webapp/model/formatter.ts b/packages/walkthrough/steps/35/webapp/model/formatter.ts similarity index 100% rename from steps/35/webapp/model/formatter.ts rename to packages/walkthrough/steps/35/webapp/model/formatter.ts diff --git a/steps/35/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/35/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/35/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/35/webapp/test/Test.cdn.qunit.html diff --git a/steps/35/webapp/test/Test.qunit.html b/packages/walkthrough/steps/35/webapp/test/Test.qunit.html similarity index 100% rename from steps/35/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/35/webapp/test/Test.qunit.html diff --git a/steps/35/webapp/test/initMockServer.ts b/packages/walkthrough/steps/35/webapp/test/initMockServer.ts similarity index 100% rename from steps/35/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/35/webapp/test/initMockServer.ts diff --git a/steps/35/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/35/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/35/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/35/webapp/test/integration/NavigationJourney.ts diff --git a/steps/35/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/35/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/35/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/35/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/35/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/35/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/35/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/35/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/35/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/35/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/35/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/35/webapp/test/mockServer-cdn.html diff --git a/steps/35/webapp/test/mockServer.html b/packages/walkthrough/steps/35/webapp/test/mockServer.html similarity index 100% rename from steps/35/webapp/test/mockServer.html rename to packages/walkthrough/steps/35/webapp/test/mockServer.html diff --git a/steps/35/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/35/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/35/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/35/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/35/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/35/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/35/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/35/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/35/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/35/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/35/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/35/webapp/test/testsuite.qunit.html diff --git a/steps/35/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/35/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/35/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/35/webapp/test/testsuite.qunit.ts diff --git a/steps/35/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/35/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/35/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/35/webapp/test/unit/model/formatter.ts diff --git a/steps/35/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/35/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/35/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/35/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/35/webapp/view/App.view.xml b/packages/walkthrough/steps/35/webapp/view/App.view.xml similarity index 100% rename from steps/35/webapp/view/App.view.xml rename to packages/walkthrough/steps/35/webapp/view/App.view.xml diff --git a/steps/35/webapp/view/Detail.view.xml b/packages/walkthrough/steps/35/webapp/view/Detail.view.xml similarity index 100% rename from steps/35/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/35/webapp/view/Detail.view.xml diff --git a/steps/35/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/35/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/35/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/35/webapp/view/HelloDialog.fragment.xml diff --git a/steps/35/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/35/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/35/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/35/webapp/view/HelloPanel.view.xml diff --git a/steps/35/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/35/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/35/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/35/webapp/view/InvoiceList.view.xml diff --git a/steps/35/webapp/view/Overview.view.xml b/packages/walkthrough/steps/35/webapp/view/Overview.view.xml similarity index 100% rename from steps/35/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/35/webapp/view/Overview.view.xml diff --git a/steps/36/README.md b/packages/walkthrough/steps/36/README.md similarity index 97% rename from steps/36/README.md rename to packages/walkthrough/steps/36/README.md index 5b61bf44d..8545fec27 100644 --- a/steps/36/README.md +++ b/packages/walkthrough/steps/36/README.md @@ -12,20 +12,20 @@ In this step of our Walkthrough tutorial, we adjust the content density based on *The content density is compact on devices without a touch screen and cozy on touch-enabled devices* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 36](https://sap-samples.github.io/ui5-typescript-walkthrough/build/36/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 36](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/36/test/mockServer-cdn.html). *** ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 36](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-36.zip). +You can download the solution for this step here: [šŸ“„ Download step 36](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-36.zip).
-You can download the solution for this step here: [šŸ“„ Download step 36](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-36-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 36](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-36-js.zip).
*** diff --git a/steps/36/assets/loiof216b131c492448d8a1df25db2b9a26d_LowRes.png b/packages/walkthrough/steps/36/assets/loiof216b131c492448d8a1df25db2b9a26d_LowRes.png similarity index 100% rename from steps/36/assets/loiof216b131c492448d8a1df25db2b9a26d_LowRes.png rename to packages/walkthrough/steps/36/assets/loiof216b131c492448d8a1df25db2b9a26d_LowRes.png diff --git a/steps/36/package.json b/packages/walkthrough/steps/36/package.json similarity index 94% rename from steps/36/package.json rename to packages/walkthrough/steps/36/package.json index 1d312c46a..829e73660 100644 --- a/steps/36/package.json +++ b/packages/walkthrough/steps/36/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", diff --git a/steps/36/tsconfig.json b/packages/walkthrough/steps/36/tsconfig.json similarity index 100% rename from steps/36/tsconfig.json rename to packages/walkthrough/steps/36/tsconfig.json diff --git a/steps/36/ui5.yaml b/packages/walkthrough/steps/36/ui5.yaml similarity index 100% rename from steps/36/ui5.yaml rename to packages/walkthrough/steps/36/ui5.yaml diff --git a/steps/36/webapp/Component.ts b/packages/walkthrough/steps/36/webapp/Component.ts similarity index 100% rename from steps/36/webapp/Component.ts rename to packages/walkthrough/steps/36/webapp/Component.ts diff --git a/steps/36/webapp/control/ProductRating.gen.d.ts b/packages/walkthrough/steps/36/webapp/control/ProductRating.gen.d.ts similarity index 100% rename from steps/36/webapp/control/ProductRating.gen.d.ts rename to packages/walkthrough/steps/36/webapp/control/ProductRating.gen.d.ts diff --git a/steps/36/webapp/control/ProductRating.ts b/packages/walkthrough/steps/36/webapp/control/ProductRating.ts similarity index 100% rename from steps/36/webapp/control/ProductRating.ts rename to packages/walkthrough/steps/36/webapp/control/ProductRating.ts diff --git a/steps/36/webapp/controller/App.controller.ts b/packages/walkthrough/steps/36/webapp/controller/App.controller.ts similarity index 100% rename from steps/36/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/36/webapp/controller/App.controller.ts diff --git a/steps/36/webapp/controller/Detail.controller.ts b/packages/walkthrough/steps/36/webapp/controller/Detail.controller.ts similarity index 100% rename from steps/36/webapp/controller/Detail.controller.ts rename to packages/walkthrough/steps/36/webapp/controller/Detail.controller.ts diff --git a/steps/36/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/36/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/36/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/36/webapp/controller/HelloPanel.controller.ts diff --git a/steps/36/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/36/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/36/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/36/webapp/controller/InvoiceList.controller.ts diff --git a/steps/36/webapp/css/style.css b/packages/walkthrough/steps/36/webapp/css/style.css similarity index 100% rename from steps/36/webapp/css/style.css rename to packages/walkthrough/steps/36/webapp/css/style.css diff --git a/steps/36/webapp/i18n/i18n.properties b/packages/walkthrough/steps/36/webapp/i18n/i18n.properties similarity index 100% rename from steps/36/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/36/webapp/i18n/i18n.properties diff --git a/steps/36/webapp/index-cdn.html b/packages/walkthrough/steps/36/webapp/index-cdn.html similarity index 100% rename from steps/36/webapp/index-cdn.html rename to packages/walkthrough/steps/36/webapp/index-cdn.html diff --git a/steps/36/webapp/index.html b/packages/walkthrough/steps/36/webapp/index.html similarity index 100% rename from steps/36/webapp/index.html rename to packages/walkthrough/steps/36/webapp/index.html diff --git a/steps/36/webapp/localService/metadata.xml b/packages/walkthrough/steps/36/webapp/localService/metadata.xml similarity index 100% rename from steps/36/webapp/localService/metadata.xml rename to packages/walkthrough/steps/36/webapp/localService/metadata.xml diff --git a/steps/36/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/36/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/36/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/36/webapp/localService/mockdata/Invoices.json diff --git a/steps/36/webapp/localService/mockserver.ts b/packages/walkthrough/steps/36/webapp/localService/mockserver.ts similarity index 100% rename from steps/36/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/36/webapp/localService/mockserver.ts diff --git a/steps/36/webapp/manifest.json b/packages/walkthrough/steps/36/webapp/manifest.json similarity index 100% rename from steps/36/webapp/manifest.json rename to packages/walkthrough/steps/36/webapp/manifest.json diff --git a/steps/36/webapp/model/formatter.ts b/packages/walkthrough/steps/36/webapp/model/formatter.ts similarity index 100% rename from steps/36/webapp/model/formatter.ts rename to packages/walkthrough/steps/36/webapp/model/formatter.ts diff --git a/steps/36/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/36/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/36/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/36/webapp/test/Test.cdn.qunit.html diff --git a/steps/36/webapp/test/Test.qunit.html b/packages/walkthrough/steps/36/webapp/test/Test.qunit.html similarity index 100% rename from steps/36/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/36/webapp/test/Test.qunit.html diff --git a/steps/36/webapp/test/initMockServer.ts b/packages/walkthrough/steps/36/webapp/test/initMockServer.ts similarity index 100% rename from steps/36/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/36/webapp/test/initMockServer.ts diff --git a/steps/36/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/36/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/36/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/36/webapp/test/integration/NavigationJourney.ts diff --git a/steps/36/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/36/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/36/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/36/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/36/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/36/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/36/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/36/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/36/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/36/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/36/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/36/webapp/test/mockServer-cdn.html diff --git a/steps/36/webapp/test/mockServer.html b/packages/walkthrough/steps/36/webapp/test/mockServer.html similarity index 100% rename from steps/36/webapp/test/mockServer.html rename to packages/walkthrough/steps/36/webapp/test/mockServer.html diff --git a/steps/36/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/36/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/36/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/36/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/36/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/36/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/36/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/36/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/36/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/36/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/36/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/36/webapp/test/testsuite.qunit.html diff --git a/steps/36/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/36/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/36/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/36/webapp/test/testsuite.qunit.ts diff --git a/steps/36/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/36/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/36/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/36/webapp/test/unit/model/formatter.ts diff --git a/steps/36/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/36/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/36/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/36/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/36/webapp/view/App.view.xml b/packages/walkthrough/steps/36/webapp/view/App.view.xml similarity index 100% rename from steps/36/webapp/view/App.view.xml rename to packages/walkthrough/steps/36/webapp/view/App.view.xml diff --git a/steps/36/webapp/view/Detail.view.xml b/packages/walkthrough/steps/36/webapp/view/Detail.view.xml similarity index 100% rename from steps/36/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/36/webapp/view/Detail.view.xml diff --git a/steps/36/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/36/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/36/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/36/webapp/view/HelloDialog.fragment.xml diff --git a/steps/36/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/36/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/36/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/36/webapp/view/HelloPanel.view.xml diff --git a/steps/36/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/36/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/36/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/36/webapp/view/InvoiceList.view.xml diff --git a/steps/36/webapp/view/Overview.view.xml b/packages/walkthrough/steps/36/webapp/view/Overview.view.xml similarity index 100% rename from steps/36/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/36/webapp/view/Overview.view.xml diff --git a/steps/37/README.md b/packages/walkthrough/steps/37/README.md similarity index 97% rename from steps/37/README.md rename to packages/walkthrough/steps/37/README.md index 5ef994efc..d98c6e468 100644 --- a/steps/37/README.md +++ b/packages/walkthrough/steps/37/README.md @@ -19,7 +19,7 @@ One part of the ARIA attribute set are the so-called landmarks. You can compare *Landmarks in our app* -You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 37](https://sap-samples.github.io/ui5-typescript-walkthrough/build/37/test/mockServer-cdn.html). +You can access the live preview by clicking on this link: [šŸ”— Live Preview of Step 37](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/build/37/test/mockServer-cdn.html). *** @@ -27,13 +27,13 @@ You can access the live preview by clicking on this link: [šŸ”— Live Preview of
-You can download the solution for this step here: [šŸ“„ Download step 37](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-37.zip). +You can download the solution for this step here: [šŸ“„ Download step 37](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-37.zip).
-You can download the solution for this step here: [šŸ“„ Download step 37](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-37-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 37](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-37-js.zip).
*** diff --git a/steps/37/assets/loio54e9bca5a5844c14b45b5405496166b1_HiRes.png b/packages/walkthrough/steps/37/assets/loio54e9bca5a5844c14b45b5405496166b1_HiRes.png similarity index 100% rename from steps/37/assets/loio54e9bca5a5844c14b45b5405496166b1_HiRes.png rename to packages/walkthrough/steps/37/assets/loio54e9bca5a5844c14b45b5405496166b1_HiRes.png diff --git a/steps/37/assets/loiob35deda1ebe1433fbf0ff066f6e3fc4b_LowRes.png b/packages/walkthrough/steps/37/assets/loiob35deda1ebe1433fbf0ff066f6e3fc4b_LowRes.png similarity index 100% rename from steps/37/assets/loiob35deda1ebe1433fbf0ff066f6e3fc4b_LowRes.png rename to packages/walkthrough/steps/37/assets/loiob35deda1ebe1433fbf0ff066f6e3fc4b_LowRes.png diff --git a/steps/37/assets/loiof38dee2624c2437d8977de70575b3eae_HiRes.png b/packages/walkthrough/steps/37/assets/loiof38dee2624c2437d8977de70575b3eae_HiRes.png similarity index 100% rename from steps/37/assets/loiof38dee2624c2437d8977de70575b3eae_HiRes.png rename to packages/walkthrough/steps/37/assets/loiof38dee2624c2437d8977de70575b3eae_HiRes.png diff --git a/steps/37/package.json b/packages/walkthrough/steps/37/package.json similarity index 94% rename from steps/37/package.json rename to packages/walkthrough/steps/37/package.json index bcb0090ee..fda44ab2b 100644 --- a/steps/37/package.json +++ b/packages/walkthrough/steps/37/package.json @@ -8,7 +8,7 @@ "start": "ui5 serve -o test/mockServer.html" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "typescript": "^5.9.3", diff --git a/steps/37/tsconfig.json b/packages/walkthrough/steps/37/tsconfig.json similarity index 100% rename from steps/37/tsconfig.json rename to packages/walkthrough/steps/37/tsconfig.json diff --git a/steps/37/ui5.yaml b/packages/walkthrough/steps/37/ui5.yaml similarity index 100% rename from steps/37/ui5.yaml rename to packages/walkthrough/steps/37/ui5.yaml diff --git a/steps/37/webapp/Component.ts b/packages/walkthrough/steps/37/webapp/Component.ts similarity index 100% rename from steps/37/webapp/Component.ts rename to packages/walkthrough/steps/37/webapp/Component.ts diff --git a/steps/37/webapp/control/ProductRating.gen.d.ts b/packages/walkthrough/steps/37/webapp/control/ProductRating.gen.d.ts similarity index 100% rename from steps/37/webapp/control/ProductRating.gen.d.ts rename to packages/walkthrough/steps/37/webapp/control/ProductRating.gen.d.ts diff --git a/steps/37/webapp/control/ProductRating.ts b/packages/walkthrough/steps/37/webapp/control/ProductRating.ts similarity index 100% rename from steps/37/webapp/control/ProductRating.ts rename to packages/walkthrough/steps/37/webapp/control/ProductRating.ts diff --git a/steps/37/webapp/controller/App.controller.ts b/packages/walkthrough/steps/37/webapp/controller/App.controller.ts similarity index 100% rename from steps/37/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/37/webapp/controller/App.controller.ts diff --git a/steps/37/webapp/controller/Detail.controller.ts b/packages/walkthrough/steps/37/webapp/controller/Detail.controller.ts similarity index 100% rename from steps/37/webapp/controller/Detail.controller.ts rename to packages/walkthrough/steps/37/webapp/controller/Detail.controller.ts diff --git a/steps/37/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/37/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/37/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/37/webapp/controller/HelloPanel.controller.ts diff --git a/steps/37/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/37/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/37/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/37/webapp/controller/InvoiceList.controller.ts diff --git a/steps/37/webapp/css/style.css b/packages/walkthrough/steps/37/webapp/css/style.css similarity index 100% rename from steps/37/webapp/css/style.css rename to packages/walkthrough/steps/37/webapp/css/style.css diff --git a/steps/37/webapp/i18n/i18n.properties b/packages/walkthrough/steps/37/webapp/i18n/i18n.properties similarity index 100% rename from steps/37/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/37/webapp/i18n/i18n.properties diff --git a/steps/37/webapp/index-cdn.html b/packages/walkthrough/steps/37/webapp/index-cdn.html similarity index 100% rename from steps/37/webapp/index-cdn.html rename to packages/walkthrough/steps/37/webapp/index-cdn.html diff --git a/steps/37/webapp/index.html b/packages/walkthrough/steps/37/webapp/index.html similarity index 100% rename from steps/37/webapp/index.html rename to packages/walkthrough/steps/37/webapp/index.html diff --git a/steps/37/webapp/localService/metadata.xml b/packages/walkthrough/steps/37/webapp/localService/metadata.xml similarity index 100% rename from steps/37/webapp/localService/metadata.xml rename to packages/walkthrough/steps/37/webapp/localService/metadata.xml diff --git a/steps/37/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/37/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/37/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/37/webapp/localService/mockdata/Invoices.json diff --git a/steps/37/webapp/localService/mockserver.ts b/packages/walkthrough/steps/37/webapp/localService/mockserver.ts similarity index 100% rename from steps/37/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/37/webapp/localService/mockserver.ts diff --git a/steps/37/webapp/manifest.json b/packages/walkthrough/steps/37/webapp/manifest.json similarity index 100% rename from steps/37/webapp/manifest.json rename to packages/walkthrough/steps/37/webapp/manifest.json diff --git a/steps/37/webapp/model/formatter.ts b/packages/walkthrough/steps/37/webapp/model/formatter.ts similarity index 100% rename from steps/37/webapp/model/formatter.ts rename to packages/walkthrough/steps/37/webapp/model/formatter.ts diff --git a/steps/37/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/37/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/37/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/37/webapp/test/Test.cdn.qunit.html diff --git a/steps/37/webapp/test/Test.qunit.html b/packages/walkthrough/steps/37/webapp/test/Test.qunit.html similarity index 100% rename from steps/37/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/37/webapp/test/Test.qunit.html diff --git a/steps/37/webapp/test/initMockServer.ts b/packages/walkthrough/steps/37/webapp/test/initMockServer.ts similarity index 100% rename from steps/37/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/37/webapp/test/initMockServer.ts diff --git a/steps/37/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/37/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/37/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/37/webapp/test/integration/NavigationJourney.ts diff --git a/steps/37/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/37/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/37/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/37/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/37/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/37/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/37/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/37/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/37/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/37/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/37/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/37/webapp/test/mockServer-cdn.html diff --git a/steps/37/webapp/test/mockServer.html b/packages/walkthrough/steps/37/webapp/test/mockServer.html similarity index 100% rename from steps/37/webapp/test/mockServer.html rename to packages/walkthrough/steps/37/webapp/test/mockServer.html diff --git a/steps/37/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/37/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/37/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/37/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/37/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/37/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/37/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/37/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/37/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/37/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/37/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/37/webapp/test/testsuite.qunit.html diff --git a/steps/37/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/37/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/37/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/37/webapp/test/testsuite.qunit.ts diff --git a/steps/37/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/37/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/37/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/37/webapp/test/unit/model/formatter.ts diff --git a/steps/37/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/37/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/37/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/37/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/37/webapp/view/App.view.xml b/packages/walkthrough/steps/37/webapp/view/App.view.xml similarity index 100% rename from steps/37/webapp/view/App.view.xml rename to packages/walkthrough/steps/37/webapp/view/App.view.xml diff --git a/steps/37/webapp/view/Detail.view.xml b/packages/walkthrough/steps/37/webapp/view/Detail.view.xml similarity index 100% rename from steps/37/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/37/webapp/view/Detail.view.xml diff --git a/steps/37/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/37/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/37/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/37/webapp/view/HelloDialog.fragment.xml diff --git a/steps/37/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/37/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/37/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/37/webapp/view/HelloPanel.view.xml diff --git a/steps/37/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/37/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/37/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/37/webapp/view/InvoiceList.view.xml diff --git a/steps/37/webapp/view/Overview.view.xml b/packages/walkthrough/steps/37/webapp/view/Overview.view.xml similarity index 100% rename from steps/37/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/37/webapp/view/Overview.view.xml diff --git a/steps/38/README.md b/packages/walkthrough/steps/38/README.md similarity index 98% rename from steps/38/README.md rename to packages/walkthrough/steps/38/README.md index 38b3cf75d..cb8232aec 100644 --- a/steps/38/README.md +++ b/packages/walkthrough/steps/38/README.md @@ -18,13 +18,13 @@ In this step we're going to build our application and consume the speed of a bui ### Coding
-You can download the solution for this step here: [šŸ“„ Download step 38](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-38.zip). +You can download the solution for this step here: [šŸ“„ Download step 38](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-38.zip).
-You can download the solution for this step here: [šŸ“„ Download step 38](https://sap-samples.github.io/ui5-typescript-walkthrough/ui5-typescript-walkthrough-step-38-js.zip). +You can download the solution for this step here: [šŸ“„ Download step 38](https://sap-samples.github.io/ui5-typescript-walkthrough/walkthrough/walkthrough-step-38-js.zip).
*** diff --git a/steps/38/assets/loiofb12cea5ac9b45bb9007aac5a1a8689f_LowRes.png b/packages/walkthrough/steps/38/assets/loiofb12cea5ac9b45bb9007aac5a1a8689f_LowRes.png similarity index 100% rename from steps/38/assets/loiofb12cea5ac9b45bb9007aac5a1a8689f_LowRes.png rename to packages/walkthrough/steps/38/assets/loiofb12cea5ac9b45bb9007aac5a1a8689f_LowRes.png diff --git a/steps/38/package.json b/packages/walkthrough/steps/38/package.json similarity index 95% rename from steps/38/package.json rename to packages/walkthrough/steps/38/package.json index 153955117..f3e9bccbb 100644 --- a/steps/38/package.json +++ b/packages/walkthrough/steps/38/package.json @@ -10,7 +10,7 @@ "serve-dist": "ws --compress -d dist --open" }, "devDependencies": { - "@types/openui5": "^1.142.0", + "@types/openui5": "^1.145.0", "@ui5/cli": "^4.0.51", "@ui5/ts-interface-generator": "^0.10.5", "local-web-server": "^5.4.0", diff --git a/steps/38/tsconfig.json b/packages/walkthrough/steps/38/tsconfig.json similarity index 100% rename from steps/38/tsconfig.json rename to packages/walkthrough/steps/38/tsconfig.json diff --git a/steps/38/ui5.yaml b/packages/walkthrough/steps/38/ui5.yaml similarity index 100% rename from steps/38/ui5.yaml rename to packages/walkthrough/steps/38/ui5.yaml diff --git a/steps/38/webapp/Component.ts b/packages/walkthrough/steps/38/webapp/Component.ts similarity index 100% rename from steps/38/webapp/Component.ts rename to packages/walkthrough/steps/38/webapp/Component.ts diff --git a/steps/38/webapp/control/ProductRating.gen.d.ts b/packages/walkthrough/steps/38/webapp/control/ProductRating.gen.d.ts similarity index 100% rename from steps/38/webapp/control/ProductRating.gen.d.ts rename to packages/walkthrough/steps/38/webapp/control/ProductRating.gen.d.ts diff --git a/steps/38/webapp/control/ProductRating.ts b/packages/walkthrough/steps/38/webapp/control/ProductRating.ts similarity index 100% rename from steps/38/webapp/control/ProductRating.ts rename to packages/walkthrough/steps/38/webapp/control/ProductRating.ts diff --git a/steps/38/webapp/controller/App.controller.ts b/packages/walkthrough/steps/38/webapp/controller/App.controller.ts similarity index 100% rename from steps/38/webapp/controller/App.controller.ts rename to packages/walkthrough/steps/38/webapp/controller/App.controller.ts diff --git a/steps/38/webapp/controller/Detail.controller.ts b/packages/walkthrough/steps/38/webapp/controller/Detail.controller.ts similarity index 100% rename from steps/38/webapp/controller/Detail.controller.ts rename to packages/walkthrough/steps/38/webapp/controller/Detail.controller.ts diff --git a/steps/38/webapp/controller/HelloPanel.controller.ts b/packages/walkthrough/steps/38/webapp/controller/HelloPanel.controller.ts similarity index 100% rename from steps/38/webapp/controller/HelloPanel.controller.ts rename to packages/walkthrough/steps/38/webapp/controller/HelloPanel.controller.ts diff --git a/steps/38/webapp/controller/InvoiceList.controller.ts b/packages/walkthrough/steps/38/webapp/controller/InvoiceList.controller.ts similarity index 100% rename from steps/38/webapp/controller/InvoiceList.controller.ts rename to packages/walkthrough/steps/38/webapp/controller/InvoiceList.controller.ts diff --git a/steps/38/webapp/css/style.css b/packages/walkthrough/steps/38/webapp/css/style.css similarity index 100% rename from steps/38/webapp/css/style.css rename to packages/walkthrough/steps/38/webapp/css/style.css diff --git a/steps/38/webapp/i18n/i18n.properties b/packages/walkthrough/steps/38/webapp/i18n/i18n.properties similarity index 100% rename from steps/38/webapp/i18n/i18n.properties rename to packages/walkthrough/steps/38/webapp/i18n/i18n.properties diff --git a/steps/38/webapp/index-cdn.html b/packages/walkthrough/steps/38/webapp/index-cdn.html similarity index 100% rename from steps/38/webapp/index-cdn.html rename to packages/walkthrough/steps/38/webapp/index-cdn.html diff --git a/steps/38/webapp/index.html b/packages/walkthrough/steps/38/webapp/index.html similarity index 100% rename from steps/38/webapp/index.html rename to packages/walkthrough/steps/38/webapp/index.html diff --git a/steps/38/webapp/index.ts b/packages/walkthrough/steps/38/webapp/index.ts similarity index 100% rename from steps/38/webapp/index.ts rename to packages/walkthrough/steps/38/webapp/index.ts diff --git a/steps/38/webapp/localService/metadata.xml b/packages/walkthrough/steps/38/webapp/localService/metadata.xml similarity index 100% rename from steps/38/webapp/localService/metadata.xml rename to packages/walkthrough/steps/38/webapp/localService/metadata.xml diff --git a/steps/38/webapp/localService/mockdata/Invoices.json b/packages/walkthrough/steps/38/webapp/localService/mockdata/Invoices.json similarity index 100% rename from steps/38/webapp/localService/mockdata/Invoices.json rename to packages/walkthrough/steps/38/webapp/localService/mockdata/Invoices.json diff --git a/steps/38/webapp/localService/mockserver.ts b/packages/walkthrough/steps/38/webapp/localService/mockserver.ts similarity index 100% rename from steps/38/webapp/localService/mockserver.ts rename to packages/walkthrough/steps/38/webapp/localService/mockserver.ts diff --git a/steps/38/webapp/manifest.json b/packages/walkthrough/steps/38/webapp/manifest.json similarity index 100% rename from steps/38/webapp/manifest.json rename to packages/walkthrough/steps/38/webapp/manifest.json diff --git a/steps/38/webapp/model/formatter.ts b/packages/walkthrough/steps/38/webapp/model/formatter.ts similarity index 100% rename from steps/38/webapp/model/formatter.ts rename to packages/walkthrough/steps/38/webapp/model/formatter.ts diff --git a/steps/38/webapp/test/Test.cdn.qunit.html b/packages/walkthrough/steps/38/webapp/test/Test.cdn.qunit.html similarity index 100% rename from steps/38/webapp/test/Test.cdn.qunit.html rename to packages/walkthrough/steps/38/webapp/test/Test.cdn.qunit.html diff --git a/steps/38/webapp/test/Test.qunit.html b/packages/walkthrough/steps/38/webapp/test/Test.qunit.html similarity index 100% rename from steps/38/webapp/test/Test.qunit.html rename to packages/walkthrough/steps/38/webapp/test/Test.qunit.html diff --git a/steps/38/webapp/test/initMockServer.ts b/packages/walkthrough/steps/38/webapp/test/initMockServer.ts similarity index 100% rename from steps/38/webapp/test/initMockServer.ts rename to packages/walkthrough/steps/38/webapp/test/initMockServer.ts diff --git a/steps/38/webapp/test/integration/NavigationJourney.ts b/packages/walkthrough/steps/38/webapp/test/integration/NavigationJourney.ts similarity index 100% rename from steps/38/webapp/test/integration/NavigationJourney.ts rename to packages/walkthrough/steps/38/webapp/test/integration/NavigationJourney.ts diff --git a/steps/38/webapp/test/integration/opaTests.qunit.ts b/packages/walkthrough/steps/38/webapp/test/integration/opaTests.qunit.ts similarity index 100% rename from steps/38/webapp/test/integration/opaTests.qunit.ts rename to packages/walkthrough/steps/38/webapp/test/integration/opaTests.qunit.ts diff --git a/steps/38/webapp/test/integration/pages/HelloPanelPage.ts b/packages/walkthrough/steps/38/webapp/test/integration/pages/HelloPanelPage.ts similarity index 100% rename from steps/38/webapp/test/integration/pages/HelloPanelPage.ts rename to packages/walkthrough/steps/38/webapp/test/integration/pages/HelloPanelPage.ts diff --git a/steps/38/webapp/test/mockServer-cdn.html b/packages/walkthrough/steps/38/webapp/test/mockServer-cdn.html similarity index 100% rename from steps/38/webapp/test/mockServer-cdn.html rename to packages/walkthrough/steps/38/webapp/test/mockServer-cdn.html diff --git a/steps/38/webapp/test/mockServer.html b/packages/walkthrough/steps/38/webapp/test/mockServer.html similarity index 100% rename from steps/38/webapp/test/mockServer.html rename to packages/walkthrough/steps/38/webapp/test/mockServer.html diff --git a/steps/38/webapp/test/testsuite.cdn.qunit.html b/packages/walkthrough/steps/38/webapp/test/testsuite.cdn.qunit.html similarity index 100% rename from steps/38/webapp/test/testsuite.cdn.qunit.html rename to packages/walkthrough/steps/38/webapp/test/testsuite.cdn.qunit.html diff --git a/steps/38/webapp/test/testsuite.cdn.qunit.ts b/packages/walkthrough/steps/38/webapp/test/testsuite.cdn.qunit.ts similarity index 100% rename from steps/38/webapp/test/testsuite.cdn.qunit.ts rename to packages/walkthrough/steps/38/webapp/test/testsuite.cdn.qunit.ts diff --git a/steps/38/webapp/test/testsuite.qunit.html b/packages/walkthrough/steps/38/webapp/test/testsuite.qunit.html similarity index 100% rename from steps/38/webapp/test/testsuite.qunit.html rename to packages/walkthrough/steps/38/webapp/test/testsuite.qunit.html diff --git a/steps/38/webapp/test/testsuite.qunit.ts b/packages/walkthrough/steps/38/webapp/test/testsuite.qunit.ts similarity index 100% rename from steps/38/webapp/test/testsuite.qunit.ts rename to packages/walkthrough/steps/38/webapp/test/testsuite.qunit.ts diff --git a/steps/38/webapp/test/unit/model/formatter.ts b/packages/walkthrough/steps/38/webapp/test/unit/model/formatter.ts similarity index 100% rename from steps/38/webapp/test/unit/model/formatter.ts rename to packages/walkthrough/steps/38/webapp/test/unit/model/formatter.ts diff --git a/steps/38/webapp/test/unit/unitTests.qunit.ts b/packages/walkthrough/steps/38/webapp/test/unit/unitTests.qunit.ts similarity index 100% rename from steps/38/webapp/test/unit/unitTests.qunit.ts rename to packages/walkthrough/steps/38/webapp/test/unit/unitTests.qunit.ts diff --git a/steps/38/webapp/view/App.view.xml b/packages/walkthrough/steps/38/webapp/view/App.view.xml similarity index 100% rename from steps/38/webapp/view/App.view.xml rename to packages/walkthrough/steps/38/webapp/view/App.view.xml diff --git a/steps/38/webapp/view/Detail.view.xml b/packages/walkthrough/steps/38/webapp/view/Detail.view.xml similarity index 100% rename from steps/38/webapp/view/Detail.view.xml rename to packages/walkthrough/steps/38/webapp/view/Detail.view.xml diff --git a/steps/38/webapp/view/HelloDialog.fragment.xml b/packages/walkthrough/steps/38/webapp/view/HelloDialog.fragment.xml similarity index 100% rename from steps/38/webapp/view/HelloDialog.fragment.xml rename to packages/walkthrough/steps/38/webapp/view/HelloDialog.fragment.xml diff --git a/steps/38/webapp/view/HelloPanel.view.xml b/packages/walkthrough/steps/38/webapp/view/HelloPanel.view.xml similarity index 100% rename from steps/38/webapp/view/HelloPanel.view.xml rename to packages/walkthrough/steps/38/webapp/view/HelloPanel.view.xml diff --git a/steps/38/webapp/view/InvoiceList.view.xml b/packages/walkthrough/steps/38/webapp/view/InvoiceList.view.xml similarity index 100% rename from steps/38/webapp/view/InvoiceList.view.xml rename to packages/walkthrough/steps/38/webapp/view/InvoiceList.view.xml diff --git a/steps/38/webapp/view/Overview.view.xml b/packages/walkthrough/steps/38/webapp/view/Overview.view.xml similarity index 100% rename from steps/38/webapp/view/Overview.view.xml rename to packages/walkthrough/steps/38/webapp/view/Overview.view.xml diff --git a/renovate.json b/renovate.json new file mode 100644 index 000000000..e623e20ae --- /dev/null +++ b/renovate.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended", + "github>ui5/renovate-config" + ], + "rangeStrategy": "bump", + "lockFileMaintenance": { + "enabled": true, + "automerge": true, + "commitMessagePrefix": "build:", + "commitMessageAction": "In-range update of npm dependencies", + "schedule": [ + "* 0-8 * * 1" + ] + }, + "packageRules": [ + { + "matchDepNames": [ + "*" + ], + "automerge": true, + "commitMessagePrefix": "build(deps-dev):", + "commitMessageAction": "Bump", + "schedule": [ + "* 8-16 * * 1" + ] + }, + { + "matchManagers": [ + "github-actions" + ], + "automerge": true, + "commitMessagePrefix": "build(github-actions):", + "commitMessageAction": "Bump", + "schedule": [ + "* 8-16 * * 1" + ] + }, + { + "matchPackageNames": [ + "node", + "npm" + ], + "enabled": false + }, + { + "matchDepNames": [ + "openui5", + "@types/openui5" + ], + "groupName": "openui5", + "automerge": true, + "commitMessagePrefix": "deps:", + "commitMessageAction": "Update", + "schedule": [ + "* 8-16 * * 1" + ] + } + ] +} diff --git a/steps/07/ui5.yaml b/steps/07/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/07/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/08/ui5.yaml b/steps/08/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/08/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/09/ui5.yaml b/steps/09/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/09/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/10/ui5.yaml b/steps/10/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/10/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/11/ui5.yaml b/steps/11/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/11/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/12/ui5.yaml b/steps/12/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/12/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/13/ui5.yaml b/steps/13/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/13/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/14/ui5.yaml b/steps/14/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/14/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/15/ui5.yaml b/steps/15/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/15/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/16/ui5.yaml b/steps/16/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/16/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/17/ui5.yaml b/steps/17/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/17/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/18/ui5.yaml b/steps/18/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/18/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/19/ui5.yaml b/steps/19/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/19/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/20/ui5.yaml b/steps/20/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/20/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/21/ui5.yaml b/steps/21/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/21/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/22/ui5.yaml b/steps/22/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/22/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/23/ui5.yaml b/steps/23/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/23/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/steps/24/ui5.yaml b/steps/24/ui5.yaml deleted file mode 100644 index 06cb1107d..000000000 --- a/steps/24/ui5.yaml +++ /dev/null @@ -1,23 +0,0 @@ -specVersion: '3.0' -metadata: - name: "ui5.walkthrough" -type: application -framework: - name: OpenUI5 - version: "1.136.7" - libraries: - - name: sap.m - - name: sap.ui.core - - name: themelib_sap_horizon -builder: - customTasks: - - name: ui5-tooling-transpile-task - afterTask: replaceVersion -server: - customMiddleware: - - name: ui5-tooling-transpile-middleware - afterMiddleware: compression - - name: ui5-middleware-serveframework - afterMiddleware: compression - - name: ui5-middleware-livereload - afterMiddleware: compression diff --git a/tools/builder/prepare-gh-pages.js b/tools/builder/prepare-gh-pages.js index ee06ae779..6a3d8227e 100644 --- a/tools/builder/prepare-gh-pages.js +++ b/tools/builder/prepare-gh-pages.js @@ -30,45 +30,51 @@ function zipDirectory(sourceDir, outPath) { }); } -(async function() { +function getTutorials() { + const packagesDir = join(cwd, "packages"); + return readdirSync(packagesDir).filter((entry) => + statSync(join(packagesDir, entry)).isDirectory() && + existsSync(join(packagesDir, entry, "steps")) + ); +} - let steps = readdirSync(join(cwd, "steps")); - // only consider directories - steps = steps.filter((step) => statSync(join(cwd, "steps", step)).isDirectory()); +function getSteps(tutorialDir) { + let steps = readdirSync(join(tutorialDir, "steps")); + return steps.filter((step) => statSync(join(tutorialDir, "steps", step)).isDirectory()); +} + +(async function() { if (existsSync(join(cwd, "dist"))) { rmSync(join(cwd, "dist"), { recursive: true }); } - mkdirSync(join(cwd, "dist"), { recursive: true }); - console.log(`šŸ‘‰ Zipping TypeScript sources...`); - await Promise.all(steps.map((step) => { - return zipDirectory(join(cwd, "steps", step), join(cwd, "dist", `ui5-typescript-walkthrough-step-${step}.zip`)) - })); - - mkdirSync(join(cwd, "dist/build"), { recursive: true }); - - console.log(`šŸ‘‰ Building steps...`); - for (const step of steps) { - console.log(` šŸ‘‰ Building step ${step}...`); - //console.log(`npx ui5 build --dest ${join(cwd, "dist", "build", `${step}`)}`); - await execute(`npx ui5 build --dest ${join(cwd, "dist", "build", `${step}`)}`, { - cwd: join(cwd, "steps", step) - }); - } - - function rewriteLinks(file, path) { - let content = `---\npermalink: ${path ? `build/${path.replace(".md", ".html")}` : "index.html"}\n---\n\n${readFileSync(file, { encoding: "utf8"})}`; - content = content.replace(/steps\/(\d{2})/g, "build/$1"); - content = content.replace(/\.\.\/(\d{2})/g, "../$1"); + console.log(`šŸ‘‰ Copying root README.md...`); + function rewriteLinks(file, path, tutorialName) { + let permalink; + if (!path) { + permalink = "index.html"; + } else if (!tutorialName) { + permalink = `build/${path.replace(".md", ".html")}`; + } else { + permalink = `${tutorialName}/build/${path.replace(".md", ".html")}`; + } + let content = `---\npermalink: ${permalink}\n---\n\n${readFileSync(file, { encoding: "utf8"})}`; + if (tutorialName) { + content = content.replace(/steps\/(\d{2})/g, `${tutorialName}/build/$1`); + content = content.replace(/\.\.\/(\d{2})/g, "../$1"); + } else { + content = content.replace(/steps\/(\d{2})/g, "build/$1"); + content = content.replace(/\.\.\/(\d{2})/g, "../$1"); + } content = content.replace(/README\.md/g, "README.html"); writeFileSync(file, content, { encoding: "utf8" }); } - console.log(`šŸ‘‰ Copying README.md...`); copyFileSync(join(cwd, "README.md"), join(cwd, "dist/index.md")); rewriteLinks(join(cwd, "dist/index.md")); + copyFileSync(join(cwd, "404.html"), join(cwd, "dist/404.html")); console.log(` šŸŒ… Copying _includes....`); const includes = fg.globSync(["**/*"], { cwd: join(cwd, "_includes") }); @@ -84,65 +90,103 @@ function zipDirectory(sourceDir, outPath) { copyFileSync(join(cwd, "assets", asset), join(cwd, `dist/assets/${asset}`)); }); - console.log(`šŸ‘‰ Copying steps README.md files...`); - const readmes = fg.globSync(["steps/*/README.md"], { cwd }); - readmes.forEach((readme) => { - const [, path, step] = readme.match("steps/((.*)/README.md)"); - mkdirSync(join(cwd, `dist/build/${step}`), { recursive: true }); - copyFileSync(join(cwd, readme), join(cwd, `dist/build/${path}`)); - rewriteLinks(join(cwd, `dist/build/${path}`), `${path}`); - }); - console.log(` šŸŒ… Copying steps assets....`); - const assets = fg.globSync(["steps/*/assets/**/*"], { cwd }); - assets.forEach((asset) => { - const [, step, assetFile] = asset.match("steps/(.*)/assets/(.*)"); - mkdirSync(dirname(join(cwd, "dist/build", step, "assets", assetFile)), { recursive: true }); - copyFileSync(join(cwd, "steps", step, "assets", assetFile), join(cwd, "dist/build", step, "assets", assetFile)); - }); + const tutorials = getTutorials(); + console.log(`šŸ‘‰ Found tutorials: ${tutorials.join(", ")}`); + + for (const tutorial of tutorials) { + const tutorialDir = join(cwd, "packages", tutorial); + const distTutorialDir = join(cwd, "dist", tutorial); + const steps = getSteps(tutorialDir); + + console.log(`\nšŸ“¦ Processing tutorial: ${tutorial} (${steps.length} steps)`); + + mkdirSync(distTutorialDir, { recursive: true }); + + console.log(` šŸ‘‰ Copying tutorial README.md...`); + if (existsSync(join(tutorialDir, "README.md"))) { + copyFileSync(join(tutorialDir, "README.md"), join(distTutorialDir, "index.md")); + rewriteLinks(join(distTutorialDir, "index.md"), null, tutorial); + } + + console.log(` šŸ‘‰ Zipping TypeScript sources...`); + await Promise.all(steps.map((step) => { + return zipDirectory( + join(tutorialDir, "steps", step), + join(distTutorialDir, `${tutorial}-step-${step}.zip`) + ); + })); + + const buildDir = join(distTutorialDir, "build"); + mkdirSync(buildDir, { recursive: true }); + + console.log(` šŸ‘‰ Building steps...`); + for (const step of steps) { + console.log(` šŸ‘‰ Building step ${step}...`); + await execute(`npx ui5 build --dest ${join(buildDir, step)}`, { + cwd: join(tutorialDir, "steps", step) + }); + } + + console.log(` šŸ‘‰ Copying step README.md files...`); + const readmes = fg.globSync(["steps/*/README.md"], { cwd: tutorialDir }); + readmes.forEach((readme) => { + const [, path, step] = readme.match("steps/((.*)/README.md)"); + mkdirSync(join(buildDir, step), { recursive: true }); + copyFileSync(join(tutorialDir, readme), join(buildDir, path)); + rewriteLinks(join(buildDir, path), path, tutorial); + }); + console.log(` šŸŒ… Copying step assets...`); + const assets = fg.globSync(["steps/*/assets/**/*"], { cwd: tutorialDir }); + assets.forEach((asset) => { + const [, step, assetFile] = asset.match("steps/(.*)/assets/(.*)"); + mkdirSync(dirname(join(buildDir, step, "assets", assetFile)), { recursive: true }); + copyFileSync(join(tutorialDir, "steps", step, "assets", assetFile), join(buildDir, step, "assets", assetFile)); + }); - console.log(`šŸ‘‰ Generate the JavaScript sources...`); - await Promise.all(steps.map((step) => { - const jsStepBaseDir = join(cwd, "steps", step); - const buildOutputDir = join(cwd, "dist", "build", `${step}`); - const targetDir = join(cwd, "dist", "steps", `${step}`); - - console.log(` šŸ‘‰ Generate sources for step ${step}...`); - - // copy all files from buildOutputDir to targetDir except of TS files - const files = fg.sync(["**/*"], { cwd: jsStepBaseDir, dot: true }); - files.forEach((file) => { - const source = join(jsStepBaseDir, file); - const target = join(targetDir, file); - if (file.endsWith(".ts") && file.startsWith("webapp")) { - const outputFile = file.substring(7, file.length - 3); - let sourceJS; - if (file.endsWith("controller.ts")) { - sourceJS = join(buildOutputDir, `${outputFile.substring(0, outputFile.length - 11)}-dbg.controller.js`); - } else if (file.endsWith(".ts") && !file.endsWith(".d.ts")) { - sourceJS = join(buildOutputDir, `${outputFile}-dbg.js`); - } + console.log(` šŸ‘‰ Generating JavaScript sources...`); + await Promise.all(steps.map((step) => { + const jsStepBaseDir = join(tutorialDir, "steps", step); + const buildOutputDir = join(buildDir, step); + const targetDir = join(distTutorialDir, "steps", step); + + console.log(` šŸ‘‰ Generating sources for step ${step}...`); + + const files = fg.sync(["**/*"], { cwd: jsStepBaseDir, dot: true }); + files.forEach((file) => { + const source = join(jsStepBaseDir, file); + const target = join(targetDir, file); + if (file.endsWith(".ts") && file.startsWith("webapp")) { + const outputFile = file.substring(7, file.length - 3); + let sourceJS; + if (file.endsWith("controller.ts")) { + sourceJS = join(buildOutputDir, `${outputFile.substring(0, outputFile.length - 11)}-dbg.controller.js`); + } else if (!file.endsWith(".d.ts")) { + sourceJS = join(buildOutputDir, `${outputFile}-dbg.js`); + } - if (!file.endsWith(".d.ts")) { - if (existsSync(sourceJS)) { - const targetJS = target.replace(/\.ts$/, ".js"); - mkdirSync(dirname(targetJS), { recursive: true }); - // rewrite content of the JS file - let content = readFileSync(sourceJS, { encoding: "utf8" }); - content = sanitize(content); - writeFileSync(targetJS, content, { encoding: "utf8" }); - } else { - console.error("No JS file found for", source); + if (!file.endsWith(".d.ts")) { + if (existsSync(sourceJS)) { + const targetJS = target.replace(/\.ts$/, ".js"); + mkdirSync(dirname(targetJS), { recursive: true }); + let content = readFileSync(sourceJS, { encoding: "utf8" }); + content = sanitize(content); + writeFileSync(targetJS, content, { encoding: "utf8" }); + } else { + console.error("No JS file found for", source); + } } + } else if (file !== "tsconfig.json") { + mkdirSync(dirname(target), { recursive: true }); + copyFileSync(source, target); } - } else if (file !== "tsconfig.json") { - mkdirSync(dirname(target), { recursive: true }); - copyFileSync(source, target); - } - }); + }); - //console.log(`${jsStepBaseDir} -> ${buildOutputDir}`); - return zipDirectory(join(cwd, "dist", "steps", `${step}`), join(cwd, "dist", `ui5-typescript-walkthrough-step-${step}-js.zip`)) - })); + return zipDirectory( + join(distTutorialDir, "steps", step), + join(distTutorialDir, `${tutorial}-step-${step}-js.zip`) + ); + })); + } }()); diff --git a/tools/dev-server/ghpage-template.hbs b/tools/dev-server/ghpage-template.hbs index c6a4da506..579dee24a 100644 --- a/tools/dev-server/ghpage-template.hbs +++ b/tools/dev-server/ghpage-template.hbs @@ -63,7 +63,7 @@ diff --git a/tools/utils/download-assets.js b/tools/utils/download-assets.js index cd311e10f..9099d706b 100644 --- a/tools/utils/download-assets.js +++ b/tools/utils/download-assets.js @@ -19,7 +19,7 @@ const findMarkdownFiles = (dir) => { return results; }; -const markdownFiles = [path.join(cwd, "README.md"), findMarkdownFiles(path.join(cwd, 'steps'))].flat(); +const markdownFiles = findMarkdownFiles(cwd); const downloadImage = async (url, outputPath) => { const response = await axios({